Added support for configurable client ID strategy

This commit is contained in:
jvi
2020-07-01 12:16:09 +02:00
parent 05daeff06a
commit 25a3da1b83
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);
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());
}
}
}

View File

@@ -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);