mapperUnits;
private final RequestProcessingExceptionBuilder exceptionBuilder;
- @SneakyThrows
@Override
public Resource toEntity(@NonNull Object dto, @NonNull Class
parentRequestDto, Predicate predicate,
Resource parentEntity) {
@@ -52,8 +49,8 @@ public
Resource toEntity(@NonNull Object dto, @NonNull Class
parentReques
} catch (Exception e) {
log.warn("Exception during toEntity mapping", e);
throw exceptionBuilder.mappingException(dto.getClass().getSimpleName()
- + ofNullable(predicate).map(p -> " under Predicate: " + p.getUri()).orElse(""),
- objectMapper.writeValueAsString(dto));
+ + ofNullable(predicate).map(p -> " under Predicate: " + p.getUri()).orElse(""),
+ JSON_MAPPER.writeValueAsString(dto));
}
}
@@ -79,7 +76,7 @@ public D toDto(@NonNull Resource source, @NonNull D parentDto, Resource pare
}
private Optional getMapperUnit(String typeUri, Predicate pred, Class> parentResponseDto,
- Class> requestDto) {
+ Class> requestDto) {
return mapperUnits.stream()
.filter(m -> isNull(parentResponseDto) || m.supportedParents().contains(parentResponseDto))
.filter(m -> {
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/NoteMapper.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/NoteMapper.java
index 8cd8b2743..5e04a270a 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/NoteMapper.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/NoteMapper.java
@@ -8,7 +8,6 @@
import static org.folio.ld.dictionary.PropertyDictionary.fromValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -16,6 +15,7 @@
import org.folio.ld.dictionary.PropertyDictionary;
import org.folio.linked.data.domain.dto.Note;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
public class NoteMapper {
@@ -32,7 +32,7 @@ public List toNotes(JsonNode doc, Set noteProperties)
.flatMap(entry ->
stream(spliteratorUnknownSize(entry.getValue().iterator(), ORDERED), false)
.map(value -> new Note()
- .value(List.of(value.textValue()))
+ .value(List.of(value.stringValue()))
.type(List.of(entry.getKey()))
)
)
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/StatusMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/StatusMapperUnit.java
index 784af40d4..3b961fd7e 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/StatusMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/StatusMapperUnit.java
@@ -9,7 +9,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
@@ -28,6 +27,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/category/CategoryMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/category/CategoryMapperUnit.java
index 8b9a564d4..700383b99 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/category/CategoryMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/category/CategoryMapperUnit.java
@@ -11,7 +11,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
@@ -27,6 +26,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.model.entity.ResourceEdge;
import org.folio.linked.data.service.resource.hash.HashService;
+import tools.jackson.databind.JsonNode;
@RequiredArgsConstructor
public abstract class CategoryMapperUnit implements SingleResourceMapperUnit, MarcCodeProvider {
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/InstanceMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/InstanceMapperUnit.java
index 65cf6ab76..78e2a81d1 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/InstanceMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/InstanceMapperUnit.java
@@ -48,7 +48,6 @@
import static org.folio.linked.data.util.ResourceUtils.putProperty;
import static org.springframework.util.ObjectUtils.isEmpty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
@@ -70,6 +69,7 @@
import org.folio.linked.data.service.profile.ResourceProfileLinkingService;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/AccessLocationMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/AccessLocationMapperUnit.java
index 7e3d35a92..b7ceaa1ac 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/AccessLocationMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/AccessLocationMapperUnit.java
@@ -7,7 +7,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -19,6 +18,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/AdminMetadataMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/AdminMetadataMapperUnit.java
index 3a9ce4eba..cbf52603a 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/AdminMetadataMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/AdminMetadataMapperUnit.java
@@ -11,7 +11,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -22,6 +21,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/CopyrightEventMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/CopyrightEventMapperUnit.java
index 4d1f1a6a7..bbd745d3b 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/CopyrightEventMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/CopyrightEventMapperUnit.java
@@ -6,7 +6,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -18,6 +17,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/ExtentMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/ExtentMapperUnit.java
index 6f45aa448..a8ef82806 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/ExtentMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/ExtentMapperUnit.java
@@ -4,7 +4,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -18,6 +17,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/InstanceSupplementaryContentMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/InstanceSupplementaryContentMapperUnit.java
index c5807f736..4cf042613 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/InstanceSupplementaryContentMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/InstanceSupplementaryContentMapperUnit.java
@@ -4,7 +4,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -18,6 +17,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/ProviderEventMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/ProviderEventMapperUnit.java
index 4775b8a3c..d4927a27f 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/ProviderEventMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/ProviderEventMapperUnit.java
@@ -15,7 +15,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -28,6 +27,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@RequiredArgsConstructor
@MapperUnit(
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/identifier/AbstractIdentifierMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/identifier/AbstractIdentifierMapperUnit.java
index f50388168..785f3b80c 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/identifier/AbstractIdentifierMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/instance/sub/identifier/AbstractIdentifierMapperUnit.java
@@ -7,7 +7,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import org.folio.ld.dictionary.ResourceTypeDictionary;
@@ -19,6 +18,7 @@
import org.folio.linked.data.mapper.dto.resource.common.instance.sub.InstanceSubResourceMapperUnit;
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
+import tools.jackson.databind.JsonNode;
abstract class AbstractIdentifierMapperUnit implements InstanceSubResourceMapperUnit {
private final CoreMapper coreMapper;
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/language/AbstractLanguageMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/language/AbstractLanguageMapperUnit.java
index 9087581fe..eaa5c429d 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/language/AbstractLanguageMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/language/AbstractLanguageMapperUnit.java
@@ -7,7 +7,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -17,6 +16,7 @@
import org.folio.linked.data.mapper.dto.resource.common.category.MarcCodeProvider;
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
+import tools.jackson.databind.JsonNode;
@RequiredArgsConstructor
public abstract class AbstractLanguageMapperUnit implements SingleResourceMapperUnit, MarcCodeProvider {
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/place/PlaceMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/place/PlaceMapperUnit.java
index ba4c56247..d7ad4dcab 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/place/PlaceMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/place/PlaceMapperUnit.java
@@ -7,7 +7,6 @@
import static org.folio.ld.dictionary.ResourceTypeDictionary.PLACE;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
@@ -22,6 +21,7 @@
import org.folio.linked.data.mapper.dto.resource.common.category.MarcCodeProvider;
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
+import tools.jackson.databind.JsonNode;
@RequiredArgsConstructor
public abstract class PlaceMapperUnit implements SingleResourceMapperUnit, MarcCodeProvider {
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/ParallelTitleMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/ParallelTitleMapperUnit.java
index 0d33fc9d0..e9b1fb8a0 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/ParallelTitleMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/ParallelTitleMapperUnit.java
@@ -11,7 +11,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -25,6 +24,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/PrimaryTitleMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/PrimaryTitleMapperUnit.java
index 34b6a8a77..c2ffa0c78 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/PrimaryTitleMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/PrimaryTitleMapperUnit.java
@@ -9,7 +9,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -24,6 +23,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/VariantTitleMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/VariantTitleMapperUnit.java
index 0e3f8c882..cb16d6a9d 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/VariantTitleMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/title/VariantTitleMapperUnit.java
@@ -12,7 +12,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -26,6 +25,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/WorkMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/WorkMapperUnit.java
index c03da6e17..a613ba046 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/WorkMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/WorkMapperUnit.java
@@ -32,7 +32,6 @@
import static org.folio.linked.data.util.ResourceUtils.putProperty;
import static org.springframework.util.CollectionUtils.isEmpty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
@@ -62,6 +61,7 @@
import org.folio.linked.data.service.profile.ResourceProfileLinkingService;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/ClassificationMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/ClassificationMapperUnit.java
index c634139d8..0e26787c1 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/ClassificationMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/ClassificationMapperUnit.java
@@ -12,7 +12,6 @@
import static org.folio.marc4ld.util.Constants.Classification.DDC;
import static org.folio.marc4ld.util.Constants.Classification.LC;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -25,6 +24,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/DissertationMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/DissertationMapperUnit.java
index 58e5cd2b9..24f98d0e2 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/DissertationMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/DissertationMapperUnit.java
@@ -9,7 +9,6 @@
import static org.folio.ld.dictionary.PropertyDictionary.LABEL;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -22,6 +21,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/PartOfSeriesMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/PartOfSeriesMapperUnit.java
index 6266232f5..0c45067c6 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/PartOfSeriesMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/PartOfSeriesMapperUnit.java
@@ -19,7 +19,6 @@
import static org.folio.linked.data.util.ResourceUtils.getPropertyValues;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
@@ -35,6 +34,7 @@
import org.folio.linked.data.model.entity.ResourceEdge;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/reference/SubjectMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/reference/SubjectMapperUnit.java
index 84c445f4b..6d60080a0 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/reference/SubjectMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/common/work/sub/reference/SubjectMapperUnit.java
@@ -8,7 +8,6 @@
import static org.folio.ld.dictionary.ResourceTypeDictionary.CONCEPT;
import static org.folio.linked.data.util.ResourceUtils.copyWithoutPreferred;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.Optional;
import java.util.Set;
import org.folio.linked.data.domain.dto.Reference;
@@ -21,6 +20,7 @@
import org.folio.linked.data.service.reference.ReferenceService;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@MapperUnit(type = CONCEPT, predicate = SUBJECT, requestDto = Reference.class)
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/hub/HubMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/hub/HubMapperUnit.java
index 218bd0976..cff1e0aaf 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/hub/HubMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/hub/HubMapperUnit.java
@@ -8,7 +8,6 @@
import static org.folio.ld.dictionary.ResourceTypeDictionary.HUB;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import lombok.RequiredArgsConstructor;
@@ -28,6 +27,7 @@
import org.folio.linked.data.service.profile.ResourceProfileLinkingService;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/dto/resource/serial/PublicationFrequencyMapperUnit.java b/src/main/java/org/folio/linked/data/mapper/dto/resource/serial/PublicationFrequencyMapperUnit.java
index 1abeab1c1..802ecad79 100644
--- a/src/main/java/org/folio/linked/data/mapper/dto/resource/serial/PublicationFrequencyMapperUnit.java
+++ b/src/main/java/org/folio/linked/data/mapper/dto/resource/serial/PublicationFrequencyMapperUnit.java
@@ -8,7 +8,6 @@
import static org.folio.linked.data.util.ResourceUtils.getFirstValue;
import static org.folio.linked.data.util.ResourceUtils.putProperty;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
@@ -23,6 +22,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.hash.HashService;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.JsonNode;
@Component
@RequiredArgsConstructor
diff --git a/src/main/java/org/folio/linked/data/mapper/kafka/search/WorkSearchMessageMapper.java b/src/main/java/org/folio/linked/data/mapper/kafka/search/WorkSearchMessageMapper.java
index acbb91c5a..de92ef819 100644
--- a/src/main/java/org/folio/linked/data/mapper/kafka/search/WorkSearchMessageMapper.java
+++ b/src/main/java/org/folio/linked/data/mapper/kafka/search/WorkSearchMessageMapper.java
@@ -34,7 +34,6 @@
import static org.folio.linked.data.util.ResourceUtils.getTypeUris;
import static org.mapstruct.MappingConstants.ComponentModel.SPRING;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -67,6 +66,7 @@
import org.mapstruct.Mapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
+import tools.jackson.databind.JsonNode;
@Log4j2
@Mapper(componentModel = SPRING, imports = {WorkMapperUnit.class, UUID.class})
@@ -180,7 +180,7 @@ protected Stream getPropertyValues(JsonNode doc, String... properties) {
.stream()
.flatMap(d -> Arrays.stream(properties)
.filter(p -> d.has(p) && !d.get(p).isEmpty())
- .flatMap(p -> StreamSupport.stream(doc.get(p).spliterator(), true).map(JsonNode::asText)));
+ .flatMap(p -> StreamSupport.stream(doc.get(p).spliterator(), true).map(JsonNode::asString)));
}
protected List extractClassifications(Resource resource) {
@@ -263,7 +263,7 @@ protected String getValue(JsonNode doc, String... values) {
if (nonNull(doc)) {
for (String value : values) {
if (doc.has(value) && !doc.get(value).isEmpty()) {
- return doc.get(value).get(0).asText();
+ return doc.get(value).get(0).asString();
}
}
}
diff --git a/src/main/java/org/folio/linked/data/mapper/kafka/search/identifier/IndexIdentifierMapperImpl.java b/src/main/java/org/folio/linked/data/mapper/kafka/search/identifier/IndexIdentifierMapperImpl.java
index a768f40e7..3841672c4 100644
--- a/src/main/java/org/folio/linked/data/mapper/kafka/search/identifier/IndexIdentifierMapperImpl.java
+++ b/src/main/java/org/folio/linked/data/mapper/kafka/search/identifier/IndexIdentifierMapperImpl.java
@@ -6,7 +6,6 @@
import static org.folio.linked.data.domain.dto.LinkedDataIdentifier.TypeEnum;
import static org.folio.linked.data.util.ResourceUtils.getTypeUris;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
@@ -18,6 +17,7 @@
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.model.entity.ResourceEdge;
import org.springframework.stereotype.Service;
+import tools.jackson.databind.JsonNode;
@Log4j2
@Service
@@ -57,7 +57,7 @@ private Optional getValue(JsonNode doc) {
.map(doc::get)
.filter(node -> !node.isEmpty())
.map(value -> value.get(0))
- .map(JsonNode::asText)
+ .map(JsonNode::asString)
.findFirst();
}
diff --git a/src/main/java/org/folio/linked/data/model/entity/Resource.java b/src/main/java/org/folio/linked/data/model/entity/Resource.java
index 2ad7ab841..815090a29 100644
--- a/src/main/java/org/folio/linked/data/model/entity/Resource.java
+++ b/src/main/java/org/folio/linked/data/model/entity/Resource.java
@@ -9,7 +9,6 @@
import static java.util.Optional.ofNullable;
import static org.folio.ld.dictionary.ResourceTypeDictionary.INSTANCE;
-import com.fasterxml.jackson.databind.JsonNode;
import io.hypersistence.utils.hibernate.type.json.JsonBinaryType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
@@ -51,6 +50,7 @@
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.domain.Persistable;
+import tools.jackson.databind.JsonNode;
@Entity
@Data
diff --git a/src/main/java/org/folio/linked/data/service/profile/ProfileServiceImpl.java b/src/main/java/org/folio/linked/data/service/profile/ProfileServiceImpl.java
index bf8345b58..8c5a1f707 100644
--- a/src/main/java/org/folio/linked/data/service/profile/ProfileServiceImpl.java
+++ b/src/main/java/org/folio/linked/data/service/profile/ProfileServiceImpl.java
@@ -3,10 +3,8 @@
import static java.util.stream.Collectors.toSet;
import static org.apache.commons.collections4.CollectionUtils.isEmpty;
import static org.folio.linked.data.util.Constants.Cache.PROFILES;
+import static org.folio.linked.data.util.JsonUtils.JSON_MAPPER;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
@@ -25,6 +23,7 @@
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import tools.jackson.databind.JsonNode;
@Service
@RequiredArgsConstructor
@@ -32,11 +31,9 @@
@Transactional(readOnly = true)
public class ProfileServiceImpl implements ProfileService {
private static final String PROFILE_DIRECTORY = "profiles";
-
private final ProfileRepository profileRepository;
private final ResourceTypeRepository typeRepository;
private final RequestProcessingExceptionBuilder exceptionBuilder;
- private final ObjectMapper objectMapper;
@Override
@Transactional
@@ -69,7 +66,7 @@ public List getMetadataByResourceType(String resourceTypeUri) {
private void saveProfile(Path file) {
try (var inputStream = Files.newInputStream(file)) {
- var profile = objectMapper.readValue(inputStream, ProfileDto.class);
+ var profile = JSON_MAPPER.readValue(inputStream, ProfileDto.class);
var profileEntity = toProfileEntity(profile);
profileRepository.save(profileEntity);
} catch (IOException e) {
@@ -77,9 +74,9 @@ private void saveProfile(Path file) {
}
}
- private Profile toProfileEntity(ProfileDto profileDto) throws JsonProcessingException {
+ private Profile toProfileEntity(ProfileDto profileDto) {
var resourceType = typeRepository.findByUri(profileDto.resourceType());
- var profileContent = objectMapper.writeValueAsString(profileDto.value());
+ var profileContent = JSON_MAPPER.writeValueAsString(profileDto.value());
var additionalTypes = isEmpty(profileDto.additionalResourceTypes())
? Set.of()
: profileDto.additionalResourceTypes().stream().map(typeRepository::findByUri).collect(toSet());
diff --git a/src/main/java/org/folio/linked/data/service/profile/ProfileSettingsServiceImpl.java b/src/main/java/org/folio/linked/data/service/profile/ProfileSettingsServiceImpl.java
index a8d6eabfa..d7747db89 100644
--- a/src/main/java/org/folio/linked/data/service/profile/ProfileSettingsServiceImpl.java
+++ b/src/main/java/org/folio/linked/data/service/profile/ProfileSettingsServiceImpl.java
@@ -1,7 +1,7 @@
package org.folio.linked.data.service.profile;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import static org.folio.linked.data.util.JsonUtils.JSON_MAPPER;
+
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@@ -16,6 +16,7 @@
import org.folio.linked.data.repo.ProfileSettingsRepository;
import org.folio.spring.FolioExecutionContext;
import org.springframework.stereotype.Service;
+import tools.jackson.core.JacksonException;
@Service
@RequiredArgsConstructor
@@ -25,7 +26,6 @@ public class ProfileSettingsServiceImpl implements ProfileSettingsService {
private final ProfileRepository profileRepository;
private final RequestProcessingExceptionBuilder exceptionBuilder;
private final FolioExecutionContext executionContext;
- private final ObjectMapper objectMapper;
@Override
public CustomProfileSettingsResponseDto getProfileSettings(Integer profileId) {
@@ -33,10 +33,8 @@ public CustomProfileSettingsResponseDto getProfileSettings(Integer profileId) {
profileRepository.findById(profileId)
.orElseThrow(() -> exceptionBuilder.notFoundLdResourceByIdException("Profile", String.valueOf(profileId)));
var settings = profileSettingsRepository.getByIdUserIdAndIdProfileId(userId, profileId);
- if (settings.isPresent()) {
- return toDto(profileId, userId, settings.get());
- }
- return defaultToProfile(profileId);
+ return settings.map(profileSettings -> toDto(profileId, userId, profileSettings))
+ .orElseGet(() -> defaultToProfile(profileId));
}
@Override
@@ -47,7 +45,7 @@ public void setProfileSettings(Integer profileId, CustomProfileSettingsRequestDt
try {
var settings = toEntity(profile, userId, profileSettingsRequest);
profileSettingsRepository.save(settings);
- } catch (JsonProcessingException e) {
+ } catch (JacksonException e) {
throw exceptionBuilder.badRequestException("Could not process settings", String.valueOf(profileId));
}
}
@@ -64,23 +62,22 @@ private CustomProfileSettingsResponseDto defaultToProfile(Integer profileId) {
private CustomProfileSettingsResponseDto toDto(Integer profileId, UUID userId, ProfileSettings settings) {
try {
- var customProfileSettings = objectMapper.readValue(settings.getSettings(), CustomProfileSettings.class);
+ var customProfileSettings = JSON_MAPPER.readValue(settings.getSettings(), CustomProfileSettings.class);
return new CustomProfileSettingsResponseDto(
profileId,
customProfileSettings.getActive(),
customProfileSettings.getChildren());
- } catch (JsonProcessingException e) {
+ } catch (JacksonException e) {
log.error("Could not read stored profile settings (user: {}, profile: {}) - default to profile",
userId, profileId);
return defaultToProfile(profileId);
}
}
- private ProfileSettings toEntity(Profile profile, UUID userId, CustomProfileSettingsRequestDto requestDto)
- throws JsonProcessingException {
+ private ProfileSettings toEntity(Profile profile, UUID userId, CustomProfileSettingsRequestDto requestDto) {
return new ProfileSettings()
.setId(new ProfileSettingsPk(userId, profile.getId()))
.setProfile(profile)
- .setSettings(objectMapper.writeValueAsString(requestDto));
+ .setSettings(JSON_MAPPER.writeValueAsString(requestDto));
}
}
diff --git a/src/main/java/org/folio/linked/data/service/resource/copy/ResourceCopyServiceImpl.java b/src/main/java/org/folio/linked/data/service/resource/copy/ResourceCopyServiceImpl.java
index 0d339af78..788d01f25 100644
--- a/src/main/java/org/folio/linked/data/service/resource/copy/ResourceCopyServiceImpl.java
+++ b/src/main/java/org/folio/linked/data/service/resource/copy/ResourceCopyServiceImpl.java
@@ -13,20 +13,18 @@
import static org.folio.ld.dictionary.PropertyDictionary.REFERENCES;
import static org.folio.ld.dictionary.ResourceTypeDictionary.INSTANCE;
import static org.folio.ld.dictionary.ResourceTypeDictionary.WORK;
+import static org.folio.linked.data.util.JsonUtils.JSON_MAPPER;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
import org.folio.linked.data.model.entity.Resource;
import org.folio.linked.data.service.resource.edge.ResourceEdgeService;
import org.springframework.stereotype.Service;
+import tools.jackson.core.type.TypeReference;
+import tools.jackson.databind.JsonNode;
@RequiredArgsConstructor
@Service
@@ -51,7 +49,6 @@ public class ResourceCopyServiceImpl implements ResourceCopyService {
);
private final ResourceEdgeService resourceEdgeService;
- private final ObjectMapper objectMapper;
@Override
public void copyEdgesAndProperties(Resource old, Resource updated) {
@@ -60,7 +57,6 @@ public void copyEdgesAndProperties(Resource old, Resource updated) {
copyProperties(old, updated);
}
- @SneakyThrows
private void copyProperties(Resource from, Resource to) {
if (from.getDoc() == null) {
return;
@@ -69,14 +65,14 @@ private void copyProperties(Resource from, Resource to) {
if (!properties.isEmpty()) {
var toDoc = to.getDoc() == null
? new HashMap>()
- : objectMapper.treeToValue(to.getDoc(), new TypeReference>>() {});
+ : JSON_MAPPER.treeToValue(to.getDoc(), new TypeReference>>() {});
properties.forEach(entry -> toDoc.put(entry.getKey(), entry.getValue()));
- to.setDoc(objectMapper.convertValue(toDoc, JsonNode.class));
+ to.setDoc(JSON_MAPPER.convertValue(toDoc, JsonNode.class));
}
}
- private List>> getProperties(Resource from) throws JsonProcessingException {
- var fromDoc = objectMapper.treeToValue(from.getDoc(), new TypeReference>>() {});
+ private List>> getProperties(Resource from) {
+ var fromDoc = JSON_MAPPER.treeToValue(from.getDoc(), new TypeReference>>() {});
var fromType = from.getTypes()
.stream()
.findFirst()
diff --git a/src/main/java/org/folio/linked/data/service/resource/graph/ResourceGraphServiceImpl.java b/src/main/java/org/folio/linked/data/service/resource/graph/ResourceGraphServiceImpl.java
index 58356c8f9..9c4e28409 100644
--- a/src/main/java/org/folio/linked/data/service/resource/graph/ResourceGraphServiceImpl.java
+++ b/src/main/java/org/folio/linked/data/service/resource/graph/ResourceGraphServiceImpl.java
@@ -9,7 +9,6 @@
import static org.folio.linked.data.util.ResourceUtils.isPreferred;
import static org.springframework.transaction.annotation.Propagation.REQUIRES_NEW;
-import com.fasterxml.jackson.databind.JsonNode;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.function.Function;
@@ -29,6 +28,7 @@
import org.folio.linked.data.util.JsonUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import tools.jackson.databind.JsonNode;
@Log4j2
@Service
diff --git a/src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcAuthorityServiceImpl.java b/src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcAuthorityServiceImpl.java
index 2d60b1b9f..21c047585 100644
--- a/src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcAuthorityServiceImpl.java
+++ b/src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcAuthorityServiceImpl.java
@@ -5,11 +5,8 @@
import static org.folio.linked.data.domain.dto.AssignmentCheckResponseDto.InvalidAssignmentReasonEnum.NOT_VALID_FOR_TARGET;
import static org.folio.linked.data.domain.dto.AssignmentCheckResponseDto.InvalidAssignmentReasonEnum.UNSUPPORTED_MARC;
import static org.folio.linked.data.util.Constants.MSG_NOT_FOUND_IN;
-import static org.folio.linked.data.util.JsonUtils.writeValueAsString;
import static org.folio.linked.data.util.ResourceUtils.setPreferred;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import feign.FeignException;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Function;
@@ -31,6 +28,7 @@
import org.folio.linked.data.repo.ResourceRepository;
import org.folio.linked.data.service.resource.graph.ResourceGraphService;
import org.folio.linked.data.service.resource.graph.SaveGraphResult;
+import org.folio.linked.data.util.JsonUtils;
import org.folio.marc4ld.service.marc2ld.authority.MarcAuthority2ldMapper;
import org.folio.rest.jaxrs.model.ParsedRecord;
import org.folio.rest.jaxrs.model.Record;
@@ -38,6 +36,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.HttpClientErrorException;
@Log4j2
@Service
@@ -46,7 +45,6 @@
public class ResourceMarcAuthorityServiceImpl implements ResourceMarcAuthorityService {
private final SrsClient srsClient;
- private final ObjectMapper objectMapper;
private final ResourceRepository resourceRepo;
private final ResourceModelMapper resourceModelMapper;
private final ResourceGraphService resourceGraphService;
@@ -93,7 +91,7 @@ public Resource importResourceFromSrs(String srsId) {
.map(resourceGraphService::saveMergingGraph)
.map(SaveGraphResult::rootResource)
.orElseThrow(() -> notFoundException(srsId));
- } catch (FeignException.NotFound e) {
+ } catch (HttpClientErrorException e) {
log.error("Failed to convert authority with srsId [{}] into graph resource", srsId, e);
throw notFoundException(srsId);
}
@@ -105,7 +103,7 @@ public Optional fetchResourceFromSrsByIn
return ofNullable(srsClient.getAuthorityByInventoryId(inventoryId))
.flatMap(this::contentAsJsonString)
.flatMap(this::firstAuthorityToModel);
- } catch (FeignException.NotFound e) {
+ } catch (HttpClientErrorException e) {
log.error("Authority with inventoryId [{}] not found in SRS", inventoryId);
return Optional.empty();
}
@@ -115,7 +113,7 @@ private Optional contentAsJsonString(ResponseEntity response) {
return ofNullable(response.getBody())
.map(Record::getParsedRecord)
.map(ParsedRecord::getContent)
- .map(c -> writeValueAsString(c, objectMapper));
+ .map(JsonUtils::writeValueAsString);
}
private Optional firstAuthorityToModel(String marcJson) {
diff --git a/src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcBibServiceImpl.java b/src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcBibServiceImpl.java
index 44ea6bf7b..1c6785035 100644
--- a/src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcBibServiceImpl.java
+++ b/src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcBibServiceImpl.java
@@ -8,15 +8,13 @@
import static org.folio.linked.data.util.Constants.IS_NOT_FOUND;
import static org.folio.linked.data.util.Constants.MSG_NOT_FOUND_IN;
import static org.folio.linked.data.util.Constants.RESOURCE_WITH_GIVEN_ID;
+import static org.folio.linked.data.util.JsonUtils.JSON_MAPPER;
import static org.folio.linked.data.util.ResourceUtils.extractWorkFromInstance;
import static org.folio.linked.data.util.ResourceUtils.getTypeUris;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import feign.FeignException;
import java.util.Map;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
import lombok.extern.log4j.Log4j2;
import org.folio.linked.data.domain.dto.ResourceIdDto;
import org.folio.linked.data.domain.dto.ResourceMarcViewDto;
@@ -45,6 +43,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.HttpClientErrorException;
@Log4j2
@Service
@@ -53,7 +52,6 @@
public class ResourceMarcBibServiceImpl implements ResourceMarcBibService {
private final SrsClient srsClient;
- private final ObjectMapper objectMapper;
private final Ld2MarcMapper ld2MarcMapper;
private final ResourceRepository resourceRepo;
private final ResourceEdgeRepository edgeRepo;
@@ -176,7 +174,7 @@ private RequestProcessingException createSrNotFoundException(String inventoryId)
private Optional> getRecord(String inventoryId) {
try {
return Optional.of(srsClient.getSourceStorageInstanceRecordById(inventoryId));
- } catch (FeignException.NotFound e) {
+ } catch (HttpClientErrorException e) {
return Optional.empty();
}
}
@@ -190,9 +188,8 @@ private Optional getResource(String inve
.flatMap(marcBib2ldMapper::fromMarcJson);
}
- @SneakyThrows
private String toJsonString(Object content) {
- return objectMapper.writeValueAsString(content);
+ return JSON_MAPPER.writeValueAsString(content);
}
private Resource saveAndPublishEvents(org.folio.ld.dictionary.model.Resource modelResource) {
diff --git a/src/main/java/org/folio/linked/data/service/tenant/TenantScopedExecutionService.java b/src/main/java/org/folio/linked/data/service/tenant/TenantScopedExecutionService.java
index 1baa9e36a..a922dc86f 100644
--- a/src/main/java/org/folio/linked/data/service/tenant/TenantScopedExecutionService.java
+++ b/src/main/java/org/folio/linked/data/service/tenant/TenantScopedExecutionService.java
@@ -6,6 +6,7 @@
import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.function.Consumer;
@@ -15,14 +16,17 @@
import org.apache.kafka.common.header.Header;
import org.apache.kafka.common.header.Headers;
import org.folio.spring.FolioExecutionContext;
+import org.folio.spring.integration.XOkapiHeaders;
import org.folio.spring.scope.FolioExecutionContextSetter;
import org.folio.spring.service.SystemUserScopedExecutionService;
import org.folio.spring.tools.context.ExecutionContextBuilder;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Profile;
+import org.springframework.core.retry.RetryException;
+import org.springframework.core.retry.RetryTemplate;
+import org.springframework.core.retry.Retryable;
import org.springframework.messaging.MessageHeaders;
-import org.springframework.retry.RetryContext;
-import org.springframework.retry.support.RetryTemplate;
import org.springframework.stereotype.Service;
@Service
@@ -32,60 +36,58 @@ public class TenantScopedExecutionService {
@Qualifier(DEFAULT_KAFKA_RETRY_TEMPLATE_NAME)
private final RetryTemplate retryTemplate;
private final ExecutionContextBuilder contextBuilder;
+ @SuppressWarnings({"removal"})
private final SystemUserScopedExecutionService executionService;
+ @Value("${folio.okapi-url}")
+ private String okapiUrl;
@SneakyThrows
public T execute(String tenantId, Callable job) {
- try (var fex = new FolioExecutionContextSetter(dbOnlyContext(tenantId))) {
+ try (var fex = new FolioExecutionContextSetter(tenantContext(tenantId))) {
return job.call();
}
}
- public void execute(String tenantId, Runnable job) {
- try (var fex = new FolioExecutionContextSetter(dbOnlyContext(tenantId))) {
- job.run();
- }
- }
-
- public void executeWithRetry(Headers headers, Consumer job, Consumer failureHandler) {
+ public void executeWithRetry(Headers headers, Retryable retryable, Consumer failureHandler) {
try (var fex = new FolioExecutionContextSetter(kafkaFolioExecutionContext(headers))) {
- retryTemplate.execute(
- context -> runJob(job, context),
- context -> handleError(failureHandler, context)
- );
+ retryTemplate.execute(retryable);
+ } catch (RetryException re) {
+ failureHandler.accept(re.getLastException());
}
}
- public void executeWithRetrySystemUser(String tenant,
- Consumer job,
- Consumer failureHandler) {
+ public void executeWithRetrySystemUser(String tenant,
+ Retryable retryable,
+ Consumer failureHandler) {
+ //noinspection removal
executionService.executeSystemUserScoped(tenant, () -> {
- retryTemplate.execute(
- context -> runJob(job, context),
- context -> handleError(failureHandler, context)
- );
+ try {
+ retryTemplate.execute(
+ () -> retryTemplate.execute(retryable)
+ );
+ } catch (Throwable t) {
+ failureHandler.accept(t);
+ }
return null;
});
}
- private boolean runJob(Consumer job, RetryContext context) {
- job.accept(context);
- return true;
- }
-
- private boolean handleError(Consumer failureHandler, RetryContext context) {
- failureHandler.accept(context.getLastThrowable());
- return false;
- }
-
private FolioExecutionContext kafkaFolioExecutionContext(Headers headers) {
var headersMap = Arrays.stream(headers.toArray())
.collect(toMap(Header::key, Header::value, (o, o2) -> o2, (Supplier