diff --git a/neverpile-commons-actuator/src/main/java/com/neverpile/common/actuate/InfoContributorAutoConfiguration.java b/neverpile-commons-actuator/src/main/java/com/neverpile/common/actuate/InfoContributorAutoConfiguration.java
index 066f2f5..983a455 100644
--- a/neverpile-commons-actuator/src/main/java/com/neverpile/common/actuate/InfoContributorAutoConfiguration.java
+++ b/neverpile-commons-actuator/src/main/java/com/neverpile/common/actuate/InfoContributorAutoConfiguration.java
@@ -4,6 +4,7 @@
import org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties;
import org.springframework.boot.actuate.info.GitInfoContributor;
import org.springframework.boot.actuate.info.InfoContributor;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
@@ -11,15 +12,13 @@
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.info.GitProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
/**
* Auto-configuration for info contributors.
*/
-@Configuration(
- proxyBeanMethods = false)
+@AutoConfiguration
@AutoConfigureAfter(ProjectInfoAutoConfiguration.class)
@EnableConfigurationProperties(InfoContributorProperties.class)
public class InfoContributorAutoConfiguration {
diff --git a/neverpile-commons-authorization/pom.xml b/neverpile-commons-authorization/pom.xml
index 3e18991..489c245 100644
--- a/neverpile-commons-authorization/pom.xml
+++ b/neverpile-commons-authorization/pom.xml
@@ -26,7 +26,7 @@
org.springframework.boot
- spring-boot-starter-oauth2-resource-server
+ spring-boot-starter-security-oauth2-resource-server
true
diff --git a/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/api/AuthorizationService.java b/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/api/AuthorizationService.java
index cf67ad5..cdc3808 100644
--- a/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/api/AuthorizationService.java
+++ b/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/api/AuthorizationService.java
@@ -3,7 +3,6 @@
import java.util.List;
import java.util.Set;
-import org.springframework.boot.web.servlet.server.Session;
import org.springframework.http.HttpRequest;
import com.neverpile.common.authorization.policy.AccessPolicy;
@@ -17,7 +16,7 @@
*
* Further sources of input for decisions will usually be rights, roles scopes etc. of the principal
* attempting the access as well as possibly other information like the current {@link HttpRequest},
- * the {@link Session}, configuration information (e.g. an {@link AccessPolicy}) or other factors.
+ * the Session, configuration information (e.g. an {@link AccessPolicy}) or other factors.
* However, these sources are not mandated by this interface and must thus be propagated by other
* means.
*/
diff --git a/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/AccessPolicy.java b/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/AccessPolicy.java
index 475596e..7af2c5b 100644
--- a/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/AccessPolicy.java
+++ b/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/AccessPolicy.java
@@ -1,5 +1,6 @@
package com.neverpile.common.authorization.policy;
+import java.io.Serial;
import java.io.Serializable;
import java.time.Instant;
import java.util.ArrayList;
@@ -39,6 +40,7 @@
* editors, log output etc. to describe the policy in human-readable form.
*/
public class AccessPolicy implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private static final String VERISON_1 = "2018-09-26";
diff --git a/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/impl/JwtClaimAuthenticationMatcher.java b/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/impl/JwtClaimAuthenticationMatcher.java
index 49b8adc..3430d85 100644
--- a/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/impl/JwtClaimAuthenticationMatcher.java
+++ b/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/impl/JwtClaimAuthenticationMatcher.java
@@ -8,7 +8,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.context.expression.MapAccessor;
import org.springframework.expression.AccessException;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.EvaluationException;
@@ -18,14 +17,15 @@
import org.springframework.expression.TypedValue;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.DataBindingMethodResolver;
+import org.springframework.expression.spel.support.MapAccessor;
import org.springframework.expression.spel.support.SimpleEvaluationContext;
import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
import org.springframework.stereotype.Component;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.node.ArrayNode;
+import tools.jackson.databind.node.ObjectNode;
@Component
@ConditionalOnClass(JwtAuthenticationToken.class)
@@ -68,8 +68,8 @@ public TypedValue read(final EvaluationContext context, final Object target, fin
private Object nodeToValue(final JsonNode v) {
if (v.isMissingNode())
return null;
- if (v.isTextual())
- return v.asText();
+ if (v.isString())
+ return v.asString();
if (v.isFloatingPointNumber())
return v.asDouble();
if (v.isNumber())
@@ -107,8 +107,7 @@ public void write(final EvaluationContext context, final Object target, final St
@Override
public boolean matchAuthentication(final Authentication authentication, final List subjects) {
- if (authentication instanceof JwtAuthenticationToken) {
- JwtAuthenticationToken jwtToken = (JwtAuthenticationToken) authentication;
+ if (authentication instanceof JwtAuthenticationToken jwtToken) {
// expose all claims as variables
Map claims = jwtToken.getToken().getClaims();
@@ -130,8 +129,8 @@ public boolean matchAuthentication(final Authentication authentication, final Li
Object result = expression.getValue(ctx, Object.class);
if (null == result) {
outcome = false;
- } else if (result instanceof Boolean) {
- outcome = (Boolean) result;
+ } else if (result instanceof Boolean booleanValue) {
+ outcome = booleanValue;
} else {
outcome = true;
}
diff --git a/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/impl/PolicyBasedAuthorizationService.java b/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/impl/PolicyBasedAuthorizationService.java
index 696fe6e..a9b00f8 100644
--- a/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/impl/PolicyBasedAuthorizationService.java
+++ b/neverpile-commons-authorization/src/main/java/com/neverpile/common/authorization/policy/impl/PolicyBasedAuthorizationService.java
@@ -19,8 +19,7 @@
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
import com.neverpile.common.authorization.api.Action;
import com.neverpile.common.authorization.api.AuthorizationContext;
import com.neverpile.common.authorization.api.AuthorizationService;
@@ -265,18 +264,10 @@ private boolean matchesWildcardAction(final String key, final Collection
private boolean satisfiesConditions(final AccessRule rule, final AuthorizationContext conditionContext) {
boolean m = rule.getConditions().matches(conditionContext);
-
if (LOGGER.isDebugEnabled())
- try {
- LOGGER.debug(" Rule '{}' the context {} the conditions {}", rule.getName(),
- m ? "SATISFIES" : "does not satisfy",
- new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(rule.getConditions()));
- } catch (JsonProcessingException e) {
- LOGGER.debug(
- " Rule '{}' the context {} the conditions (but could not write the conditions as JSON, because of {})",
- rule.getName(), m ? "SATISFIES" : "does not satisfy", e.getMessage());
- }
-
+ LOGGER.debug(" Rule '{}' the context {} the conditions {}", rule.getName(),
+ m ? "SATISFIES" : "does not satisfy",
+ new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(rule.getConditions()));
return m;
}
}
diff --git a/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/Config.java b/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/Config.java
index 9f77129..218dd8e 100644
--- a/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/Config.java
+++ b/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/Config.java
@@ -1,25 +1,21 @@
package com.neverpile.authorization;
import org.springframework.boot.SpringBootConfiguration;
-import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
+import org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
-import com.fasterxml.jackson.databind.util.StdDateFormat;
import com.neverpile.common.condition.config.ConditionModule;
+import tools.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationModule;
+
@SpringBootConfiguration
-@Import({ConditionModule.class
+@Import({
+ ConditionModule.class
})
public class Config {
@Bean
- Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
- return b -> {
- b.annotationIntrospector(new JacksonAnnotationIntrospector());
- b.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
- b.dateFormat(new StdDateFormat());
- };
+ JsonMapperBuilderCustomizer jacksonCustomizer() {
+ return builder -> builder.addModule(new JakartaXmlBindAnnotationModule());
}
}
diff --git a/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/config/JwtClaimAuthenticationMatcherTest.java b/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/config/JwtClaimAuthenticationMatcherTest.java
index efc0729..f0c8374 100644
--- a/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/config/JwtClaimAuthenticationMatcherTest.java
+++ b/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/config/JwtClaimAuthenticationMatcherTest.java
@@ -12,7 +12,7 @@
import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
import com.neverpile.common.authorization.policy.impl.JwtClaimAuthenticationMatcher;
public class JwtClaimAuthenticationMatcherTest {
diff --git a/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/config/PolicyPersistenceTest.java b/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/config/PolicyPersistenceTest.java
index 482ce6f..f16cbc3 100644
--- a/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/config/PolicyPersistenceTest.java
+++ b/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/config/PolicyPersistenceTest.java
@@ -12,8 +12,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.json.JsonTest;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.exc.UnrecognizedPropertyException;
import com.neverpile.common.authorization.policy.AccessPolicy;
import com.neverpile.common.authorization.policy.AccessRule;
import com.neverpile.common.authorization.policy.Effect;
diff --git a/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/policy/impl/PolicyBasedAuthorizationServiceTest.java b/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/policy/impl/PolicyBasedAuthorizationServiceTest.java
index 8ec3cd6..b5406e6 100644
--- a/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/policy/impl/PolicyBasedAuthorizationServiceTest.java
+++ b/neverpile-commons-authorization/src/test/java/com/neverpile/authorization/policy/impl/PolicyBasedAuthorizationServiceTest.java
@@ -11,10 +11,10 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.security.authentication.TestingAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
import com.neverpile.common.authorization.api.Action;
import com.neverpile.common.authorization.api.Permission;
@@ -34,7 +34,7 @@ public class PolicyBasedAuthorizationServiceTest {
@Autowired
PolicyBasedAuthorizationService authService;
- @MockBean
+ @MockitoBean
PolicyRepository mockPolicyRepository;
private final EmptyAuthorizationContext eac = new EmptyAuthorizationContext();
diff --git a/neverpile-commons-condition/pom.xml b/neverpile-commons-condition/pom.xml
index 650dc0e..9dc9b66 100644
--- a/neverpile-commons-condition/pom.xml
+++ b/neverpile-commons-condition/pom.xml
@@ -20,6 +20,11 @@
spring-boot-starter-json
+
+ tools.jackson.module
+ jackson-module-jakarta-xmlbind-annotations
+
+
org.springframework.boot
spring-boot-starter-test
diff --git a/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/FalseCondition.java b/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/FalseCondition.java
index 8213c00..0720450 100644
--- a/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/FalseCondition.java
+++ b/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/FalseCondition.java
@@ -12,6 +12,6 @@
public class FalseCondition extends AbstractTargetListCondition {
@Override
protected boolean eval(final Specifier s, final Object value) {
- return null == value || (value instanceof Boolean ? !((Boolean) value) : !Boolean.parseBoolean(value.toString().trim()));
+ return null == value || (value instanceof Boolean b ? !b : !Boolean.parseBoolean(value.toString().trim()));
}
}
diff --git a/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/TrueCondition.java b/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/TrueCondition.java
index b2f6e53..9c5d528 100644
--- a/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/TrueCondition.java
+++ b/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/TrueCondition.java
@@ -14,6 +14,6 @@ public class TrueCondition extends AbstractTargetListCondition {
protected boolean eval(final Specifier s, final Object value) {
return null == value ?
false :
- value instanceof Boolean ? ((Boolean) value) : Boolean.valueOf(value.toString().trim());
+ value instanceof Boolean b ? b : Boolean.valueOf(value.toString().trim());
}
}
diff --git a/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/config/ConditionModule.java b/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/config/ConditionModule.java
index 4ffa75b..ab5878a 100644
--- a/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/config/ConditionModule.java
+++ b/neverpile-commons-condition/src/main/java/com/neverpile/common/condition/config/ConditionModule.java
@@ -2,8 +2,8 @@
import static java.util.stream.Collectors.toMap;
-import java.io.IOException;
import java.io.Serial;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -16,34 +16,36 @@
import org.springframework.context.annotation.Import;
import org.springframework.stereotype.Component;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.core.Version;
-import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.DeserializationConfig;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.KeyDeserializer;
-import com.fasterxml.jackson.databind.Module;
-import com.fasterxml.jackson.databind.SerializationConfig;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.deser.BeanDeserializer;
-import com.fasterxml.jackson.databind.deser.BeanDeserializerBase;
-import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier;
-import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.ser.BeanSerializer;
-import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.core.JsonParser;
+import tools.jackson.core.JsonToken;
+import tools.jackson.core.Version;
+import tools.jackson.databind.BeanDescription;
+import tools.jackson.databind.DeserializationConfig;
+import tools.jackson.databind.DeserializationContext;
+import tools.jackson.databind.JavaType;
+import tools.jackson.databind.ValueDeserializer;
+import tools.jackson.databind.ValueSerializer;
+import tools.jackson.databind.KeyDeserializer;
+import tools.jackson.databind.JacksonModule;
+import tools.jackson.databind.SerializationConfig;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.deser.ValueDeserializerModifier;
+import tools.jackson.databind.deser.bean.BeanDeserializer;
+import tools.jackson.databind.exc.UnrecognizedPropertyException;
+import tools.jackson.databind.module.SimpleModule;
+import tools.jackson.databind.ser.BeanPropertyWriter;
+import tools.jackson.databind.ser.BeanSerializer;
+import tools.jackson.databind.ser.UnrolledBeanSerializer;
+import tools.jackson.databind.ser.ValueSerializerModifier;
+
import com.neverpile.common.condition.CompositeCondition;
import com.neverpile.common.condition.Condition;
import com.neverpile.common.condition.CoreConditionRegistry;
import com.neverpile.common.specifier.Specifier;
/**
- * A Jackson {@link Module} extending Jackson with capabilities for the marshalling and
+ * A Jackson {@link JacksonModule} extending Jackson with capabilities for the marshalling and
* unmarshalling of {@link Condition}s.
*
* The {@link Condition} type hierarchy is supposed to be extensible. To that end, a
@@ -68,10 +70,10 @@ public ConditionModule() {
setSerializerModifier(new ConditionSerializerModifier());
setDeserializerModifier(new ConditionDeserializerModifier());
- addKeySerializer(Specifier.class, new JsonSerializer<>() {
+ addKeySerializer(Specifier.class, new ValueSerializer<>() {
@Override
- public void serialize(final Specifier value, final JsonGenerator gen, final SerializerProvider serializers) throws IOException {
- gen.writeFieldName(value.asString());
+ public void serialize(final Specifier value, final JsonGenerator gen, final SerializationContext serializers) {
+ gen.writeName(value.asString());
}
});
addKeyDeserializer(Specifier.class, new KeyDeserializer() {
@@ -92,8 +94,8 @@ private void init() {
.collect(toMap(Map.Entry::getValue, Map.Entry::getKey)); // invert mapping
}
- public class ConditionSerializerModifier extends BeanSerializerModifier {
- public class CompositeConditionSerializer extends BeanSerializer {
+ public class ConditionSerializerModifier extends ValueSerializerModifier {
+ public class CompositeConditionSerializer extends BeanSerializer implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@@ -101,10 +103,13 @@ public CompositeConditionSerializer(final BeanSerializer serializer) {
super(serializer);
}
+ public CompositeConditionSerializer(UnrolledBeanSerializer serializer) {
+ super(serializer);
+ }
+
@Override
- protected void serializeFields(final Object bean, final JsonGenerator gen, final SerializerProvider provider)
- throws IOException {
- super.serializeFields(bean, gen, provider);
+ protected void _serializePropertiesNoView(final Object bean, final JsonGenerator gen, final SerializationContext provider, BeanPropertyWriter[] props) {
+ super._serializePropertiesNoView(bean, gen, provider, props);
CompositeCondition> dto = (CompositeCondition>) bean;
@@ -120,10 +125,10 @@ protected void serializeFields(final Object bean, final JsonGenerator gen, final
throw new IllegalArgumentException(
"Cannot serialize condition of type " + c.getClass() + ": name cannot be resolved");
- provider.defaultSerializeField(name, c, gen);
+ provider.defaultSerializeProperty(name, c, gen);
}
} else {
- gen.writeFieldName("conditions");
+ gen.writeName("conditions");
gen.writeStartArray();
for (Condition c : dto.getConditions()) {
String name = conditionNameByClass.get(c.getClass());
@@ -133,7 +138,7 @@ protected void serializeFields(final Object bean, final JsonGenerator gen, final
"Cannot serialize condition of type " + c.getClass() + ": name cannot be resolved");
gen.writeStartObject();
- provider.defaultSerializeField(name, c, gen);
+ provider.defaultSerializeProperty(name, c, gen);
gen.writeEndObject();
}
gen.writeEndArray();
@@ -142,35 +147,35 @@ protected void serializeFields(final Object bean, final JsonGenerator gen, final
}
@Override
- public JsonSerializer> modifySerializer(final SerializationConfig config, final BeanDescription beanDesc,
- final JsonSerializer> serializer) {
- if (CompositeCondition.class.isAssignableFrom(beanDesc.getBeanClass())) {
+ public ValueSerializer> modifySerializer(final SerializationConfig config, final BeanDescription.Supplier beanDesc,
+ final ValueSerializer> serializer) {
+ if (CompositeCondition.class.isAssignableFrom(beanDesc.getBeanClass()) && serializer instanceof BeanSerializer) {
return new CompositeConditionSerializer((BeanSerializer) serializer);
+ } else if (CompositeCondition.class.isAssignableFrom(beanDesc.getBeanClass()) && serializer instanceof UnrolledBeanSerializer) {
+ return new CompositeConditionSerializer((UnrolledBeanSerializer) serializer);
}
return serializer;
}
}
- public class ConditionDeserializerModifier extends BeanDeserializerModifier {
+ public class ConditionDeserializerModifier extends ValueDeserializerModifier {
- public class CompositeConditionDeserializer extends BeanDeserializer {
+ public class CompositeConditionDeserializer extends BeanDeserializer implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
- public CompositeConditionDeserializer(final BeanDeserializerBase base) {
+ public CompositeConditionDeserializer(final BeanDeserializer base) {
super(base);
-
}
- private void deserializeNamedCondition(final JsonParser p, final DeserializationContext ctxt, final Object beanOrClass, final String conditionName)
- throws IOException {
+ private void deserializeNamedCondition(final JsonParser p, final DeserializationContext ctxt, final Object beanOrClass, final String conditionName) {
Class extends Condition> conditionClass = conditionClassByName.get(conditionName);
if (null == conditionClass)
throw UnrecognizedPropertyException.from(p, beanOrClass, conditionName,
new ArrayList<>(conditionClassByName.keySet()));
else {
JavaType valueType = ctxt.getTypeFactory().constructType(conditionClass);
- JsonDeserializer