|
6 | 6 | import java.net.URISyntaxException; |
7 | 7 | import java.net.URLEncoder; |
8 | 8 | import java.nio.charset.StandardCharsets; |
| 9 | +import java.security.InvalidParameterException; |
9 | 10 | import java.sql.Timestamp; |
10 | 11 | import java.text.MessageFormat; |
11 | 12 | import java.time.Instant; |
|
20 | 21 |
|
21 | 22 | import jakarta.ejb.EJB; |
22 | 23 | import jakarta.ejb.Stateless; |
23 | | -import jakarta.ejb.TransactionAttribute; |
24 | | -import jakarta.ejb.TransactionAttributeType; |
25 | 24 | import jakarta.inject.Named; |
26 | 25 | import jakarta.json.Json; |
27 | 26 | import jakarta.json.JsonArray; |
@@ -523,10 +522,19 @@ public void registerExternalTerm(JsonObject cvocEntry, String term, List<Dataset |
523 | 522 | if (evv.getValue() == null) { |
524 | 523 | String adjustedTerm = (prefix==null)? term: term.replace(prefix, ""); |
525 | 524 |
|
526 | | - retrievalUri = replaceRetrievalUriParam(retrievalUri, "0", adjustedTerm); |
527 | | - retrievalUri = replaceRetrievalUriParam(retrievalUri, termUriFieldName, adjustedTerm); |
528 | | - for (DatasetField f : relatedDatasetFields) { |
529 | | - retrievalUri = replaceRetrievalUriParam(retrievalUri, f.getDatasetFieldType().getName(), f.getValue()); |
| 525 | + try { |
| 526 | + retrievalUri = tryToReplaceRetrievalUriParam(retrievalUri, "0", adjustedTerm); |
| 527 | + retrievalUri = tryToReplaceRetrievalUriParam(retrievalUri, termUriFieldName, adjustedTerm); |
| 528 | + for (DatasetField f : relatedDatasetFields) { |
| 529 | + retrievalUri = tryToReplaceRetrievalUriParam(retrievalUri, f.getDatasetFieldType().getName(), f.getValue()); |
| 530 | + } |
| 531 | + } catch (InvalidParameterException e) { |
| 532 | + logger.warning("InvalidParameterException in tryReplaceRetrievalUriParam : " + e.getMessage()); |
| 533 | + return; |
| 534 | + } |
| 535 | + if (retrievalUri.contains("{")) { |
| 536 | + logger.severe("Retrieval URI still contains unreplaced parameter :" + retrievalUri); |
| 537 | + return; |
530 | 538 | } |
531 | 539 |
|
532 | 540 | logger.fine("Didn't find " + term + ", calling " + retrievalUri); |
@@ -580,20 +588,32 @@ public void process(HttpResponse response, HttpContext context) throws HttpExcep |
580 | 588 | } catch (IOException ioe) { |
581 | 589 | logger.severe("IOException when retrieving url: " + retrievalUri + " : " + ioe.getMessage()); |
582 | 590 | } |
583 | | - |
584 | 591 | } |
585 | 592 | } catch (URISyntaxException e) { |
586 | 593 | logger.fine("Term is not a URI: " + term); |
587 | 594 | } |
588 | | - |
589 | 595 | } |
590 | 596 |
|
591 | | - private String replaceRetrievalUriParam(String retrievalUri, String paramName, String value) { |
| 597 | + private String tryToReplaceRetrievalUriParam(String retrievalUri, String paramName, String value) throws InvalidParameterException { |
| 598 | + |
| 599 | + if(StringUtils.isBlank(paramName)) { |
| 600 | + throw new InvalidParameterException("Empty or null paramName is not allowed while replacing retrieval uri parameter"); |
| 601 | + } |
| 602 | + |
| 603 | + if(retrievalUri.contains(paramName)) { |
| 604 | + logger.fine("Parameter {" + paramName + "} found in retrievalUri"); |
| 605 | + |
| 606 | + if(StringUtils.isBlank(value)) { |
| 607 | + throw new InvalidParameterException("Empty or null value is not allowed while replacing retrieval uri parameter"); |
| 608 | + } |
592 | 609 |
|
593 | | - if(retrievalUri.contains("encodeUrl:" + paramName)) { |
594 | | - retrievalUri = retrievalUri.replace("{encodeUrl:"+paramName+"}", URLEncoder.encode(value, StandardCharsets.UTF_8)); |
| 610 | + if(retrievalUri.contains("encodeUrl:" + paramName)) { |
| 611 | + retrievalUri = retrievalUri.replace("{encodeUrl:"+paramName+"}", URLEncoder.encode(value, StandardCharsets.UTF_8)); |
| 612 | + } else { |
| 613 | + retrievalUri = retrievalUri.replace("{"+paramName+"}", value); |
| 614 | + } |
595 | 615 | } else { |
596 | | - retrievalUri = retrievalUri.replace("{"+paramName+"}", value); |
| 616 | + logger.fine("Parameter {" + paramName + "} not found in retrievalUri"); |
597 | 617 | } |
598 | 618 |
|
599 | 619 | return retrievalUri; |
|
0 commit comments