From 85f039caae6983f46fefc36390d1adbe9bbb1823 Mon Sep 17 00:00:00 2001 From: James Agnew Date: Wed, 25 Sep 2019 09:19:44 -0400 Subject: [PATCH] Remove lenient method match feature, as I am unable to find any documentation explaining the behaviour or any way of triggering its use. --- .../server/method/SearchMethodBinding.java | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/hapi-fhir-server/src/main/java/ca/uhn/fhir/rest/server/method/SearchMethodBinding.java b/hapi-fhir-server/src/main/java/ca/uhn/fhir/rest/server/method/SearchMethodBinding.java index e449f84008d..8f852762b09 100644 --- a/hapi-fhir-server/src/main/java/ca/uhn/fhir/rest/server/method/SearchMethodBinding.java +++ b/hapi-fhir-server/src/main/java/ca/uhn/fhir/rest/server/method/SearchMethodBinding.java @@ -129,22 +129,8 @@ public class SearchMethodBinding extends BaseResourceReturningMethodBinding { @Override public boolean incomingServerRequestMatchesMethod(RequestDetails theRequest) { - String clientPreference = theRequest.getHeader(Constants.HEADER_PREFER); - boolean lenientHandling = false; - if(clientPreference != null) - { - String[] preferences = clientPreference.split(";"); - for( String p : preferences){ - if("handling:lenient".equalsIgnoreCase(p)) - { - lenientHandling = true; - break; - } - } - } - if (theRequest.getId() != null && myIdParamIndex == null) { - ourLog.trace("Method {} doesn't match because ID is not null: {}", theRequest.getId()); + ourLog.trace("Method {} doesn't match because ID is not null: {}", getMethod(), theRequest.getId()); return false; } if (theRequest.getRequestType() == RequestTypeEnum.GET && theRequest.getOperation() != null && !Constants.PARAM_SEARCH.equals(theRequest.getOperation())) { @@ -156,16 +142,16 @@ public class SearchMethodBinding extends BaseResourceReturningMethodBinding { return false; } if (theRequest.getRequestType() != RequestTypeEnum.GET && theRequest.getRequestType() != RequestTypeEnum.POST) { - ourLog.trace("Method {} doesn't match because request type is {}", getMethod()); + ourLog.trace("Method {} doesn't match because request type is {}", getMethod(), theRequest.getRequestType()); return false; } if (!StringUtils.equals(myCompartmentName, theRequest.getCompartmentName())) { - ourLog.trace("Method {} doesn't match because it is for compartment {} but request is compartment {}", new Object[] { getMethod(), myCompartmentName, theRequest.getCompartmentName() }); + ourLog.trace("Method {} doesn't match because it is for compartment {} but request is compartment {}", getMethod(), myCompartmentName, theRequest.getCompartmentName()); return false; } // This is used to track all the parameters so we can reject queries that // have additional params we don't understand - Set methodParamsTemp = new HashSet(); + Set methodParamsTemp = new HashSet<>(); Set unqualifiedNames = theRequest.getUnqualifiedToQualifiedNames().keySet(); Set qualifiedParamNames = theRequest.getParameters().keySet(); @@ -237,8 +223,6 @@ public class SearchMethodBinding extends BaseResourceReturningMethodBinding { } } Set keySet = theRequest.getParameters().keySet(); - if(lenientHandling == true) - return true; if (myAllowUnknownParams == false) { for (String next : keySet) { @@ -272,7 +256,7 @@ public class SearchMethodBinding extends BaseResourceReturningMethodBinding { if (theQualifierWhitelist == null && theQualifierBlacklist == null) { return theQualifiedNames; } - ArrayList retVal = new ArrayList(theQualifiedNames.size()); + ArrayList retVal = new ArrayList<>(theQualifiedNames.size()); for (String next : theQualifiedNames) { QualifierDetails qualifiers = extractQualifiersFromParameterName(next); if (!qualifiers.passes(theQualifierWhitelist, theQualifierBlacklist)) {