From b43b0f1d881e1cce6002caa142d06fd06ba4a8bc Mon Sep 17 00:00:00 2001 From: paulolaup Date: Fri, 24 Mar 2023 11:25:01 +0100 Subject: [PATCH 1/2] issue#4202 - Added additional condition (operation definition parameters have to feature use type 'IN' in org.linuxforhealth.fhir.server.spi.operation.AbstractOperation::isGetMethodAllowed to qualify for futher checks on whether or not parameter is a primitive type) to fix unexpected OperationOutcome message. Fixed typo in org.linuxforhealth.fhir.term.service.FHIRTermService::lookup(Coding, LookupParameters) --- .../fhir/server/spi/operation/AbstractOperation.java | 4 ++++ .../org/linuxforhealth/fhir/term/service/FHIRTermService.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/fhir-server-spi/src/main/java/org/linuxforhealth/fhir/server/spi/operation/AbstractOperation.java b/fhir-server-spi/src/main/java/org/linuxforhealth/fhir/server/spi/operation/AbstractOperation.java index 6ede7f28f3a..b3edef4c669 100644 --- a/fhir-server-spi/src/main/java/org/linuxforhealth/fhir/server/spi/operation/AbstractOperation.java +++ b/fhir-server-spi/src/main/java/org/linuxforhealth/fhir/server/spi/operation/AbstractOperation.java @@ -9,6 +9,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.logging.Logger; +import java.util.StringJoiner; import org.linuxforhealth.fhir.exception.FHIROperationException; import org.linuxforhealth.fhir.model.resource.OperationDefinition; @@ -24,6 +26,7 @@ import org.linuxforhealth.fhir.search.util.SearchHelper; public abstract class AbstractOperation implements FHIROperation { + private static final Logger LOGGER = Logger.getLogger(AbstractOperation.class.getName()); protected final OperationDefinition definition; public AbstractOperation() { @@ -209,6 +212,7 @@ private boolean isGetMethodAllowed(OperationDefinition operationDefinition, Para for (OperationDefinition.Parameter odParameter : operationDefinition.getParameter()) { if (parameter.getName().getValue() != null && odParameter.getName() != null && parameter.getName().getValue().equals(odParameter.getName().getValue()) + && odParameter.getUse().equals(OperationParameterUse.IN) && (odParameter.getType() == null || !ModelSupport.isPrimitiveType(ModelSupport.getDataType(odParameter.getType().getValue())) || (odParameter.getPart() != null && !odParameter.getPart().isEmpty()))) { return false; diff --git a/term/fhir-term/src/main/java/org/linuxforhealth/fhir/term/service/FHIRTermService.java b/term/fhir-term/src/main/java/org/linuxforhealth/fhir/term/service/FHIRTermService.java index 644da199a0b..7440da614a6 100644 --- a/term/fhir-term/src/main/java/org/linuxforhealth/fhir/term/service/FHIRTermService.java +++ b/term/fhir-term/src/main/java/org/linuxforhealth/fhir/term/service/FHIRTermService.java @@ -414,7 +414,7 @@ public LookupOutcome lookup(Coding coding) { */ public LookupOutcome lookup(Coding coding, LookupParameters parameters) { if (!LookupParameters.EMPTY.equals(parameters)) { - throw new UnsupportedOperationException("Lookup parameters are not suppored"); + throw new UnsupportedOperationException("Lookup parameters are not supported"); } java.lang.String system = (coding.getSystem() != null) ? coding.getSystem().getValue() : null; java.lang.String version = (coding.getVersion() != null) ? coding.getVersion().getValue() : null; From c8e0230d83e524a809036bb34c14d933014b1b71 Mon Sep 17 00:00:00 2001 From: paulolaup Date: Fri, 24 Mar 2023 11:38:02 +0100 Subject: [PATCH 2/2] issue#4202 - Cleaned up imports --- .../fhir/server/spi/operation/AbstractOperation.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/fhir-server-spi/src/main/java/org/linuxforhealth/fhir/server/spi/operation/AbstractOperation.java b/fhir-server-spi/src/main/java/org/linuxforhealth/fhir/server/spi/operation/AbstractOperation.java index b3edef4c669..83cb1d4f93e 100644 --- a/fhir-server-spi/src/main/java/org/linuxforhealth/fhir/server/spi/operation/AbstractOperation.java +++ b/fhir-server-spi/src/main/java/org/linuxforhealth/fhir/server/spi/operation/AbstractOperation.java @@ -9,8 +9,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.logging.Logger; -import java.util.StringJoiner; import org.linuxforhealth.fhir.exception.FHIROperationException; import org.linuxforhealth.fhir.model.resource.OperationDefinition; @@ -26,7 +24,6 @@ import org.linuxforhealth.fhir.search.util.SearchHelper; public abstract class AbstractOperation implements FHIROperation { - private static final Logger LOGGER = Logger.getLogger(AbstractOperation.class.getName()); protected final OperationDefinition definition; public AbstractOperation() { @@ -212,7 +209,7 @@ private boolean isGetMethodAllowed(OperationDefinition operationDefinition, Para for (OperationDefinition.Parameter odParameter : operationDefinition.getParameter()) { if (parameter.getName().getValue() != null && odParameter.getName() != null && parameter.getName().getValue().equals(odParameter.getName().getValue()) - && odParameter.getUse().equals(OperationParameterUse.IN) + && odParameter.getUse().getValueAsEnum().equals(OperationParameterUse.IN) && (odParameter.getType() == null || !ModelSupport.isPrimitiveType(ModelSupport.getDataType(odParameter.getType().getValue())) || (odParameter.getPart() != null && !odParameter.getPart().isEmpty()))) { return false;