
org.javersion.object.mapping.JacksonMappingResolver Maven / Gradle / Ivy
The newest version!
package org.javersion.object.mapping;
import static com.google.common.base.Strings.isNullOrEmpty;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toMap;
import java.util.Map;
import javax.annotation.Nonnull;
import org.javersion.reflect.*;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
public class JacksonMappingResolver implements MappingResolver {
@Nonnull
@Override
public Result delegateValue(MethodDescriptor method) {
JsonValue jsonValue = method.getAnnotation(JsonValue.class);
if (jsonValue != null && jsonValue.value()) {
return Result.of(method);
}
return Result.notFound();
}
@Nonnull
@Override
public Result creator(T methodOrConstructor) {
if (methodOrConstructor.hasAnnotation(JsonCreator.class)) {
return Result.of(methodOrConstructor);
}
return Result.notFound();
}
@Nonnull
@Override
public Result alias(TypeDescriptor type) {
JsonTypeName typeName = type.getAnnotation(JsonTypeName.class);
if (typeName != null && !isNullOrEmpty(typeName.value())) {
return Result.of(typeName.value());
}
return Result.notFound();
}
@Nonnull
@Override
public Result
© 2015 - 2025 Weber Informatics LLC | Privacy Policy