Merge pull request #114 from trifork/feature/idStrategy

Added support for configurable client ID strategy
This commit is contained in:
Sean McIlvenna
2020-07-01 08:19:35 -07:00
committed by GitHub
3 changed files with 18 additions and 1 deletions

View File

@@ -311,7 +311,7 @@ public class BaseJpaRestfulServer extends RestfulServer {
BundleType type = BundleType.valueOf(o); BundleType type = BundleType.valueOf(o);
allowedBundleTypes.add(type.toCode()); allowedBundleTypes.add(type.toCode());
}); });
DaoConfig config = (DaoConfig) daoConfig; DaoConfig config = daoConfig;
config.setBundleTypesAllowedForStorage( config.setBundleTypesAllowedForStorage(
Collections.unmodifiableSet(new TreeSet<>(allowedBundleTypes))); Collections.unmodifiableSet(new TreeSet<>(allowedBundleTypes)));
} }
@@ -328,6 +328,10 @@ public class BaseJpaRestfulServer extends RestfulServer {
registerProviders(appCtx.getBean(PartitionManagementProvider.class)); registerProviders(appCtx.getBean(PartitionManagementProvider.class));
} }
if (HapiProperties.getClientIdStrategy() == DaoConfig.ClientIdStrategyEnum.ANY) {
daoConfig.setResourceServerIdStrategy(DaoConfig.IdStrategyEnum.UUID);
daoConfig.setResourceClientIdStrategy(HapiProperties.getClientIdStrategy());
}
} }
} }

View File

@@ -2,6 +2,7 @@ package ca.uhn.fhir.jpa.starter;
import ca.uhn.fhir.context.ConfigurationException; import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirVersionEnum; 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.jpa.search.elastic.ElasticsearchHibernatePropertiesBuilder;
import ca.uhn.fhir.rest.api.EncodingEnum; import ca.uhn.fhir.rest.api.EncodingEnum;
import ca.uhn.fhir.rest.server.ETagSupportEnum; 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 EXPIRE_SEARCH_RESULTS_AFTER_MINS = "retain_cached_searches_mins";
static final String MAX_BINARY_SIZE = "max_binary_size"; static final String MAX_BINARY_SIZE = "max_binary_size";
static final String PARTITIONING_MULTITENANCY_ENABLED = "partitioning.multitenancy.enabled"; static final String PARTITIONING_MULTITENANCY_ENABLED = "partitioning.multitenancy.enabled";
static final String CLIENT_ID_STRATEGY = "daoconfig.client_id_strategy";
private static Properties ourProperties; private static Properties ourProperties;
@@ -240,6 +242,16 @@ public class HapiProperties {
return ETagSupportEnum.ENABLED; 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() { public static EncodingEnum getDefaultEncoding() {
String defaultEncodingString = HapiProperties.getProperty(DEFAULT_ENCODING); String defaultEncodingString = HapiProperties.getProperty(DEFAULT_ENCODING);

View File

@@ -154,3 +154,4 @@ subscription.websocket.enabled=false
# Partitioning And Multitenancy # Partitioning And Multitenancy
################################################### ###################################################
partitioning.multitenancy.enabled=false partitioning.multitenancy.enabled=false
#daoconfig.client_id_strategy=ANY