001// ______________________________________________________
002// Generated by codegen - https://gitee.com/l0km/codegen 
003// template: thrift/client_thrifty/perservice/client.service.decorator.class.vm
004// ______________________________________________________
005package net.gdface.facedb.thrift;
006import java.nio.ByteBuffer;
007import java.util.Date;
008import java.util.List;
009import java.util.Map;
010import net.gdface.exception.NotFoundBeanException;
011import net.gdface.facedb.DuplicateRecordException;
012import net.gdface.facedb.FaceDb;
013import net.gdface.facedb.SearchResult;
014import net.gdface.facedb.db.FaceBean;
015import net.gdface.facedb.db.FeatureBean;
016import net.gdface.facedb.db.ImageBean;
017import net.gdface.image.ImageErrorException;
018import net.gdface.image.MatType;
019import net.gdface.sdk.CodeInfo;
020import net.gdface.sdk.CompareResult;
021import net.gdface.sdk.NotFaceDetectedException;
022import net.gdface.thrift.TypeTransformer;
023
024import java.io.IOException;
025import java.util.concurrent.atomic.AtomicReference;
026import net.gdface.thrift.ClientFactory;
027import com.google.common.base.Function;
028import com.google.common.base.Throwables;
029import com.google.common.net.HostAndPort;
030import com.microsoft.thrifty.service.AsyncClientBase;
031import com.microsoft.thrifty.service.ServiceMethodCallback;
032
033import static com.google.common.base.Preconditions.*;
034import static net.gdface.thrift.ThriftUtils.returnNull;
035/**
036 * 基于thrift/swift框架生成的client端代码提供{@link FaceDb}接口的RPC实现(线程安全)<br>
037 * 转发所有{@link FaceDb}接口方法到{@link net.gdface.facedb.thrift.client.FaceDbClient}实例<br>
038 * 所有服务端抛出的{@link RuntimeException}异常被封装到{@link ServiceRuntimeException}中抛出<br>
039 * Example:<br>
040 * <pre>
041 *        FaceDbThriftClient thriftInstance = ClientFactory
042 *            .builder()
043 *            .setHostAndPort("127.0.0.1",26413)
044 *            .build(FaceDbThriftClient.class);
045 * </pre>
046 * 计算机生成代码(generated by automated tools ThriftServiceDecoratorGenerator @author guyadong)<br>
047 * @author guyadong
048 *
049 */
050public class FaceDbThriftClient implements FaceDb {
051    private final ClientFactory factory;
052
053    public ClientFactory getFactory() {
054        return factory;
055    }
056    public FaceDbThriftClient(ClientFactory factory) {
057        super();
058        this.factory = checkNotNull(factory,"factory is null");
059    }
060    /**
061     * @param host RPC service host
062     * @param port RPC service port 
063     */
064    public FaceDbThriftClient(String host,int port) {
065        this(ClientFactory.builder().setHostAndPort(host,port));
066    }
067    /**
068     * @param hostAndPort RPC service host and port 
069     */
070    public FaceDbThriftClient(HostAndPort hostAndPort) {
071        this(ClientFactory.builder().setHostAndPort(hostAndPort));
072    }
073    /**
074     * test if connectable for RPC service
075     * @return return {@code true} if connectable ,otherwise {@code false}
076     */
077    public boolean testConnect(){
078        return factory.testConnect();
079    }
080    /**
081     * 服务异步调用接口
082     *
083     * @param <T>
084     */
085    private interface ServiceAsyncCall<T> {
086        public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<T> callback);
087    }
088    /**
089     * 异常调用转同步调用实现
090     * @param transformer
091     * @param serviceCall
092     * @return R 返回值对象
093     * @throws Throwable
094     */
095    private <R,L>R syncCall(final Function<L, R> transformer,final ServiceAsyncCall<L> serviceCall) throws Throwable{
096        final AtomicReference<R> res = new AtomicReference<R>(null);
097        final AtomicReference<Throwable> err = new AtomicReference<Throwable>(null);
098        /* 异步调用结束标志信号量 */
099        final Object lock = new Object();
100        final ServiceMethodCallback<L> callback = new ServiceMethodCallback<L>() {
101
102            @Override
103            public void onSuccess(L result) {
104                res.set(transformer.apply(result));
105                /* 异步调用结束,唤醒等待线程 */
106                synchronized(lock){
107                    lock.notifyAll();
108                }
109            }
110
111            @Override
112            public void onError(Throwable error) {
113                err.set(error);
114                /* 异步调用结束,唤醒等待线程 */
115                synchronized(lock){
116                    lock.notifyAll();
117                }
118            }
119        };
120        /* 连接关闭侦听器当检测到异常时调用callback来处理 */
121        AsyncClientBase.Listener closeListener = new AsyncClientBase.Listener(){
122                @Override
123                public void onTransportClosed() {
124                }
125        
126                @Override
127                public void onError(Throwable error) {
128                    callback.onError(error);
129                }};
130        net.gdface.facedb.thrift.client.FaceDbClient service = factory.applyInstance(net.gdface.facedb.thrift.client.FaceDbClient.class,closeListener);
131
132        synchronized(lock){
133            try {
134                serviceCall.call(service,callback);
135                /* 等待异步调用结束 */
136                lock.wait();
137            } catch (InterruptedException e) {
138                err.set(e);
139            } finally{
140                try {
141                    /* 调用结束关闭连接 */
142                    service.close();
143                } catch (IOException e) {}
144            }
145        }
146        Throwable e = err.get(); 
147        if(null != e){
148            /** 判断异常类型返回null */
149            returnNull(e);
150        }
151        return res.get();
152    }    
153    @Override
154    public String toString() {
155        StringBuilder builder = new StringBuilder();
156        builder.append("FaceDbThriftClient [factory=");
157        builder.append(factory);
158        builder.append(",interface=");
159        builder.append(FaceDb.class.getName());
160        builder.append("]");
161        return builder.toString();
162    }
163    @Override
164    public FeatureBean addFeature(final byte[] feature,
165        final Map<ByteBuffer, CodeInfo> faces) 
166        throws DuplicateRecordException{
167        try{
168            return syncCall(new Function<net.gdface.facedb.thrift.client.FeatureBean,FeatureBean>() {
169                @Override
170                public FeatureBean apply(net.gdface.facedb.thrift.client.FeatureBean input) {
171                    return TypeTransformer.getInstance().to(
172                    input,
173                    net.gdface.facedb.thrift.client.FeatureBean.class,
174                    FeatureBean.class);
175                }},
176                new ServiceAsyncCall<net.gdface.facedb.thrift.client.FeatureBean>(){
177                @Override
178                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.FeatureBean> nativeCallback){
179                    service.addFeature(TypeTransformer.getInstance().to(
180                    feature,
181                    byte[].class,
182                    okio.ByteString.class),TypeTransformer.getInstance().to(
183                    faces,
184                    ByteBuffer.class,
185                    CodeInfo.class,
186                    okio.ByteString.class,
187                    net.gdface.facedb.thrift.client.CodeInfo.class),nativeCallback);
188                }});
189        }
190        catch(net.gdface.facedb.thrift.client.DuplicateRecordException e){
191            throw TypeTransformer.getInstance().to(
192                    e,
193                    net.gdface.facedb.thrift.client.DuplicateRecordException.class,
194                    DuplicateRecordException.class);
195        }
196        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
197            throw new ServiceRuntimeException(e);
198        }
199        catch (Throwable e) {
200            Throwables.throwIfUnchecked(e);
201            throw new RuntimeException(e);
202        }
203    }
204    @Override
205    public ImageBean addImage(final byte[] imgData,
206        final List<CodeInfo> features) 
207        throws DuplicateRecordException{
208        try{
209            return syncCall(new Function<net.gdface.facedb.thrift.client.ImageBean,ImageBean>() {
210                @Override
211                public ImageBean apply(net.gdface.facedb.thrift.client.ImageBean input) {
212                    return TypeTransformer.getInstance().to(
213                    input,
214                    net.gdface.facedb.thrift.client.ImageBean.class,
215                    ImageBean.class);
216                }},
217                new ServiceAsyncCall<net.gdface.facedb.thrift.client.ImageBean>(){
218                @Override
219                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.ImageBean> nativeCallback){
220                    service.addImage(TypeTransformer.getInstance().to(
221                    imgData,
222                    byte[].class,
223                    okio.ByteString.class),TypeTransformer.getInstance().to(
224                    features,
225                    CodeInfo.class,
226                    net.gdface.facedb.thrift.client.CodeInfo.class),nativeCallback);
227                }});
228        }
229        catch(net.gdface.facedb.thrift.client.DuplicateRecordException e){
230            throw TypeTransformer.getInstance().to(
231                    e,
232                    net.gdface.facedb.thrift.client.DuplicateRecordException.class,
233                    DuplicateRecordException.class);
234        }
235        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
236            throw new ServiceRuntimeException(e);
237        }
238        catch (Throwable e) {
239            Throwables.throwIfUnchecked(e);
240            throw new RuntimeException(e);
241        }
242    }
243    @Override
244    public ImageBean addImageIfAbsent(final byte[] imgData,
245        final CodeInfo code,
246        final double similarty) 
247        throws ImageErrorException,NotFaceDetectedException{
248        try{
249            return syncCall(new Function<net.gdface.facedb.thrift.client.ImageBean,ImageBean>() {
250                @Override
251                public ImageBean apply(net.gdface.facedb.thrift.client.ImageBean input) {
252                    return TypeTransformer.getInstance().to(
253                    input,
254                    net.gdface.facedb.thrift.client.ImageBean.class,
255                    ImageBean.class);
256                }},
257                new ServiceAsyncCall<net.gdface.facedb.thrift.client.ImageBean>(){
258                @Override
259                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.ImageBean> nativeCallback){
260                    service.addImageIfAbsent(TypeTransformer.getInstance().to(
261                    imgData,
262                    byte[].class,
263                    okio.ByteString.class),TypeTransformer.getInstance().to(
264                    code,
265                    CodeInfo.class,
266                    net.gdface.facedb.thrift.client.CodeInfo.class),similarty,nativeCallback);
267                }});
268        }
269        catch(net.gdface.facedb.thrift.client.ImageErrorException e){
270            throw TypeTransformer.getInstance().to(
271                    e,
272                    net.gdface.facedb.thrift.client.ImageErrorException.class,
273                    ImageErrorException.class);
274        }
275        catch(net.gdface.facedb.thrift.client.NotFaceDetectedException e){
276            throw TypeTransformer.getInstance().to(
277                    e,
278                    net.gdface.facedb.thrift.client.NotFaceDetectedException.class,
279                    NotFaceDetectedException.class);
280        }
281        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
282            throw new ServiceRuntimeException(e);
283        }
284        catch (Throwable e) {
285            Throwables.throwIfUnchecked(e);
286            throw new RuntimeException(e);
287        }
288    }
289    @Override
290    public double[] compareFaces(final String featureId,
291        final byte[] imgData,
292        final CodeInfo[] facePos) 
293        throws NotFoundBeanException,NotFaceDetectedException{
294        try{
295            return syncCall(new Function<java.util.List<Double>,double[]>() {
296                @Override
297                public double[] apply(java.util.List<Double> input) {
298                    return TypeTransformer.getInstance().todoubleArray(
299                    input,
300                    double.class,
301                    double.class);
302                }},
303                new ServiceAsyncCall<java.util.List<Double>>(){
304                @Override
305                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<java.util.List<Double>> nativeCallback){
306                    service.compareFaces(featureId,TypeTransformer.getInstance().to(
307                    imgData,
308                    byte[].class,
309                    okio.ByteString.class),TypeTransformer.getInstance().to(
310                    facePos,
311                    CodeInfo.class,
312                    net.gdface.facedb.thrift.client.CodeInfo.class),nativeCallback);
313                }});
314        }
315        catch(net.gdface.facedb.thrift.client.NotFoundBeanException e){
316            throw TypeTransformer.getInstance().to(
317                    e,
318                    net.gdface.facedb.thrift.client.NotFoundBeanException.class,
319                    NotFoundBeanException.class);
320        }
321        catch(net.gdface.facedb.thrift.client.NotFaceDetectedException e){
322            throw TypeTransformer.getInstance().to(
323                    e,
324                    net.gdface.facedb.thrift.client.NotFaceDetectedException.class,
325                    NotFaceDetectedException.class);
326        }
327        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
328            throw new ServiceRuntimeException(e);
329        }
330        catch (Throwable e) {
331            Throwables.throwIfUnchecked(e);
332            throw new RuntimeException(e);
333        }
334    }
335    @Override
336    public double compareFeature(final String featureId,
337        final byte[] feature) 
338        throws NotFoundBeanException{
339        try{
340            return syncCall(new Function<Double,Double>() {
341                @Override
342                public Double apply(Double input) {
343                    return input;
344                }},
345                new ServiceAsyncCall<Double>(){
346                @Override
347                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Double> nativeCallback){
348                    service.compareFeature(featureId,TypeTransformer.getInstance().to(
349                    feature,
350                    byte[].class,
351                    okio.ByteString.class),nativeCallback);
352                }});
353        }
354        catch(net.gdface.facedb.thrift.client.NotFoundBeanException e){
355            throw TypeTransformer.getInstance().to(
356                    e,
357                    net.gdface.facedb.thrift.client.NotFoundBeanException.class,
358                    NotFoundBeanException.class);
359        }
360        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
361            throw new ServiceRuntimeException(e);
362        }
363        catch (Throwable e) {
364            Throwables.throwIfUnchecked(e);
365            throw new RuntimeException(e);
366        }
367    }
368    @Override
369    public double compareFeatureId(final String featureId1,
370        final String featureId2) 
371        throws NotFoundBeanException{
372        try{
373            return syncCall(new Function<Double,Double>() {
374                @Override
375                public Double apply(Double input) {
376                    return input;
377                }},
378                new ServiceAsyncCall<Double>(){
379                @Override
380                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Double> nativeCallback){
381                    service.compareFeatureId(featureId1,featureId2,nativeCallback);
382                }});
383        }
384        catch(net.gdface.facedb.thrift.client.NotFoundBeanException e){
385            throw TypeTransformer.getInstance().to(
386                    e,
387                    net.gdface.facedb.thrift.client.NotFoundBeanException.class,
388                    NotFoundBeanException.class);
389        }
390        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
391            throw new ServiceRuntimeException(e);
392        }
393        catch (Throwable e) {
394            Throwables.throwIfUnchecked(e);
395            throw new RuntimeException(e);
396        }
397    }
398    @Override
399    public double[] compareFeatures(final String featureId,
400        final CodeInfo[] features) 
401        throws NotFoundBeanException{
402        try{
403            return syncCall(new Function<java.util.List<Double>,double[]>() {
404                @Override
405                public double[] apply(java.util.List<Double> input) {
406                    return TypeTransformer.getInstance().todoubleArray(
407                    input,
408                    double.class,
409                    double.class);
410                }},
411                new ServiceAsyncCall<java.util.List<Double>>(){
412                @Override
413                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<java.util.List<Double>> nativeCallback){
414                    service.compareFeatures(featureId,TypeTransformer.getInstance().to(
415                    features,
416                    CodeInfo.class,
417                    net.gdface.facedb.thrift.client.CodeInfo.class),nativeCallback);
418                }});
419        }
420        catch(net.gdface.facedb.thrift.client.NotFoundBeanException e){
421            throw TypeTransformer.getInstance().to(
422                    e,
423                    net.gdface.facedb.thrift.client.NotFoundBeanException.class,
424                    NotFoundBeanException.class);
425        }
426        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
427            throw new ServiceRuntimeException(e);
428        }
429        catch (Throwable e) {
430            Throwables.throwIfUnchecked(e);
431            throw new RuntimeException(e);
432        }
433    }
434    @Override
435    public Map<String, String> dbCapacity() 
436        {
437        try{
438            return syncCall(new Function<Map<String,String>,Map<String, String>>() {
439                @Override
440                public Map<String, String> apply(Map<String,String> input) {
441                    return TypeTransformer.getInstance().to(
442                    input,
443                    String.class,
444                    String.class,
445                    String.class,
446                    String.class);
447                }},
448                new ServiceAsyncCall<Map<String,String>>(){
449                @Override
450                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Map<String,String>> nativeCallback){
451                    service.dbCapacity(nativeCallback);
452                }});
453        }
454        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
455            throw new ServiceRuntimeException(e);
456        }
457        catch (Throwable e) {
458            Throwables.throwIfUnchecked(e);
459            throw new RuntimeException(e);
460        }
461    }
462    @Override
463    public boolean deleteFeature(final String featureId,
464        final boolean cascade) 
465        {
466        try{
467            return syncCall(new Function<Boolean,Boolean>() {
468                @Override
469                public Boolean apply(Boolean input) {
470                    return input;
471                }},
472                new ServiceAsyncCall<Boolean>(){
473                @Override
474                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Boolean> nativeCallback){
475                    service.deleteFeature(featureId,cascade,nativeCallback);
476                }});
477        }
478        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
479            throw new ServiceRuntimeException(e);
480        }
481        catch (Throwable e) {
482            Throwables.throwIfUnchecked(e);
483            throw new RuntimeException(e);
484        }
485    }
486    @Override
487    public int deleteFeatures(final List<String> featureIdList,
488        final boolean cascade) 
489        {
490        try{
491            return syncCall(new Function<Integer,Integer>() {
492                @Override
493                public Integer apply(Integer input) {
494                    return input;
495                }},
496                new ServiceAsyncCall<Integer>(){
497                @Override
498                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Integer> nativeCallback){
499                    service.deleteFeatures(featureIdList,cascade,nativeCallback);
500                }});
501        }
502        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
503            throw new ServiceRuntimeException(e);
504        }
505        catch (Throwable e) {
506            Throwables.throwIfUnchecked(e);
507            throw new RuntimeException(e);
508        }
509    }
510    @Override
511    public boolean deleteImage(final String imgMd5,
512        final boolean cascade) 
513        {
514        try{
515            return syncCall(new Function<Boolean,Boolean>() {
516                @Override
517                public Boolean apply(Boolean input) {
518                    return input;
519                }},
520                new ServiceAsyncCall<Boolean>(){
521                @Override
522                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Boolean> nativeCallback){
523                    service.deleteImage(imgMd5,cascade,nativeCallback);
524                }});
525        }
526        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
527            throw new ServiceRuntimeException(e);
528        }
529        catch (Throwable e) {
530            Throwables.throwIfUnchecked(e);
531            throw new RuntimeException(e);
532        }
533    }
534    @Override
535    public int deleteImages(final List<String> imgMd5List,
536        final boolean cascade) 
537        {
538        try{
539            return syncCall(new Function<Integer,Integer>() {
540                @Override
541                public Integer apply(Integer input) {
542                    return input;
543                }},
544                new ServiceAsyncCall<Integer>(){
545                @Override
546                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Integer> nativeCallback){
547                    service.deleteImages(imgMd5List,cascade,nativeCallback);
548                }});
549        }
550        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
551            throw new ServiceRuntimeException(e);
552        }
553        catch (Throwable e) {
554            Throwables.throwIfUnchecked(e);
555            throw new RuntimeException(e);
556        }
557    }
558    @Override
559    public ImageBean detectAndAddFeatures(final byte[] imgData,
560        final int faceNum) 
561        throws DuplicateRecordException,ImageErrorException,NotFaceDetectedException{
562        try{
563            return syncCall(new Function<net.gdface.facedb.thrift.client.ImageBean,ImageBean>() {
564                @Override
565                public ImageBean apply(net.gdface.facedb.thrift.client.ImageBean input) {
566                    return TypeTransformer.getInstance().to(
567                    input,
568                    net.gdface.facedb.thrift.client.ImageBean.class,
569                    ImageBean.class);
570                }},
571                new ServiceAsyncCall<net.gdface.facedb.thrift.client.ImageBean>(){
572                @Override
573                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.ImageBean> nativeCallback){
574                    service.detectAndAddFeatures(TypeTransformer.getInstance().to(
575                    imgData,
576                    byte[].class,
577                    okio.ByteString.class),faceNum,nativeCallback);
578                }});
579        }
580        catch(net.gdface.facedb.thrift.client.DuplicateRecordException e){
581            throw TypeTransformer.getInstance().to(
582                    e,
583                    net.gdface.facedb.thrift.client.DuplicateRecordException.class,
584                    DuplicateRecordException.class);
585        }
586        catch(net.gdface.facedb.thrift.client.ImageErrorException e){
587            throw TypeTransformer.getInstance().to(
588                    e,
589                    net.gdface.facedb.thrift.client.ImageErrorException.class,
590                    ImageErrorException.class);
591        }
592        catch(net.gdface.facedb.thrift.client.NotFaceDetectedException e){
593            throw TypeTransformer.getInstance().to(
594                    e,
595                    net.gdface.facedb.thrift.client.NotFaceDetectedException.class,
596                    NotFaceDetectedException.class);
597        }
598        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
599            throw new ServiceRuntimeException(e);
600        }
601        catch (Throwable e) {
602            Throwables.throwIfUnchecked(e);
603            throw new RuntimeException(e);
604        }
605    }
606    @Override
607    public CompareResult detectAndCompareFaces(final String featureId,
608        final byte[] imgData,
609        final int faceNum) 
610        throws NotFoundBeanException,ImageErrorException,NotFaceDetectedException{
611        try{
612            return syncCall(new Function<net.gdface.facedb.thrift.client.CompareResult,CompareResult>() {
613                @Override
614                public CompareResult apply(net.gdface.facedb.thrift.client.CompareResult input) {
615                    return TypeTransformer.getInstance().to(
616                    input,
617                    net.gdface.facedb.thrift.client.CompareResult.class,
618                    CompareResult.class);
619                }},
620                new ServiceAsyncCall<net.gdface.facedb.thrift.client.CompareResult>(){
621                @Override
622                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.CompareResult> nativeCallback){
623                    service.detectAndCompareFaces(featureId,TypeTransformer.getInstance().to(
624                    imgData,
625                    byte[].class,
626                    okio.ByteString.class),faceNum,nativeCallback);
627                }});
628        }
629        catch(net.gdface.facedb.thrift.client.NotFoundBeanException e){
630            throw TypeTransformer.getInstance().to(
631                    e,
632                    net.gdface.facedb.thrift.client.NotFoundBeanException.class,
633                    NotFoundBeanException.class);
634        }
635        catch(net.gdface.facedb.thrift.client.ImageErrorException e){
636            throw TypeTransformer.getInstance().to(
637                    e,
638                    net.gdface.facedb.thrift.client.ImageErrorException.class,
639                    ImageErrorException.class);
640        }
641        catch(net.gdface.facedb.thrift.client.NotFaceDetectedException e){
642            throw TypeTransformer.getInstance().to(
643                    e,
644                    net.gdface.facedb.thrift.client.NotFaceDetectedException.class,
645                    NotFaceDetectedException.class);
646        }
647        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
648            throw new ServiceRuntimeException(e);
649        }
650        catch (Throwable e) {
651            Throwables.throwIfUnchecked(e);
652            throw new RuntimeException(e);
653        }
654    }
655    @Override
656    public CodeInfo[] detectAndGetCodeInfo(final byte[] imgData) 
657        throws ImageErrorException{
658        try{
659            return syncCall(new Function<java.util.List<net.gdface.facedb.thrift.client.CodeInfo>,CodeInfo[]>() {
660                @Override
661                public CodeInfo[] apply(java.util.List<net.gdface.facedb.thrift.client.CodeInfo> input) {
662                    return TypeTransformer.getInstance().toArray(
663                    input,
664                    net.gdface.facedb.thrift.client.CodeInfo.class,
665                    CodeInfo.class);
666                }},
667                new ServiceAsyncCall<java.util.List<net.gdface.facedb.thrift.client.CodeInfo>>(){
668                @Override
669                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<java.util.List<net.gdface.facedb.thrift.client.CodeInfo>> nativeCallback){
670                    service.detectAndGetCodeInfo(TypeTransformer.getInstance().to(
671                    imgData,
672                    byte[].class,
673                    okio.ByteString.class),nativeCallback);
674                }});
675        }
676        catch(net.gdface.facedb.thrift.client.ImageErrorException e){
677            throw TypeTransformer.getInstance().to(
678                    e,
679                    net.gdface.facedb.thrift.client.ImageErrorException.class,
680                    ImageErrorException.class);
681        }
682        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
683            throw new ServiceRuntimeException(e);
684        }
685        catch (Throwable e) {
686            Throwables.throwIfUnchecked(e);
687            throw new RuntimeException(e);
688        }
689    }
690    @Override
691    public CodeInfo[] detectAndGetCodeInfo(final MatType matType,
692        final byte[] matData,
693        final int width,
694        final int height) 
695        throws ImageErrorException{
696        try{
697            return syncCall(new Function<java.util.List<net.gdface.facedb.thrift.client.CodeInfo>,CodeInfo[]>() {
698                @Override
699                public CodeInfo[] apply(java.util.List<net.gdface.facedb.thrift.client.CodeInfo> input) {
700                    return TypeTransformer.getInstance().toArray(
701                    input,
702                    net.gdface.facedb.thrift.client.CodeInfo.class,
703                    CodeInfo.class);
704                }},
705                new ServiceAsyncCall<java.util.List<net.gdface.facedb.thrift.client.CodeInfo>>(){
706                @Override
707                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<java.util.List<net.gdface.facedb.thrift.client.CodeInfo>> nativeCallback){
708                    service.detectAndGetCodeInfoMat(TypeTransformer.getInstance().to(
709                    matType,
710                    MatType.class,
711                    net.gdface.facedb.thrift.client.MatType.class),TypeTransformer.getInstance().to(
712                    matData,
713                    byte[].class,
714                    okio.ByteString.class),width,height,nativeCallback);
715                }});
716        }
717        catch(net.gdface.facedb.thrift.client.ImageErrorException e){
718            throw TypeTransformer.getInstance().to(
719                    e,
720                    net.gdface.facedb.thrift.client.ImageErrorException.class,
721                    ImageErrorException.class);
722        }
723        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
724            throw new ServiceRuntimeException(e);
725        }
726        catch (Throwable e) {
727            Throwables.throwIfUnchecked(e);
728            throw new RuntimeException(e);
729        }
730    }
731    @Override
732    public SearchResult[] detectAndSearchFaces(final byte[] imgData,
733        final double similarty,
734        final int rows,
735        final String where) 
736        throws ImageErrorException,NotFaceDetectedException{
737        try{
738            return syncCall(new Function<java.util.List<net.gdface.facedb.thrift.client.SearchResult>,SearchResult[]>() {
739                @Override
740                public SearchResult[] apply(java.util.List<net.gdface.facedb.thrift.client.SearchResult> input) {
741                    return TypeTransformer.getInstance().toArray(
742                    input,
743                    net.gdface.facedb.thrift.client.SearchResult.class,
744                    SearchResult.class);
745                }},
746                new ServiceAsyncCall<java.util.List<net.gdface.facedb.thrift.client.SearchResult>>(){
747                @Override
748                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<java.util.List<net.gdface.facedb.thrift.client.SearchResult>> nativeCallback){
749                    service.detectAndSearchFaces(TypeTransformer.getInstance().to(
750                    imgData,
751                    byte[].class,
752                    okio.ByteString.class),similarty,rows,where,nativeCallback);
753                }});
754        }
755        catch(net.gdface.facedb.thrift.client.ImageErrorException e){
756            throw TypeTransformer.getInstance().to(
757                    e,
758                    net.gdface.facedb.thrift.client.ImageErrorException.class,
759                    ImageErrorException.class);
760        }
761        catch(net.gdface.facedb.thrift.client.NotFaceDetectedException e){
762            throw TypeTransformer.getInstance().to(
763                    e,
764                    net.gdface.facedb.thrift.client.NotFaceDetectedException.class,
765                    NotFaceDetectedException.class);
766        }
767        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
768            throw new ServiceRuntimeException(e);
769        }
770        catch (Throwable e) {
771            Throwables.throwIfUnchecked(e);
772            throw new RuntimeException(e);
773        }
774    }
775    @Override
776    public CodeInfo getCodeInfo(final int faceId) 
777        {
778        try{
779            return syncCall(new Function<net.gdface.facedb.thrift.client.CodeInfo,CodeInfo>() {
780                @Override
781                public CodeInfo apply(net.gdface.facedb.thrift.client.CodeInfo input) {
782                    return TypeTransformer.getInstance().to(
783                    input,
784                    net.gdface.facedb.thrift.client.CodeInfo.class,
785                    CodeInfo.class);
786                }},
787                new ServiceAsyncCall<net.gdface.facedb.thrift.client.CodeInfo>(){
788                @Override
789                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.CodeInfo> nativeCallback){
790                    service.getCodeInfo(faceId,nativeCallback);
791                }});
792        }
793        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
794            throw new ServiceRuntimeException(e);
795        }
796        catch (Throwable e) {
797            Throwables.throwIfUnchecked(e);
798            throw new RuntimeException(e);
799        }
800    }
801    @Override
802    public CodeInfo getCodeInfoByFeatureId(final String featureId) 
803        {
804        try{
805            return syncCall(new Function<net.gdface.facedb.thrift.client.CodeInfo,CodeInfo>() {
806                @Override
807                public CodeInfo apply(net.gdface.facedb.thrift.client.CodeInfo input) {
808                    return TypeTransformer.getInstance().to(
809                    input,
810                    net.gdface.facedb.thrift.client.CodeInfo.class,
811                    CodeInfo.class);
812                }},
813                new ServiceAsyncCall<net.gdface.facedb.thrift.client.CodeInfo>(){
814                @Override
815                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.CodeInfo> nativeCallback){
816                    service.getCodeInfoByFeatureId(featureId,nativeCallback);
817                }});
818        }
819        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
820            throw new ServiceRuntimeException(e);
821        }
822        catch (Throwable e) {
823            Throwables.throwIfUnchecked(e);
824            throw new RuntimeException(e);
825        }
826    }
827    @Override
828    public CodeInfo getCodeInfoByImageMd5(final String imageMd5) 
829        {
830        try{
831            return syncCall(new Function<net.gdface.facedb.thrift.client.CodeInfo,CodeInfo>() {
832                @Override
833                public CodeInfo apply(net.gdface.facedb.thrift.client.CodeInfo input) {
834                    return TypeTransformer.getInstance().to(
835                    input,
836                    net.gdface.facedb.thrift.client.CodeInfo.class,
837                    CodeInfo.class);
838                }},
839                new ServiceAsyncCall<net.gdface.facedb.thrift.client.CodeInfo>(){
840                @Override
841                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.CodeInfo> nativeCallback){
842                    service.getCodeInfoByImageMd5(imageMd5,nativeCallback);
843                }});
844        }
845        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
846            throw new ServiceRuntimeException(e);
847        }
848        catch (Throwable e) {
849            Throwables.throwIfUnchecked(e);
850            throw new RuntimeException(e);
851        }
852    }
853    @Override
854    public List<CodeInfo> getCodeInfosByFeatureId(final String featureId) 
855        {
856        try{
857            return syncCall(new Function<List<net.gdface.facedb.thrift.client.CodeInfo>,List<CodeInfo>>() {
858                @Override
859                public List<CodeInfo> apply(List<net.gdface.facedb.thrift.client.CodeInfo> input) {
860                    return TypeTransformer.getInstance().to(
861                    input,
862                    net.gdface.facedb.thrift.client.CodeInfo.class,
863                    CodeInfo.class);
864                }},
865                new ServiceAsyncCall<List<net.gdface.facedb.thrift.client.CodeInfo>>(){
866                @Override
867                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<net.gdface.facedb.thrift.client.CodeInfo>> nativeCallback){
868                    service.getCodeInfosByFeatureId(featureId,nativeCallback);
869                }});
870        }
871        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
872            throw new ServiceRuntimeException(e);
873        }
874        catch (Throwable e) {
875            Throwables.throwIfUnchecked(e);
876            throw new RuntimeException(e);
877        }
878    }
879    @Override
880    public List<CodeInfo> getCodeInfosByImageMd5(final String imageMd5) 
881        {
882        try{
883            return syncCall(new Function<List<net.gdface.facedb.thrift.client.CodeInfo>,List<CodeInfo>>() {
884                @Override
885                public List<CodeInfo> apply(List<net.gdface.facedb.thrift.client.CodeInfo> input) {
886                    return TypeTransformer.getInstance().to(
887                    input,
888                    net.gdface.facedb.thrift.client.CodeInfo.class,
889                    CodeInfo.class);
890                }},
891                new ServiceAsyncCall<List<net.gdface.facedb.thrift.client.CodeInfo>>(){
892                @Override
893                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<net.gdface.facedb.thrift.client.CodeInfo>> nativeCallback){
894                    service.getCodeInfosByImageMd5(imageMd5,nativeCallback);
895                }});
896        }
897        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
898            throw new ServiceRuntimeException(e);
899        }
900        catch (Throwable e) {
901            Throwables.throwIfUnchecked(e);
902            throw new RuntimeException(e);
903        }
904    }
905    @Override
906    public FaceBean getFace(final int faceId) 
907        {
908        try{
909            return syncCall(new Function<net.gdface.facedb.thrift.client.FaceBean,FaceBean>() {
910                @Override
911                public FaceBean apply(net.gdface.facedb.thrift.client.FaceBean input) {
912                    return TypeTransformer.getInstance().to(
913                    input,
914                    net.gdface.facedb.thrift.client.FaceBean.class,
915                    FaceBean.class);
916                }},
917                new ServiceAsyncCall<net.gdface.facedb.thrift.client.FaceBean>(){
918                @Override
919                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.FaceBean> nativeCallback){
920                    service.getFace(faceId,nativeCallback);
921                }});
922        }
923        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
924            throw new ServiceRuntimeException(e);
925        }
926        catch (Throwable e) {
927            Throwables.throwIfUnchecked(e);
928            throw new RuntimeException(e);
929        }
930    }
931    @Override
932    public FaceBean getFaceByFeatureId(final String featureId) 
933        {
934        try{
935            return syncCall(new Function<net.gdface.facedb.thrift.client.FaceBean,FaceBean>() {
936                @Override
937                public FaceBean apply(net.gdface.facedb.thrift.client.FaceBean input) {
938                    return TypeTransformer.getInstance().to(
939                    input,
940                    net.gdface.facedb.thrift.client.FaceBean.class,
941                    FaceBean.class);
942                }},
943                new ServiceAsyncCall<net.gdface.facedb.thrift.client.FaceBean>(){
944                @Override
945                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.FaceBean> nativeCallback){
946                    service.getFaceByFeatureId(featureId,nativeCallback);
947                }});
948        }
949        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
950            throw new ServiceRuntimeException(e);
951        }
952        catch (Throwable e) {
953            Throwables.throwIfUnchecked(e);
954            throw new RuntimeException(e);
955        }
956    }
957    @Override
958    public FaceBean getFaceByImageMd5(final String imageMd5) 
959        {
960        try{
961            return syncCall(new Function<net.gdface.facedb.thrift.client.FaceBean,FaceBean>() {
962                @Override
963                public FaceBean apply(net.gdface.facedb.thrift.client.FaceBean input) {
964                    return TypeTransformer.getInstance().to(
965                    input,
966                    net.gdface.facedb.thrift.client.FaceBean.class,
967                    FaceBean.class);
968                }},
969                new ServiceAsyncCall<net.gdface.facedb.thrift.client.FaceBean>(){
970                @Override
971                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.FaceBean> nativeCallback){
972                    service.getFaceByImageMd5(imageMd5,nativeCallback);
973                }});
974        }
975        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
976            throw new ServiceRuntimeException(e);
977        }
978        catch (Throwable e) {
979            Throwables.throwIfUnchecked(e);
980            throw new RuntimeException(e);
981        }
982    }
983    @Override
984    public int getFaceCount(final String where) 
985        {
986        try{
987            return syncCall(new Function<Integer,Integer>() {
988                @Override
989                public Integer apply(Integer input) {
990                    return input;
991                }},
992                new ServiceAsyncCall<Integer>(){
993                @Override
994                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Integer> nativeCallback){
995                    service.getFaceCount(where,nativeCallback);
996                }});
997        }
998        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
999            throw new ServiceRuntimeException(e);
1000        }
1001        catch (Throwable e) {
1002            Throwables.throwIfUnchecked(e);
1003            throw new RuntimeException(e);
1004        }
1005    }
1006    @Override
1007    public List<FaceBean> getFacesByFeatureId(final String featureId) 
1008        {
1009        try{
1010            return syncCall(new Function<List<net.gdface.facedb.thrift.client.FaceBean>,List<FaceBean>>() {
1011                @Override
1012                public List<FaceBean> apply(List<net.gdface.facedb.thrift.client.FaceBean> input) {
1013                    return TypeTransformer.getInstance().to(
1014                    input,
1015                    net.gdface.facedb.thrift.client.FaceBean.class,
1016                    FaceBean.class);
1017                }},
1018                new ServiceAsyncCall<List<net.gdface.facedb.thrift.client.FaceBean>>(){
1019                @Override
1020                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<net.gdface.facedb.thrift.client.FaceBean>> nativeCallback){
1021                    service.getFacesByFeatureId(featureId,nativeCallback);
1022                }});
1023        }
1024        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1025            throw new ServiceRuntimeException(e);
1026        }
1027        catch (Throwable e) {
1028            Throwables.throwIfUnchecked(e);
1029            throw new RuntimeException(e);
1030        }
1031    }
1032    @Override
1033    public List<FaceBean> getFacesByImageMd5(final String imageMd5) 
1034        {
1035        try{
1036            return syncCall(new Function<List<net.gdface.facedb.thrift.client.FaceBean>,List<FaceBean>>() {
1037                @Override
1038                public List<FaceBean> apply(List<net.gdface.facedb.thrift.client.FaceBean> input) {
1039                    return TypeTransformer.getInstance().to(
1040                    input,
1041                    net.gdface.facedb.thrift.client.FaceBean.class,
1042                    FaceBean.class);
1043                }},
1044                new ServiceAsyncCall<List<net.gdface.facedb.thrift.client.FaceBean>>(){
1045                @Override
1046                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<net.gdface.facedb.thrift.client.FaceBean>> nativeCallback){
1047                    service.getFacesByImageMd5(imageMd5,nativeCallback);
1048                }});
1049        }
1050        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1051            throw new ServiceRuntimeException(e);
1052        }
1053        catch (Throwable e) {
1054            Throwables.throwIfUnchecked(e);
1055            throw new RuntimeException(e);
1056        }
1057    }
1058    @Override
1059    public FeatureBean getFeature(final String featureId) 
1060        {
1061        try{
1062            return syncCall(new Function<net.gdface.facedb.thrift.client.FeatureBean,FeatureBean>() {
1063                @Override
1064                public FeatureBean apply(net.gdface.facedb.thrift.client.FeatureBean input) {
1065                    return TypeTransformer.getInstance().to(
1066                    input,
1067                    net.gdface.facedb.thrift.client.FeatureBean.class,
1068                    FeatureBean.class);
1069                }},
1070                new ServiceAsyncCall<net.gdface.facedb.thrift.client.FeatureBean>(){
1071                @Override
1072                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.FeatureBean> nativeCallback){
1073                    service.getFeature(featureId,nativeCallback);
1074                }});
1075        }
1076        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1077            throw new ServiceRuntimeException(e);
1078        }
1079        catch (Throwable e) {
1080            Throwables.throwIfUnchecked(e);
1081            throw new RuntimeException(e);
1082        }
1083    }
1084    @Override
1085    public FeatureBean getFeatureByFaceId(final int faceId) 
1086        {
1087        try{
1088            return syncCall(new Function<net.gdface.facedb.thrift.client.FeatureBean,FeatureBean>() {
1089                @Override
1090                public FeatureBean apply(net.gdface.facedb.thrift.client.FeatureBean input) {
1091                    return TypeTransformer.getInstance().to(
1092                    input,
1093                    net.gdface.facedb.thrift.client.FeatureBean.class,
1094                    FeatureBean.class);
1095                }},
1096                new ServiceAsyncCall<net.gdface.facedb.thrift.client.FeatureBean>(){
1097                @Override
1098                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.FeatureBean> nativeCallback){
1099                    service.getFeatureByFaceId(faceId,nativeCallback);
1100                }});
1101        }
1102        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1103            throw new ServiceRuntimeException(e);
1104        }
1105        catch (Throwable e) {
1106            Throwables.throwIfUnchecked(e);
1107            throw new RuntimeException(e);
1108        }
1109    }
1110    @Override
1111    public FeatureBean getFeatureByImageMd5(final String imageMd5) 
1112        {
1113        try{
1114            return syncCall(new Function<net.gdface.facedb.thrift.client.FeatureBean,FeatureBean>() {
1115                @Override
1116                public FeatureBean apply(net.gdface.facedb.thrift.client.FeatureBean input) {
1117                    return TypeTransformer.getInstance().to(
1118                    input,
1119                    net.gdface.facedb.thrift.client.FeatureBean.class,
1120                    FeatureBean.class);
1121                }},
1122                new ServiceAsyncCall<net.gdface.facedb.thrift.client.FeatureBean>(){
1123                @Override
1124                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.FeatureBean> nativeCallback){
1125                    service.getFeatureByImageMd5(imageMd5,nativeCallback);
1126                }});
1127        }
1128        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1129            throw new ServiceRuntimeException(e);
1130        }
1131        catch (Throwable e) {
1132            Throwables.throwIfUnchecked(e);
1133            throw new RuntimeException(e);
1134        }
1135    }
1136    @Override
1137    public int getFeatureCount() 
1138        {
1139        try{
1140            return syncCall(new Function<Integer,Integer>() {
1141                @Override
1142                public Integer apply(Integer input) {
1143                    return input;
1144                }},
1145                new ServiceAsyncCall<Integer>(){
1146                @Override
1147                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Integer> nativeCallback){
1148                    service.getFeatureCount(nativeCallback);
1149                }});
1150        }
1151        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1152            throw new ServiceRuntimeException(e);
1153        }
1154        catch (Throwable e) {
1155            Throwables.throwIfUnchecked(e);
1156            throw new RuntimeException(e);
1157        }
1158    }
1159    @Override
1160    public List<FeatureBean> getFeaturesByImageMd5(final String imageMd5) 
1161        {
1162        try{
1163            return syncCall(new Function<List<net.gdface.facedb.thrift.client.FeatureBean>,List<FeatureBean>>() {
1164                @Override
1165                public List<FeatureBean> apply(List<net.gdface.facedb.thrift.client.FeatureBean> input) {
1166                    return TypeTransformer.getInstance().to(
1167                    input,
1168                    net.gdface.facedb.thrift.client.FeatureBean.class,
1169                    FeatureBean.class);
1170                }},
1171                new ServiceAsyncCall<List<net.gdface.facedb.thrift.client.FeatureBean>>(){
1172                @Override
1173                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<net.gdface.facedb.thrift.client.FeatureBean>> nativeCallback){
1174                    service.getFeaturesByImageMd5(imageMd5,nativeCallback);
1175                }});
1176        }
1177        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1178            throw new ServiceRuntimeException(e);
1179        }
1180        catch (Throwable e) {
1181            Throwables.throwIfUnchecked(e);
1182            throw new RuntimeException(e);
1183        }
1184    }
1185    @Override
1186    public ImageBean getImage(final String imageMd5) 
1187        {
1188        try{
1189            return syncCall(new Function<net.gdface.facedb.thrift.client.ImageBean,ImageBean>() {
1190                @Override
1191                public ImageBean apply(net.gdface.facedb.thrift.client.ImageBean input) {
1192                    return TypeTransformer.getInstance().to(
1193                    input,
1194                    net.gdface.facedb.thrift.client.ImageBean.class,
1195                    ImageBean.class);
1196                }},
1197                new ServiceAsyncCall<net.gdface.facedb.thrift.client.ImageBean>(){
1198                @Override
1199                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.ImageBean> nativeCallback){
1200                    service.getImage(imageMd5,nativeCallback);
1201                }});
1202        }
1203        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1204            throw new ServiceRuntimeException(e);
1205        }
1206        catch (Throwable e) {
1207            Throwables.throwIfUnchecked(e);
1208            throw new RuntimeException(e);
1209        }
1210    }
1211    @Override
1212    public ImageBean getImage(final String primaryKey,
1213        final String refType) 
1214        {
1215        try{
1216            return syncCall(new Function<net.gdface.facedb.thrift.client.ImageBean,ImageBean>() {
1217                @Override
1218                public ImageBean apply(net.gdface.facedb.thrift.client.ImageBean input) {
1219                    return TypeTransformer.getInstance().to(
1220                    input,
1221                    net.gdface.facedb.thrift.client.ImageBean.class,
1222                    ImageBean.class);
1223                }},
1224                new ServiceAsyncCall<net.gdface.facedb.thrift.client.ImageBean>(){
1225                @Override
1226                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.ImageBean> nativeCallback){
1227                    service.getImageRef(primaryKey,refType,nativeCallback);
1228                }});
1229        }
1230        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1231            throw new ServiceRuntimeException(e);
1232        }
1233        catch (Throwable e) {
1234            Throwables.throwIfUnchecked(e);
1235            throw new RuntimeException(e);
1236        }
1237    }
1238    @Override
1239    public ImageBean getImageByFaceId(final int faceId) 
1240        {
1241        try{
1242            return syncCall(new Function<net.gdface.facedb.thrift.client.ImageBean,ImageBean>() {
1243                @Override
1244                public ImageBean apply(net.gdface.facedb.thrift.client.ImageBean input) {
1245                    return TypeTransformer.getInstance().to(
1246                    input,
1247                    net.gdface.facedb.thrift.client.ImageBean.class,
1248                    ImageBean.class);
1249                }},
1250                new ServiceAsyncCall<net.gdface.facedb.thrift.client.ImageBean>(){
1251                @Override
1252                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.ImageBean> nativeCallback){
1253                    service.getImageByFaceId(faceId,nativeCallback);
1254                }});
1255        }
1256        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1257            throw new ServiceRuntimeException(e);
1258        }
1259        catch (Throwable e) {
1260            Throwables.throwIfUnchecked(e);
1261            throw new RuntimeException(e);
1262        }
1263    }
1264    @Override
1265    public ImageBean getImageByFeatureId(final String featureId) 
1266        {
1267        try{
1268            return syncCall(new Function<net.gdface.facedb.thrift.client.ImageBean,ImageBean>() {
1269                @Override
1270                public ImageBean apply(net.gdface.facedb.thrift.client.ImageBean input) {
1271                    return TypeTransformer.getInstance().to(
1272                    input,
1273                    net.gdface.facedb.thrift.client.ImageBean.class,
1274                    ImageBean.class);
1275                }},
1276                new ServiceAsyncCall<net.gdface.facedb.thrift.client.ImageBean>(){
1277                @Override
1278                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<net.gdface.facedb.thrift.client.ImageBean> nativeCallback){
1279                    service.getImageByFeatureId(featureId,nativeCallback);
1280                }});
1281        }
1282        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1283            throw new ServiceRuntimeException(e);
1284        }
1285        catch (Throwable e) {
1286            Throwables.throwIfUnchecked(e);
1287            throw new RuntimeException(e);
1288        }
1289    }
1290    @Override
1291    public byte[] getImageBytes(final String imageMd5) 
1292        {
1293        try{
1294            return syncCall(new Function<okio.ByteString,byte[]>() {
1295                @Override
1296                public byte[] apply(okio.ByteString input) {
1297                    return TypeTransformer.getInstance().to(
1298                    input,
1299                    okio.ByteString.class,
1300                    byte[].class);
1301                }},
1302                new ServiceAsyncCall<okio.ByteString>(){
1303                @Override
1304                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<okio.ByteString> nativeCallback){
1305                    service.getImageBytes(imageMd5,nativeCallback);
1306                }});
1307        }
1308        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1309            throw new ServiceRuntimeException(e);
1310        }
1311        catch (Throwable e) {
1312            Throwables.throwIfUnchecked(e);
1313            throw new RuntimeException(e);
1314        }
1315    }
1316    @Override
1317    public byte[] getImageBytes(final String primaryKey,
1318        final String refType) 
1319        {
1320        try{
1321            return syncCall(new Function<okio.ByteString,byte[]>() {
1322                @Override
1323                public byte[] apply(okio.ByteString input) {
1324                    return TypeTransformer.getInstance().to(
1325                    input,
1326                    okio.ByteString.class,
1327                    byte[].class);
1328                }},
1329                new ServiceAsyncCall<okio.ByteString>(){
1330                @Override
1331                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<okio.ByteString> nativeCallback){
1332                    service.getImageBytesRef(primaryKey,refType,nativeCallback);
1333                }});
1334        }
1335        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1336            throw new ServiceRuntimeException(e);
1337        }
1338        catch (Throwable e) {
1339            Throwables.throwIfUnchecked(e);
1340            throw new RuntimeException(e);
1341        }
1342    }
1343    @Override
1344    public int getImageCount(final String where) 
1345        {
1346        try{
1347            return syncCall(new Function<Integer,Integer>() {
1348                @Override
1349                public Integer apply(Integer input) {
1350                    return input;
1351                }},
1352                new ServiceAsyncCall<Integer>(){
1353                @Override
1354                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Integer> nativeCallback){
1355                    service.getImageCount(where,nativeCallback);
1356                }});
1357        }
1358        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1359            throw new ServiceRuntimeException(e);
1360        }
1361        catch (Throwable e) {
1362            Throwables.throwIfUnchecked(e);
1363            throw new RuntimeException(e);
1364        }
1365    }
1366    @Override
1367    public List<ImageBean> getImagesByFeatureId(final String featureId) 
1368        {
1369        try{
1370            return syncCall(new Function<List<net.gdface.facedb.thrift.client.ImageBean>,List<ImageBean>>() {
1371                @Override
1372                public List<ImageBean> apply(List<net.gdface.facedb.thrift.client.ImageBean> input) {
1373                    return TypeTransformer.getInstance().to(
1374                    input,
1375                    net.gdface.facedb.thrift.client.ImageBean.class,
1376                    ImageBean.class);
1377                }},
1378                new ServiceAsyncCall<List<net.gdface.facedb.thrift.client.ImageBean>>(){
1379                @Override
1380                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<net.gdface.facedb.thrift.client.ImageBean>> nativeCallback){
1381                    service.getImagesByFeatureId(featureId,nativeCallback);
1382                }});
1383        }
1384        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1385            throw new ServiceRuntimeException(e);
1386        }
1387        catch (Throwable e) {
1388            Throwables.throwIfUnchecked(e);
1389            throw new RuntimeException(e);
1390        }
1391    }
1392    @Override
1393    public boolean hasFeature(final byte[] feature) 
1394        {
1395        try{
1396            return syncCall(new Function<Boolean,Boolean>() {
1397                @Override
1398                public Boolean apply(Boolean input) {
1399                    return input;
1400                }},
1401                new ServiceAsyncCall<Boolean>(){
1402                @Override
1403                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Boolean> nativeCallback){
1404                    service.hasFeature(TypeTransformer.getInstance().to(
1405                    feature,
1406                    byte[].class,
1407                    okio.ByteString.class),nativeCallback);
1408                }});
1409        }
1410        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1411            throw new ServiceRuntimeException(e);
1412        }
1413        catch (Throwable e) {
1414            Throwables.throwIfUnchecked(e);
1415            throw new RuntimeException(e);
1416        }
1417    }
1418    @Override
1419    public boolean hasFeatureByMD5(final String featureId) 
1420        {
1421        try{
1422            return syncCall(new Function<Boolean,Boolean>() {
1423                @Override
1424                public Boolean apply(Boolean input) {
1425                    return input;
1426                }},
1427                new ServiceAsyncCall<Boolean>(){
1428                @Override
1429                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Boolean> nativeCallback){
1430                    service.hasFeatureByMD5(featureId,nativeCallback);
1431                }});
1432        }
1433        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1434            throw new ServiceRuntimeException(e);
1435        }
1436        catch (Throwable e) {
1437            Throwables.throwIfUnchecked(e);
1438            throw new RuntimeException(e);
1439        }
1440    }
1441    @Override
1442    public boolean hasImage(final String imageMd5) 
1443        {
1444        try{
1445            return syncCall(new Function<Boolean,Boolean>() {
1446                @Override
1447                public Boolean apply(Boolean input) {
1448                    return input;
1449                }},
1450                new ServiceAsyncCall<Boolean>(){
1451                @Override
1452                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<Boolean> nativeCallback){
1453                    service.hasImage(imageMd5,nativeCallback);
1454                }});
1455        }
1456        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1457            throw new ServiceRuntimeException(e);
1458        }
1459        catch (Throwable e) {
1460            Throwables.throwIfUnchecked(e);
1461            throw new RuntimeException(e);
1462        }
1463    }
1464    @Override
1465    public boolean isLocal(){
1466        return false;
1467    }
1468    @Override
1469    public List<String> loadFeaturesMd5ByCreateTime(final String timestamp) 
1470        {
1471        try{
1472            return syncCall(new Function<List<String>,List<String>>() {
1473                @Override
1474                public List<String> apply(List<String> input) {
1475                    return input;
1476                }},
1477                new ServiceAsyncCall<List<String>>(){
1478                @Override
1479                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<String>> nativeCallback){
1480                    service.loadFeaturesMd5ByCreateTimeTimeStr(timestamp,nativeCallback);
1481                }});
1482        }
1483        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1484            throw new ServiceRuntimeException(e);
1485        }
1486        catch (Throwable e) {
1487            Throwables.throwIfUnchecked(e);
1488            throw new RuntimeException(e);
1489        }
1490    }
1491    @Override
1492    public List<String> loadFeaturesMd5ByCreateTime(final Date timestamp) 
1493        {
1494        try{
1495            return syncCall(new Function<List<String>,List<String>>() {
1496                @Override
1497                public List<String> apply(List<String> input) {
1498                    return input;
1499                }},
1500                new ServiceAsyncCall<List<String>>(){
1501                @Override
1502                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<String>> nativeCallback){
1503                    service.loadFeaturesMd5ByCreateTime(TypeTransformer.getInstance().to(
1504                    timestamp,
1505                    Date.class,
1506                    Long.class),nativeCallback);
1507                }});
1508        }
1509        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1510            throw new ServiceRuntimeException(e);
1511        }
1512        catch (Throwable e) {
1513            Throwables.throwIfUnchecked(e);
1514            throw new RuntimeException(e);
1515        }
1516    }
1517    @Override
1518    public List<String> loadFeaturesMd5ByWhere(final String where) 
1519        {
1520        try{
1521            return syncCall(new Function<List<String>,List<String>>() {
1522                @Override
1523                public List<String> apply(List<String> input) {
1524                    return input;
1525                }},
1526                new ServiceAsyncCall<List<String>>(){
1527                @Override
1528                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<String>> nativeCallback){
1529                    service.loadFeaturesMd5ByWhere(where,nativeCallback);
1530                }});
1531        }
1532        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1533            throw new ServiceRuntimeException(e);
1534        }
1535        catch (Throwable e) {
1536            Throwables.throwIfUnchecked(e);
1537            throw new RuntimeException(e);
1538        }
1539    }
1540    @Override
1541    public List<ImageBean> loadImagesByWhere(final String where,
1542        final int startRow,
1543        final int numRows) 
1544        {
1545        try{
1546            return syncCall(new Function<List<net.gdface.facedb.thrift.client.ImageBean>,List<ImageBean>>() {
1547                @Override
1548                public List<ImageBean> apply(List<net.gdface.facedb.thrift.client.ImageBean> input) {
1549                    return TypeTransformer.getInstance().to(
1550                    input,
1551                    net.gdface.facedb.thrift.client.ImageBean.class,
1552                    ImageBean.class);
1553                }},
1554                new ServiceAsyncCall<List<net.gdface.facedb.thrift.client.ImageBean>>(){
1555                @Override
1556                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<net.gdface.facedb.thrift.client.ImageBean>> nativeCallback){
1557                    service.loadImagesByWhere(where,startRow,numRows,nativeCallback);
1558                }});
1559        }
1560        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1561            throw new ServiceRuntimeException(e);
1562        }
1563        catch (Throwable e) {
1564            Throwables.throwIfUnchecked(e);
1565            throw new RuntimeException(e);
1566        }
1567    }
1568    @Override
1569    public List<String> loadImagesMd5ByCreateTime(final String timestamp) 
1570        {
1571        try{
1572            return syncCall(new Function<List<String>,List<String>>() {
1573                @Override
1574                public List<String> apply(List<String> input) {
1575                    return input;
1576                }},
1577                new ServiceAsyncCall<List<String>>(){
1578                @Override
1579                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<String>> nativeCallback){
1580                    service.loadImagesMd5ByCreateTimeTimeStr(timestamp,nativeCallback);
1581                }});
1582        }
1583        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1584            throw new ServiceRuntimeException(e);
1585        }
1586        catch (Throwable e) {
1587            Throwables.throwIfUnchecked(e);
1588            throw new RuntimeException(e);
1589        }
1590    }
1591    @Override
1592    public List<String> loadImagesMd5ByCreateTime(final Date timestamp) 
1593        {
1594        try{
1595            return syncCall(new Function<List<String>,List<String>>() {
1596                @Override
1597                public List<String> apply(List<String> input) {
1598                    return input;
1599                }},
1600                new ServiceAsyncCall<List<String>>(){
1601                @Override
1602                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<String>> nativeCallback){
1603                    service.loadImagesMd5ByCreateTime(TypeTransformer.getInstance().to(
1604                    timestamp,
1605                    Date.class,
1606                    Long.class),nativeCallback);
1607                }});
1608        }
1609        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1610            throw new ServiceRuntimeException(e);
1611        }
1612        catch (Throwable e) {
1613            Throwables.throwIfUnchecked(e);
1614            throw new RuntimeException(e);
1615        }
1616    }
1617    @Override
1618    public List<String> loadImagesMd5ByWhere(final String where) 
1619        {
1620        try{
1621            return syncCall(new Function<List<String>,List<String>>() {
1622                @Override
1623                public List<String> apply(List<String> input) {
1624                    return input;
1625                }},
1626                new ServiceAsyncCall<List<String>>(){
1627                @Override
1628                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<List<String>> nativeCallback){
1629                    service.loadImagesMd5ByWhere(where,nativeCallback);
1630                }});
1631        }
1632        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1633            throw new ServiceRuntimeException(e);
1634        }
1635        catch (Throwable e) {
1636            Throwables.throwIfUnchecked(e);
1637            throw new RuntimeException(e);
1638        }
1639    }
1640    @Override
1641    public SearchResult[] searchFaces(final byte[] imgData,
1642        final CodeInfo facePos,
1643        final double similarty,
1644        final int rows,
1645        final String where) 
1646        throws ImageErrorException,NotFaceDetectedException{
1647        try{
1648            return syncCall(new Function<java.util.List<net.gdface.facedb.thrift.client.SearchResult>,SearchResult[]>() {
1649                @Override
1650                public SearchResult[] apply(java.util.List<net.gdface.facedb.thrift.client.SearchResult> input) {
1651                    return TypeTransformer.getInstance().toArray(
1652                    input,
1653                    net.gdface.facedb.thrift.client.SearchResult.class,
1654                    SearchResult.class);
1655                }},
1656                new ServiceAsyncCall<java.util.List<net.gdface.facedb.thrift.client.SearchResult>>(){
1657                @Override
1658                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<java.util.List<net.gdface.facedb.thrift.client.SearchResult>> nativeCallback){
1659                    service.searchFaces(TypeTransformer.getInstance().to(
1660                    imgData,
1661                    byte[].class,
1662                    okio.ByteString.class),TypeTransformer.getInstance().to(
1663                    facePos,
1664                    CodeInfo.class,
1665                    net.gdface.facedb.thrift.client.CodeInfo.class),similarty,rows,where,nativeCallback);
1666                }});
1667        }
1668        catch(net.gdface.facedb.thrift.client.ImageErrorException e){
1669            throw TypeTransformer.getInstance().to(
1670                    e,
1671                    net.gdface.facedb.thrift.client.ImageErrorException.class,
1672                    ImageErrorException.class);
1673        }
1674        catch(net.gdface.facedb.thrift.client.NotFaceDetectedException e){
1675            throw TypeTransformer.getInstance().to(
1676                    e,
1677                    net.gdface.facedb.thrift.client.NotFaceDetectedException.class,
1678                    NotFaceDetectedException.class);
1679        }
1680        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1681            throw new ServiceRuntimeException(e);
1682        }
1683        catch (Throwable e) {
1684            Throwables.throwIfUnchecked(e);
1685            throw new RuntimeException(e);
1686        }
1687    }
1688    @Override
1689    public SearchResult[] searchFaces(final MatType matType,
1690        final byte[] matData,
1691        final int width,
1692        final int height,
1693        final CodeInfo facePos,
1694        final double similarty,
1695        final int rows,
1696        final String where) 
1697        throws NotFaceDetectedException{
1698        try{
1699            return syncCall(new Function<java.util.List<net.gdface.facedb.thrift.client.SearchResult>,SearchResult[]>() {
1700                @Override
1701                public SearchResult[] apply(java.util.List<net.gdface.facedb.thrift.client.SearchResult> input) {
1702                    return TypeTransformer.getInstance().toArray(
1703                    input,
1704                    net.gdface.facedb.thrift.client.SearchResult.class,
1705                    SearchResult.class);
1706                }},
1707                new ServiceAsyncCall<java.util.List<net.gdface.facedb.thrift.client.SearchResult>>(){
1708                @Override
1709                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<java.util.List<net.gdface.facedb.thrift.client.SearchResult>> nativeCallback){
1710                    service.searchFacesMat(TypeTransformer.getInstance().to(
1711                    matType,
1712                    MatType.class,
1713                    net.gdface.facedb.thrift.client.MatType.class),TypeTransformer.getInstance().to(
1714                    matData,
1715                    byte[].class,
1716                    okio.ByteString.class),width,height,TypeTransformer.getInstance().to(
1717                    facePos,
1718                    CodeInfo.class,
1719                    net.gdface.facedb.thrift.client.CodeInfo.class),similarty,rows,where,nativeCallback);
1720                }});
1721        }
1722        catch(net.gdface.facedb.thrift.client.NotFaceDetectedException e){
1723            throw TypeTransformer.getInstance().to(
1724                    e,
1725                    net.gdface.facedb.thrift.client.NotFaceDetectedException.class,
1726                    NotFaceDetectedException.class);
1727        }
1728        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1729            throw new ServiceRuntimeException(e);
1730        }
1731        catch (Throwable e) {
1732            Throwables.throwIfUnchecked(e);
1733            throw new RuntimeException(e);
1734        }
1735    }
1736    @Override
1737    public SearchResult[] searchFeatures(final byte[] feature,
1738        final double similarty,
1739        final int rows,
1740        final String where) 
1741        {
1742        try{
1743            return syncCall(new Function<java.util.List<net.gdface.facedb.thrift.client.SearchResult>,SearchResult[]>() {
1744                @Override
1745                public SearchResult[] apply(java.util.List<net.gdface.facedb.thrift.client.SearchResult> input) {
1746                    return TypeTransformer.getInstance().toArray(
1747                    input,
1748                    net.gdface.facedb.thrift.client.SearchResult.class,
1749                    SearchResult.class);
1750                }},
1751                new ServiceAsyncCall<java.util.List<net.gdface.facedb.thrift.client.SearchResult>>(){
1752                @Override
1753                public void call(net.gdface.facedb.thrift.client.FaceDbClient service,ServiceMethodCallback<java.util.List<net.gdface.facedb.thrift.client.SearchResult>> nativeCallback){
1754                    service.searchFeatures(TypeTransformer.getInstance().to(
1755                    feature,
1756                    byte[].class,
1757                    okio.ByteString.class),similarty,rows,where,nativeCallback);
1758                }});
1759        }
1760        catch(net.gdface.facedb.thrift.client.ServiceRuntimeException e){
1761            throw new ServiceRuntimeException(e);
1762        }
1763        catch (Throwable e) {
1764            Throwables.throwIfUnchecked(e);
1765            throw new RuntimeException(e);
1766        }
1767    }
1768}