Changeset 2190


Ignore:
Timestamp:
09/03/12 10:41:21 (12 years ago)
Author:
oschonef
Message:
  • add method to get notified if an error occurred while processing the request
  • rename callback methods
Location:
SRUClient/trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUCallback.java

    r2183 r2190  
    2525 * </p>
    2626 *
    27  * @param <T>
    28  *            a response type
     27 * @param <V>
     28 *            the request type
     29 * @param <S>
     30 *            the response type
    2931 *
    3032 * @see SRUThreadedClient#explain(SRUExplainRequest, SRUCallback)
     
    3234 * @see SRUThreadedClient#searchRetrieve(SRUSearchRetrieveRequest, SRUCallback)
    3335 */
    34 public interface SRUCallback<T extends SRUAbstractResponse<?>> {
     36public interface SRUCallback<V extends SRUAbstractRequest,
     37                             S extends SRUAbstractResponse<V>> {
    3538
    3639    /**
     
    3841     *
    3942     * @param response
    40      *            the response to the rquest
     43     *            the response to the request
    4144     */
    42     public void done(T response);
     45    public void onSuccess(S response);
     46
     47
     48    /**
     49     * Invoked when the request yielded an error
     50     *
     51     * @param request
     52     *            the original request
     53     * @param error
     54     *            the error
     55     */
     56    public void onError(V request, SRUClientException error);
    4357
    4458} // interface SRUCallback
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUThreadedClient.java

    r2183 r2190  
    180180     */
    181181    public void explain(final SRUExplainRequest request,
    182             final SRUCallback<SRUExplainResponse> callback)
     182            final SRUCallback<SRUExplainRequest, SRUExplainResponse> callback)
    183183            throws SRUClientException {
    184184        if (request == null) {
     
    248248     */
    249249    public void scan(final SRUScanRequest request,
    250             final SRUCallback<SRUScanResponse> callback)
     250            final SRUCallback<SRUScanRequest, SRUScanResponse> callback)
    251251            throws SRUClientException {
    252252        if (request == null) {
     
    316316     */
    317317    public void searchRetrieve(final SRUSearchRetrieveRequest request,
    318             final SRUCallback<SRUSearchRetrieveResponse> callback)
     318            final SRUCallback<SRUSearchRetrieveRequest, SRUSearchRetrieveResponse> callback)
    319319            throws SRUClientException {
    320320        if (request == null) {
     
    410410
    411411    private abstract class AsyncRequest<V extends SRUAbstractRequest,
    412                                         S extends SRUAbstractResponse<?>>
     412                                        S extends SRUAbstractResponse<V>>
    413413            implements Runnable {
    414414        protected final V request;
    415         private final SRUCallback<S> callback;
    416 
    417 
    418         public AsyncRequest(V request, SRUCallback<S> callback) {
     415        private final SRUCallback<V, S> callback;
     416
     417
     418        public AsyncRequest(V request, SRUCallback<V, S> callback) {
    419419            this.callback = callback;
    420420            this.request = request;
     
    425425        public void run() {
    426426            try {
    427                 S response = doRequest(client.get());
    428                 callback.done(response);
    429             } catch (SRUClientException e) {
    430                 logger.debug("exception", e);
     427                try {
     428                    final S response = doRequest(client.get());
     429                    callback.onSuccess(response);
     430                } catch (SRUClientException e) {
     431                    callback.onError(request, e);
     432                }
    431433            } catch (Throwable t) {
    432                 logger.error("something went wrong", t);
    433             }
    434         }
    435 
    436         protected abstract S doRequest(SRUClient client) throws SRUClientException;
     434                logger.error("error while performing async callback", t);
     435            }
     436        }
     437
     438
     439        protected abstract S doRequest(SRUClient client)
     440                throws SRUClientException;
    437441    }
    438442
  • SRUClient/trunk/src/test/java/eu/clarin/sru/client/TestThreadedClientCallback.java

    r2183 r2190  
    88import eu.clarin.sru.fcs.ClarinFederatedContentSearchRecordData;
    99import eu.clarin.sru.fcs.ClarinFederatedContentSearchRecordParser;
     10
    1011
    1112public class TestThreadedClientCallback {
     
    3839                logger.info("submitting 'explain' request ...");
    3940                SRUExplainRequest request1 = new SRUExplainRequest(args[0]);
    40                 client.explain(request1, new SRUCallback<SRUExplainResponse>() {
    41                     @Override
    42                     public void done(SRUExplainResponse response) {
     41                client.explain(request1, new SRUCallback<SRUExplainRequest, SRUExplainResponse>() {
     42                    @Override
     43                    public void onSuccess(SRUExplainResponse response) {
    4344                        printExplainResponse(response);
     45                        latch.countDown();
     46                    }
     47
     48                    @Override
     49                    public void onError(SRUExplainRequest request,
     50                            SRUClientException error) {
     51                        logger.error("error while performing request", error);
    4452                        latch.countDown();
    4553                    }
     
    4957                SRUScanRequest request2 = new SRUScanRequest(args[0]);
    5058                request2.setScanClause("fcs.resource");
    51                 client.scan(request2, new SRUCallback<SRUScanResponse>() {
    52                     @Override
    53                     public void done(SRUScanResponse response) {
     59                client.scan(request2, new SRUCallback<SRUScanRequest, SRUScanResponse>() {
     60                    @Override
     61                    public void onSuccess(SRUScanResponse response) {
    5462                        printScanResponse(response);
     63                        latch.countDown();
     64                    }
     65
     66                    @Override
     67                    public void onError(SRUScanRequest request,
     68                            SRUClientException error) {
     69                        logger.error("error while performing request", error);
    5570                        latch.countDown();
    5671                    }
     
    6378                request3.setRecordSchema(ClarinFederatedContentSearchRecordData.RECORD_SCHEMA);
    6479                request3.setMaximumRecords(5);
    65                 client.searchRetrieve(request3, new SRUCallback<SRUSearchRetrieveResponse>() {
    66                     @Override
    67                     public void done(SRUSearchRetrieveResponse response) {
     80                client.searchRetrieve(request3, new SRUCallback<SRUSearchRetrieveRequest, SRUSearchRetrieveResponse>() {
     81                    @Override
     82                    public void onSuccess(SRUSearchRetrieveResponse response) {
    6883                        printSearchResponse(response);
     84                        latch.countDown();
     85                    }
     86
     87                    @Override
     88                    public void onError(SRUSearchRetrieveRequest request,
     89                            SRUClientException error) {
     90                        logger.error("error while performing request", error);
    6991                        latch.countDown();
    7092                    }
Note: See TracChangeset for help on using the changeset viewer.