You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2015/12/06 18:59:51 UTC
incubator-johnzon git commit: adding class/package accessor for
annotation in DecoratedType
Repository: incubator-johnzon
Updated Branches:
refs/heads/master b65d149a5 -> fcf2d46b6
adding class/package accessor for annotation in DecoratedType
Project: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/commit/fcf2d46b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/tree/fcf2d46b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/diff/fcf2d46b
Branch: refs/heads/master
Commit: fcf2d46b666bea8cae69418e83e5a6698386a9c5
Parents: b65d149
Author: Romain Manni-Bucau <rm...@gmail.com>
Authored: Sun Dec 6 19:00:21 2015 +0100
Committer: Romain Manni-Bucau <rm...@gmail.com>
Committed: Sun Dec 6 19:00:21 2015 +0100
----------------------------------------------------------------------
.../apache/johnzon/jsonb/JsonbAccessMode.java | 14 ++++++++++++--
.../johnzon/mapper/access/AccessMode.java | 1 +
.../johnzon/mapper/access/FieldAccessMode.java | 7 +++++++
.../mapper/access/FieldAndMethodAccessMode.java | 6 ++++++
.../johnzon/mapper/access/MethodAccessMode.java | 7 +++++++
.../johnzon/mapper/reflection/Mappings.java | 20 ++++++++++++++++++++
6 files changed, 53 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/fcf2d46b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java
----------------------------------------------------------------------
diff --git a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java
index 0bd3443..948374b 100644
--- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java
+++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JsonbAccessMode.java
@@ -281,7 +281,7 @@ public class JsonbAccessMode implements AccessMode {
// we are visible
final JsonbProperty property = value.getAnnotation(JsonbProperty.class);
- final JsonbNillable nillable = value.getAnnotation(JsonbNillable.class);
+ final JsonbNillable nillable = value.getClassOrPackageAnnotation(JsonbNillable.class);
final boolean isNillable = nillable != null || (property != null && property.nillable());
final JsonbTypeAdapter adapter = value.getAnnotation(JsonbTypeAdapter.class);
final JsonbDateFormat dateFormat = value.getAnnotation(JsonbDateFormat.class);
@@ -314,6 +314,11 @@ public class JsonbAccessMode implements AccessMode {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ return value.getClassOrPackageAnnotation(clazz);
+ }
+
+ @Override
public Converter<?> findConverter() {
return converter;
}
@@ -341,7 +346,7 @@ public class JsonbAccessMode implements AccessMode {
// we are visible
final JsonbProperty property = value.getAnnotation(JsonbProperty.class);
- final JsonbNillable nillable = value.getAnnotation(JsonbNillable.class);
+ final JsonbNillable nillable = value.getClassOrPackageAnnotation(JsonbNillable.class);
final boolean isNillable = nillable != null || (property != null && property.nillable());
final JsonbTypeAdapter adapter = value.getAnnotation(JsonbTypeAdapter.class);
final JsonbDateFormat dateFormat = value.getAnnotation(JsonbDateFormat.class);
@@ -374,6 +379,11 @@ public class JsonbAccessMode implements AccessMode {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ return value.getClassOrPackageAnnotation(clazz);
+ }
+
+ @Override
public Converter<?> findConverter() {
return converter;
}
http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/fcf2d46b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/AccessMode.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/AccessMode.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/AccessMode.java
index 038c9a9..8a3a359 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/AccessMode.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/AccessMode.java
@@ -28,6 +28,7 @@ public interface AccessMode {
interface DecoratedType {
Type getType();
<T extends Annotation> T getAnnotation(Class<T> clazz);
+ <T extends Annotation> T getClassOrPackageAnnotation(Class<T> clazz);
Converter<?> findConverter();
boolean isNillable();
}
http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/fcf2d46b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java
index 70c456a..6fab4d7 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAccessMode.java
@@ -105,6 +105,13 @@ public class FieldAccessMode extends BaseAccessMode {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ final Class<?> declaringClass = field.getDeclaringClass();
+ final T annotation = declaringClass.getAnnotation(clazz);
+ return annotation == null ? declaringClass.getPackage().getAnnotation(clazz) : annotation;
+ }
+
+ @Override
public Converter<?> findConverter() {
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/fcf2d46b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java
index 1a27c52..3d4b69f 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/FieldAndMethodAccessMode.java
@@ -74,6 +74,12 @@ public class FieldAndMethodAccessMode extends BaseAccessMode {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ final T found = type1.getClassOrPackageAnnotation(clazz);
+ return found == null ? type2.getClassOrPackageAnnotation(clazz) : found;
+ }
+
+ @Override
public Converter<?> findConverter() {
final Converter<?> converter = type1.findConverter();
return converter != null ? converter : type2.findConverter();
http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/fcf2d46b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/MethodAccessMode.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/MethodAccessMode.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/MethodAccessMode.java
index df17a56..5955fc0 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/MethodAccessMode.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/access/MethodAccessMode.java
@@ -109,6 +109,13 @@ public class MethodAccessMode extends BaseAccessMode {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ final Class<?> declaringClass = method.getDeclaringClass();
+ final T annotation = declaringClass.getAnnotation(clazz);
+ return annotation == null ? declaringClass.getPackage().getAnnotation(clazz) : annotation;
+ }
+
+ @Override
public Converter<?> findConverter() {
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/fcf2d46b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/reflection/Mappings.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/reflection/Mappings.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/reflection/Mappings.java
index 49c5d88..6bb1f1f 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/reflection/Mappings.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/reflection/Mappings.java
@@ -523,6 +523,11 @@ public class Mappings {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ return null;
+ }
+
+ @Override
public Converter<?> findConverter() {
return null;
}
@@ -592,6 +597,11 @@ public class Mappings {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ return null;
+ }
+
+ @Override
public Converter<?> findConverter() {
return null;
}
@@ -647,6 +657,11 @@ public class Mappings {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ return null;
+ }
+
+ @Override
public Converter<?> findConverter() {
for (final AccessMode.Reader r : delegates) {
final Converter<?> converter = r.findConverter();
@@ -701,6 +716,11 @@ public class Mappings {
}
@Override
+ public <T extends Annotation> T getClassOrPackageAnnotation(final Class<T> clazz) {
+ return null;
+ }
+
+ @Override
public Converter<?> findConverter() {
for (final AccessMode.Writer r : delegates) {
final Converter<?> converter = r.findConverter();