Changeset 1972


Ignore:
Timestamp:
06/06/12 21:50:48 (12 years ago)
Author:
oschonef
Message:
  • work-in-progress
    • add handler for extraResponseData
    • add statistics callback
Location:
SRUClient/trunk/src/main/java/eu/clarin/sru/client
Files:
6 edited

Legend:

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

    r1971 r1972  
    7373                    "parser.getRecordSchema() returns empty string");
    7474        }
    75        
     75
    7676        SRURecordDataParser old = parsers.putIfAbsent(recordSchema, parser);
    7777        if (old != null) {
    7878            throw new SRUClientException(
    79                     "record data parser already registred: " + recordSchema);
     79                    "record data parser already registered: " + recordSchema);
    8080        }
    8181    }
     
    112112            final long ts_end = System.nanoTime();
    113113
    114             final long delta_total = ts_end - ts_start;
    115             final long delta_network = ts_parsing - ts_start;
    116             final long delta_parsing = ts_end - ts_parsing;
     114            final long millisTotal =
     115                    TimeUnit.NANOSECONDS.toMillis(ts_end - ts_start);
     116            final long millisNetwork =
     117                    TimeUnit.NANOSECONDS.toMillis(ts_parsing - ts_start);
     118            final long millisParsing =
     119                    TimeUnit.NANOSECONDS.toMillis(ts_end - ts_parsing);
    117120            logger.debug("{} byte(s) in {} milli(s) ({} milli(s) network / {} milli(s) parsing)",
    118121                    new Object[] { reader.getByteCount(),
    119                             TimeUnit.NANOSECONDS.toMillis(delta_total),
    120                             TimeUnit.NANOSECONDS.toMillis(delta_network),
    121                             TimeUnit.NANOSECONDS.toMillis(delta_parsing) });
     122                            millisTotal, millisNetwork, millisParsing });
     123            handler.onRequestStatistics((int) reader.getByteCount(),
     124                    millisTotal, millisNetwork, millisParsing);
    122125        } catch (IllegalStateException e) {
    123126            throw new SRUClientException("error reading response", e);
     
    175178            final long ts_end = System.nanoTime();
    176179
    177             final long delta_total = ts_end - ts_start;
    178             final long delta_network = ts_parsing - ts_start;
    179             final long delta_parsing = ts_end - ts_parsing;
     180            final long millisTotal =
     181                    TimeUnit.NANOSECONDS.toMillis(ts_end - ts_start);
     182            final long millisNetwork =
     183                    TimeUnit.NANOSECONDS.toMillis(ts_parsing - ts_start);
     184            final long millisParsing =
     185                    TimeUnit.NANOSECONDS.toMillis(ts_end - ts_parsing);
    180186            logger.debug("{} byte(s) in {} milli(s) ({} milli(s) network / {} milli(s) parsing)",
    181187                    new Object[] { reader.getByteCount(),
    182                             TimeUnit.NANOSECONDS.toMillis(delta_total),
    183                             TimeUnit.NANOSECONDS.toMillis(delta_network),
    184                             TimeUnit.NANOSECONDS.toMillis(delta_parsing) });
     188                            millisTotal, millisNetwork, millisParsing });
     189            handler.onRequestStatistics((int) reader.getByteCount(),
     190                    millisTotal, millisNetwork, millisParsing);
    185191        } catch (IllegalStateException e) {
    186192            throw new SRUClientException("error reading response", e);
     
    238244            final long ts_end = System.nanoTime();
    239245
    240             final long delta_total = ts_end - ts_start;
    241             final long delta_network = ts_parsing - ts_start;
    242             final long delta_parsing = ts_end - ts_parsing;
     246            final long millisTotal =
     247                    TimeUnit.NANOSECONDS.toMillis(ts_end - ts_start);
     248            final long millisNetwork =
     249                    TimeUnit.NANOSECONDS.toMillis(ts_parsing - ts_start);
     250            final long millisParsing =
     251                    TimeUnit.NANOSECONDS.toMillis(ts_end - ts_parsing);
    243252            logger.debug("{} byte(s) in {} milli(s) ({} milli(s) network / {} milli(s) parsing)",
    244253                    new Object[] { reader.getByteCount(),
    245                             TimeUnit.NANOSECONDS.toMillis(delta_total),
    246                             TimeUnit.NANOSECONDS.toMillis(delta_network),
    247                             TimeUnit.NANOSECONDS.toMillis(delta_parsing) });
     254                            millisTotal, millisNetwork, millisParsing });
     255            handler.onRequestStatistics((int) reader.getByteCount(),
     256                    millisTotal, millisNetwork, millisParsing);
    248257        } catch (IllegalStateException e) {
    249258            throw new SRUClientException("error reading response", e);
     
    315324                // explainResponse/record
    316325                reader.readStart(SRU_NS, "record", true);
     326
    317327                String schema =
    318328                        reader.readContent(SRU_NS, "recordSchema", true);
     
    348358                // explainResponse/extraResponseData
    349359                if (reader.readStart(SRU_NS, "extraResponseData", false)) {
     360                    reader.consumeWhitespace();
     361                    proxy.reset(reader);
     362                    try {
     363                        handler.onExtraResponseData(proxy);
     364                    } catch (XMLStreamException e) {
     365                        throw new SRUClientException("handler triggered " +
     366                                "error while parsing 'extraResponseData'", e);
     367                    }
     368                    reader.consumeWhitespace();
    350369                    reader.readEnd(SRU_NS, "extraResponseData", true);
    351370                }
     
    425444                            reader.consumeWhitespace();
    426445                            proxy.reset(reader);
    427                             handler.onExtraTermData(value, proxy);
     446                            try {
     447                                handler.onExtraTermData(value, proxy);
     448                            } catch (XMLStreamException e) {
     449                                throw new SRUClientException("handler " +
     450                                        "triggered error while parsing " +
     451                                        "'extraTermData'", e);
     452                            }
    428453                            reader.consumeWhitespace();
    429454                            reader.readEnd(SRU_NS, "extraTermData", true);
     
    446471                // scanResponse/extraResponseData
    447472                if (reader.readStart(SRU_NS, "extraResponseData", false)) {
     473                    reader.consumeWhitespace();
     474                    proxy.reset(reader);
     475                    try {
     476                        handler.onExtraResponseData(proxy);
     477                    } catch (XMLStreamException e) {
     478                        throw new SRUClientException("handler triggered " +
     479                                "error while parsing 'extraResponseData'", e);
     480                    }
     481                    reader.consumeWhitespace();
    448482                    reader.readEnd(SRU_NS, "extraResponseData", true);
    449483                }
     
    476510
    477511                // searchRetrieveResponse/numberOfRecords
    478                 String numberOfRecords =
    479                         reader.readContent(SRU_NS, "numberOfRecords", true);
     512                int numberOfRecords = reader.readContent(SRU_NS,
     513                        "numberOfRecords", true, -1);
    480514
    481515                // searchRetrieveResponse/resultSetId
    482                 String resultSetId =
    483                         reader.readContent(SRU_NS, "resultSetId", false);
     516                int resultSetId = reader.readContent(SRU_NS, "resultSetId",
     517                        false, -1);
    484518
    485519                // searchRetrieveResponse/resultSetIdleTime
    486                 String resultSetIdleTime =
    487                         reader.readContent(SRU_NS, "resultSetIdleTime", false);
     520                int resultSetIdleTime = reader.readContent(SRU_NS,
     521                        "resultSetIdleTime", false, -1);
    488522
    489523                logger.debug("numberOfRecords = {}, resultSetId = {}, " +
     
    500534                    if (first) {
    501535                        first = false;
    502                         handler.onStartRecords();
     536                        handler.onStartRecords(numberOfRecords, resultSetId, resultSetIdleTime);
    503537                    }
    504538
     
    569603                        reader.consumeWhitespace();
    570604                        proxy.reset(reader);
    571                         handler.onExtraRecordData(identifier, position, proxy);
     605                        try {
     606                            handler.onExtraRecordData(identifier,
     607                                    position, proxy);
     608                        } catch (XMLStreamException e) {
     609                            throw new SRUClientException("handler triggered " +
     610                                    "error while parsing 'extraRecordData'", e);
     611                        }
    572612                        reader.consumeWhitespace();
    573613                        reader.readEnd(SRU_NS, "extraRecordData", true);
     
    595635                // explainResponse/extraResponseData
    596636                if (reader.readStart(SRU_NS, "extraResponseData", false)) {
     637                    reader.consumeWhitespace();
     638                    proxy.reset(reader);
     639                    try {
     640                        handler.onExtraResponseData(proxy);
     641                    } catch (XMLStreamException e) {
     642                        throw new SRUClientException("handler triggered " +
     643                                "error while parsing 'extraResponseData'", e);
     644                    }
     645                    reader.consumeWhitespace();
    597646                    reader.readEnd(SRU_NS, "extraResponseData", true);
    598647                }
     
    625674        if (reader.readStart(SRU_NS, "diagnostics", false)) {
    626675            List<SRUDiagnostic> diagostics = null;
    627            
     676
    628677            SRUDiagnostic diagnostic = null;
    629678            while ((diagnostic = parseDiagnostic(reader,
     
    665714        }
    666715    }
    667    
     716
    668717    private static SRURecordPacking parseRecordPacking(SRUXMLStreamReader reader)
    669718            throws XMLStreamException, SRUClientException {
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUDefaultHandlerAdapter.java

    r1971 r1972  
    1313    }
    1414
    15    
     15
     16    @Override
     17    public void onRequestStatistics(int bytes, long millisTotal,
     18            long millisNetwork, long millisParsing) {
     19    }
     20
     21
     22    @Override
     23    public void onExtraResponseData(XMLStreamReader reader)
     24            throws XMLStreamException, SRUClientException {
     25    }
     26
     27
    1628    @Override
    1729    public void onStartTerms() throws SRUClientException {
     
    3749
    3850    @Override
    39     public void onStartRecords() throws SRUClientException {
     51    public void onStartRecords(int numberOfRecords, int resultSetId,
     52            int resultSetIdleTime) throws SRUClientException {
    4053    }
    4154
    4255
    4356    @Override
    44     public void onFinishRecords(int nextRecordPosition) throws SRUClientException {
     57    public void onFinishRecords(int nextRecordPosition)
     58            throws SRUClientException {
    4559    }
    46 
    4760
    4861    @Override
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUExplainHandler.java

    r1969 r1972  
    22
    33import java.util.List;
     4
     5import javax.xml.stream.XMLStreamException;
     6import javax.xml.stream.XMLStreamReader;
    47
    58public interface SRUExplainHandler {
     
    811            throws SRUClientException;
    912
     13    public void onRequestStatistics(int bytes, long millisTotal,
     14            long millisNetwork, long millisParsing);
     15
     16    public void onExtraResponseData(XMLStreamReader reader)
     17            throws XMLStreamException, SRUClientException;
     18
    1019} // interface SRUExplainHandler
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUScanHandler.java

    r1971 r1972  
    88public interface SRUScanHandler {
    99    public enum WhereInList {
    10         FIRST, LAST, ONLY, INNER; 
     10        FIRST, LAST, ONLY, INNER;
    1111    }
    12    
     12
    1313    public void onFatalError(List<SRUDiagnostic> diagnistics)
    1414            throws SRUClientException;
     15
     16    public void onRequestStatistics(int bytes, long millisTotal,
     17            long millisNetwork, long millisParsing);
     18
     19    public void onExtraResponseData(XMLStreamReader reader)
     20            throws XMLStreamException, SRUClientException;
    1521
    1622    public void onStartTerms() throws SRUClientException;
     
    2026    public void onTerm(String value, int numberOfRecords, String displayTerm,
    2127            WhereInList whereInList) throws SRUClientException;
    22    
     28
    2329    public void onExtraTermData(String value, XMLStreamReader reader)
    2430            throws XMLStreamException, SRUClientException;
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUSearchRetrieveHandler.java

    r1971 r1972  
    1111            throws SRUClientException;
    1212
    13     public void onStartRecords() throws SRUClientException;
    14    
    15     public void onFinishRecords(int nextRecordPosition) throws SRUClientException;
     13    public void onRequestStatistics(int bytes, long millisTotal,
     14            long millisNetwork, long millisParsing);
     15
     16    public void onExtraResponseData(XMLStreamReader reader)
     17            throws XMLStreamException, SRUClientException;
     18
     19    public void onStartRecords(int numberOfRecords, int resultSetId,
     20            int resultSetIdleTime) throws SRUClientException;
     21
     22    public void onFinishRecords(int nextRecordPosition)
     23            throws SRUClientException;
    1624
    1725    public void onRecord(String schema, String identifier, int position,
     
    2432    public void onSurrogateRecord(String identifier, int position,
    2533            SRUDiagnostic data) throws SRUClientException;
    26    
     34
    2735    public void onExtraRecordData(String identifier, int position,
    2836            XMLStreamReader reader) throws XMLStreamException,
  • SRUClient/trunk/src/main/java/eu/clarin/sru/client/TestClient.java

    r1971 r1972  
    3838
    3939                    @Override
     40                    public void onRequestStatistics(int bytes,
     41                            long millisTotal, long millisNetwork,
     42                            long millisParsing) {
     43                        logger.info(
     44                                "onRequestStatistics(): {} bytes in {} millis",
     45                                bytes, millisTotal);
     46                    }
     47
     48                    @Override
    4049                    public void onStartTerms() throws SRUClientException {
    4150                        logger.info("onStartTerms()");
     
    5160                            String displayTerm, WhereInList whereInList)
    5261                            throws SRUClientException {
    53                         logger.info("onTerm() value = {}, numberOfRecords = {}, displayTerm = {}, whereInList = {}",
     62                        logger.info("onTerm(): value = {}, numberOfRecords = {}, displayTerm = {}, whereInList = {}",
    5463                                new Object[] { value, numberOfRecords,
    5564                                        displayTerm, whereInList });
    5665                    }
    5766
    58 
    5967                    @Override
    60                     public void onStartRecords() throws SRUClientException {
    61                         logger.info("onStartRecords()");
     68                    public void onStartRecords(int numberOfRecords,
     69                            int resultSetId, int resultSetIdleTime)
     70                            throws SRUClientException {
     71                        logger.info("onStartRecords(): numberOfRecords = {}",
     72                                numberOfRecords);
    6273                    }
    63 
    6474
    6575                    @Override
Note: See TracChangeset for help on using the changeset viewer.