Changeset 6825


Ignore:
Timestamp:
11/18/15 00:15:37 (9 years ago)
Author:
Oliver Schonefeld
Message:
  • add SRUQueryParserFactory and expose interface to register query parsers
Location:
SRUServer/trunk/src/main/java/eu/clarin/sru/server
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRURequestImpl.java

    r6821 r6825  
    7979    private static final int DEFAULT_RESPONSE_POSITION     = 1;
    8080    private final SRUServerConfig config;
     81    private final SRUQueryParserRegistry queryParsers;
    8182    private final HttpServletRequest request;
    8283    private List<SRUDiagnostic> diagnostics;
     
    105106        HTTP_ACCEPT,
    106107        RESPONSE_TYPE,
    107 //        QUERY,
    108 //        QUERY_TYPE,
    109108        START_RECORD,
    110109        MAXIMUM_RECORDS,
     
    148147            case RESPONSE_TYPE:
    149148                return PARAM_RESPONSE_TYPE;
    150 //            case QUERY:
    151 //                return PARAM_QUERY;
    152 //            case QUERY_TYPE:
    153 //                return PARAM_QUERY_TYPE;
    154149            case START_RECORD:
    155150                return PARAM_START_RECORD;
     
    233228        new ParameterInfo(Parameter.RESPONSE_TYPE, false,
    234229                SRUVersion.VERSION_2_0, SRUVersion.VERSION_2_0),
    235 //        new ParameterInfo(Parameter.QUERY, true,
    236 //                SRUVersion.VERSION_1_1, SRUVersion.VERSION_2_0),
    237 //        new ParameterInfo(Parameter.QUERY_TYPE, true,
    238 //                SRUVersion.VERSION_2_0, SRUVersion.VERSION_2_0),
    239230        new ParameterInfo(Parameter.START_RECORD, false,
    240231                SRUVersion.VERSION_1_1, SRUVersion.VERSION_2_0),
     
    256247
    257248
    258     SRURequestImpl(SRUServerConfig config, HttpServletRequest request) {
    259         this.config        = config;
    260         this.request       = request;
     249    SRURequestImpl(SRUServerConfig config,
     250            SRUQueryParserRegistry queryParsers,
     251            HttpServletRequest request) {
     252        this.config       = config;
     253        this.queryParsers = queryParsers;
     254        this.request      = request;
    261255    }
    262256
     
    611605                            queryType);
    612606                    final SRUQueryParser<?> queryParser =
    613                             config.findQueryParser(queryType);
     607                            queryParsers.findQueryParser(queryType);
    614608                    if (queryParser != null) {
    615609                        /*
  • SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRUServer.java

    r6823 r6825  
    5858            LoggerFactory.getLogger(SRUServer.class);
    5959    private final SRUServerConfig config;
     60    private final SRUQueryParserRegistry queryParsers;
    6061    private final SRUSearchEngine searchEngine;
    6162    private final XMLOutputFactory writerFactory;
     
    6667     *
    6768     * @param config
    68      *            a SRUEndpointConfig object
     69     *            a {@link SRUServerConfig} object
     70     * @param queryParsers
     71     *            a {@link SRUQueryParserRegistry} object
    6972     * @param searchEngine
    70      *            an object implementing the SRUSearchEngine interface
     73     *            an object implementing the {@link SRUSearchEngine} interface
    7174     * @throws NullPointerException
    72      *             if config or searchEngine is <code>null</code>
     75     *             if config, queryParserRegistry or searchEngine is
     76     *             <code>null</code>
    7377     * @throws SRUException
    7478     *             if an error occurred
    7579     */
    76     public SRUServer(SRUServerConfig config, SRUSearchEngine searchEngine)
    77             throws SRUException {
     80    public SRUServer(SRUServerConfig config,
     81            SRUQueryParserRegistry queryParsers,
     82            SRUSearchEngine searchEngine) throws SRUException {
    7883        if (config == null) {
    7984            throw new NullPointerException("config == null");
    8085        }
    8186        this.config = config;
     87
     88        if (queryParsers == null) {
     89            throw new NullPointerException("queryParserRegistry == null");
     90        }
     91        this.queryParsers = queryParsers;
     92
    8293        if (searchEngine == null) {
    8394            throw new NullPointerException("searchEngine == null");
    8495        }
    8596        this.searchEngine = searchEngine;
     97
    8698        this.writerFactory = XMLOutputFactory.newInstance();
    8799    }
     
    98110    public void handleRequest(HttpServletRequest request,
    99111            HttpServletResponse response) {
    100         final SRURequestImpl req = new SRURequestImpl(config, request);
     112        final SRURequestImpl req =
     113                new SRURequestImpl(config, queryParsers, request);
    101114        try {
    102115            // set response properties
  • SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRUServerConfig.java

    r6821 r6825  
    637637    private final IndexInfo indexInfo;
    638638    private final List<SchemaInfo> schemaInfo;
    639     private final List<SRUQueryParser<?>> queryParsers;
    640639
    641640
     
    660659            DatabaseInfo databaseinfo,
    661660            IndexInfo indexInfo,
    662             List<SchemaInfo> schemaInfo,
    663             List<SRUQueryParser<?>> queryParsers) {
     661            List<SchemaInfo> schemaInfo) {
    664662        this.minVersion                  = minVersion;
    665663        this.maxVersion                  = maxVersion;
     
    687685            this.schemaInfo = null;
    688686        }
    689         this.queryParsers = Collections.unmodifiableList(queryParsers);
    690687
    691688        // build baseUrl
     
    856853                        return schema;
    857854                    }
    858                 }
    859             }
    860         }
    861         return null;
    862     }
    863 
    864 
    865     public SRUQueryParser<?> findQueryParser(String queryType) {
    866         if (queryType != null) {
    867             for (SRUQueryParser<?> queryParser : queryParsers) {
    868                 if (queryParser.getQueryType().equals(queryType)) {
    869                     return queryParser;
    870855                }
    871856            }
     
    10941079                    SRU_RESPONSE_BUFFER_SIZE, false,
    10951080                    DEFAULT_RESPONSE_BUFFER_SIZE, 0, -1);
    1096 
    1097             /*
    1098              * FIXME: add interface to register additional query parsers
    1099              */
    1100             List<SRUQueryParser<?>> queryParsers =
    1101                     new ArrayList<SRUQueryParser<?>>();
    1102             queryParsers.add(new CQLQueryParser());
    11031081
    11041082            return new SRUServerConfig(minVersion,
     
    11221100                    databaseInfo,
    11231101                    indexInfo,
    1124                     schemaInfo,
    1125                     queryParsers);
     1102                    schemaInfo);
    11261103        } catch (IOException e) {
    11271104            throw new SRUConfigException("error reading configuration file", e);
  • SRUServer/trunk/src/main/java/eu/clarin/sru/server/utils/SRUSearchEngineBase.java

    r2747 r6825  
    2525import eu.clarin.sru.server.SRUException;
    2626import eu.clarin.sru.server.SRUExplainResult;
     27import eu.clarin.sru.server.SRUQueryParserRegistry;
    2728import eu.clarin.sru.server.SRURequest;
    2829import eu.clarin.sru.server.SRUScanResultSet;
     
    8889     * @param config
    8990     *            the {@link SRUServerConfig} object for this search engine
     91     * @param queryParsers
     92     *            the {@link SRUQueryParserRegistry} object for this search
     93     *            engine. Register additional query parsers with this object.
    9094     * @param params
    9195     *            additional parameters gathered from the Servlet configuration
     
    9498     *             an error occurred during initialization of the search engine
    9599     */
    96     public void init(ServletContext context, SRUServerConfig config,
     100    public void init(ServletContext context,
     101            SRUServerConfig config,
     102            SRUQueryParserRegistry queryParsers,
    97103            Map<String, String> params) throws SRUConfigException {
    98104    }
  • SRUServer/trunk/src/main/java/eu/clarin/sru/server/utils/SRUServerServlet.java

    r6786 r6825  
    3838import eu.clarin.sru.server.SRUConfigException;
    3939import eu.clarin.sru.server.SRUException;
     40import eu.clarin.sru.server.SRUQueryParserRegistry;
    4041import eu.clarin.sru.server.SRUServer;
    4142import eu.clarin.sru.server.SRUServerConfig;
     
    247248         */
    248249        try {
    249             searchEngine.init(ctx, sruServerConfig, params);
    250             sruServer = new SRUServer(sruServerConfig, searchEngine);
     250            final SRUQueryParserRegistry parsers = new SRUQueryParserRegistry();
     251            searchEngine.init(ctx, sruServerConfig, parsers, params);
     252            sruServer = new SRUServer(sruServerConfig, parsers, searchEngine);
    251253        } catch (SRUConfigException e) {
    252254            throw new ServletException("error initializing sru server", e);
Note: See TracChangeset for help on using the changeset viewer.