diff --git a/.gitignore b/.gitignore index 41c06bd62e..d8ed73ae22 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,10 @@ log/ *.zip .project .tool-versions +.settings +.classpath +.factorypath + # dependencies node_modules/ diff --git a/apps/modernization-api/README.md b/apps/modernization-api/README.md index 3c98a5e6ba..b447bd6d3a 100644 --- a/apps/modernization-api/README.md +++ b/apps/modernization-api/README.md @@ -26,7 +26,17 @@ Ensure you have the following installed: ### 1. Environment & Secrets This project uses a `.env` file for local configuration. The provided script initializes this file and exports -variables to your current session. +variables to your current session or relevant properties set + in `src/main/resources/application-local.yml` + +```yml +nbs: + security: + parameterSecret: result of `openssl rand -base64 32 | cut -c1-32` + tokenSecret: result of `openssl rand -base64 64` + datasource: + password: password used for sa user on db +``` ```shell # From repo root @@ -200,4 +210,3 @@ multipart form-data that easily hit the default `max-part-count` of Tomcat. A th accommodate Page Builder templates with large number of questions. Due to the customizability of Page Builder templates this limit may not be sufficient in some deployments. The `max-part-count` can be overridden using the `SERVER_TOMCAT_MAX_PART_COUNT` environment variable. - diff --git a/apps/modernization-api/src/main/java/gov/cdc/nbs/patient/search/PatientDemographicQueryResolver.java b/apps/modernization-api/src/main/java/gov/cdc/nbs/patient/search/PatientDemographicQueryResolver.java index 5470bbf719..1a903699bd 100644 --- a/apps/modernization-api/src/main/java/gov/cdc/nbs/patient/search/PatientDemographicQueryResolver.java +++ b/apps/modernization-api/src/main/java/gov/cdc/nbs/patient/search/PatientDemographicQueryResolver.java @@ -493,9 +493,12 @@ private Script searchDateOfBirthScript(final String value) { script -> script .source( - "doc['birth_time'].size()!=0 && (doc['birth_time'].value.toString().substring(5,10)+'-'+doc['birth_time'].value.toString().substring(0,4)).contains('" - + value - + "')") + so -> + so.scriptString( + "doc['birth_time'].size()!=0 &&" + + " (doc['birth_time'].value.toString().substring(5,10)+'-'+doc['birth_time'].value.toString().substring(0,4)).contains('" + + value + + "')")) .lang(PAINLESS)); } diff --git a/apps/modernization-api/src/main/java/gov/cdc/nbs/patient/search/PatientSearchCriteriaFilterResolver.java b/apps/modernization-api/src/main/java/gov/cdc/nbs/patient/search/PatientSearchCriteriaFilterResolver.java index 606e195db3..ae3055531e 100644 --- a/apps/modernization-api/src/main/java/gov/cdc/nbs/patient/search/PatientSearchCriteriaFilterResolver.java +++ b/apps/modernization-api/src/main/java/gov/cdc/nbs/patient/search/PatientSearchCriteriaFilterResolver.java @@ -161,8 +161,10 @@ private Optional applyDateOfBirthDayCriteria(final PatientSearchCr script -> script .source( - "doc['birth_time'].size()!=0 && doc['birth_time'].value.getDayOfMonth() == " - + equalsDate.day()) + so -> + so.scriptString( + "doc['birth_time'].size()!=0 && doc['birth_time'].value.getDayOfMonth() == " + + equalsDate.day())) .lang(PAINLESS))))); } @@ -185,8 +187,10 @@ private Optional applyDateOfBirthMonthCriteria( script -> script .source( - "doc['birth_time'].size()!=0 && doc['birth_time'].value.getMonthValue() == " - + equalsDate.month()) + so -> + so.scriptString( + "doc['birth_time'].size()!=0 && doc['birth_time'].value.getMonthValue() == " + + equalsDate.month())) .lang(PAINLESS))))); } diff --git a/apps/modernization-api/src/main/java/gov/cdc/nbs/search/ElasticsearchConfiguration.java b/apps/modernization-api/src/main/java/gov/cdc/nbs/search/ElasticsearchConfiguration.java index 00d714a8c5..cc1c5a408a 100644 --- a/apps/modernization-api/src/main/java/gov/cdc/nbs/search/ElasticsearchConfiguration.java +++ b/apps/modernization-api/src/main/java/gov/cdc/nbs/search/ElasticsearchConfiguration.java @@ -3,10 +3,10 @@ import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.json.jackson.JacksonJsonpMapper; import co.elastic.clients.transport.ElasticsearchTransport; -import co.elastic.clients.transport.rest_client.RestClientTransport; +import co.elastic.clients.transport.rest5_client.Rest5ClientTransport; +import co.elastic.clients.transport.rest5_client.low_level.Rest5Client; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.http.HttpHost; -import org.elasticsearch.client.RestClient; +import java.net.URI; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -15,14 +15,14 @@ class ElasticsearchConfiguration { @Bean - RestClient elasticsearchRestClient(@Value("${nbs.elasticsearch.url}") final String url) { - return RestClient.builder(HttpHost.create(url)).build(); + Rest5Client elasticsearchRestClient(@Value("${nbs.elasticsearch.url}") final String url) { + return Rest5Client.builder(URI.create(url)).build(); } @Bean ElasticsearchTransport elasticsearchTransport( - final RestClient restClient, final ObjectMapper objectMapper) { - return new RestClientTransport(restClient, new JacksonJsonpMapper(objectMapper)); + final Rest5Client restClient, final ObjectMapper objectMapper) { + return new Rest5ClientTransport(restClient, new JacksonJsonpMapper(objectMapper)); } @Bean diff --git a/apps/modernization-api/src/main/java/gov/cdc/nbs/search/initialize/ElasticsearchIndexExistenceVerifier.java b/apps/modernization-api/src/main/java/gov/cdc/nbs/search/initialize/ElasticsearchIndexExistenceVerifier.java index 5b971e844b..f47e0d26fe 100644 --- a/apps/modernization-api/src/main/java/gov/cdc/nbs/search/initialize/ElasticsearchIndexExistenceVerifier.java +++ b/apps/modernization-api/src/main/java/gov/cdc/nbs/search/initialize/ElasticsearchIndexExistenceVerifier.java @@ -37,7 +37,7 @@ Collection notExists(final Collection indices) { try { - List existing = client.cat().indices().valueBody(); + List existing = client.cat().indices().indices(); for (IndicesRecord found : existing) { remaining.remove(found.index()); diff --git a/apps/modernization-api/src/test/java/gov/cdc/nbs/containers/NbsElasticsearchContainer.java b/apps/modernization-api/src/test/java/gov/cdc/nbs/containers/NbsElasticsearchContainer.java index e6dff7726a..158f8e475e 100644 --- a/apps/modernization-api/src/test/java/gov/cdc/nbs/containers/NbsElasticsearchContainer.java +++ b/apps/modernization-api/src/test/java/gov/cdc/nbs/containers/NbsElasticsearchContainer.java @@ -5,7 +5,7 @@ import org.testcontainers.utility.DockerImageName; public class NbsElasticsearchContainer extends ElasticsearchContainer { - private static final String ELASTIC_SEARCH_DOCKER = "elasticsearch:7.17.7"; + private static final String ELASTIC_SEARCH_DOCKER = "elasticsearch:9.2.3"; private static final String CLUSTER_NAME = "cluster.name"; diff --git a/cdc-sandbox/elasticsearch/Dockerfile b/cdc-sandbox/elasticsearch/Dockerfile index 5cf0bbc888..42485c6310 100644 --- a/cdc-sandbox/elasticsearch/Dockerfile +++ b/cdc-sandbox/elasticsearch/Dockerfile @@ -1,5 +1,5 @@ # Dockerfile to build elasticsearch image -FROM docker.elastic.co/elasticsearch/elasticsearch:7.17.7 +FROM docker.elastic.co/elasticsearch/elasticsearch:9.2.3 # Relaxes security and sets node to single ENV xpack.security.enabled=false diff --git a/cdc-sandbox/kibana/Dockerfile b/cdc-sandbox/kibana/Dockerfile index c70c4611de..5177dc4520 100644 --- a/cdc-sandbox/kibana/Dockerfile +++ b/cdc-sandbox/kibana/Dockerfile @@ -1,7 +1,6 @@ # Currently NOT in use # Dockerfile to build kibana image -FROM docker.elastic.co/kibana/kibana:7.17.7 +FROM docker.elastic.co/kibana/kibana:9.2.4 # Set environment variables ENV ELASTICSEARCH_HOSTS=http://elasticsearch:9200 - diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e0ecf8e3a3..5ec960a2a2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,7 +18,7 @@ springBoot-web = { module = 'org.springframework.boot:spring-boot-starter-web', springBoot-actuator = {module='org.springframework.boot:spring-boot-starter-actuator', version.ref= 'springBoot'} graphql = { module = 'com.graphql-java:graphql-java', version = '25.0' } springBoot-graphql = { module = 'org.springframework.boot:spring-boot-starter-graphql', version.ref = 'springBoot' } -elasticsearch-java = { module = 'co.elastic.clients:elasticsearch-java', version = '8.19.0' } +elasticsearch-java = { module = 'co.elastic.clients:elasticsearch-java', version = '9.2.3' } parsson = { module = 'org.eclipse.parsson:parsson', version = '1.1.7' } spring-test = { module = 'org.springframework.boot:spring-boot-starter-test', version.ref = 'springBoot' } spring-security = { module = 'org.springframework.boot:spring-boot-starter-security', version.ref = 'springBoot' }