diff --git a/pom.xml b/pom.xml
index 6c353a483..1044b01c4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,8 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.15
+ 4.1.0
+
org.fairdatateam
@@ -54,12 +55,12 @@
21
- 2.0.0
- 0.2.0
- 6.0.4
+ 2.0.1
+ 0.2.2
+ 6.0.5
- 2.8.16
+ 3.0.3
5.5.1
5.3.1
0.13.0
@@ -127,9 +128,10 @@
+
org.springframework.boot
- spring-boot-starter-web
+ spring-boot-starter-actuator
@@ -140,40 +142,75 @@
org.springframework.boot
- spring-boot-starter-security
+ spring-boot-starter-aspectj
org.springframework.boot
- spring-boot-starter-log4j2
+ spring-boot-starter-jackson
org.springframework.boot
- spring-boot-configuration-processor
+ spring-boot-starter-log4j2
org.springframework.boot
spring-boot-starter-data-mongodb
- org.springframework.security
- spring-security-acl
+ org.springframework.boot
+ spring-boot-starter-data-mongodb-test
+ test
org.springframework.boot
- spring-boot-starter-actuator
+ spring-boot-starter-restclient
+
+
+ org.springframework.boot
+ spring-boot-starter-restclient-test
+ test
+
+
org.springframework.boot
- spring-boot-starter-aop
+ spring-boot-resttestclient
+ test
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.boot
+ spring-boot-starter-security-test
+ test
+
+
+
org.springframework.boot
spring-boot-starter-validation
+
+ org.springframework.boot
+ spring-boot-starter-validation-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-webmvc
+
+
+ org.springframework.boot
+ spring-boot-starter-webmvc-test
+ test
+
+
+
io.mongock
mongock-springboot
@@ -182,10 +219,6 @@
io.mongock
mongodb-springdata-v4-driver
-
- org.springframework.data
- spring-data-mongodb
-
@@ -238,30 +271,19 @@
org.projectlombok
lombok
-
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- com.vaadin.external.google
- android-json
-
-
+ org.apache.httpcomponents.client5
+ httpclient5
- org.springframework.security
- spring-security-test
- test
+ jakarta.servlet
+ jakarta.servlet-api
- org.apache.httpcomponents.client5
- httpclient5
+ org.slf4j
+ slf4j-api
+
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/api/dto/schema/MetadataSchemaDraftDTO.java b/src/main/java/org/fairdatateam/fairdatapoint/api/dto/schema/MetadataSchemaDraftDTO.java
index b88fe4e12..ed2f28bc7 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/api/dto/schema/MetadataSchemaDraftDTO.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/api/dto/schema/MetadataSchemaDraftDTO.java
@@ -22,6 +22,7 @@
*/
package org.fairdatateam.fairdatapoint.api.dto.schema;
+import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonInclude;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
@@ -29,7 +30,6 @@
import java.util.List;
-@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@@ -47,7 +47,7 @@ public class MetadataSchemaDraftDTO {
@NotNull
private String description;
- private boolean abstractSchema;
+ private Boolean abstractSchema;
@NotNull
private String definition;
@@ -63,4 +63,13 @@ public class MetadataSchemaDraftDTO {
@JsonInclude(JsonInclude.Include.ALWAYS)
private String lastVersion;
+
+ /**
+ * No-args constructor explicitly marked as default for JSON creation.
+ * See
+ * FasterXML/jackson-databind#5318 for more info.
+ */
+ @JsonCreator
+ public MetadataSchemaDraftDTO() {
+ }
}
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/api/filter/JwtTokenFilter.java b/src/main/java/org/fairdatateam/fairdatapoint/api/filter/JwtTokenFilter.java
index d67337909..cdf29a98f 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/api/filter/JwtTokenFilter.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/api/filter/JwtTokenFilter.java
@@ -22,7 +22,6 @@
*/
package org.fairdatateam.fairdatapoint.api.filter;
-import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
@@ -38,6 +37,7 @@
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
+import tools.jackson.databind.json.JsonMapper;
import java.io.IOException;
@@ -53,7 +53,7 @@ public class JwtTokenFilter extends OncePerRequestFilter {
private ApiKeyService apiKeyService;
@Autowired
- private ObjectMapper objectMapper;
+ private JsonMapper jsonMapper;
@Override
public void doFilterInternal(
@@ -69,7 +69,7 @@ public void doFilterInternal(
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setContentType(MediaType.APPLICATION_JSON.toString());
final ErrorDTO error = new ErrorDTO(HttpStatus.UNAUTHORIZED, "You have to be log in");
- objectMapper.writeValue(response.getWriter(), error);
+ jsonMapper.writeValue(response.getWriter(), error);
}
}
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/config/ActuatorMetricsConfig.java b/src/main/java/org/fairdatateam/fairdatapoint/config/ActuatorMetricsConfig.java
index 607da14c4..49c5d68eb 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/config/ActuatorMetricsConfig.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/config/ActuatorMetricsConfig.java
@@ -26,7 +26,7 @@
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.config.MeterFilter;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
+import org.springframework.boot.micrometer.metrics.autoconfigure.MeterRegistryCustomizer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/config/HttpClientConfig.java b/src/main/java/org/fairdatateam/fairdatapoint/config/HttpClientConfig.java
index 30edebda9..c072e4bda 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/config/HttpClientConfig.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/config/HttpClientConfig.java
@@ -22,7 +22,7 @@
*/
package org.fairdatateam.fairdatapoint.config;
-import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.boot.restclient.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestClient;
@@ -45,9 +45,8 @@ public class HttpClientConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder
- // todo: these are deprecated, but we should replace RestTemplate by RestClient anyway
- .setConnectTimeout(TIMEOUT)
- .setReadTimeout(TIMEOUT)
+ .connectTimeout(TIMEOUT)
+ .readTimeout(TIMEOUT)
.build();
}
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/config/SecurityConfig.java b/src/main/java/org/fairdatateam/fairdatapoint/config/SecurityConfig.java
index e87bbcddd..deabdb5e8 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/config/SecurityConfig.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/config/SecurityConfig.java
@@ -23,7 +23,7 @@
package org.fairdatateam.fairdatapoint.config;
import org.fairdatateam.fairdatapoint.api.filter.FilterConfigurer;
-import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
+import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/config/WebMvcConfig.java b/src/main/java/org/fairdatateam/fairdatapoint/config/WebMvcConfig.java
index 7319dda16..26f4f9dc0 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/config/WebMvcConfig.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/config/WebMvcConfig.java
@@ -22,48 +22,58 @@
*/
package org.fairdatateam.fairdatapoint.config;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.annotation.JsonInclude;
import org.fairdatateam.fairdatapoint.api.converter.ErrorConverter;
import org.fairdatateam.fairdatapoint.api.converter.RdfConverter;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.jspecify.annotations.NonNull;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.HttpHeaders;
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
-import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.HttpMessageConverters;
import org.springframework.http.converter.StringHttpMessageConverter;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
+import tools.jackson.databind.DeserializationFeature;
+import tools.jackson.databind.json.JsonMapper;
import java.util.List;
-import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
-
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
- @Autowired
- private List errorConverters;
+ private final List errorConverters;
- @Autowired
- private List rdfConverters;
+ private final List rdfConverters;
+ /**
+ * Constructor (autowired)
+ */
+ public WebMvcConfig(List errorConverters, List rdfConverters) {
+ this.errorConverters = errorConverters;
+ this.rdfConverters = rdfConverters;
+ }
+
+ /**
+ * Configures message converters. See
+ *
+ * example in Spring docs.
+ */
@Override
- public void configureMessageConverters(List> converters) {
- converters.add(new StringHttpMessageConverter());
- converters.addAll(errorConverters);
- converters.addAll(rdfConverters);
- converters.add(new ByteArrayHttpMessageConverter());
- converters.add(new MappingJackson2HttpMessageConverter(objectMapper()));
+ public void configureMessageConverters(HttpMessageConverters.@NonNull ServerBuilder builder) {
+ builder.withStringConverter(new StringHttpMessageConverter())
+ .withJsonConverter(new JacksonJsonHttpMessageConverter(jsonMapper()))
+ .addCustomConverter(new ByteArrayHttpMessageConverter());
+ errorConverters.forEach(builder::addCustomConverter);
+ rdfConverters.forEach(builder::addCustomConverter);
}
@Override
- public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
+ public void configureContentNegotiation(@NonNull ContentNegotiationConfigurer configurer) {
for (ErrorConverter converter : errorConverters) {
converter.configureContentNegotiation(configurer);
}
@@ -75,12 +85,15 @@ public void configureContentNegotiation(ContentNegotiationConfigurer configurer)
@Bean
@Primary
- public ObjectMapper objectMapper() {
- final ObjectMapper mapper = new ObjectMapper();
- mapper.findAndRegisterModules();
- mapper.setSerializationInclusion(NON_NULL);
- mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
- return mapper;
+ public JsonMapper jsonMapper() {
+ return JsonMapper.builder()
+ // https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/2.9.8/com/fasterxml/jackson/databind/ObjectMapper.html#findAndRegisterModules--
+ // https://github.com/FasterXML/jackson/blob/main/jackson3/MIGRATING_TO_JACKSON_3.md#objectmapper-serialization-inclusion-configuration
+ .changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL))
+ .changeDefaultPropertyInclusion(incl -> incl.withContentInclusion(JsonInclude.Include.NON_NULL))
+ // https://github.com/FasterXML/jackson/blob/main/jackson3/MIGRATING_TO_JACKSON_3.md#objectmapper-visibility-configuration
+ .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+ .build();
}
@Bean
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/database/rdf/repository/AbstractMetadataRepository.java b/src/main/java/org/fairdatateam/fairdatapoint/database/rdf/repository/AbstractMetadataRepository.java
index 53458e981..1fa0303e2 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/database/rdf/repository/AbstractMetadataRepository.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/database/rdf/repository/AbstractMetadataRepository.java
@@ -22,7 +22,6 @@
*/
package org.fairdatateam.fairdatapoint.database.rdf.repository;
-import jakarta.annotation.Nullable;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.rdf4j.common.iteration.Iterations;
import org.eclipse.rdf4j.model.*;
@@ -32,6 +31,7 @@
import org.eclipse.rdf4j.repository.Repository;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.RepositoryException;
+import org.jspecify.annotations.Nullable;
import java.util.*;
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/entity/index/http/Request.java b/src/main/java/org/fairdatateam/fairdatapoint/entity/index/http/Request.java
index d2be8039c..74d707c7b 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/entity/index/http/Request.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/entity/index/http/Request.java
@@ -26,7 +26,6 @@
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.springframework.http.HttpEntity;
import java.net.http.HttpRequest;
import java.util.List;
@@ -58,11 +57,6 @@ public void setBody(String body) {
this.body = body;
}
- public void setFromHttpEntity(HttpEntity httpEntity) {
- body = httpEntity.getBody();
- headers = httpEntity.getHeaders();
- }
-
public void setFromHttpServletRequest(HttpServletRequest request) {
method = request.getMethod();
url = request.getRequestURI();
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/entity/schema/MetadataSchema.java b/src/main/java/org/fairdatateam/fairdatapoint/entity/schema/MetadataSchema.java
index 7654a5075..2a9e41004 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/entity/schema/MetadataSchema.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/entity/schema/MetadataSchema.java
@@ -27,7 +27,7 @@
import lombok.*;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
-import org.springframework.data.annotation.PersistenceConstructor;
+import org.springframework.data.annotation.PersistenceCreator;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
@@ -98,7 +98,7 @@ public class MetadataSchema {
private String previousVersionUuid;
- @PersistenceConstructor
+ @PersistenceCreator
public MetadataSchema(
ObjectId id, String uuid, String versionUuid, String versionString,
String name, String description, String definition, Set targetClasses,
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/service/index/event/EventService.java b/src/main/java/org/fairdatateam/fairdatapoint/service/index/event/EventService.java
index efe93af41..17d87b175 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/service/index/event/EventService.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/service/index/event/EventService.java
@@ -22,7 +22,6 @@
*/
package org.fairdatateam.fairdatapoint.service.index.event;
-import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.PostConstruct;
import jakarta.servlet.http.HttpServletRequest;
import lombok.SneakyThrows;
@@ -57,6 +56,7 @@
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
+import tools.jackson.databind.json.JsonMapper;
import java.time.Instant;
import java.util.Collections;
@@ -70,7 +70,7 @@ public class EventService {
private static final int PAGE_SIZE = 10;
@Autowired
- private ObjectMapper objectMapper;
+ private JsonMapper jsonMapper;
@Autowired
private ThreadPoolTaskExecutor executor;
@@ -155,7 +155,7 @@ public Event acceptIncomingPing(PingDTO reqDto, HttpServletRequest request) {
event.getIncomingPing().getExchange().getResponse()
.setCode(HttpStatus.BAD_REQUEST.value());
event.getIncomingPing().getExchange().getResponse()
- .setBody(objectMapper.writeValueAsString(nextException.getErrorDTO()));
+ .setBody(jsonMapper.writeValueAsString(nextException.getErrorDTO()));
event.setFinished(Instant.now());
eventRepository.save(event);
log.info("Incoming ping has incorrect format: {}", exception.getMessage());
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/service/index/event/IncomingPingUtils.java b/src/main/java/org/fairdatateam/fairdatapoint/service/index/event/IncomingPingUtils.java
index c9cad1f8f..32de551b8 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/service/index/event/IncomingPingUtils.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/service/index/event/IncomingPingUtils.java
@@ -22,8 +22,6 @@
*/
package org.fairdatateam.fairdatapoint.service.index.event;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest;
import org.fairdatateam.fairdatapoint.api.dto.index.ping.PingDTO;
import org.fairdatateam.fairdatapoint.entity.index.event.Event;
@@ -32,6 +30,8 @@
import org.fairdatateam.fairdatapoint.entity.index.http.ExchangeDirection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.json.JsonMapper;
import java.util.*;
@@ -41,7 +41,7 @@ public class IncomingPingUtils {
private static final Integer VERSION = 1;
@Autowired
- private ObjectMapper objectMapper;
+ private JsonMapper jsonMapper;
public Event prepareEvent(PingDTO reqDto, HttpServletRequest request, String remoteAddr) {
final IncomingPing incomingPing = new IncomingPing();
@@ -51,9 +51,9 @@ public Event prepareEvent(PingDTO reqDto, HttpServletRequest request, String rem
ex.getRequest().setHeaders(getHeaders(request));
ex.getRequest().setFromHttpServletRequest(request);
try {
- ex.getRequest().setBody(objectMapper.writeValueAsString(reqDto));
+ ex.getRequest().setBody(jsonMapper.writeValueAsString(reqDto));
}
- catch (JsonProcessingException exception) {
+ catch (JacksonException exception) {
ex.getRequest().setBody(null);
}
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/service/index/webhook/WebhookService.java b/src/main/java/org/fairdatateam/fairdatapoint/service/index/webhook/WebhookService.java
index 9f5bca1ad..6c0326a17 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/service/index/webhook/WebhookService.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/service/index/webhook/WebhookService.java
@@ -22,8 +22,6 @@
*/
package org.fairdatateam.fairdatapoint.service.index.webhook;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.fairdatateam.fairdatapoint.api.dto.index.webhook.WebhookPayloadDTO;
@@ -42,6 +40,8 @@
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.json.JsonMapper;
import java.security.NoSuchAlgorithmException;
import java.util.Optional;
@@ -57,7 +57,7 @@ public class WebhookService {
private WebhookMapper webhookMapper;
@Autowired
- private ObjectMapper objectMapper;
+ private JsonMapper jsonMapper;
@Autowired
private WebhookRepository webhookRepository;
@@ -79,10 +79,10 @@ public void processWebhookTrigger(Event event) {
eventRepository.save(event);
final WebhookPayloadDTO webhookPayload = webhookMapper.toWebhookPayloadDTO(event);
try {
- final String payloadWithSecret = objectMapper.writeValueAsString(webhookPayload);
+ final String payloadWithSecret = jsonMapper.writeValueAsString(webhookPayload);
final String signature = WebhookUtils.computeHashSignature(payloadWithSecret);
webhookPayload.setSecret(SECRET_PLACEHOLDER);
- final String payloadWithoutSecret = objectMapper.writeValueAsString(webhookPayload);
+ final String payloadWithoutSecret = jsonMapper.writeValueAsString(webhookPayload);
WebhookUtils.postWebhook(
event,
retrievalSettings.getTimeout(),
@@ -90,7 +90,7 @@ public void processWebhookTrigger(Event event) {
signature
);
}
- catch (JsonProcessingException exception) {
+ catch (JacksonException exception) {
log.error("Failed to convert webhook payload to string");
}
catch (NoSuchAlgorithmException exception) {
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/service/resource/ResourceDefinitionTargetClassesCache.java b/src/main/java/org/fairdatateam/fairdatapoint/service/resource/ResourceDefinitionTargetClassesCache.java
index 4144c8eaa..85f134dd1 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/service/resource/ResourceDefinitionTargetClassesCache.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/service/resource/ResourceDefinitionTargetClassesCache.java
@@ -75,17 +75,17 @@ public void computeCache() {
final Queue parentUuids =
new LinkedList<>(metadataSchemaMap.get(schemaUuid).getExtendSchemas());
final Set visitedParents = new HashSet<>();
- String parentUuid = null;
while (!parentUuids.isEmpty()) {
- parentUuid = parentUuids.poll();
+ final String parentUuid = parentUuids.poll();
if (!visitedParents.contains(parentUuid)) {
visitedParents.add(parentUuid);
- targetClassUris.addAll(
- metadataSchemaMap.get(parentUuid).getTargetClasses()
- );
- parentUuids.addAll(
- metadataSchemaMap.get(parentUuid).getExtendSchemas()
- );
+ final MetadataSchema parentSchema = metadataSchemaMap.get(parentUuid);
+ if (parentSchema != null) {
+ targetClassUris.addAll(
+ Optional.ofNullable(parentSchema.getTargetClasses()).orElse(Set.of()));
+ parentUuids.addAll(
+ Optional.ofNullable(parentSchema.getExtendSchemas()).orElse(List.of()));
+ }
}
}
}
diff --git a/src/main/java/org/fairdatateam/fairdatapoint/service/schema/MetadataSchemaRetrievalUtils.java b/src/main/java/org/fairdatateam/fairdatapoint/service/schema/MetadataSchemaRetrievalUtils.java
index 0e26fa3f5..2122e0d04 100644
--- a/src/main/java/org/fairdatateam/fairdatapoint/service/schema/MetadataSchemaRetrievalUtils.java
+++ b/src/main/java/org/fairdatateam/fairdatapoint/service/schema/MetadataSchemaRetrievalUtils.java
@@ -22,13 +22,13 @@
*/
package org.fairdatateam.fairdatapoint.service.schema;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.fairdatateam.fairdatapoint.api.dto.schema.MetadataSchemaVersionDTO;
import org.fairdatateam.fairdatapoint.entity.exception.MetadataSchemaImportException;
import org.springframework.http.HttpHeaders;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.type.TypeReference;
+import tools.jackson.databind.json.JsonMapper;
import java.io.IOException;
import java.net.URI;
@@ -49,7 +49,7 @@ public class MetadataSchemaRetrievalUtils {
.connectTimeout(Duration.ofMinutes(1))
.build();
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+ private static final JsonMapper JSON_MAPPER = new JsonMapper();
private static final TypeReference> RESPONSE_TYPE =
new TypeReference<>() {
@@ -64,9 +64,9 @@ public static List retrievePublishedMetadataSchemas(St
.GET().build();
final HttpResponse response =
HTTP_CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
- return OBJECT_MAPPER.readValue(response.body(), RESPONSE_TYPE);
+ return JSON_MAPPER.readValue(response.body(), RESPONSE_TYPE);
}
- catch (JsonProcessingException exception) {
+ catch (JacksonException exception) {
log.warn(
format("Could not parse published metadata schemas from %s: %s",
fdpUrl, exception.getMessage())
diff --git a/src/main/resources/application-development.yml b/src/main/resources/application-development.yml
index d392068c9..64084a0a7 100644
--- a/src/main/resources/application-development.yml
+++ b/src/main/resources/application-development.yml
@@ -7,6 +7,5 @@ security:
expiration: 999
spring:
- data:
- mongodb:
- uri: mongodb://localhost:27017/fdp-dev
+ mongodb:
+ uri: mongodb://localhost:27017/fdp-dev
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index cf6820ad3..7f74c4ed2 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -9,12 +9,14 @@ instance:
spring:
data:
- mongodb:
- uri: mongodb://${FDP_MONGO_HOST:mongo}:${FDP_MONGO_PORT:27017}/${FDP_MONGO_DB:fdp}
web:
pageable:
default-page-size: 50
qualifier-delimiter: _
+ mongodb:
+ representation:
+ uuid: standard
+ uri: mongodb://${FDP_MONGO_HOST:mongo}:${FDP_MONGO_PORT:27017}/${FDP_MONGO_DB:fdp}
profiles:
active: production
task:
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/WebIntegrationTest.java b/src/test/java/org/fairdatateam/fairdatapoint/WebIntegrationTest.java
index c76cc00cf..6ddc74426 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/WebIntegrationTest.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/WebIntegrationTest.java
@@ -26,12 +26,14 @@
import org.fairdatateam.fairdatapoint.database.rdf.migration.development.RdfDevelopmentMigrationRunner;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureTestRestTemplate;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.resttestclient.TestRestTemplate;
import org.springframework.test.context.ActiveProfiles;
@ActiveProfiles(Profiles.TESTING)
// todo: in most cases we can probably use WebEnvironment.MOCK with MockMvc instead of TestRestTemplate (see #862)
+@AutoConfigureTestRestTemplate
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public abstract class WebIntegrationTest {
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/actuator/MetricsTest.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/actuator/MetricsTest.java
index b4399e3ef..22e3424c1 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/actuator/MetricsTest.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/actuator/MetricsTest.java
@@ -27,7 +27,7 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/common/ForbiddenTest.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/common/ForbiddenTest.java
index 0124c79ed..dd7c296dd 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/common/ForbiddenTest.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/common/ForbiddenTest.java
@@ -22,7 +22,7 @@
*/
package org.fairdatateam.fairdatapoint.acceptance.common;
-import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.resttestclient.TestRestTemplate;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/common/NotFoundTest.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/common/NotFoundTest.java
index 2d702ff51..ebdaf3fd5 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/common/NotFoundTest.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/common/NotFoundTest.java
@@ -22,7 +22,7 @@
*/
package org.fairdatateam.fairdatapoint.acceptance.common;
-import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.resttestclient.TestRestTemplate;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/general/CorsTest.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/general/CorsTest.java
index ca4ba5905..7a629e655 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/general/CorsTest.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/general/CorsTest.java
@@ -26,7 +26,7 @@
import org.fairdatateam.fairdatapoint.Profiles;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/metadata/Common.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/metadata/Common.java
index bf51f2d8a..8760ca3a5 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/metadata/Common.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/metadata/Common.java
@@ -27,7 +27,7 @@
import org.fairdatateam.fairdatapoint.api.dto.metadata.MetaStateChangeDTO;
import org.fairdatateam.fairdatapoint.api.dto.metadata.MetaStateDTO;
import org.fairdatateam.fairdatapoint.entity.metadata.MetadataState;
-import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.resttestclient.TestRestTemplate;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java
index 22bd6c3dd..9f01e4ffd 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/openapi/SwaggerUI_GET.java
@@ -23,11 +23,9 @@
package org.fairdatateam.fairdatapoint.acceptance.openapi;
import org.fairdatateam.fairdatapoint.WebIntegrationTest;
-import org.fairdatateam.fairdatapoint.api.dto.index.entry.IndexEntryDTO;
-import org.fairdatateam.fairdatapoint.utils.CustomPageImpl;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import org.springframework.boot.http.client.ClientHttpRequestFactorySettings;
+import org.springframework.boot.http.client.HttpRedirects;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@@ -62,7 +60,7 @@ public void res302_redirectsToSwaggerUI() {
.build();
// WHEN
- ResponseEntity result = client.withRedirects(ClientHttpRequestFactorySettings.Redirects.DONT_FOLLOW)
+ ResponseEntity result = client.withRedirects(HttpRedirects.DONT_FOLLOW)
.exchange(request, new ParameterizedTypeReference<>() {});
// THEN
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/schema/Draft_PUT.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/schema/Draft_PUT.java
index 02e1ebcbe..4f8f010da 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/schema/Draft_PUT.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/schema/Draft_PUT.java
@@ -103,7 +103,7 @@ public void res200() {
assertThat(result.getBody().getName(), is(equalTo(reqDto.getName())));
assertThat(result.getBody().getDescription(), is(equalTo(reqDto.getDescription())));
assertThat(result.getBody().getDefinition(), is(equalTo(reqDto.getDefinition())));
- assertThat(result.getBody().isAbstractSchema(), is(equalTo(reqDto.isAbstractSchema())));
+ assertThat(result.getBody().getAbstractSchema(), is(equalTo(reqDto.isAbstractSchema())));
assertThat(result.getBody().getExtendsSchemaUuids(), is(equalTo(reqDto.getExtendsSchemaUuids())));
}
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/search/sparql/SparqlProxyCleaningServiceTest.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/search/sparql/SparqlProxyCleaningServiceTest.java
index 61d21e388..4e9932c8b 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/search/sparql/SparqlProxyCleaningServiceTest.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/search/sparql/SparqlProxyCleaningServiceTest.java
@@ -86,7 +86,7 @@ public void cleansRequestHeaders() throws NoSuchMethodException, InvocationTarge
// check result
assertThat(requestHeadersOutgoing.getAccept()).hasSize(1).contains(MediaType.APPLICATION_JSON);
- assertThat(requestHeadersOutgoing.containsKey(HttpHeaders.AUTHORIZATION)).isFalse();
+ assertThat(requestHeadersOutgoing.containsHeader(HttpHeaders.AUTHORIZATION)).isFalse();
assertThat(requestHeadersOutgoing.get(SparqlProxyCleaningService.HEADER_X_FORWARDED_FOR))
.hasSize(1).contains(remoteIP);
}
@@ -126,11 +126,11 @@ cleaningService, new MockClientHttpRequest(), sparqlServerResponse
// check result
final HttpHeaders cleanedResponseHeaders = cleanedResponse.getHeaders();
- assertThat(cleanedResponseHeaders).doesNotContainKey(customHeaderName);
- hopByHopHeaders.forEach(header -> assertThat(cleanedResponseHeaders).doesNotContainKey(header));
- assertThat(cleanedResponseHeaders).doesNotContainKey(HttpHeaders.CONNECTION);
- assertThat(cleanedResponseHeaders).doesNotContainEntry(HttpHeaders.SERVER, List.of(backendServerHeader));
- assertThat(cleanedResponseHeaders).containsEntry(HttpHeaders.SERVER, List.of("Test API 1.0"));
+ assertThat(cleanedResponseHeaders.containsHeader(customHeaderName)).isFalse();
+ hopByHopHeaders.forEach(header -> assertThat(cleanedResponseHeaders.containsHeader(header)).isFalse());
+ assertThat(cleanedResponseHeaders.containsHeader(HttpHeaders.CONNECTION)).isFalse();
+ assertThat(cleanedResponseHeaders.containsHeaderValue(HttpHeaders.SERVER, backendServerHeader)).isFalse();
+ assertThat(cleanedResponseHeaders.containsHeaderValue(HttpHeaders.SERVER, "Test API 1.0"));
}
}
}
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/search/sparql/SparqlProxyControllerTest.java b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/search/sparql/SparqlProxyControllerTest.java
index 4d00f2b46..f7a3a5321 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/acceptance/search/sparql/SparqlProxyControllerTest.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/acceptance/search/sparql/SparqlProxyControllerTest.java
@@ -27,8 +27,8 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.client.AutoConfigureMockRestServiceServer;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.restclient.test.autoconfigure.AutoConfigureMockRestServiceServer;
+import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.*;
import org.springframework.security.test.context.support.WithAnonymousUser;
diff --git a/src/test/java/org/fairdatateam/fairdatapoint/service/index/harvester/HarvesterServiceTest.java b/src/test/java/org/fairdatateam/fairdatapoint/service/index/harvester/HarvesterServiceTest.java
index 77a49f3f6..cf63cbb9e 100644
--- a/src/test/java/org/fairdatateam/fairdatapoint/service/index/harvester/HarvesterServiceTest.java
+++ b/src/test/java/org/fairdatateam/fairdatapoint/service/index/harvester/HarvesterServiceTest.java
@@ -80,7 +80,7 @@ public class HarvesterServiceTest {
private Model catalog;
@BeforeEach
- private void setup() {
+ public void setup() {
// Setup resource definition;
ResourceDefinitionFixtures resourceDefinitionFixtures = new ResourceDefinitionFixtures();
diff --git a/src/test/resources/application-testing.yml b/src/test/resources/application-testing.yml
index fac55fdcc..6e7d039ab 100644
--- a/src/test/resources/application-testing.yml
+++ b/src/test/resources/application-testing.yml
@@ -7,9 +7,8 @@ server:
port: 8088
spring:
- data:
- mongodb:
- uri: mongodb://localhost:27017/fdp-test
+ mongodb:
+ uri: mongodb://localhost:27017/fdp-test
security:
jwt: