diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java b/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java index b809cf0..9eafd27 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java @@ -311,7 +311,7 @@ public class BaseJpaRestfulServer extends RestfulServer { BundleType type = BundleType.valueOf(o); allowedBundleTypes.add(type.toCode()); }); - DaoConfig config = (DaoConfig) daoConfig; + DaoConfig config = daoConfig; config.setBundleTypesAllowedForStorage( Collections.unmodifiableSet(new TreeSet<>(allowedBundleTypes))); } @@ -328,6 +328,10 @@ public class BaseJpaRestfulServer extends RestfulServer { registerProviders(appCtx.getBean(PartitionManagementProvider.class)); } + if (HapiProperties.getClientIdStrategy() == DaoConfig.ClientIdStrategyEnum.ANY) { + daoConfig.setResourceServerIdStrategy(DaoConfig.IdStrategyEnum.UUID); + daoConfig.setResourceClientIdStrategy(HapiProperties.getClientIdStrategy()); + } } } diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java b/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java index 6639ef5..544e452 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/HapiProperties.java @@ -2,6 +2,7 @@ package ca.uhn.fhir.jpa.starter; import ca.uhn.fhir.context.ConfigurationException; import ca.uhn.fhir.context.FhirVersionEnum; +import ca.uhn.fhir.jpa.api.config.DaoConfig; import ca.uhn.fhir.jpa.search.elastic.ElasticsearchHibernatePropertiesBuilder; import ca.uhn.fhir.rest.api.EncodingEnum; import ca.uhn.fhir.rest.server.ETagSupportEnum; @@ -74,6 +75,7 @@ public class HapiProperties { static final String EXPIRE_SEARCH_RESULTS_AFTER_MINS = "retain_cached_searches_mins"; static final String MAX_BINARY_SIZE = "max_binary_size"; static final String PARTITIONING_MULTITENANCY_ENABLED = "partitioning.multitenancy.enabled"; + static final String CLIENT_ID_STRATEGY = "daoconfig.client_id_strategy"; private static Properties ourProperties; @@ -240,6 +242,16 @@ public class HapiProperties { return ETagSupportEnum.ENABLED; } + public static DaoConfig.ClientIdStrategyEnum getClientIdStrategy() { + String idStrategy = HapiProperties.getProperty(CLIENT_ID_STRATEGY); + + if (idStrategy != null && idStrategy.length() > 0) { + return DaoConfig.ClientIdStrategyEnum.valueOf(idStrategy); + } + + return DaoConfig.ClientIdStrategyEnum.ALPHANUMERIC; + } + public static EncodingEnum getDefaultEncoding() { String defaultEncodingString = HapiProperties.getProperty(DEFAULT_ENCODING); diff --git a/src/main/resources/hapi.properties b/src/main/resources/hapi.properties index dc656b9..303553f 100644 --- a/src/main/resources/hapi.properties +++ b/src/main/resources/hapi.properties @@ -154,3 +154,4 @@ subscription.websocket.enabled=false # Partitioning And Multitenancy ################################################### partitioning.multitenancy.enabled=false +#daoconfig.client_id_strategy=ANY \ No newline at end of file