Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions components/pom.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import lombok.Setter;
import org.folio.rest.workflow.model.components.DelegateTask;
import org.folio.rest.workflow.model.has.common.HasEmailTaskCommon;
import org.springframework.lang.NonNull;
import org.jspecify.annotations.NonNull;

@Entity
public class EmailTask extends AbstractTask implements DelegateTask, HasEmailTaskCommon {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver;
import org.folio.rest.workflow.model.resolver.DeserializeAsNodeJsonResolver;
import tools.jackson.databind.annotation.JsonTypeIdResolver;

@JsonTypeIdResolver(DeserializeAsNodeJsonResolver.class)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "deserializeAs")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.folio.rest.workflow.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.JsonNode;
import jakarta.persistence.CollectionTable;
import jakarta.persistence.Column;
import jakarta.persistence.Convert;
Expand Down Expand Up @@ -33,6 +32,7 @@
import org.folio.spring.domain.model.AbstractBaseEntity;
import org.hibernate.annotations.ColumnDefault;
import org.springframework.data.annotation.Version;
import tools.jackson.databind.JsonNode;

@Entity
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package org.folio.rest.workflow.model.converter;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.StreamReadFeature;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import jakarta.persistence.AttributeConverter;
import tools.jackson.core.JacksonException;
import tools.jackson.core.StreamReadFeature;
import tools.jackson.core.type.TypeReference;
import tools.jackson.databind.DeserializationFeature;
import tools.jackson.databind.MapperFeature;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;

/**
* This converts the value into a JSON representation stored as a single string tin the database.
* This converts the value into a JSON representation stored as a single string in the database.
*
* Implementations need only provide the T.
* Each implementation is expected to be used as-is as a JSON string value without needing the type details.
*/
public abstract class AbstractConverter<T> implements AttributeConverter<T, String> {

Expand All @@ -27,7 +30,7 @@ public String convertToDatabaseColumn(T attribute) {

try {
return objectMapper.writeValueAsString(attribute);
} catch (JsonProcessingException e) {
} catch (JacksonException e) {
throw new RuntimeException(e.getMessage());
}
}
Expand All @@ -38,11 +41,13 @@ public T convertToEntityAttribute(String dbData) {

try {
return objectMapper.readValue(dbData, getTypeReference());
} catch (JsonProcessingException e) {
} catch (JacksonException e) {
throw new RuntimeException(e.getMessage());
}
}

public abstract TypeReference<T> getTypeReference();
public TypeReference<T> getTypeReference() {
return new TypeReference<T>() {};
}

}
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package org.folio.rest.workflow.model.converter;

import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.persistence.Converter;
import java.util.List;
import org.folio.rest.workflow.dto.Comparison;

/**
* Comparison list converter.
*/
@Converter
public class ComparisonListConverter extends AbstractConverter<List<Comparison>> {

@Override
public TypeReference<List<Comparison>> getTypeReference() {
return new TypeReference<List<Comparison>>() {};
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.folio.rest.workflow.model.converter;

import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.persistence.Converter;
import org.folio.rest.workflow.model.EmbeddedVariable;

Expand All @@ -10,9 +9,4 @@
@Converter
public class EmbeddedVariableConverter extends AbstractConverter<EmbeddedVariable> {

@Override
public TypeReference<EmbeddedVariable> getTypeReference() {
return new TypeReference<EmbeddedVariable>() {};
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.folio.rest.workflow.model.converter;

import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.persistence.Converter;
import java.util.List;
import org.folio.rest.workflow.enums.InputAttribute;
Expand All @@ -11,9 +10,4 @@
@Converter
public class InputAttributeListConverter extends AbstractConverter<List<InputAttribute>> {

@Override
public TypeReference<List<InputAttribute>> getTypeReference() {
return new TypeReference<List<InputAttribute>>() {};
}

}
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package org.folio.rest.workflow.model.converter;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import jakarta.persistence.Converter;
import tools.jackson.databind.JsonNode;

/**
* JSON Node converted.
*/
@Converter
public class JsonNodeConverter extends AbstractConverter<JsonNode> {

@Override
public TypeReference<JsonNode> getTypeReference() {
return new TypeReference<JsonNode>() {};
}

}
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package org.folio.rest.workflow.model.converter;

import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.persistence.Converter;
import java.util.List;
import org.folio.rest.workflow.dto.Mapping;

/**
* Mapping list converter.
*/
@Converter
public class MappingListConverter extends AbstractConverter<List<Mapping>> {

@Override
public TypeReference<List<Mapping>> getTypeReference() {
return new TypeReference<List<Mapping>>() {};
}

}
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package org.folio.rest.workflow.model.converter;

import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.persistence.Converter;
import org.folio.rest.workflow.dto.Request;

/**
* Request converter.
*/
@Converter
public class RequestConverter extends AbstractConverter<Request> {

@Override
public TypeReference<Request> getTypeReference() {
return new TypeReference<Request>() {};
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.folio.rest.workflow.model.converter;

import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.persistence.Converter;
import java.util.List;

Expand All @@ -10,9 +9,4 @@
@Converter
public class StringListConverter extends AbstractConverter<List<String>> {

@Override
public TypeReference<List<String>> getTypeReference() {
return new TypeReference<List<String>>() {};
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.folio.rest.workflow.model.has.common;

import com.fasterxml.jackson.databind.JsonNode;
import java.util.Map;
import org.folio.rest.workflow.model.Setup;
import tools.jackson.databind.JsonNode;

/**
* This interface provides common methods for {@link org.folio.rest.workflow.model.Workflow Workflow}.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
import static java.util.Map.entry;

import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.databind.DatabindContext;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.jsontype.impl.TypeIdResolverBase;
import java.util.Map;
import org.folio.rest.workflow.model.CompressFileTask;
import org.folio.rest.workflow.model.Condition;
Expand Down Expand Up @@ -34,12 +31,18 @@
import org.folio.rest.workflow.model.Subprocess;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import tools.jackson.core.JacksonException;
import tools.jackson.databind.DatabindContext;
import tools.jackson.databind.JavaType;
import tools.jackson.databind.jsontype.impl.TypeIdResolverBase;

/**
* Resolve the type from the `deserializeAs` field from a `Node`.
*/
public class DeserializeAsNodeJsonResolver extends TypeIdResolverBase {

private static final long serialVersionUID = 30422936630293L;

/**
* A map of classes that are allowed to be deserialized.
*/
Expand Down Expand Up @@ -73,13 +76,13 @@ public class DeserializeAsNodeJsonResolver extends TypeIdResolverBase {
private static final Logger logger = LoggerFactory.getLogger(DeserializeAsNodeJsonResolver.class);

@Override
public String idFromValue(Object value) {
public String idFromValue(DatabindContext ctxt, Object value) throws JacksonException {
return value.getClass().getSimpleName();
}

@Override
public String idFromValueAndType(Object value, Class<?> suggestedType) {
return idFromValue(value);
public String idFromValueAndType(DatabindContext ctxt, Object value, Class<?> suggestedType) throws JacksonException {
return idFromValue(ctxt, value);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import static org.springframework.test.util.ReflectionTestUtils.getField;
import static org.springframework.test.util.ReflectionTestUtils.setField;

import com.fasterxml.jackson.databind.JsonNode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand All @@ -20,6 +19,7 @@
import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import tools.jackson.databind.JsonNode;

@ExtendWith(MockitoExtension.class)
class WorkflowTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

import com.fasterxml.jackson.core.type.TypeReference;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import tools.jackson.core.type.TypeReference;

class AbstractConverterTest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@
import static org.mockito.Mockito.when;

import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.databind.DatabindContext;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.stream.Stream;
import java.util.stream.Stream.Builder;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -22,6 +18,11 @@
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import tools.jackson.databind.DatabindContext;
import tools.jackson.databind.JavaType;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;

@ExtendWith(MockitoExtension.class)
class DeserializeAsNodeJsonResolverTest {
Expand All @@ -36,19 +37,19 @@ class DeserializeAsNodeJsonResolverTest {

@BeforeEach
void beforeEach() {
mapper = new ObjectMapper();
mapper = JsonMapper.builder().build();
}

@Test
void idFromValueWorksTest() {
String result = deserializeAsJsonResolver.idFromValue(new String());
String result = deserializeAsJsonResolver.idFromValue(null, new String());

assertEquals(String.class.getSimpleName(), result);
}

@Test
void idFromValueAndTypeWorksTest() {
String result = deserializeAsJsonResolver.idFromValueAndType(new String(), JsonNode.class);
String result = deserializeAsJsonResolver.idFromValueAndType(null, new String(), JsonNode.class);

assertEquals(String.class.getSimpleName(), result);
}
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>org.folio</groupId>
<artifactId>spring-module-core</artifactId>
<version>2.1.0-SNAPSHOT</version>
<version>2.2.0-SNAPSHOT</version>
</parent>

<artifactId>mod-workflow</artifactId>
Expand Down
Loading
Loading