From c9d9a1535add59abeeb0bbfaee0b607393dbe19d Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 09:49:32 +1000 Subject: [PATCH 1/9] Refactor and update version before change --- pom.xml | 2 +- .../au/org/aodn/ogcapi/server/core/configuration/Config.java | 1 + .../core/{configuration => service/das}/DasProperties.java | 2 +- .../au/org/aodn/ogcapi/server/core/service/das/DasService.java | 1 - .../aodn/ogcapi/server/core/service/das/DasTilerService.java | 1 - .../org/aodn/ogcapi/server/core/configuration/ConfigTest.java | 1 + .../ogcapi/server/core/service/das/DasServiceHeadersTest.java | 1 - .../aodn/ogcapi/server/core/service/das/DasServiceTest.java | 3 +-- .../ogcapi/server/core/service/das/DasTilerServiceTest.java | 1 - 9 files changed, 5 insertions(+), 8 deletions(-) rename server/src/main/java/au/org/aodn/ogcapi/server/core/{configuration => service/das}/DasProperties.java (89%) diff --git a/pom.xml b/pom.xml index c32ccb71..a3cdebc8 100644 --- a/pom.xml +++ b/pom.xml @@ -192,7 +192,7 @@ au.org.aodn stacmodel - 0.0.60 + 0.0.63 diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java index 84a8ea8d..59c450b5 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java @@ -1,5 +1,6 @@ package au.org.aodn.ogcapi.server.core.configuration; +import au.org.aodn.ogcapi.server.core.service.das.DasProperties; import au.org.aodn.ogcapi.server.core.util.ConstructUtils; import au.org.aodn.ogcapi.server.core.util.GeometryUtils; import au.org.aodn.ogcapi.server.core.util.RestTemplateUtils; diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/DasProperties.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasProperties.java similarity index 89% rename from server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/DasProperties.java rename to server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasProperties.java index 474bdce5..04dd8bff 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/DasProperties.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasProperties.java @@ -1,4 +1,4 @@ -package au.org.aodn.ogcapi.server.core.configuration; +package au.org.aodn.ogcapi.server.core.service.das; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.bind.DefaultValue; diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasService.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasService.java index 1abf091a..979bb876 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasService.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasService.java @@ -1,7 +1,6 @@ package au.org.aodn.ogcapi.server.core.service.das; import au.org.aodn.ogcapi.server.core.configuration.Config; -import au.org.aodn.ogcapi.server.core.configuration.DasProperties; import au.org.aodn.ogcapi.server.core.model.DatasetMetadata; import au.org.aodn.ogcapi.server.core.util.SseResponseParser; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerService.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerService.java index 1e94c6ec..07bca18d 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerService.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerService.java @@ -1,6 +1,5 @@ package au.org.aodn.ogcapi.server.core.service.das; -import au.org.aodn.ogcapi.server.core.configuration.DasProperties; import au.org.aodn.ogcapi.server.core.configuration.Config; import au.org.aodn.ogcapi.server.core.exception.DasUpstreamException; import au.org.aodn.ogcapi.server.core.service.Search; diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java index 8882c58e..070c5180 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java @@ -1,5 +1,6 @@ package au.org.aodn.ogcapi.server.core.configuration; +import au.org.aodn.ogcapi.server.core.service.das.DasProperties; import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java index ce08abc3..637659dd 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java @@ -1,7 +1,6 @@ package au.org.aodn.ogcapi.server.core.service.das; import au.org.aodn.ogcapi.server.core.configuration.Config; -import au.org.aodn.ogcapi.server.core.configuration.DasProperties; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java index f32da0ce..3eb66020 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java @@ -1,6 +1,5 @@ package au.org.aodn.ogcapi.server.core.service.das; -import au.org.aodn.ogcapi.server.core.configuration.DasProperties; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -149,7 +148,7 @@ private HttpEntity> callEstimateAndCaptureEntity(String uuid assertEquals("{\"estimated_output_bytes\":123}", result, "The estimate dict should be unwrapped from the stream"); ArgumentCaptor urlCaptor = ArgumentCaptor.forClass(String.class); - ArgumentCaptor entityCaptor = ArgumentCaptor.forClass(HttpEntity.class); + ArgumentCaptor entityCaptor = ArgumentCaptor.forClass(HttpEntity.class); ArgumentCaptor> uriVarsCaptor = ArgumentCaptor.forClass(Map.class); verify(httpClient).postForObject(urlCaptor.capture(), entityCaptor.capture(), eq(String.class), uriVarsCaptor.capture()); diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java index c3cca504..a62015d2 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java @@ -1,6 +1,5 @@ package au.org.aodn.ogcapi.server.core.service.das; -import au.org.aodn.ogcapi.server.core.configuration.DasProperties; import au.org.aodn.ogcapi.server.core.exception.DasUpstreamException; import au.org.aodn.ogcapi.server.core.service.ElasticSearchBase; import au.org.aodn.ogcapi.server.core.service.Search; From c1376ec6421d8ac599f7bb44c8292168ba0b42e7 Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 12:14:39 +1000 Subject: [PATCH 2/9] Checkpoint --- .../core/configuration/ActuatorConfig.java | 39 +++++++++++++++++++ .../server/core/configuration/Config.java | 8 +++- .../core/configuration/GeoNetworkConfig.java | 16 ++++++++ .../core/configuration/IndexerConfig.java | 16 ++++++++ .../server/core/service/ApplicationInfo.java | 37 ++++++++++++++++++ .../core/service/das/DasProperties.java | 1 + .../server/core/service/das/DasService.java | 23 +++++++++-- .../core/service/geonetwork/GNProperties.java | 11 ++++++ .../core/service/geonetwork/Geonetwork.java | 34 ++++++++++++++++ .../core/service/indexer/EsIndexer.java | 31 +++++++++++++++ .../service/indexer/IndexerProperties.java | 11 ++++++ server/src/main/resources/application.yaml | 11 ++++++ 12 files changed, 234 insertions(+), 4 deletions(-) create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/GeoNetworkConfig.java create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/IndexerConfig.java create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/service/geonetwork/GNProperties.java create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/service/geonetwork/Geonetwork.java create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/service/indexer/EsIndexer.java create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/service/indexer/IndexerProperties.java diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java index f933a837..5add5712 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java @@ -1,18 +1,57 @@ package au.org.aodn.ogcapi.server.core.configuration; import au.org.aodn.ogcapi.server.core.model.enumeration.ErrorCode; +import au.org.aodn.ogcapi.server.core.service.das.DasService; +import au.org.aodn.ogcapi.server.core.service.geonetwork.Geonetwork; +import au.org.aodn.ogcapi.server.core.service.indexer.EsIndexer; import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch._types.HealthStatus; import co.elastic.clients.elasticsearch.indices.ExistsRequest; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.HealthIndicator; +import org.springframework.boot.actuate.info.InfoContributor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.util.HashMap; +import java.util.Map; @Configuration public class ActuatorConfig { + private static final String VERSION_TAG = "depServiceVersion"; + + + + // Define the InfoContributor bean to fill in the missing info in /manage/info endpoint + @Bean + public InfoContributor externalApiInfoContributor( + DasService das, + @Value("${data-discovery-ai.host}") final String ddaHost, + @Value("${data-discovery-ai.info-path}") final String ddaInfoPath, + EsIndexer esIndexer, + Geonetwork geonetwork + ) { + return builder -> { + try { + Map> versions = new HashMap<>(); + versions.put(das.getName(), + Map.of("version", das.getVersion(), "description", das.getDescription())); + versions.put(esIndexer.getName(), + Map.of("version", esIndexer.getVersion(), "description", esIndexer.getDescription())); + versions.put(geonetwork.getName(), + Map.of("version", geonetwork.getVersion(), "description", geonetwork.getDescription())); + + builder.withDetail(VERSION_TAG, versions); + } catch (Exception e) { + builder.withDetail(VERSION_TAG, Map.of( + "status", "ERROR Query", + "error", e.getMessage() + )); + } + }; + } + @Bean public HealthIndicator ogcApiHealth( @Value("${elasticsearch.vocabs_index.name}") String vocabIndexName, diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java index 59c450b5..3b1f1dbc 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java @@ -1,6 +1,8 @@ package au.org.aodn.ogcapi.server.core.configuration; import au.org.aodn.ogcapi.server.core.service.das.DasProperties; +import au.org.aodn.ogcapi.server.core.service.geonetwork.GNProperties; +import au.org.aodn.ogcapi.server.core.service.indexer.IndexerProperties; import au.org.aodn.ogcapi.server.core.util.ConstructUtils; import au.org.aodn.ogcapi.server.core.util.GeometryUtils; import au.org.aodn.ogcapi.server.core.util.RestTemplateUtils; @@ -19,7 +21,11 @@ @Configuration @EnableScheduling -@EnableConfigurationProperties(DasProperties.class) +@EnableConfigurationProperties({ + IndexerProperties.class, + GNProperties.class, + DasProperties.class +}) public class Config { public static final String DAS_REST_TEMPLATE = "dasRestTemplate"; diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/GeoNetworkConfig.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/GeoNetworkConfig.java new file mode 100644 index 00000000..050ad728 --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/GeoNetworkConfig.java @@ -0,0 +1,16 @@ +package au.org.aodn.ogcapi.server.core.configuration; + +import au.org.aodn.ogcapi.server.core.service.geonetwork.GNProperties; +import au.org.aodn.ogcapi.server.core.service.geonetwork.Geonetwork; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class GeoNetworkConfig { + + @Bean + public Geonetwork createGeonetwork(GNProperties properties, RestTemplate template) { + return new Geonetwork(properties, template); + } +} diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/IndexerConfig.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/IndexerConfig.java new file mode 100644 index 00000000..eaa930e2 --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/IndexerConfig.java @@ -0,0 +1,16 @@ +package au.org.aodn.ogcapi.server.core.configuration; + +import au.org.aodn.ogcapi.server.core.service.indexer.EsIndexer; +import au.org.aodn.ogcapi.server.core.service.indexer.IndexerProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class IndexerConfig { + + @Bean + public EsIndexer createEsIndexer(IndexerProperties properties, RestTemplate template) { + return new EsIndexer(properties, template); + } +} diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java new file mode 100644 index 00000000..9662109d --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java @@ -0,0 +1,37 @@ +package au.org.aodn.ogcapi.server.core.service; + +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.util.Collections; +import java.util.Map; + +public interface ApplicationInfo { + /** + * Query this is repeat code to query the info path + * @param restTemplate - The template of the service + * @param host - Host + * @param path - query path + * @return - Map of value + */ + default Map> queryInfo(RestTemplate restTemplate, String host, String path) { + String das = String.format("%s/%s", host, path); + ResponseEntity>> response = restTemplate.exchange( + das, + HttpMethod.GET, + null, + new ParameterizedTypeReference<>() {} + ); + + if(response.getStatusCode().is2xxSuccessful()) { + return response.getBody(); + } + return Collections.emptyMap(); + } + + String getName(); + String getVersion(); + String getDescription(); +} diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasProperties.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasProperties.java index 04dd8bff..fd0f8f9f 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasProperties.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasProperties.java @@ -8,6 +8,7 @@ @ConfigurationProperties(prefix = "data-access-service") public record DasProperties( String host, + @DefaultValue("api/v1/das/manage/info") String infoPath, String secret, String internal, @DefaultValue("5s") Duration connectTimeout, diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasService.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasService.java index 979bb876..661e4c27 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasService.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/das/DasService.java @@ -2,6 +2,7 @@ import au.org.aodn.ogcapi.server.core.configuration.Config; import au.org.aodn.ogcapi.server.core.model.DatasetMetadata; +import au.org.aodn.ogcapi.server.core.service.ApplicationInfo; import au.org.aodn.ogcapi.server.core.util.SseResponseParser; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Qualifier; @@ -10,18 +11,18 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @Service("DataAccessService") -public class DasService { +public class DasService implements ApplicationInfo { protected final DasProperties dasProperties; - protected final RestTemplate httpClient; - protected final ObjectMapper objectMapper; + protected final Map> appInfo; public DasService( DasProperties dasProperties, @@ -30,6 +31,7 @@ public DasService( this.dasProperties = dasProperties; this.httpClient = httpClient; this.objectMapper = objectMapper; + this.appInfo = queryInfo(httpClient, dasProperties.host(), dasProperties.infoPath()); } /** @@ -129,4 +131,19 @@ public ResponseEntity getDatasetMetadata(String datasetId) { .contentType(MediaType.APPLICATION_JSON) .body(response.getBody()); } + + @Override + public String getName() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("name").toString(); + } + + @Override + public String getVersion() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("version").toString(); + } + + @Override + public String getDescription() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("description").toString(); + } } diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/geonetwork/GNProperties.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/geonetwork/GNProperties.java new file mode 100644 index 00000000..55dce221 --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/geonetwork/GNProperties.java @@ -0,0 +1,11 @@ +package au.org.aodn.ogcapi.server.core.service.geonetwork; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.DefaultValue; + +@ConfigurationProperties(prefix = "geonetwork4") +public record GNProperties ( + String host, + @DefaultValue("geonetwork/srv/api/manage/info") String infoPath +) { +} diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/geonetwork/Geonetwork.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/geonetwork/Geonetwork.java new file mode 100644 index 00000000..ea4edfa1 --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/geonetwork/Geonetwork.java @@ -0,0 +1,34 @@ +package au.org.aodn.ogcapi.server.core.service.geonetwork; + +import au.org.aodn.ogcapi.server.core.service.ApplicationInfo; +import org.springframework.web.client.RestTemplate; + +import java.util.Collections; +import java.util.Map; + +/** + * This Geonetwork is use by portal to store data catalog, it is not use to remotely access external geonetwork + */ +public class Geonetwork implements ApplicationInfo { + + protected final Map> appInfo; + + public Geonetwork(GNProperties properties, RestTemplate template) { + this.appInfo = queryInfo(template, properties.host(), properties.infoPath()); + } + + @Override + public String getName() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("name").toString(); + } + + @Override + public String getVersion() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("version").toString(); + } + + @Override + public String getDescription() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("description").toString(); + } +} diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/indexer/EsIndexer.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/indexer/EsIndexer.java new file mode 100644 index 00000000..713532c0 --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/indexer/EsIndexer.java @@ -0,0 +1,31 @@ +package au.org.aodn.ogcapi.server.core.service.indexer; + +import au.org.aodn.ogcapi.server.core.service.ApplicationInfo; +import org.springframework.web.client.RestTemplate; + +import java.util.Collections; +import java.util.Map; + +public class EsIndexer implements ApplicationInfo { + + protected final Map> appInfo; + + public EsIndexer(IndexerProperties properties, RestTemplate template) { + this.appInfo = queryInfo(template, properties.host(), properties.infoPath()); + } + + @Override + public String getName() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("name").toString(); + } + + @Override + public String getVersion() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("version").toString(); + } + + @Override + public String getDescription() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("description").toString(); + } +} diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/indexer/IndexerProperties.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/indexer/IndexerProperties.java new file mode 100644 index 00000000..6660d32f --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/indexer/IndexerProperties.java @@ -0,0 +1,11 @@ +package au.org.aodn.ogcapi.server.core.service.indexer; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.DefaultValue; + +@ConfigurationProperties(prefix = "es-indexer") +public record IndexerProperties( + String host, + @DefaultValue("manage/info") String infoPath +) { +} diff --git a/server/src/main/resources/application.yaml b/server/src/main/resources/application.yaml index 5237f136..df2ca611 100644 --- a/server/src/main/resources/application.yaml +++ b/server/src/main/resources/application.yaml @@ -473,6 +473,16 @@ data-access-service: connect-timeout: 5s read-timeout: 30s +data-discovery-ai: + host: https://data-discovery-ai.edge.aodn.org.au + info-path: "api/v1/ml/manage/info" + +es-indexer: + host: https://es-indexer.edge.aodn.org.au + +geonetwork4: + host: https://geonetwork-edge.aodn.org.au + management: info: env: @@ -498,6 +508,7 @@ info: name: '@project.name@' description: '@project.description@' version: '@project.version@' + depServiceVersion: {} logging: level: From 02d47626a638b90907e231128a09744a0a4c0159 Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 12:28:10 +1000 Subject: [PATCH 3/9] Remove config, as env specify value from terraform --- .../core/configuration/ActuatorConfig.java | 8 ++--- .../server/core/configuration/Config.java | 2 ++ .../server/core/configuration/DdaConfig.java | 16 ++++++++++ .../server/core/service/ApplicationInfo.java | 24 +++++++++------ .../core/service/dda/DdaProperties.java | 11 +++++++ .../server/core/service/dda/DdaService.java | 29 +++++++++++++++++++ server/src/main/resources/application.yaml | 10 ------- 7 files changed, 77 insertions(+), 23 deletions(-) create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/DdaConfig.java create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/service/dda/DdaProperties.java create mode 100644 server/src/main/java/au/org/aodn/ogcapi/server/core/service/dda/DdaService.java diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java index 5add5712..959575de 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java @@ -2,6 +2,7 @@ import au.org.aodn.ogcapi.server.core.model.enumeration.ErrorCode; import au.org.aodn.ogcapi.server.core.service.das.DasService; +import au.org.aodn.ogcapi.server.core.service.dda.DdaService; import au.org.aodn.ogcapi.server.core.service.geonetwork.Geonetwork; import au.org.aodn.ogcapi.server.core.service.indexer.EsIndexer; import co.elastic.clients.elasticsearch.ElasticsearchClient; @@ -21,14 +22,11 @@ public class ActuatorConfig { private static final String VERSION_TAG = "depServiceVersion"; - - // Define the InfoContributor bean to fill in the missing info in /manage/info endpoint @Bean public InfoContributor externalApiInfoContributor( DasService das, - @Value("${data-discovery-ai.host}") final String ddaHost, - @Value("${data-discovery-ai.info-path}") final String ddaInfoPath, + DdaService dda, EsIndexer esIndexer, Geonetwork geonetwork ) { @@ -37,6 +35,8 @@ public InfoContributor externalApiInfoContributor( Map> versions = new HashMap<>(); versions.put(das.getName(), Map.of("version", das.getVersion(), "description", das.getDescription())); + versions.put(dda.getName(), + Map.of("version", dda.getVersion(), "description", dda.getDescription())); versions.put(esIndexer.getName(), Map.of("version", esIndexer.getVersion(), "description", esIndexer.getDescription())); versions.put(geonetwork.getName(), diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java index 3b1f1dbc..758a8089 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/Config.java @@ -1,6 +1,7 @@ package au.org.aodn.ogcapi.server.core.configuration; import au.org.aodn.ogcapi.server.core.service.das.DasProperties; +import au.org.aodn.ogcapi.server.core.service.dda.DdaProperties; import au.org.aodn.ogcapi.server.core.service.geonetwork.GNProperties; import au.org.aodn.ogcapi.server.core.service.indexer.IndexerProperties; import au.org.aodn.ogcapi.server.core.util.ConstructUtils; @@ -22,6 +23,7 @@ @Configuration @EnableScheduling @EnableConfigurationProperties({ + DdaProperties.class, IndexerProperties.class, GNProperties.class, DasProperties.class diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/DdaConfig.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/DdaConfig.java new file mode 100644 index 00000000..3e9d6fbc --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/DdaConfig.java @@ -0,0 +1,16 @@ +package au.org.aodn.ogcapi.server.core.configuration; + +import au.org.aodn.ogcapi.server.core.service.dda.DdaProperties; +import au.org.aodn.ogcapi.server.core.service.dda.DdaService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class DdaConfig { + + @Bean + public DdaService createDdaServer(DdaProperties properties, RestTemplate template) { + return new DdaService(properties,template); + } +} diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java index 9662109d..821d5601 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java @@ -17,16 +17,22 @@ public interface ApplicationInfo { * @return - Map of value */ default Map> queryInfo(RestTemplate restTemplate, String host, String path) { - String das = String.format("%s/%s", host, path); - ResponseEntity>> response = restTemplate.exchange( - das, - HttpMethod.GET, - null, - new ParameterizedTypeReference<>() {} - ); + try { + String das = String.format("%s/%s", host, path); + ResponseEntity>> response = restTemplate.exchange( + das, + HttpMethod.GET, + null, + new ParameterizedTypeReference<>() { + } + ); - if(response.getStatusCode().is2xxSuccessful()) { - return response.getBody(); + if (response.getStatusCode().is2xxSuccessful()) { + return response.getBody(); + } + } catch(Exception e) { + // Do not throw exception that impacts start, UI will use health endpoint to decide level of + // service, for example if geonetwork is not work, we can still provide service } return Collections.emptyMap(); } diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/dda/DdaProperties.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/dda/DdaProperties.java new file mode 100644 index 00000000..94a56944 --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/dda/DdaProperties.java @@ -0,0 +1,11 @@ +package au.org.aodn.ogcapi.server.core.service.dda; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.DefaultValue; + +@ConfigurationProperties(prefix = "data-discovery-ai") +public record DdaProperties( + String host, + @DefaultValue("api/v1/ml/manage/info") String infoPath +) { +} diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/dda/DdaService.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/dda/DdaService.java new file mode 100644 index 00000000..d9dacbc2 --- /dev/null +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/dda/DdaService.java @@ -0,0 +1,29 @@ +package au.org.aodn.ogcapi.server.core.service.dda; + +import au.org.aodn.ogcapi.server.core.service.ApplicationInfo; +import org.springframework.web.client.RestTemplate; +import java.util.Collections; +import java.util.Map; + +public class DdaService implements ApplicationInfo { + protected final Map> appInfo; + + public DdaService(DdaProperties properties, RestTemplate template) { + this.appInfo = queryInfo(template, properties.host(), properties.infoPath()); + } + + @Override + public String getName() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("name").toString(); + } + + @Override + public String getVersion() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("version").toString(); + } + + @Override + public String getDescription() { + return this.appInfo.getOrDefault("application", Collections.emptyMap()).get("description").toString(); + } +} diff --git a/server/src/main/resources/application.yaml b/server/src/main/resources/application.yaml index df2ca611..d63fd46c 100644 --- a/server/src/main/resources/application.yaml +++ b/server/src/main/resources/application.yaml @@ -473,16 +473,6 @@ data-access-service: connect-timeout: 5s read-timeout: 30s -data-discovery-ai: - host: https://data-discovery-ai.edge.aodn.org.au - info-path: "api/v1/ml/manage/info" - -es-indexer: - host: https://es-indexer.edge.aodn.org.au - -geonetwork4: - host: https://geonetwork-edge.aodn.org.au - management: info: env: From 607f0523f7fd857d954fb4dcc0624137f337107e Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 12:28:24 +1000 Subject: [PATCH 4/9] Remove config, as env specify value from terraform --- server/src/main/resources/application-dev.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/server/src/main/resources/application-dev.yaml b/server/src/main/resources/application-dev.yaml index 63749f0e..c2bbddd3 100644 --- a/server/src/main/resources/application-dev.yaml +++ b/server/src/main/resources/application-dev.yaml @@ -7,3 +7,12 @@ management: ogcapi: debug: elasticsearch-explain-enabled: true + +data-discovery-ai: + host: https://data-discovery-ai.edge.aodn.org.au + +es-indexer: + host: https://es-indexer.edge.aodn.org.au + +geonetwork4: + host: https://geonetwork.edge.aodn.org.au \ No newline at end of file From b18920df949606e6e3b2a038af92b2ea16fa9107 Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 12:32:45 +1000 Subject: [PATCH 5/9] Pre-commit --- server/src/main/resources/application-dev.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/resources/application-dev.yaml b/server/src/main/resources/application-dev.yaml index c2bbddd3..cffa88d1 100644 --- a/server/src/main/resources/application-dev.yaml +++ b/server/src/main/resources/application-dev.yaml @@ -15,4 +15,4 @@ es-indexer: host: https://es-indexer.edge.aodn.org.au geonetwork4: - host: https://geonetwork.edge.aodn.org.au \ No newline at end of file + host: https://geonetwork.edge.aodn.org.au From 5301fa47d1c88ebfc6ca43bd136637884a7d0b93 Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 12:50:35 +1000 Subject: [PATCH 6/9] Fix test case break --- .../org/aodn/ogcapi/server/core/configuration/ConfigTest.java | 4 ++-- .../ogcapi/server/core/service/das/DasServiceHeadersTest.java | 4 ++-- .../aodn/ogcapi/server/core/service/das/DasServiceTest.java | 2 +- .../ogcapi/server/core/service/das/DasTilerServiceTest.java | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java index 070c5180..0e5e8870 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java @@ -26,7 +26,7 @@ public class ConfigTest { private static final DasProperties DAS_PROPERTIES = new DasProperties( - "http://localhost:5000", "test-secret", "internal-secret", + "http://localhost:5000", "test-secret", "internal-secret", null, Duration.ofSeconds(5), Duration.ofSeconds(30)); private final Config config = new Config(); @@ -68,7 +68,7 @@ public void testApplicationWideTemplateCarriesNoDasCredentials() throws IOExcept @Test public void testInternalSecretOmittedWhenNotConfigured() throws IOException { DasProperties noInternal = new DasProperties( - "http://localhost:5000", "test-secret", null, + "http://localhost:5000", "test-secret", null, null, Duration.ofSeconds(5), Duration.ofSeconds(30)); HttpHeaders headers = headersAfterInterceptors(config.createDasRestTemplate(noInternal)); diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java index 637659dd..2fa6d922 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java @@ -27,7 +27,7 @@ public class DasServiceHeadersTest { private static final DasProperties PROPS = new DasProperties( - "http://localhost:5000", "test-secret", "internal-secret", + "http://localhost:5000", "test-secret", "internal-secret", null, Duration.ofSeconds(5), Duration.ofSeconds(30)); private RestTemplate template; @@ -83,7 +83,7 @@ public void testFeatureCollectionCarriesCredentials() { @Test public void testInternalSecretIsOmittedWhenNotConfigured() { DasProperties noInternal = new DasProperties( - "http://localhost:5000", "test-secret", null, + "http://localhost:5000", "test-secret", null, null, Duration.ofSeconds(5), Duration.ofSeconds(30)); RestTemplate noInternalTemplate = new Config().createDasRestTemplate(noInternal); MockRestServiceServer noInternalServer = MockRestServiceServer.bindTo(noInternalTemplate).build(); diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java index 3eb66020..33cc0bde 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java @@ -42,7 +42,7 @@ public void setUp() { httpClient = mock(RestTemplate.class); DasProperties config = new DasProperties( - HOST, "test-secret", "", + HOST, "test-secret", "", null, Duration.ofSeconds(5), Duration.ofSeconds(30) ); diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java index a62015d2..9a6528bd 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java @@ -54,7 +54,7 @@ public void setUp() { search = mock(Search.class); DasProperties config = new DasProperties( - HOST, "test-secret", "internal-secret", + HOST, "test-secret", "internal-secret", null, Duration.ofSeconds(5), Duration.ofSeconds(30) ); From f20d336a33ecfe15f8978401ee4fa5a52b58aadf Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 13:02:02 +1000 Subject: [PATCH 7/9] Incorrect argument position --- .../org/aodn/ogcapi/server/core/configuration/ConfigTest.java | 4 ++-- .../ogcapi/server/core/service/das/DasServiceHeadersTest.java | 2 +- .../aodn/ogcapi/server/core/service/das/DasServiceTest.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java index 0e5e8870..3b49f452 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/configuration/ConfigTest.java @@ -26,7 +26,7 @@ public class ConfigTest { private static final DasProperties DAS_PROPERTIES = new DasProperties( - "http://localhost:5000", "test-secret", "internal-secret", null, + "http://localhost:5000", null,"test-secret", "internal-secret", Duration.ofSeconds(5), Duration.ofSeconds(30)); private final Config config = new Config(); @@ -68,7 +68,7 @@ public void testApplicationWideTemplateCarriesNoDasCredentials() throws IOExcept @Test public void testInternalSecretOmittedWhenNotConfigured() throws IOException { DasProperties noInternal = new DasProperties( - "http://localhost:5000", "test-secret", null, null, + "http://localhost:5000", null,"test-secret", null, Duration.ofSeconds(5), Duration.ofSeconds(30)); HttpHeaders headers = headersAfterInterceptors(config.createDasRestTemplate(noInternal)); diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java index 2fa6d922..0f960f3e 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java @@ -83,7 +83,7 @@ public void testFeatureCollectionCarriesCredentials() { @Test public void testInternalSecretIsOmittedWhenNotConfigured() { DasProperties noInternal = new DasProperties( - "http://localhost:5000", "test-secret", null, null, + "http://localhost:5000", null,"test-secret", null, Duration.ofSeconds(5), Duration.ofSeconds(30)); RestTemplate noInternalTemplate = new Config().createDasRestTemplate(noInternal); MockRestServiceServer noInternalServer = MockRestServiceServer.bindTo(noInternalTemplate).build(); diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java index 33cc0bde..466fc73f 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceTest.java @@ -42,7 +42,7 @@ public void setUp() { httpClient = mock(RestTemplate.class); DasProperties config = new DasProperties( - HOST, "test-secret", "", null, + HOST, null,"test-secret", "", Duration.ofSeconds(5), Duration.ofSeconds(30) ); From 2a19034d2a14a4acbbd226e0f65cd5e6bec1d9c0 Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 13:18:46 +1000 Subject: [PATCH 8/9] Fix test --- .../server/core/service/ApplicationInfo.java | 30 ++++++++++--------- .../service/das/DasServiceHeadersTest.java | 5 ++-- .../core/service/das/DasTilerServiceTest.java | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java index 821d5601..e2bc3305 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ApplicationInfo.java @@ -17,22 +17,24 @@ public interface ApplicationInfo { * @return - Map of value */ default Map> queryInfo(RestTemplate restTemplate, String host, String path) { - try { - String das = String.format("%s/%s", host, path); - ResponseEntity>> response = restTemplate.exchange( - das, - HttpMethod.GET, - null, - new ParameterizedTypeReference<>() { - } - ); + if(path != null) { + try { + String das = String.format("%s/%s", host, path); + ResponseEntity>> response = restTemplate.exchange( + das, + HttpMethod.GET, + null, + new ParameterizedTypeReference<>() { + } + ); - if (response.getStatusCode().is2xxSuccessful()) { - return response.getBody(); + if (response.getStatusCode().is2xxSuccessful()) { + return response.getBody(); + } + } catch (Exception e) { + // Do not throw exception that impacts start, UI will use health endpoint to decide level of + // service, for example if geonetwork is not work, we can still provide service } - } catch(Exception e) { - // Do not throw exception that impacts start, UI will use health endpoint to decide level of - // service, for example if geonetwork is not work, we can still provide service } return Collections.emptyMap(); } diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java index 0f960f3e..f5b56170 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasServiceHeadersTest.java @@ -27,16 +27,15 @@ public class DasServiceHeadersTest { private static final DasProperties PROPS = new DasProperties( - "http://localhost:5000", "test-secret", "internal-secret", null, + "http://localhost:5000", null,"test-secret", "internal-secret", Duration.ofSeconds(5), Duration.ofSeconds(30)); - private RestTemplate template; private MockRestServiceServer server; private DasService dasService; @BeforeEach public void setUp() { - template = new Config().createDasRestTemplate(PROPS); + RestTemplate template = new Config().createDasRestTemplate(PROPS); server = MockRestServiceServer.bindTo(template).build(); dasService = new DasService(PROPS, template, new ObjectMapper()); } diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java index 9a6528bd..ea708db8 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/service/das/DasTilerServiceTest.java @@ -54,7 +54,7 @@ public void setUp() { search = mock(Search.class); DasProperties config = new DasProperties( - HOST, "test-secret", "internal-secret", null, + HOST, null,"test-secret", "internal-secret", Duration.ofSeconds(5), Duration.ofSeconds(30) ); From 3d215b688fe14c226b20e5d2ea9999da096a90df Mon Sep 17 00:00:00 2001 From: rng Date: Wed, 29 Jul 2026 13:49:56 +1000 Subject: [PATCH 9/9] Merge main --- .../ogcapi/server/core/configuration/ActuatorConfig.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java index 959575de..aa8d9516 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/configuration/ActuatorConfig.java @@ -20,7 +20,7 @@ @Configuration public class ActuatorConfig { - private static final String VERSION_TAG = "depServiceVersion"; + private static final String DEP_SERVICE = "depService"; // Define the InfoContributor bean to fill in the missing info in /manage/info endpoint @Bean @@ -42,9 +42,9 @@ public InfoContributor externalApiInfoContributor( versions.put(geonetwork.getName(), Map.of("version", geonetwork.getVersion(), "description", geonetwork.getDescription())); - builder.withDetail(VERSION_TAG, versions); + builder.withDetail(DEP_SERVICE, versions); } catch (Exception e) { - builder.withDetail(VERSION_TAG, Map.of( + builder.withDetail(DEP_SERVICE, Map.of( "status", "ERROR Query", "error", e.getMessage() ));