Changeset 2681


Ignore:
Timestamp:
03/12/13 17:26:42 (11 years ago)
Author:
oschonef
Message:
  • automatically apply default upper limit to "maximumTerms"
  • add configuration settings for "maximumTerms"
Location:
SRUServer/trunk/src/main/java/eu/clarin/sru/server
Files:
2 edited

Legend:

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

    r2680 r2681  
    5454    private static final String PARAM_EXTENSION_PREFIX  = "x-";
    5555    private static final String X_UNLIMITED_RESULTSET   = "x-unlimited-resultset";
     56    private static final String X_UNLIMITED_TERMLIST    = "x-unlimited-termlist";
    5657    private static final String X_INDENT_RESPONSE       = "x-indent-response";
    5758    private static final int DEFAULT_START_RECORD       = 1;
     
    558559    @Override
    559560    public int getMaximumTerms() {
    560         return maximumTerms;
     561        if (config.allowOverrideMaximumTerms() &&
     562                (getExtraRequestData(X_UNLIMITED_TERMLIST) != null)) {
     563            return -1;
     564        }
     565        if (maximumTerms == -1) {
     566            return config.getNumberOfTerms();
     567        } else {
     568            if (maximumTerms > config.getMaximumTerms()) {
     569                return config.getMaximumTerms();
     570            } else {
     571                return maximumTerms;
     572            }
     573        }
    561574    }
    562575
  • SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRUServerConfig.java

    r2623 r2681  
    127127    /**
    128128     * Parameter constant for configuring the <em>default</em> number of records
    129      * the SRU server will provide in the response to a request if the client
    130      * does not specify a limit.
     129     * the SRU server will provide in the response to a <em>searchRetrieve</em>
     130     * request if the client does not provide this value.
    131131     * <p>
    132132     * Valid values: a integer greater than 0 (default value is 100)
     
    137137    /**
    138138     * Parameter constant for configuring the <em>maximum</em> number of records
    139      * the SRU server will support in one request. If a client requests more
    140      * records, the number will be limited to this value.
     139     * the SRU server will support in the response to a <em>searchRetrieve</em>
     140     * request. If a client requests more records, the number will be limited to
     141     * this value.
    141142     * <p>
    142143     * Valid values: a integer greater than 0 (default value is 250)
     
    145146    public static final String SRU_MAXIMUM_RECORDS =
    146147            "eu.clarin.sru.server.maximumRecords";
     148    /**
     149     * Parameter constant for configuring the <em>default</em> number of terms
     150     * the SRU server will provide in the response to a <em>scan</em> request if
     151     * the client does not provide this value.
     152     * <p>
     153     * Valid values: a integer greater than 0 (default value is 250)
     154     * </p>
     155     */
     156    public static final String SRU_NUMBER_OF_TERMS =
     157            "eu.clarin.sru.server.numberOfTerms";
     158    /**
     159     * Parameter constant for configuring the <em>maximum</em> number of terms
     160     * the SRU server will support in the response to a <em>scan</em> request.
     161     * If a client requests more records, the number will be limited to this
     162     * value.
     163     * <p>
     164     * Valid values: a integer greater than 0 (default value is 500)
     165     * </p>
     166     */
     167    public static final String SRU_MAXIMUM_TERMS =
     168            "eu.clarin.sru.server.maximumTerms";
    147169    /**
    148170     * Parameter constant for configuring, if the SRU server will echo the
     
    177199    /**
    178200     * Parameter constant for configuring, if the SRU server will allow the
     201     * client to override the maximum number of terms the server supports.
     202     * This parameter is solely intended for debugging and enabling it is
     203     * <em>strongly</em> discouraged for production setups.
     204     * <p>
     205     * Valid values: <code>true</code> or <code>false</code>
     206     * </p>
     207     */
     208    public static final String SRU_ALLOW_OVERRIDE_MAXIMUM_TERMS =
     209            "eu.clarin.sru.server.allowOverrideMaximumTerms";
     210    /**
     211     * Parameter constant for configuring, if the SRU server will allow the
    179212     * client to override the pretty-printing setting of the server. This
    180213     * parameter is solely intended for debugging and enabling it is
     
    247280            "sru.allowOverrideIndentResponse";
    248281    private static final int DEFAULT_NUMBER_OF_RECORDS = 100;
    249     private static final int DEFAULT_MAXIMUM_RECORDS = 250;
     282    private static final int DEFAULT_MAXIMUM_RECORDS   = 250;
     283    private static final int DEFAULT_NUMBER_OF_TERMS   = 250;
     284    private static final int DEFAULT_MAXIMUM_TERMS     = 500;
    250285    private static final String CONFIG_FILE_NAMESPACE_URI =
    251286            "http://www.clarin.eu/sru-server/1.0/";
     
    583618    private final int numberOfRecords;
    584619    private final int maximumRecords;
     620    private final int numberOfTerms;
     621    private final int maximumTerms;
    585622    private final boolean echoRequests;
    586623    private final int indentResponse;
    587624    private final boolean allowOverrideMaximumRecords;
     625    private final boolean allowOverrideMaximumTerms;
    588626    private final boolean allowOverrideIndentResponse;
    589627    private final String baseUrl;
     
    595633    private SRUServerConfig(String transport, String host, int port,
    596634            String database, int numberOfRecords, int maximumRecords,
    597             boolean echoRequests, int indentResponse,
    598             boolean allowOverrideMaximumRecords,
    599             boolean allowOverrideIndentResponse,
    600             DatabaseInfo databaseinfo, IndexInfo indexInfo,
    601             List<SchemaInfo> schemaInfo) {
     635            int numberOfTerms, int maximumTerms, boolean echoRequests,
     636            int indentResponse, boolean allowOverrideMaximumRecords,
     637            boolean allowOverrideMaximumTerms,
     638            boolean allowOverrideIndentResponse, DatabaseInfo databaseinfo,
     639            IndexInfo indexInfo, List<SchemaInfo> schemaInfo) {
    602640        this.transport                   = transport;
    603641        this.host                        = host;
     
    606644        this.numberOfRecords             = numberOfRecords;
    607645        this.maximumRecords              = maximumRecords;
     646        this.numberOfTerms               = numberOfTerms;
     647        this.maximumTerms                = maximumTerms;
    608648        this.echoRequests                = echoRequests;
    609649        this.indentResponse              = indentResponse;
    610650        this.allowOverrideMaximumRecords = allowOverrideMaximumRecords;
     651        this.allowOverrideMaximumTerms   = allowOverrideMaximumTerms;
    611652        this.allowOverrideIndentResponse = allowOverrideIndentResponse;
    612653        this.databaseInfo                = databaseinfo;
     
    679720
    680721
     722    public int getNumberOfTerms() {
     723        return numberOfTerms;
     724    }
     725
     726
     727    public int getMaximumTerms() {
     728        return maximumTerms;
     729    }
     730
     731
    681732    public int getIndentResponse() {
    682733        return indentResponse;
     
    686737    public boolean allowOverrideMaximumRecords() {
    687738        return allowOverrideMaximumRecords;
     739    }
     740
     741
     742    public boolean allowOverrideMaximumTerms() {
     743        return allowOverrideMaximumTerms;
    688744    }
    689745
     
    907963                    false, DEFAULT_MAXIMUM_RECORDS, numberOfRecords, -1);
    908964
     965            int numberOfTerms = parseNumber(params, SRU_NUMBER_OF_TERMS,
     966                    false, DEFAULT_NUMBER_OF_TERMS, 0, -1);
     967
     968            int maximumTerms = parseNumber(params, SRU_MAXIMUM_TERMS, false,
     969                        DEFAULT_MAXIMUM_TERMS, numberOfTerms, -1);
     970
    909971            boolean echoRequests = parseBoolean(params, SRU_ECHO_REQUESTS,
    910972                    false, true);
     
    916978                    SRU_ALLOW_OVERRIDE_MAXIMUM_RECORDS, false, false);
    917979
     980            boolean allowOverrideMaximumTerms = parseBoolean(params,
     981                    SRU_ALLOW_OVERRIDE_MAXIMUM_TERMS, false, false);
     982
    918983            boolean allowOverrideIndentResponse = parseBoolean(params,
    919984                    SRU_ALLOW_OVERRIDE_INDENT_RESPONSE, false, false);
    920985
    921986            return new SRUServerConfig(transport, host, port, database,
    922                     numberOfRecords, maximumRecords, echoRequests,
    923                     indentResponse, allowOverrideMaximumRecords,
     987                    numberOfRecords, maximumRecords, numberOfTerms,
     988                    maximumTerms, echoRequests, indentResponse,
     989                    allowOverrideMaximumRecords, allowOverrideMaximumTerms,
    924990                    allowOverrideIndentResponse, databaseInfo, indexInfo,
    925991                    schemaInfo);
Note: See TracChangeset for help on using the changeset viewer.