You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/10/30 15:03:21 UTC

[isis] 02/07: ISIS-2158: removing jdo-api from 'applib' and 'metamodel'

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit f3cb3a594888497577568f03ac0bd5a85f2ac85f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Oct 30 10:58:29 2019 +0100

    ISIS-2158: removing jdo-api from 'applib' and 'metamodel'
---
 core/metamodel/pom.xml                              | 14 +++++++-------
 .../apache/isis/metamodel/facets/Annotations.java   | 17 +++++++++++------
 .../apache/isis/metamodel/facets/FacetFactory.java  |  2 +-
 .../annotation/HomePageFacetAnnotationFactory.java  | 10 +++++++---
 .../metamodel/facets/jaxb/JaxbFacetFactory.java     | 21 +++++++++++++++------
 .../order/annotprop/MemberOrderFacetFactory.java    |  9 +++++++--
 .../param/DeriveFacetsPostProcessor.java            | 20 +++++++++++++++++---
 .../JdoNotPersistentAnnotationFacetFactory.java     | 10 ++++++++--
 .../JdoPrimaryKeyAnnotationFacetFactory.java        | 10 ++++++++--
 9 files changed, 81 insertions(+), 32 deletions(-)

diff --git a/core/metamodel/pom.xml b/core/metamodel/pom.xml
index b92cd14..7059b95 100644
--- a/core/metamodel/pom.xml
+++ b/core/metamodel/pom.xml
@@ -56,13 +56,13 @@
     <dependencies>
     
         <!-- JDO API (non transient, provided by plugin) -->
-        <dependency>
-            <groupId>javax.jdo</groupId>
-            <artifactId>jdo-api</artifactId>
-            <version>${jdo-api.version}</version>
-            <!-- provided by plugins -->
-            <scope>provided</scope>
-        </dependency>
+<!--         <dependency> -->
+<!--             <groupId>javax.jdo</groupId> -->
+<!--             <artifactId>jdo-api</artifactId> -->
+<!--             <version>${jdo-api.version}</version> -->
+<!-- 			provided by plugins -->
+<!--             <scope>provided</scope> -->
+<!--         </dependency> -->
     
         <dependency>
             <groupId>org.apache.isis.core</groupId>
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/Annotations.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/Annotations.java
index dbedafa..a3160ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/Annotations.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/Annotations.java
@@ -28,6 +28,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
+import java.util.Set;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -45,6 +46,7 @@ import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.commons.internal.reflection._Annotations;
 import org.apache.isis.commons.internal.reflection._Reflect;
 import org.apache.isis.metamodel.commons.ThrowableExtensions;
@@ -208,7 +210,7 @@ public final class Annotations  {
      *     WARN: this method does NOT search for meta-annotations; use {@link #getAnnotations(Class, Class)} for that.
      * </p>
      */
-    public static <T extends Annotation> T getAnnotation(
+    private static <T extends Annotation> T getAnnotation(
             final Method method,
             final Class<T> annotationClass) {
         if (method == null) {
@@ -270,7 +272,7 @@ public final class Annotations  {
      * inherited methods up from the superclass.
      * @deprecated use {@link _Annotations} instead
      */
-    public static <T extends Annotation> List<T> getAnnotations(
+    private static <T extends Annotation> List<T> getAnnotations(
             final Method method,
             final Class<T> annotationClass) {
         if (method == null) {
@@ -527,8 +529,8 @@ public final class Annotations  {
 
     }
 
-    private static List<Class<?>> fieldAnnotationClasses = 
-            _Lists.of(
+    private static Set<Class<? extends Annotation>> fieldAnnotationClasses = 
+            _Sets.of(
                     Property.class,
                     PropertyLayout.class,
                     Collection.class,
@@ -539,11 +541,14 @@ public final class Annotations  {
                     javax.annotation.Nullable.class,
                     Title.class,
                     XmlJavaTypeAdapter.class,
-                    XmlTransient.class,
-                    javax.jdo.annotations.Column.class
+                    XmlTransient.class
+                    //javax.jdo.annotations.Column.class
                     );
 
     private static boolean shouldSearchForField(final Class<?> annotationClass) {
+        if(annotationClass.getName().equals("javax.jdo.annotations.Column")) {
+            return true;
+        }
         return fieldAnnotationClasses.contains(annotationClass);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
index 5fb998a..b4afccc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
@@ -235,7 +235,7 @@ public interface FacetFactory {
 
         
         /** 
-         * Annotation lookup on this context's method..
+         * Annotation lookup on this context's method. Also honors annotations on fields, if this method is a getter.
          * @since 2.0
          */
         public <A extends Annotation> Optional<A> synthesizeOnMethod(Class<A> annotationType) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
index 05b3b92..991b53b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
@@ -30,7 +30,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.metamodel.facets.Annotations;
 import org.apache.isis.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.actions.homepage.HomePageFacet;
@@ -55,8 +54,13 @@ implements MetaModelRefiner {
 
     @Override
     public void process(ProcessMethodContext processMethodContext) {
-        final HomePage annotation = Annotations.getAnnotation(processMethodContext.getMethod(), HomePage.class);
-        if (annotation == null) {
+        final HomePage homepageAnnot = processMethodContext.synthesizeOnMethod(HomePage.class)
+                .orElse(null);
+        
+//        _Assert.assertEquals("expected same", homepageAnnot,
+//                Annotations.getAnnotation(processMethodContext.getMethod(), HomePage.class));
+        
+        if (homepageAnnot == null) {
             return;
         }
         final FacetedMethod facetHolder = processMethodContext.getFacetHolder();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/jaxb/JaxbFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/jaxb/JaxbFacetFactory.java
index 664c75a..77d59eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/jaxb/JaxbFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/jaxb/JaxbFacetFactory.java
@@ -20,7 +20,6 @@
 package org.apache.isis.metamodel.facets.jaxb;
 
 import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.List;
 import java.util.Optional;
@@ -115,9 +114,14 @@ implements MetaModelRefiner {
     }
 
     private void processXmlJavaTypeAdapter(final ProcessMethodContext processMethodContext, XmlAccessType accessType) {
-        final Method method = processMethodContext.getMethod();
-
-        final XmlJavaTypeAdapter annotation = Annotations.getAnnotation(method, XmlJavaTypeAdapter.class);
+        //val method = processMethodContext.getMethod();
+        
+        final XmlJavaTypeAdapter annotation = processMethodContext.synthesizeOnMethod(XmlJavaTypeAdapter.class)
+                .orElse(null);
+                
+//        _Assert.assertEquals("expected same", annotation,
+//                Annotations.getAnnotation(method, XmlJavaTypeAdapter.class));
+        
         if(annotation == null) {
             return;
         }
@@ -130,9 +134,14 @@ implements MetaModelRefiner {
     }
 
     private void processXmlTransient(final ProcessMethodContext processMethodContext, XmlAccessType accessType) {
-        final Method method = processMethodContext.getMethod();
+        //val method = processMethodContext.getMethod();
 
-        final XmlTransient annotation = Annotations.getAnnotation(method, XmlTransient.class);
+        final XmlTransient annotation = processMethodContext.synthesizeOnMethod(XmlTransient.class)
+                .orElse(null);
+                
+//        _Assert.assertEquals("expected same", annotation,
+//                Annotations.getAnnotation(method, XmlTransient.class));
+        
         if(annotation == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
index f732501..f8ceaed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
@@ -22,7 +22,6 @@ package org.apache.isis.metamodel.facets.members.order.annotprop;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facets.Annotations;
 import org.apache.isis.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.members.order.MemberOrderFacet;
@@ -48,7 +47,13 @@ public class MemberOrderFacetFactory extends FacetFactoryAbstract implements Con
     }
 
     private MemberOrderFacet createFromAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
-        final MemberOrder annotation = Annotations.getAnnotation(processMethodContext.getMethod(), MemberOrder.class);
+        
+        final MemberOrder annotation = processMethodContext.synthesizeOnMethod(MemberOrder.class)
+                .orElse(null);
+                
+//        _Assert.assertEquals("expected same", annotation,
+//                Annotations.getAnnotation(processMethodContext.getMethod(), MemberOrder.class));
+        
         if (annotation != null) {
             return new MemberOrderFacetAnnotation(
                     annotation.name(),
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
index 83d1767..b85e903 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
@@ -30,11 +30,11 @@ import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.events.domain.CollectionDomainEvent;
 import org.apache.isis.applib.events.domain.PropertyDomainEvent;
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.reflection._Annotations;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContextAware;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
-import org.apache.isis.metamodel.facets.Annotations;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.TypedHolder;
 import org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet;
@@ -286,7 +286,14 @@ implements ObjectSpecificationPostProcessor, MetaModelContextAware {
             if(method != null) {
                 // this is basically a subset of the code that is in CollectionAnnotationFacetFactory,
                 // ignoring stuff which is deprecated for Isis v2
-                final Collection collectionAnnot = Annotations.getAnnotation(method, Collection.class);
+                
+                final Collection collectionAnnot = 
+                        _Annotations.synthesizeInherited(method, Collection.class)
+                        .orElse(null);
+                
+//                _Assert.assertEquals("expected same", collectionAnnot,
+//                        Annotations.getAnnotation(method, Collection.class));
+                
                 if(collectionAnnot != null) {
                     final Class<? extends CollectionDomainEvent<?, ?>> collectionDomainEventType =
                             CollectionAnnotationFacetFactory.defaultFromDomainObjectIfRequired(
@@ -325,7 +332,14 @@ implements ObjectSpecificationPostProcessor, MetaModelContextAware {
             if(method != null) {
                 // this is basically a subset of the code that is in CollectionAnnotationFacetFactory,
                 // ignoring stuff which is deprecated for Isis v2
-                final Property propertyAnnot = Annotations.getAnnotation(method, Property.class);
+                
+                final Property propertyAnnot = 
+                        _Annotations.synthesizeInherited(method, Property.class)
+                        .orElse(null);
+                
+//                _Assert.assertEquals("expected same", propertyAnnot,
+//                        Annotations.getAnnotation(method, Property.class));
+                
                 if(propertyAnnot != null) {
                     final Class<? extends PropertyDomainEvent<?, ?>> propertyDomainEventType =
                             PropertyAnnotationFacetFactory.defaultFromDomainObjectIfRequired(
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentAnnotationFacetFactory.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentAnnotationFacetFactory.java
index 5205c39..ff1ec48 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentAnnotationFacetFactory.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentAnnotationFacetFactory.java
@@ -23,7 +23,6 @@ import javax.jdo.annotations.NotPersistent;
 import org.apache.isis.metamodel.JdoMetamodelUtil;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facets.Annotations;
 import org.apache.isis.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 
@@ -42,8 +41,15 @@ public class JdoNotPersistentAnnotationFacetFactory extends FacetFactoryAbstract
         if(!JdoMetamodelUtil.isPersistenceEnhanced(cls)) {
             return;
         }
+        
+        //val method = processMethodContext.getMethod();
+
+        final NotPersistent annotation = processMethodContext.synthesizeOnMethod(NotPersistent.class)
+                .orElse(null);
+                
+//        _Assert.assertEquals("expected same", annotation,
+//                Annotations.getAnnotation(method, NotPersistent.class));
 
-        final NotPersistent annotation = Annotations.getAnnotation(processMethodContext.getMethod(), NotPersistent.class);
         if (annotation == null) {
             return;
         }
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyAnnotationFacetFactory.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyAnnotationFacetFactory.java
index 0de23a1..dc34eed 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyAnnotationFacetFactory.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyAnnotationFacetFactory.java
@@ -22,7 +22,6 @@ import javax.jdo.annotations.PrimaryKey;
 
 import org.apache.isis.metamodel.JdoMetamodelUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facets.Annotations;
 import org.apache.isis.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 
@@ -41,8 +40,15 @@ public class JdoPrimaryKeyAnnotationFacetFactory extends FacetFactoryAbstract {
         if(!JdoMetamodelUtil.isPersistenceEnhanced(cls)) {
             return;
         }
+        
+        //val method = processMethodContext.getMethod();
+
+        final PrimaryKey annotation = processMethodContext.synthesizeOnMethod(PrimaryKey.class)
+                .orElse(null);
+                
+//        _Assert.assertEquals("expected same on method=" + method , annotation,
+//                Annotations.getAnnotation(method, PrimaryKey.class));
 
-        final PrimaryKey annotation = Annotations.getAnnotation(processMethodContext.getMethod(), PrimaryKey.class);
         if (annotation == null) {
             return;
         }