Merge pull request #114 from trifork/feature/idStrategy
Added support for configurable client ID strategy
This commit is contained in:
@@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user