aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/fasterxml/jackson/databind/introspect
diff options
context:
space:
mode:
authorTatu Saloranta <tatu.saloranta@iki.fi>2019-11-24 15:20:15 -0800
committerTatu Saloranta <tatu.saloranta@iki.fi>2019-11-24 15:20:15 -0800
commitdd5f6dee81423b29a8b38baa2320143b5bb34769 (patch)
tree71089255aa6063d73d04efbcc72dc68fa97b2c4f /src/main/java/com/fasterxml/jackson/databind/introspect
parent9c14c46a66cff15d8d90266f40e641271e312c78 (diff)
downloadjackson-databind-dd5f6dee81423b29a8b38baa2320143b5bb34769.tar.gz
Fix #2352
Diffstat (limited to 'src/main/java/com/fasterxml/jackson/databind/introspect')
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java7
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java24
2 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java b/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java
index aa288b9e1..60efe6e52 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java
@@ -617,6 +617,13 @@ public class AnnotationIntrospectorPair
}
@Override
+ public void findEnumAliases(Class<?> enumType, Enum<?>[] enumValues, String[][] aliases) {
+ // reverse order to give _primary higher precedence
+ _secondary.findEnumAliases(enumType, enumValues, aliases);
+ _primary.findEnumAliases(enumType, enumValues, aliases);
+ }
+
+ @Override
public Enum<?> findDefaultEnumValue(Class<Enum<?>> enumCls) {
Enum<?> en = _primary.findDefaultEnumValue(enumCls);
return (en == null) ? _secondary.findDefaultEnumValue(enumCls) : en;
diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java b/src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java
index 55c11d187..cbe026598 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java
@@ -234,6 +234,30 @@ public class JacksonAnnotationIntrospector
return names;
}
+ @Override // since 2.11
+ public void findEnumAliases(Class<?> enumType, Enum<?>[] enumValues, String[][] aliasList)
+ {
+ // Main complication: discrepancy between Field that represent enum value,
+ // Enum abstraction; joint by name but not reference
+ for (Field f : ClassUtil.getDeclaredFields(enumType)) {
+ if (f.isEnumConstant()) {
+ JsonAlias aliasAnnotation = f.getAnnotation(JsonAlias.class);
+ if (aliasAnnotation != null) {
+ String[] aliases = aliasAnnotation.value();
+ if (aliases.length != 0) {
+ final String name = f.getName();
+ // Find matching enum (could create Ma
+ for (int i = 0, end = enumValues.length; i < end; ++i) {
+ if (name.equals(enumValues[i].name())) {
+ aliasList[i] = aliases;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
/**
* Finds the Enum value that should be considered the default value, if possible.
* <p>