From d99988c7fd80be2d3cbc4916852752138372874d Mon Sep 17 00:00:00 2001 From: southeo Date: Thu, 12 Dec 2024 09:19:09 +0100 Subject: [PATCH 1/4] separate orchestration props --- .../properties/ApplicationProperties.java | 5 ++++- .../core/handlemanager/service/FdoRecordService.java | 12 ++++++------ .../handlemanager/service/FdoRecordServiceTest.java | 3 ++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/eu/dissco/core/handlemanager/properties/ApplicationProperties.java b/src/main/java/eu/dissco/core/handlemanager/properties/ApplicationProperties.java index 1b0f1a48..f35dfd1a 100644 --- a/src/main/java/eu/dissco/core/handlemanager/properties/ApplicationProperties.java +++ b/src/main/java/eu/dissco/core/handlemanager/properties/ApplicationProperties.java @@ -20,7 +20,10 @@ public class ApplicationProperties { private String uiUrl; @NotBlank - private String orchestrationUrl; + private String orchestrationUi; + + @NotBlank + private String orchestrationApi; @NotNull private Integer maxHandles; diff --git a/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java b/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java index 2b33216a..341fb657 100644 --- a/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java +++ b/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java @@ -878,15 +878,15 @@ private List getXmlElements(String handle, FdoType fdoType, String k } case DATA_MAPPING -> { locations.add(new XmlElement(i.getAndIncrement(), "1", - applicationProperties.getOrchestrationUrl() + "/data-mapping/" + handle, "HTML")); + applicationProperties.getOrchestrationUi() + "/data-mapping/" + handle, "HTML")); locations.add(new XmlElement(i.getAndIncrement(), "0", - applicationProperties.getOrchestrationUrl() + "/data-mapping/v1/" + handle, "JSON")); + applicationProperties.getOrchestrationApi() + "/data-mapping/v1/" + handle, "JSON")); } case SOURCE_SYSTEM -> { locations.add(new XmlElement(i.getAndIncrement(), "1", - applicationProperties.getOrchestrationUrl() + "/source-system/" + handle, "HTML")); + applicationProperties.getOrchestrationUi() + "/source-system/" + handle, "HTML")); locations.add(new XmlElement(i.getAndIncrement(), "0", - applicationProperties.getOrchestrationUrl() + "/source-system/v1/" + handle, + applicationProperties.getOrchestrationApi() + "/source-system/v1/" + handle, "JSON")); } case DIGITAL_MEDIA -> { @@ -904,9 +904,9 @@ private List getXmlElements(String handle, FdoType fdoType, String k applicationProperties.getApiUrl() + "/annotations/v1/" + handle, "JSON")); case MAS -> { locations.add(new XmlElement(i.getAndIncrement(), "1", - applicationProperties.getOrchestrationUrl() + "/mas/" + handle, "HTML")); + applicationProperties.getOrchestrationUi() + "/mas/" + handle, "HTML")); locations.add(new XmlElement(i.getAndIncrement(), "0", - applicationProperties.getOrchestrationUrl() + "/mas/v1/" + handle, "JSON")); + applicationProperties.getOrchestrationApi() + "/mas/v1/" + handle, "JSON")); } case ORGANISATION -> locations.add(new XmlElement(i.getAndIncrement(), "1", keyAttribute, "ROR")); diff --git a/src/test/java/eu/dissco/core/handlemanager/service/FdoRecordServiceTest.java b/src/test/java/eu/dissco/core/handlemanager/service/FdoRecordServiceTest.java index c00cadc7..8df0d286 100644 --- a/src/test/java/eu/dissco/core/handlemanager/service/FdoRecordServiceTest.java +++ b/src/test/java/eu/dissco/core/handlemanager/service/FdoRecordServiceTest.java @@ -114,7 +114,8 @@ void init() throws PidResolutionException { given(pidResolver.getObjectName(any(), anyBoolean())).willReturn(SPECIMEN_HOST_NAME_TESTVAL); given(applicationProperties.getPrefix()).willReturn(PREFIX); given(applicationProperties.getApiUrl()).willReturn(API_URL); - given(applicationProperties.getOrchestrationUrl()).willReturn(ORCHESTRATION_URL); + given(applicationProperties.getOrchestrationApi()).willReturn(ORCHESTRATION_URL); + given(applicationProperties.getOrchestrationUi()).willReturn(ORCHESTRATION_URL); given(applicationProperties.getUiUrl()).willReturn(UI_URL); given(profileProperties.getIssuedForAgent()).willReturn(ISSUED_FOR_AGENT_TESTVAL); given(profileProperties.getIssuedForAgentName()).willReturn(ISSUED_FOR_AGENT_NAME_TESTVAL); From dac03dc1da66580359ce06453f75207df7d5c802 Mon Sep 17 00:00:00 2001 From: southeo Date: Tue, 7 Jan 2025 11:07:51 +0100 Subject: [PATCH 2/4] normalize media id --- .../eu/dissco/core/handlemanager/service/DoiService.java | 2 +- .../core/handlemanager/service/FdoRecordService.java | 8 ++++++-- .../core/handlemanager/repository/MongoRepositoryIT.java | 4 ++-- .../core/handlemanager/service/FdoRecordServiceTest.java | 4 ++-- .../dissco/core/handlemanager/testUtils/TestUtils.java | 9 ++++++--- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/main/java/eu/dissco/core/handlemanager/service/DoiService.java b/src/main/java/eu/dissco/core/handlemanager/service/DoiService.java index a85c193d..e09296c4 100644 --- a/src/main/java/eu/dissco/core/handlemanager/service/DoiService.java +++ b/src/main/java/eu/dissco/core/handlemanager/service/DoiService.java @@ -164,7 +164,7 @@ private UpsertMediaResult processUpsertRequestMedia( List mediaRequests) throws JsonProcessingException { var existingMediaMap = getExistingRecordsFromNormalisedIds(mediaRequests .stream() - .map(DigitalMediaRequestAttributes::getPrimaryMediaId) + .map(FdoRecordService::normalizeMediaId) .toList(), PRIMARY_MEDIA_ID.get() ); var newMedia = new ArrayList(); diff --git a/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java b/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java index 341fb657..c22eaf17 100644 --- a/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java +++ b/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java @@ -492,17 +492,21 @@ public FdoRecord prepareNewDigitalMediaRecord(DigitalMediaRequestAttributes requ fdoAttributes.putAll( prepareGeneratedAttributes(handle, FdoType.DIGITAL_MEDIA, timestamp, isDraft)); fdoAttributes.putAll(prepareGeneratedAttributesDoi(timestamp)); - return new FdoRecord(handle, FdoType.DIGITAL_MEDIA, fdoAttributes, request.getPrimaryMediaId(), + return new FdoRecord(handle, FdoType.DIGITAL_MEDIA, fdoAttributes, normalizeMediaId(request), fdoAttributes.values()); } + public static String normalizeMediaId(DigitalMediaRequestAttributes request) { + return request.getLinkedDigitalObjectPid() + ":" + request.getPrimaryMediaId(); + } + public FdoRecord prepareUpdatedDigitalMediaRecord(DigitalMediaRequestAttributes request, Instant timestamp, FdoRecord previousVersion, boolean incrementVersion) throws InvalidRequestException { var fdoAttributes = prepareUpdatedDigitalMediaAttributes(request, previousVersion.handle(), timestamp, previousVersion, incrementVersion); return new FdoRecord(previousVersion.handle(), FdoType.DIGITAL_MEDIA, fdoAttributes, - request.getPrimaryMediaId(), fdoAttributes.values()); + normalizeMediaId(request), fdoAttributes.values()); } public Map prepareDigitalMediaAttributes( diff --git a/src/test/java/eu/dissco/core/handlemanager/repository/MongoRepositoryIT.java b/src/test/java/eu/dissco/core/handlemanager/repository/MongoRepositoryIT.java index b9528712..e1669ae0 100644 --- a/src/test/java/eu/dissco/core/handlemanager/repository/MongoRepositoryIT.java +++ b/src/test/java/eu/dissco/core/handlemanager/repository/MongoRepositoryIT.java @@ -3,12 +3,12 @@ import static com.mongodb.client.model.Filters.eq; import static com.mongodb.client.model.Filters.in; +import static eu.dissco.core.handlemanager.testUtils.TestUtils.FDO_LOCAL_ID_MEDIA; import static eu.dissco.core.handlemanager.testUtils.TestUtils.HANDLE; import static eu.dissco.core.handlemanager.testUtils.TestUtils.HANDLE_ALT; import static eu.dissco.core.handlemanager.testUtils.TestUtils.MAPPER; import static eu.dissco.core.handlemanager.testUtils.TestUtils.NORMALISED_PRIMARY_SPECIMEN_OBJECT_ID_TESTVAL; import static eu.dissco.core.handlemanager.testUtils.TestUtils.PREFIX; -import static eu.dissco.core.handlemanager.testUtils.TestUtils.PRIMARY_MEDIA_ID_TESTVAL; import static eu.dissco.core.handlemanager.testUtils.TestUtils.givenDigitalMediaFdoRecord; import static eu.dissco.core.handlemanager.testUtils.TestUtils.givenDigitalSpecimenFdoRecord; import static eu.dissco.core.handlemanager.testUtils.TestUtils.givenHandleFdoRecord; @@ -217,7 +217,7 @@ void testSearchByPrimaryLocalIdMedia() throws Exception { // When var result = repository.searchByPrimaryLocalId(FdoProfile.PRIMARY_MEDIA_ID.get(), - List.of(PRIMARY_MEDIA_ID_TESTVAL)).get(0); + List.of(FDO_LOCAL_ID_MEDIA)).get(0); // Then assertThat(result.handle()).isEqualTo(expected.handle()); diff --git a/src/test/java/eu/dissco/core/handlemanager/service/FdoRecordServiceTest.java b/src/test/java/eu/dissco/core/handlemanager/service/FdoRecordServiceTest.java index 8df0d286..193ba3fe 100644 --- a/src/test/java/eu/dissco/core/handlemanager/service/FdoRecordServiceTest.java +++ b/src/test/java/eu/dissco/core/handlemanager/service/FdoRecordServiceTest.java @@ -9,6 +9,7 @@ import static eu.dissco.core.handlemanager.testUtils.TestUtils.CATALOG_ID_TEST; import static eu.dissco.core.handlemanager.testUtils.TestUtils.CREATED; import static eu.dissco.core.handlemanager.testUtils.TestUtils.DOC_BUILDER_FACTORY; +import static eu.dissco.core.handlemanager.testUtils.TestUtils.FDO_LOCAL_ID_MEDIA; import static eu.dissco.core.handlemanager.testUtils.TestUtils.HANDLE; import static eu.dissco.core.handlemanager.testUtils.TestUtils.HANDLE_ALT; import static eu.dissco.core.handlemanager.testUtils.TestUtils.ISSUED_FOR_AGENT_NAME_TESTVAL; @@ -19,7 +20,6 @@ import static eu.dissco.core.handlemanager.testUtils.TestUtils.NORMALISED_PRIMARY_SPECIMEN_OBJECT_ID_TESTVAL; import static eu.dissco.core.handlemanager.testUtils.TestUtils.ORCHESTRATION_URL; import static eu.dissco.core.handlemanager.testUtils.TestUtils.PREFIX; -import static eu.dissco.core.handlemanager.testUtils.TestUtils.PRIMARY_MEDIA_ID_TESTVAL; import static eu.dissco.core.handlemanager.testUtils.TestUtils.ROR_DOMAIN; import static eu.dissco.core.handlemanager.testUtils.TestUtils.ROR_IDENTIFIER; import static eu.dissco.core.handlemanager.testUtils.TestUtils.SPECIMEN_HOST_NAME_TESTVAL; @@ -315,7 +315,7 @@ void testPrepareNewMediaRecordMin() throws Exception { void testPrepareUpdatedMediaRecord() throws Exception { // Given var previousVersion = givenDigitalMediaFdoRecord(HANDLE); - var expected = givenUpdatedFdoRecord(FdoType.DIGITAL_MEDIA, PRIMARY_MEDIA_ID_TESTVAL); + var expected = givenUpdatedFdoRecord(FdoType.DIGITAL_MEDIA, FDO_LOCAL_ID_MEDIA); var request = givenDigitalMediaUpdated(); // When diff --git a/src/test/java/eu/dissco/core/handlemanager/testUtils/TestUtils.java b/src/test/java/eu/dissco/core/handlemanager/testUtils/TestUtils.java index 22ff1927..5f3a45f4 100644 --- a/src/test/java/eu/dissco/core/handlemanager/testUtils/TestUtils.java +++ b/src/test/java/eu/dissco/core/handlemanager/testUtils/TestUtils.java @@ -161,6 +161,7 @@ public class TestUtils { public static final String MEDIA_HOST_NAME_TESTVAL = SPECIMEN_HOST_NAME_TESTVAL; public static final String LINKED_DO_PID_TESTVAL = HANDLE; public static final String PRIMARY_MEDIA_ID_TESTVAL = "https://images.com/ABC"; + public static final String FDO_LOCAL_ID_MEDIA = HANDLE + ":" + PRIMARY_MEDIA_ID_TESTVAL; // Mappings public static final String SOURCE_DATA_STANDARD_TESTVAL = "dwc"; // MAS @@ -398,7 +399,7 @@ public static FdoRecord givenMongoResponse(String handle, FdoType fdoType, Strin public static FdoRecord givenDigitalMediaFdoRecord(String handle) throws Exception { var attributes = genDigitalMediaAttributes(handle, CREATED); - return new FdoRecord(handle, DIGITAL_MEDIA, attributes, PRIMARY_MEDIA_ID_TESTVAL, + return new FdoRecord(handle, DIGITAL_MEDIA, attributes, FDO_LOCAL_ID_MEDIA, attributes.values()); } @@ -959,7 +960,8 @@ private static List defaultLocations(String handle, FdoType type, bo locations.add( new XmlElement(i.getAndIncrement(), "1", UI_URL + "/dm/" + handle, "HTML")); locations.add( - new XmlElement(i.getAndIncrement(), "0", API_URL + "/digital-media/v1/" + handle, "JSON")); + new XmlElement(i.getAndIncrement(), "0", API_URL + "/digital-media/v1/" + handle, + "JSON")); if (addKeyLoc) { locations.add( new XmlElement(i.getAndIncrement(), "0", PRIMARY_MEDIA_ID_TESTVAL, "MEDIA")); @@ -967,7 +969,8 @@ private static List defaultLocations(String handle, FdoType type, bo } case ANNOTATION -> { locations.add( - new XmlElement(i.getAndIncrement(), "1", API_URL + "/annotations/v1/" + handle, "JSON")); + new XmlElement(i.getAndIncrement(), "1", API_URL + "/annotations/v1/" + handle, + "JSON")); } case ORGANISATION -> { if (addKeyLoc) { From 5690a90b7c0a68642d5c28d9a9ecd178126b7573 Mon Sep 17 00:00:00 2001 From: southeo Date: Tue, 7 Jan 2025 11:11:23 +0100 Subject: [PATCH 3/4] use serviceutils --- .../eu/dissco/core/handlemanager/service/DoiService.java | 2 +- .../dissco/core/handlemanager/service/FdoRecordService.java | 5 +---- .../eu/dissco/core/handlemanager/service/ServiceUtils.java | 5 +++++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/dissco/core/handlemanager/service/DoiService.java b/src/main/java/eu/dissco/core/handlemanager/service/DoiService.java index e09296c4..598c7b7d 100644 --- a/src/main/java/eu/dissco/core/handlemanager/service/DoiService.java +++ b/src/main/java/eu/dissco/core/handlemanager/service/DoiService.java @@ -164,7 +164,7 @@ private UpsertMediaResult processUpsertRequestMedia( List mediaRequests) throws JsonProcessingException { var existingMediaMap = getExistingRecordsFromNormalisedIds(mediaRequests .stream() - .map(FdoRecordService::normalizeMediaId) + .map(ServiceUtils::normalizeMediaId) .toList(), PRIMARY_MEDIA_ID.get() ); var newMedia = new ArrayList(); diff --git a/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java b/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java index c22eaf17..a385e91e 100644 --- a/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java +++ b/src/main/java/eu/dissco/core/handlemanager/service/FdoRecordService.java @@ -65,6 +65,7 @@ import static eu.dissco.core.handlemanager.domain.fdo.FdoType.MAS; import static eu.dissco.core.handlemanager.domain.fdo.FdoType.ORGANISATION; import static eu.dissco.core.handlemanager.domain.fdo.FdoType.SOURCE_SYSTEM; +import static eu.dissco.core.handlemanager.service.ServiceUtils.normalizeMediaId; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; @@ -496,10 +497,6 @@ public FdoRecord prepareNewDigitalMediaRecord(DigitalMediaRequestAttributes requ fdoAttributes.values()); } - public static String normalizeMediaId(DigitalMediaRequestAttributes request) { - return request.getLinkedDigitalObjectPid() + ":" + request.getPrimaryMediaId(); - } - public FdoRecord prepareUpdatedDigitalMediaRecord(DigitalMediaRequestAttributes request, Instant timestamp, FdoRecord previousVersion, boolean incrementVersion) throws InvalidRequestException { diff --git a/src/main/java/eu/dissco/core/handlemanager/service/ServiceUtils.java b/src/main/java/eu/dissco/core/handlemanager/service/ServiceUtils.java index 45d63788..3aa1466e 100644 --- a/src/main/java/eu/dissco/core/handlemanager/service/ServiceUtils.java +++ b/src/main/java/eu/dissco/core/handlemanager/service/ServiceUtils.java @@ -1,5 +1,6 @@ package eu.dissco.core.handlemanager.service; +import eu.dissco.core.handlemanager.schema.DigitalMediaRequestAttributes; import java.util.stream.Collector; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; @@ -22,4 +23,8 @@ private ServiceUtils() { ); } + public static String normalizeMediaId(DigitalMediaRequestAttributes request) { + return request.getLinkedDigitalObjectPid() + ":" + request.getPrimaryMediaId(); + } + } From 344c1f8f5c1f0b4245fa2f7f29fb8b29cb262f9d Mon Sep 17 00:00:00 2001 From: southeo Date: Tue, 7 Jan 2025 11:24:44 +0100 Subject: [PATCH 4/4] upgrade spring boot --- pom.xml | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/pom.xml b/pom.xml index 3740be7b..ac8bfc05 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ spring-boot-starter-parent org.springframework.boot - 3.3.5 + 3.4.1 handle-manager 0.0.1-SNAPSHOT @@ -21,8 +21,8 @@ 1.19.8 4.3 5.2.0 - 5.1.1 - 4.10.0 + 5.2.1 + 4.12.0 4.35.0 ../app-it/target/site/jacoco-aggregate/jacoco.xml @@ -252,26 +252,6 @@ org.jacoco 0.8.7 - - org.jooq - jooq-codegen-maven - ${jooq.version} - - src/main/resources/jooq-configuration.xml - - - - org.postgresql - postgresql - ${postgresql.version} - - - org.glassfish.jaxb - jaxb-runtime - ${glassfish-jaxb.version} - - - maven-failsafe-plugin