Changeset 2880
- Timestamp:
- 05/07/13 20:22:18 (11 years ago)
- Location:
- SRUClient/trunk/src/main/java/eu/clarin/sru/client
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUAbstractRequest.java
r2466 r2880 18 18 19 19 import java.net.URI; 20 import java.net.URISyntaxException; 20 21 import java.util.HashMap; 21 22 import java.util.Map; 22 23 24 import org.apache.http.client.utils.URIBuilder; 25 23 26 24 27 25 28 /** 26 29 * Abstract base class for SRU requests. 27 * 30 * 28 31 * @see SRUExplainResponse 29 32 * @see SRUScanResponse … … 69 72 70 73 71 class URI Builder {72 private final StringBuilder sb;73 private boolean firstParam = true; 74 75 private URI Builder(String endpointURI) {76 this. sb = new StringBuilder(endpointURI);77 } 78 79 80 public URI Builder append(String name, String value) {74 class URIHelper { 75 private final URIBuilder uriBuilder; 76 77 78 private URIHelper(URIBuilder builder) { 79 this.uriBuilder = builder; 80 } 81 82 83 public URIHelper append(String name, String value) { 81 84 if (name == null) { 82 85 throw new NullPointerException("name == null"); … … 92 95 } 93 96 94 if (firstParam) { 95 sb.append('?'); 96 firstParam = false; 97 } else { 98 sb.append('&'); 99 } 100 sb.append(name).append('=').append(value); 97 uriBuilder.addParameter(name, value); 101 98 return this; 102 99 } 103 100 104 101 105 public URI Builder append(String name, int value) {102 public URIHelper append(String name, int value) { 106 103 return append(name, Integer.toString(value)); 107 104 } 108 105 109 106 110 private URI makeURI() {111 return URI.create(sb.toString());112 } 113 } // class 107 private URI makeURI() throws URISyntaxException { 108 return uriBuilder.build(); 109 } 110 } // class URIHelper 114 111 /** The URL of the endpoint. */ 115 112 protected final String endpointURI; … … 248 245 throw new NullPointerException("defaultVersion == null"); 249 246 } 250 URIBuilder uriBuilder = new URIBuilder(endpointURI); 251 252 /* 253 * append operation parameter 254 * 255 * NB: Setting "x-malformed-operation" as an extra request parameter 256 * makes the client to send invalid requests. This is intended to use 257 * for testing endpoints for protocol conformance (i.e. provoke an 258 * error) and SHOULD NEVER be used in production! 259 */ 260 final String malformedOperation = 261 getExtraRequestData(X_MALFORMED_OPERATION); 262 if (malformedOperation == null) { 263 switch (getOperation()) { 264 case EXPLAIN: 265 uriBuilder.append(PARAM_OPERATION, OP_EXPLAIN); 266 break; 267 case SCAN: 268 uriBuilder.append(PARAM_OPERATION, OP_SCAN); 269 break; 270 case SEARCH_RETRIEVE: 271 uriBuilder.append(PARAM_OPERATION, OP_SEARCH_RETRIEVE); 272 break; 273 default: 274 throw new SRUClientException( 275 "unsupported operation: " + getOperation()); 276 } // switch 277 } else { 278 if (!malformedOperation.equals(MALFORMED_OMIT)) { 279 uriBuilder.append(PARAM_OPERATION, malformedOperation); 280 } 281 } 282 283 /* 284 * append version parameter 285 * 286 * NB: Setting "x-malformed-version" as an extra request parameter makes 287 * the client to send invalid requests. This is intended to use for 288 * testing endpoints for protocol conformance (i.e. provoke an error) 289 * and SHOULD NEVER be used in production! 290 */ 291 final String malformedVersion = 292 getExtraRequestData(X_MALFORMED_VERSION); 293 if (malformedVersion == null) { 294 versionPreformed = (version != null) ? version : defaultVersion; 295 switch (versionPreformed) { 296 case VERSION_1_1: 297 uriBuilder.append(PARAM_VERSION, VERSION_1_1); 298 break; 299 case VERSION_1_2: 300 uriBuilder.append(PARAM_VERSION, VERSION_1_2); 301 break; 302 default: 303 throw new SRUClientException("unsupported version: " + 304 versionPreformed); 305 } // switch 306 } else { 307 if (!malformedVersion.equalsIgnoreCase(MALFORMED_OMIT)) { 308 uriBuilder.append(PARAM_VERSION, malformedVersion); 309 } 310 } 311 312 // request specific parameters 313 addParametersToURI(uriBuilder); 314 315 // extraRequestData 316 if ((extraRequestData != null) && !extraRequestData.isEmpty()) { 317 for (Map.Entry<String, String> entry : 318 extraRequestData.entrySet()) { 319 String key = entry.getKey(); 320 if (key.startsWith(MALFORMED_KEY_PREFIX)) { 321 continue; 247 248 try { 249 final URIHelper uriBuilder = 250 new URIHelper(new URIBuilder(endpointURI)); 251 252 /* 253 * append operation parameter 254 * 255 * NB: Setting "x-malformed-operation" as an extra request parameter 256 * makes the client to send invalid requests. This is intended to 257 * use for testing endpoints for protocol conformance (i.e. provoke 258 * an error) and SHOULD NEVER be used in production! 259 */ 260 final String malformedOperation = 261 getExtraRequestData(X_MALFORMED_OPERATION); 262 if (malformedOperation == null) { 263 switch (getOperation()) { 264 case EXPLAIN: 265 uriBuilder.append(PARAM_OPERATION, OP_EXPLAIN); 266 break; 267 case SCAN: 268 uriBuilder.append(PARAM_OPERATION, OP_SCAN); 269 break; 270 case SEARCH_RETRIEVE: 271 uriBuilder.append(PARAM_OPERATION, OP_SEARCH_RETRIEVE); 272 break; 273 default: 274 throw new SRUClientException("unsupported operation: " + 275 getOperation()); 276 } // switch 277 } else { 278 if (!malformedOperation.equals(MALFORMED_OMIT)) { 279 uriBuilder.append(PARAM_OPERATION, malformedOperation); 322 280 } 323 uriBuilder.append(key, entry.getValue()); 324 } 325 } 326 return uriBuilder.makeURI(); 281 } 282 283 /* 284 * append version parameter 285 * 286 * NB: Setting "x-malformed-version" as an extra request parameter 287 * makes the client to send invalid requests. This is intended to 288 * use for testing endpoints for protocol conformance (i.e. provoke 289 * an error) and SHOULD NEVER be used in production! 290 */ 291 final String malformedVersion = 292 getExtraRequestData(X_MALFORMED_VERSION); 293 if (malformedVersion == null) { 294 versionPreformed = (version != null) ? version : defaultVersion; 295 switch (versionPreformed) { 296 case VERSION_1_1: 297 uriBuilder.append(PARAM_VERSION, VERSION_1_1); 298 break; 299 case VERSION_1_2: 300 uriBuilder.append(PARAM_VERSION, VERSION_1_2); 301 break; 302 default: 303 throw new SRUClientException("unsupported version: " + 304 versionPreformed); 305 } // switch 306 } else { 307 if (!malformedVersion.equalsIgnoreCase(MALFORMED_OMIT)) { 308 uriBuilder.append(PARAM_VERSION, malformedVersion); 309 } 310 } 311 312 // request specific parameters 313 addParametersToURI(uriBuilder); 314 315 // extraRequestData 316 if ((extraRequestData != null) && !extraRequestData.isEmpty()) { 317 for (Map.Entry<String, String> entry : 318 extraRequestData.entrySet()) { 319 final String key = entry.getKey(); 320 321 /* 322 * make sure, we skip the client-internal parameters 323 * to generate invalid requests ... 324 */ 325 if (!key.startsWith(MALFORMED_KEY_PREFIX)) { 326 uriBuilder.append(key, entry.getValue()); 327 } 328 } 329 } 330 331 return uriBuilder.makeURI(); 332 } catch (URISyntaxException e) { 333 throw new SRUClientException("error while building request URI", e); 334 } 327 335 } 328 336 … … 335 343 336 344 337 abstract void addParametersToURI(URIBuilder uri) throws SRUClientException; 345 abstract void addParametersToURI(URIHelper uriBuilder) 346 throws SRUClientException; 338 347 339 348 } // class AbstractSRURequest -
SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUExplainRequest.java
r2466 r2880 19 19 /** 20 20 * An object for performing a <em>explain</em> operation. 21 * 21 * 22 22 * @see SRUExplainHandler 23 23 * @see <a href="http://www.loc.gov/standards/sru/specs/explain.html">SRU Explain Operation</a> … … 29 29 /** 30 30 * Constructor. 31 * 31 * 32 32 * @param baseURI 33 33 * the baseURI of the endpoint … … 40 40 /** 41 41 * Set the requested record packing. 42 * 42 * 43 43 * @param recordPacking 44 44 * the requested record packing … … 55 55 /** 56 56 * Get the requested record packing. 57 * 57 * 58 58 * @return the requested record packing 59 59 * @see SRURecordPacking … … 71 71 72 72 @Override 73 void addParametersToURI(URI Builder uriBuilder) throws SRUClientException {73 void addParametersToURI(URIHelper uriHelper) throws SRUClientException { 74 74 // recordPacking 75 75 if (recordPacking != null) { 76 76 switch (recordPacking) { 77 77 case XML: 78 uri Builder.append(PARAM_RECORD_PACKING, RECORD_PACKING_XML);78 uriHelper.append(PARAM_RECORD_PACKING, RECORD_PACKING_XML); 79 79 break; 80 80 case STRING: 81 uri Builder.append(PARAM_RECORD_PACKING, RECORD_PACKING_STRING);81 uriHelper.append(PARAM_RECORD_PACKING, RECORD_PACKING_STRING); 82 82 break; 83 83 default: -
SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUScanRequest.java
r2466 r2880 23 23 * <li><em>scanClause</em></li> 24 24 * </ul> 25 * 25 * 26 26 * @see SRUScanHandler 27 27 * @see <a href="http://www.loc.gov/standards/sru/specs/scan.html">SRU Scan … … 45 45 /** 46 46 * Constructor. 47 * 47 * 48 48 * @param baseURI 49 49 * the baseURI of the endpoint … … 56 56 /** 57 57 * Get the value of the <em>scanClause</em> argument for this request. 58 * 58 * 59 59 * @return the value for the <em>scanClause</em> argument or 60 60 * <code>null</code> of none was set … … 67 67 /** 68 68 * Set the value of the <em>scanClause</em> argument for this request. 69 * 69 * 70 70 * @param scanClause 71 71 * the value for the <em>scanClause</em> argument … … 88 88 /** 89 89 * Get the value of the <em>responsePosition</em> argument for this request. 90 * 90 * 91 91 * @return the value for the <em>responsePosition</em> argument 92 92 */ … … 98 98 /** 99 99 * Set the value of the <em>responsePosition</em> argument for this request. 100 * 100 * 101 101 * @param responsePosition 102 102 * the value for the <em>responsePosition</em> argument … … 114 114 /** 115 115 * Get the value of the <em>maximumTerms</em> argument for this request. 116 * 116 * 117 117 * @return the value for the <em>maximumTerms</em> argument 118 118 */ … … 124 124 /** 125 125 * Set the value of the <em>maximumTerms</em> argument for this request. 126 * 126 * 127 127 * @param maximumTerms 128 128 * the value for the <em>maximumTerms</em> argument … … 145 145 146 146 @Override 147 void addParametersToURI(URI Builder uriBuilder) throws SRUClientException {147 void addParametersToURI(URIHelper uriHelper) throws SRUClientException { 148 148 // scanClause 149 149 final String malformedScan = … … 154 154 "mandatory argument 'scanClause' not set or empty"); 155 155 } 156 uri Builder.append(PARAM_SCAN_CLAUSE, scanClause);156 uriHelper.append(PARAM_SCAN_CLAUSE, scanClause); 157 157 } else { 158 158 if (!malformedScan.equalsIgnoreCase(MALFORMED_OMIT)) { 159 uri Builder.append(PARAM_VERSION, malformedScan);159 uriHelper.append(PARAM_VERSION, malformedScan); 160 160 } 161 161 } … … 166 166 if (malformedResponsePosition == null) { 167 167 if (responsePosition > -1) { 168 uri Builder.append(PARAM_RESPONSE_POSITION, responsePosition);168 uriHelper.append(PARAM_RESPONSE_POSITION, responsePosition); 169 169 } 170 170 } else { 171 171 if (!malformedResponsePosition.equalsIgnoreCase(MALFORMED_OMIT)) { 172 uri Builder.append(PARAM_RESPONSE_POSITION,172 uriHelper.append(PARAM_RESPONSE_POSITION, 173 173 malformedResponsePosition); 174 174 } … … 180 180 if (malformedMaximumTerms == null) { 181 181 if (maximumTerms > -1) { 182 uri Builder.append(PARAM_MAXIMUM_TERMS, maximumTerms);182 uriHelper.append(PARAM_MAXIMUM_TERMS, maximumTerms); 183 183 } 184 184 } else { 185 185 if (!malformedMaximumTerms.equalsIgnoreCase(MALFORMED_OMIT)) { 186 uri Builder.append(PARAM_MAXIMUM_TERMS, malformedMaximumTerms);186 uriHelper.append(PARAM_MAXIMUM_TERMS, malformedMaximumTerms); 187 187 } 188 188 } -
SRUClient/trunk/src/main/java/eu/clarin/sru/client/SRUSearchRetrieveRequest.java
r2466 r2880 232 232 233 233 @Override 234 void addParametersToURI(URI Builder uriBuilder) throws SRUClientException {234 void addParametersToURI(URIHelper uriHelper) throws SRUClientException { 235 235 /* 236 236 * append query argument (mandatory) … … 247 247 "mandatory argument 'query' not set or empty"); 248 248 } 249 uri Builder.append(PARAM_QUERY, query);249 uriHelper.append(PARAM_QUERY, query); 250 250 } else { 251 251 if (!malformedQuery.equalsIgnoreCase(MALFORMED_OMIT)) { 252 uri Builder.append(PARAM_QUERY, malformedQuery);252 uriHelper.append(PARAM_QUERY, malformedQuery); 253 253 } 254 254 } … … 266 266 if (malformedStartRecord == null) { 267 267 if (startRecord > 0) { 268 uri Builder.append(PARAM_START_RECORD, startRecord);268 uriHelper.append(PARAM_START_RECORD, startRecord); 269 269 } 270 270 } else { 271 271 if (!malformedStartRecord.equalsIgnoreCase(MALFORMED_OMIT)) { 272 uri Builder.append(PARAM_START_RECORD, malformedStartRecord);272 uriHelper.append(PARAM_START_RECORD, malformedStartRecord); 273 273 } 274 274 } … … 286 286 if (malformedMaxiumRecords == null) { 287 287 if (maximumRecords > -1) { 288 uri Builder.append(PARAM_MAXIMUM_RECORDS, maximumRecords);288 uriHelper.append(PARAM_MAXIMUM_RECORDS, maximumRecords); 289 289 } 290 290 } else { 291 291 if (!malformedMaxiumRecords.equalsIgnoreCase(MALFORMED_OMIT)) { 292 uri Builder.append(PARAM_MAXIMUM_RECORDS,292 uriHelper.append(PARAM_MAXIMUM_RECORDS, 293 293 malformedMaxiumRecords); 294 294 } … … 309 309 switch (recordPacking) { 310 310 case XML: 311 uri Builder.append(PARAM_RECORD_PACKING, RECORD_PACKING_XML);311 uriHelper.append(PARAM_RECORD_PACKING, RECORD_PACKING_XML); 312 312 break; 313 313 case STRING: 314 uri Builder.append(PARAM_RECORD_PACKING,314 uriHelper.append(PARAM_RECORD_PACKING, 315 315 RECORD_PACKING_STRING); 316 316 break; … … 322 322 } else { 323 323 if (!malformedRecordPacking.equalsIgnoreCase(MALFORMED_OMIT)) { 324 uri Builder.append(PARAM_RECORD_PACKING, malformedRecordPacking);324 uriHelper.append(PARAM_RECORD_PACKING, malformedRecordPacking); 325 325 } 326 326 } … … 330 330 */ 331 331 if (recordSchema != null) { 332 uri Builder.append(PARAM_RECORD_SCHEMA, recordSchema);332 uriHelper.append(PARAM_RECORD_SCHEMA, recordSchema); 333 333 } 334 334 … … 337 337 */ 338 338 if (resultSetTTL > -1) { 339 uri Builder.append(PARAM_RESULT_SET_TTL, resultSetTTL);339 uriHelper.append(PARAM_RESULT_SET_TTL, resultSetTTL); 340 340 } 341 341 }
Note: See TracChangeset
for help on using the changeset viewer.