- Timestamp:
- 03/12/13 17:26:42 (11 years ago)
- 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 54 54 private static final String PARAM_EXTENSION_PREFIX = "x-"; 55 55 private static final String X_UNLIMITED_RESULTSET = "x-unlimited-resultset"; 56 private static final String X_UNLIMITED_TERMLIST = "x-unlimited-termlist"; 56 57 private static final String X_INDENT_RESPONSE = "x-indent-response"; 57 58 private static final int DEFAULT_START_RECORD = 1; … … 558 559 @Override 559 560 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 } 561 574 } 562 575 -
SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRUServerConfig.java
r2623 r2681 127 127 /** 128 128 * 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 client130 * 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. 131 131 * <p> 132 132 * Valid values: a integer greater than 0 (default value is 100) … … 137 137 /** 138 138 * 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. 141 142 * <p> 142 143 * Valid values: a integer greater than 0 (default value is 250) … … 145 146 public static final String SRU_MAXIMUM_RECORDS = 146 147 "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"; 147 169 /** 148 170 * Parameter constant for configuring, if the SRU server will echo the … … 177 199 /** 178 200 * 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 179 212 * client to override the pretty-printing setting of the server. This 180 213 * parameter is solely intended for debugging and enabling it is … … 247 280 "sru.allowOverrideIndentResponse"; 248 281 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; 250 285 private static final String CONFIG_FILE_NAMESPACE_URI = 251 286 "http://www.clarin.eu/sru-server/1.0/"; … … 583 618 private final int numberOfRecords; 584 619 private final int maximumRecords; 620 private final int numberOfTerms; 621 private final int maximumTerms; 585 622 private final boolean echoRequests; 586 623 private final int indentResponse; 587 624 private final boolean allowOverrideMaximumRecords; 625 private final boolean allowOverrideMaximumTerms; 588 626 private final boolean allowOverrideIndentResponse; 589 627 private final String baseUrl; … … 595 633 private SRUServerConfig(String transport, String host, int port, 596 634 String database, int numberOfRecords, int maximumRecords, 597 boolean echoRequests, int indentResponse,598 boolean allowOverrideMaximumRecords,599 boolean allowOverride IndentResponse,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) { 602 640 this.transport = transport; 603 641 this.host = host; … … 606 644 this.numberOfRecords = numberOfRecords; 607 645 this.maximumRecords = maximumRecords; 646 this.numberOfTerms = numberOfTerms; 647 this.maximumTerms = maximumTerms; 608 648 this.echoRequests = echoRequests; 609 649 this.indentResponse = indentResponse; 610 650 this.allowOverrideMaximumRecords = allowOverrideMaximumRecords; 651 this.allowOverrideMaximumTerms = allowOverrideMaximumTerms; 611 652 this.allowOverrideIndentResponse = allowOverrideIndentResponse; 612 653 this.databaseInfo = databaseinfo; … … 679 720 680 721 722 public int getNumberOfTerms() { 723 return numberOfTerms; 724 } 725 726 727 public int getMaximumTerms() { 728 return maximumTerms; 729 } 730 731 681 732 public int getIndentResponse() { 682 733 return indentResponse; … … 686 737 public boolean allowOverrideMaximumRecords() { 687 738 return allowOverrideMaximumRecords; 739 } 740 741 742 public boolean allowOverrideMaximumTerms() { 743 return allowOverrideMaximumTerms; 688 744 } 689 745 … … 907 963 false, DEFAULT_MAXIMUM_RECORDS, numberOfRecords, -1); 908 964 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 909 971 boolean echoRequests = parseBoolean(params, SRU_ECHO_REQUESTS, 910 972 false, true); … … 916 978 SRU_ALLOW_OVERRIDE_MAXIMUM_RECORDS, false, false); 917 979 980 boolean allowOverrideMaximumTerms = parseBoolean(params, 981 SRU_ALLOW_OVERRIDE_MAXIMUM_TERMS, false, false); 982 918 983 boolean allowOverrideIndentResponse = parseBoolean(params, 919 984 SRU_ALLOW_OVERRIDE_INDENT_RESPONSE, false, false); 920 985 921 986 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, 924 990 allowOverrideIndentResponse, databaseInfo, indexInfo, 925 991 schemaInfo);
Note: See TracChangeset
for help on using the changeset viewer.