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();