diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/JpaConformanceProviderDstu2.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/JpaConformanceProviderDstu2.java index 1ae9c54633f..da70d52eb69 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/JpaConformanceProviderDstu2.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/JpaConformanceProviderDstu2.java @@ -19,9 +19,7 @@ package ca.uhn.fhir.jpa.provider; * limitations under the License. * #L% */ - -import java.util.List; -import java.util.Map; +import java.util.*; import javax.servlet.http.HttpServletRequest; @@ -51,6 +49,7 @@ public class JpaConformanceProviderDstu2 extends ServerConformanceProvider { private volatile Conformance myCachedValue; private DaoConfig myDaoConfig; private String myImplementationDescription; + private boolean myIncludeResourceCounts; private RestfulServer myRestfulServer; private IFhirSystemDao mySystemDao; @@ -61,6 +60,7 @@ public class JpaConformanceProviderDstu2 extends ServerConformanceProvider { public JpaConformanceProviderDstu2(){ super(); super.setCache(false); + setIncludeResourceCounts(true); } /** @@ -72,13 +72,17 @@ public class JpaConformanceProviderDstu2 extends ServerConformanceProvider { mySystemDao = theSystemDao; myDaoConfig = theDaoConfig; super.setCache(false); + setIncludeResourceCounts(true); } @Override public Conformance getServerConformance(HttpServletRequest theRequest) { Conformance retVal = myCachedValue; - Map counts = mySystemDao.getResourceCounts(); + Map counts = Collections.emptyMap(); + if (myIncludeResourceCounts) { + counts = mySystemDao.getResourceCounts(); + } FhirContext ctx = myRestfulServer.getFhirContext(); @@ -119,6 +123,10 @@ public class JpaConformanceProviderDstu2 extends ServerConformanceProvider { return retVal; } + public boolean isIncludeResourceCounts() { + return myIncludeResourceCounts; + } + public void setDaoConfig(DaoConfig myDaoConfig) { this.myDaoConfig = myDaoConfig; } @@ -128,6 +136,10 @@ public class JpaConformanceProviderDstu2 extends ServerConformanceProvider { myImplementationDescription = theImplDesc; } + public void setIncludeResourceCounts(boolean theIncludeResourceCounts) { + myIncludeResourceCounts = theIncludeResourceCounts; + } + @Override public void setRestfulServer(RestfulServer theRestfulServer) { this.myRestfulServer = theRestfulServer; diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/dstu3/JpaConformanceProviderDstu3.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/dstu3/JpaConformanceProviderDstu3.java index b55b70e4e08..ba417412326 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/dstu3/JpaConformanceProviderDstu3.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/provider/dstu3/JpaConformanceProviderDstu3.java @@ -1,7 +1,5 @@ package ca.uhn.fhir.jpa.provider.dstu3; -import java.util.Collection; - /* * #%L * HAPI FHIR JPA Server @@ -21,23 +19,18 @@ import java.util.Collection; * limitations under the License. * #L% */ - -import java.util.Map; +import java.util.*; import javax.servlet.http.HttpServletRequest; import org.hl7.fhir.dstu3.model.*; import org.hl7.fhir.dstu3.model.CapabilityStatement.*; import org.hl7.fhir.dstu3.model.Enumerations.SearchParamType; -import org.springframework.beans.factory.annotation.Autowired; -import ca.uhn.fhir.context.BaseRuntimeElementDefinition; -import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.RuntimeResourceDefinition; import ca.uhn.fhir.context.RuntimeSearchParam; import ca.uhn.fhir.jpa.dao.DaoConfig; import ca.uhn.fhir.jpa.dao.IFhirSystemDao; -import ca.uhn.fhir.jpa.dao.ISearchParamRegistry; import ca.uhn.fhir.rest.server.RestfulServer; import ca.uhn.fhir.util.CoverageIgnore; import ca.uhn.fhir.util.ExtensionConstants; @@ -47,9 +40,10 @@ public class JpaConformanceProviderDstu3 extends org.hl7.fhir.dstu3.hapi.rest.se private volatile CapabilityStatement myCachedValue; private DaoConfig myDaoConfig; private String myImplementationDescription; + private boolean myIncludeResourceCounts; private RestfulServer myRestfulServer; private IFhirSystemDao mySystemDao; - + /** * Constructor */ @@ -57,8 +51,9 @@ public class JpaConformanceProviderDstu3 extends org.hl7.fhir.dstu3.hapi.rest.se public JpaConformanceProviderDstu3(){ super(); super.setCache(false); + setIncludeResourceCounts(true); } - + /** * Constructor */ @@ -68,15 +63,17 @@ public class JpaConformanceProviderDstu3 extends org.hl7.fhir.dstu3.hapi.rest.se mySystemDao = theSystemDao; myDaoConfig = theDaoConfig; super.setCache(false); + setIncludeResourceCounts(true); } - + @Override public CapabilityStatement getServerConformance(HttpServletRequest theRequest) { CapabilityStatement retVal = myCachedValue; - Map counts = mySystemDao.getResourceCounts(); - - FhirContext ctx = myRestfulServer.getFhirContext(); + Map counts = Collections.emptyMap(); + if (myIncludeResourceCounts) { + counts = mySystemDao.getResourceCounts(); + } retVal = super.getServerConformance(theRequest); for (CapabilityStatementRestComponent nextRest : retVal.getRest()) { @@ -148,6 +145,10 @@ public class JpaConformanceProviderDstu3 extends org.hl7.fhir.dstu3.hapi.rest.se return retVal; } + public boolean isIncludeResourceCounts() { + return myIncludeResourceCounts; + } + /** * Subclasses may override */ @@ -164,6 +165,10 @@ public class JpaConformanceProviderDstu3 extends org.hl7.fhir.dstu3.hapi.rest.se myImplementationDescription = theImplDesc; } + public void setIncludeResourceCounts(boolean theIncludeResourceCounts) { + myIncludeResourceCounts = theIncludeResourceCounts; + } + @Override public void setRestfulServer(RestfulServer theRestfulServer) { this.myRestfulServer = theRestfulServer; diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 0af0d2e74c6..8565c7fc406 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -116,6 +116,10 @@ a resource ID that previously existed but is now deleted. Thanks to Artem Sopin for reporting! + + JpaConformanceProvider now has a configuration setting to enable and + disable adding resource counts to the server metadata. +