Changeset 7257
- Timestamp:
- 12/20/21 15:54:07 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
FCSSimpleClient/trunk/src/main/java/eu/clarin/sru/client/fcs/ClarinFCSEndpointDescriptionParser.java
r7200 r7257 288 288 // Resources 289 289 final List<ResourceInfo> resources = 290 parseResources(reader, 0, maxDepth, 290 parseResources(reader, 0, maxDepth, hasAdvancedSearch, 291 291 supportedDataViews, supportedLayers); 292 292 … … 323 323 324 324 private static List<ResourceInfo> parseResources(XMLStreamReader reader, 325 int depth, int maxDepth, List<DataView> supportedDataviews, 326 List<Layer> supportedLayers) throws XMLStreamException { 325 int depth, int maxDepth, boolean hasAdvancedSearch, 326 List<DataView> supportedDataviews, List<Layer> supportedLayers) 327 throws XMLStreamException { 327 328 List<ResourceInfo> resources = null; 328 329 … … 334 335 reader.next(); // consume start tag 335 336 336 logger.debug("pid = {}", pid); 337 logger.debug("hasAdvSearch: {}", hasAdvancedSearch); 338 339 logger.debug("parsing resource with pid = {}", pid); 337 340 338 341 final Map<String, String> title = … … 381 384 for (String dv : dvs.split("\\s+")) { 382 385 boolean found = false; 383 for (DataView dataview : supportedDataviews) { 384 if (dataview.getIdentifier().equals(dv)) { 385 found = true; 386 if (dataviews == null) { 387 dataviews = new ArrayList<DataView>(); 386 if (supportedDataviews != null) { 387 for (DataView dataview : supportedDataviews) { 388 if (dataview.getIdentifier().equals(dv)) { 389 found = true; 390 if (dataviews == null) { 391 dataviews = new ArrayList<DataView>(); 392 } 393 dataviews.add(dataview); 394 break; 388 395 } 389 dataviews.add(dataview); 390 break; 391 } 392 } // for 396 } // for 397 } 393 398 if (!found) { 394 399 throw new XMLStreamException("DataView with id '" + dv + … … 410 415 for (String l : ls.split("\\s+")) { 411 416 boolean found = false; 412 for (Layer layer : supportedLayers) { 413 if (layer.getIdentifier().equals(l)) { 414 found = true; 415 if (layers == null) { 416 layers = new ArrayList<Layer>(); 417 if (supportedLayers != null) { 418 for (Layer layer : supportedLayers) { 419 if (layer.getIdentifier().equals(l)) { 420 found = true; 421 if (layers == null) { 422 layers = new ArrayList<Layer>(); 423 } 424 layers.add(layer); 425 break; 417 426 } 418 layers.add(layer); 419 break; 420 } 421 } // for 427 } // for 428 } 422 429 if (!found) { 423 430 throw new XMLStreamException("Layer with id '" + l + … … 427 434 } // for 428 435 logger.debug("Layers: {}", layers); 436 } // for 437 if (hasAdvancedSearch && (layers == null)) { 438 throw new XMLStreamException("Endpoint must declare " + 439 "all available layers (<AvailableLayers>) on a " + 440 "resource, if they provide the 'advanced-search' (" + 441 ClarinFCSConstants.CAPABILITY_ADVANCED_SEARCH + 442 ") capability. Offending resource id pid=" + pid + 443 ")", reader.getLocation()); 429 444 } 430 445 … … 437 452 (nextDepth < maxDepth)) { 438 453 subResources = parseResources(reader, nextDepth, 439 maxDepth, supportedDataviews, supportedLayers); 454 maxDepth, hasAdvancedSearch, supportedDataviews, 455 supportedLayers); 440 456 } else { 441 457 XmlStreamReaderUtils.skipTag(reader, ED_NS_URI,
Note: See TracChangeset
for help on using the changeset viewer.