Adjust configs

This commit is contained in:
James Agnew
2019-09-30 18:38:30 -04:00
parent cde8981c83
commit 88e2b6d4a7
8 changed files with 97 additions and 22 deletions

View File

@@ -43,7 +43,7 @@ public class FhirServerConfigDstu2 extends BaseJavaConfigDstu2 {
throw new ConfigurationException("Could not set the data source due to a configuration issue", e);
}
retVal.setJpaProperties(HapiProperties.getProperties());
retVal.setJpaProperties(HapiProperties.getJpaProperties());
return retVal;
}

View File

@@ -43,7 +43,7 @@ public class FhirServerConfigDstu3 extends BaseJavaConfigDstu3 {
throw new ConfigurationException("Could not set the data source due to a configuration issue", e);
}
retVal.setJpaProperties(HapiProperties.getProperties());
retVal.setJpaProperties(HapiProperties.getJpaProperties());
return retVal;
}

View File

@@ -43,7 +43,7 @@ public class FhirServerConfigR4 extends BaseJavaConfigR4 {
throw new ConfigurationException("Could not set the data source due to a configuration issue", e);
}
retVal.setJpaProperties(HapiProperties.getProperties());
retVal.setJpaProperties(HapiProperties.getJpaProperties());
return retVal;
}

View File

@@ -1,7 +1,6 @@
package ca.uhn.fhir.jpa.starter;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.jpa.config.BaseJavaConfigR4;
import ca.uhn.fhir.jpa.config.BaseJavaConfigR5;
import ca.uhn.fhir.jpa.search.DatabaseBackedPagingProvider;
import org.springframework.beans.factory.annotation.Autowired;
@@ -44,7 +43,7 @@ public class FhirServerConfigR5 extends BaseJavaConfigR5 {
throw new ConfigurationException("Could not set the data source due to a configuration issue", e);
}
retVal.setJpaProperties(HapiProperties.getProperties());
retVal.setJpaProperties(HapiProperties.getJpaProperties());
return retVal;
}

View File

@@ -2,9 +2,13 @@ package ca.uhn.fhir.jpa.starter;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.jpa.search.elastic.ElasticsearchHibernatePropertiesBuilder;
import ca.uhn.fhir.rest.api.EncodingEnum;
import ca.uhn.fhir.rest.server.ETagSupportEnum;
import com.google.common.annotations.VisibleForTesting;
import org.hibernate.search.elasticsearch.cfg.ElasticsearchIndexStatus;
import org.hibernate.search.elasticsearch.cfg.IndexSchemaManagementStrategy;
import org.jetbrains.annotations.NotNull;
import java.io.FileInputStream;
import java.io.InputStream;
@@ -57,13 +61,17 @@ public class HapiProperties {
private static final String VALIDATE_RESPONSES_ENABLED = "validation.responses.enabled";
private static final String FILTER_SEARCH_ENABLED = "filter_search.enabled";
private static final String GRAPHQL_ENABLED = "graphql.enabled";
private static Properties properties;
private static Properties ourProperties;
public static boolean isElasticSearchEnabled() {
return HapiProperties.getPropertyBoolean("elasticsearch.enabled", false);
}
/*
* Force the configuration to be reloaded
*/
public static void forceReload() {
properties = null;
ourProperties = null;
getProperties();
}
@@ -76,22 +84,48 @@ public class HapiProperties {
getProperties().setProperty(theKey, theValue);
}
public static Properties getProperties() {
if (properties == null) {
// Load the configurable properties file
try (InputStream in = HapiProperties.class.getClassLoader().getResourceAsStream(HAPI_PROPERTIES)) {
HapiProperties.properties = new Properties();
HapiProperties.properties.load(in);
} catch (Exception e) {
throw new ConfigurationException("Could not load HAPI properties", e);
}
public static Properties getJpaProperties() {
Properties retVal = loadProperties();
Properties overrideProps = loadOverrideProperties();
if (overrideProps != null) {
properties.putAll(overrideProps);
}
if (isElasticSearchEnabled()) {
ElasticsearchHibernatePropertiesBuilder builder = new ElasticsearchHibernatePropertiesBuilder();
builder.setRequiredIndexStatus(getPropertyEnum("elasticsearch.required_index_status", ElasticsearchIndexStatus.class, ElasticsearchIndexStatus.YELLOW));
builder.setRestUrl(getProperty("elasticsearch.rest_url"));
builder.setUsername(getProperty("elasticsearch.username"));
builder.setPassword(getProperty("elasticsearch.password"));
builder.setIndexSchemaManagementStrategy(getPropertyEnum("elasticsearch.schema_management_strateg", IndexSchemaManagementStrategy.class, IndexSchemaManagementStrategy.CREATE));
builder.setDebugRefreshAfterWrite(getPropertyBoolean("elasticsearch.debug.refresh_after_write", false));
builder.setDebugPrettyPrintJsonLog(getPropertyBoolean("elasticsearch.debug.pretty_print_json_log", false));
builder.apply(retVal);
}
return retVal;
}
private static Properties getProperties() {
if (ourProperties == null) {
Properties properties = loadProperties();
HapiProperties.ourProperties = properties;
}
return ourProperties;
}
@NotNull
private static Properties loadProperties() {
// Load the configurable properties file
Properties properties;
try (InputStream in = HapiProperties.class.getClassLoader().getResourceAsStream(HAPI_PROPERTIES)) {
properties = new Properties();
properties.load(in);
} catch (Exception e) {
throw new ConfigurationException("Could not load HAPI properties", e);
}
Properties overrideProps = loadOverrideProperties();
if (overrideProps != null) {
properties.putAll(overrideProps);
}
return properties;
}
@@ -375,5 +409,15 @@ public class HapiProperties {
return HapiProperties.getBooleanProperty(GRAPHQL_ENABLED, true);
}
private static boolean getPropertyBoolean(String thePropertyName, boolean theDefaultValue) {
String value = getProperty(thePropertyName, Boolean.toString(theDefaultValue));
return Boolean.parseBoolean(value);
}
private static <T extends Enum> T getPropertyEnum(String thePropertyName, Class<T> theEnumType, T theDefaultValue) {
String value = getProperty(thePropertyName, theDefaultValue.name());
return (T) Enum.valueOf(theEnumType, value);
}
}