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 2020/12/23 09:23:52 UTC

[isis] branch master updated: ISIS-2033: jdo facets: house keeping

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 7c9d9f8  ISIS-2033: jdo facets: house keeping
7c9d9f8 is described below

commit 7c9d9f85cfa077d9c712e0fe8eaee7b25f687bb3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Dec 23 10:09:05 2020 +0100

    ISIS-2033: jdo facets: house keeping
---
 .../object/query/JdoQueriesFacetAnnotation.java    |  9 ++-
 .../facets/object/query/JdoQueryFacetAbstract.java | 38 +++++-----
 .../object/query/JdoQueryFacetAnnotation.java      |  8 ++-
 .../object/query/VisitorForClauseAbstract.java     | 10 +--
 .../facets/object/query/JdoNamedQuery.java         | 84 +++++-----------------
 .../facets/object/query/JdoQueryFacet.java         |  7 +-
 6 files changed, 51 insertions(+), 105 deletions(-)

diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueriesFacetAnnotation.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueriesFacetAnnotation.java
index fe3c20d..30c50a9 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueriesFacetAnnotation.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueriesFacetAnnotation.java
@@ -20,18 +20,17 @@ package org.apache.isis.persistence.jdo.metamodel.facets.object.query;
 
 import javax.jdo.annotations.Query;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query.JdoQueryFacet;
 
-
 public class JdoQueriesFacetAnnotation extends JdoQueryFacetAbstract
 implements JdoQueryFacet {
 
-    public JdoQueriesFacetAnnotation(final Query[] jdoNamedQueries,
+    public JdoQueriesFacetAnnotation(
+            final Query[] jdoNamedQueries,
             final FacetHolder holder) {
-        super(holder);
-        add(jdoNamedQueries);
+        super(holder, Can.ofArray(jdoNamedQueries));
     }
 
-
 }
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryFacetAbstract.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryFacetAbstract.java
index d4a0499..3de2e3e 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryFacetAbstract.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryFacetAbstract.java
@@ -18,13 +18,11 @@
  */
 package org.apache.isis.persistence.jdo.metamodel.facets.object.query;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 import java.util.Map;
 
 import javax.jdo.annotations.Query;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -32,33 +30,33 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query.JdoNamedQuery;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query.JdoQueryFacet;
 
+import lombok.Getter;
+import lombok.NonNull;
+import lombok.val;
 
-public class JdoQueryFacetAbstract extends FacetAbstract implements
-JdoQueryFacet {
+public class JdoQueryFacetAbstract 
+extends FacetAbstract 
+implements JdoQueryFacet {
 
     public static Class<? extends Facet> type() {
         return JdoQueryFacet.class;
     }
 
-    private final List<JdoNamedQuery> namedQueries = new ArrayList<JdoNamedQuery>();
+    @Getter(onMethod_ = {@Override})
+    private final Can<JdoNamedQuery> namedQueries;
 
-    public JdoQueryFacetAbstract(final FacetHolder holder) {
+    public JdoQueryFacetAbstract(
+            final @NonNull FacetHolder holder, 
+            final @NonNull Can<Query> jdoNamedQueries) {
+        
         super(JdoQueryFacetAbstract.type(), holder, Derivation.NOT_DERIVED);
+        
+        val objSpec = (ObjectSpecification) getFacetHolder();
+        this.namedQueries = jdoNamedQueries.map(jdoNamedQuery->new JdoNamedQuery(jdoNamedQuery, objSpec));
     }
 
-    protected void add(final Query... jdoNamedQueries) {
-        final ObjectSpecification objSpec = (ObjectSpecification) getFacetHolder();
-        for (final Query jdoNamedQuery : jdoNamedQueries) {
-            namedQueries.add(new JdoNamedQuery(jdoNamedQuery, objSpec));
-        }
-    }
-
-    @Override
-    public List<JdoNamedQuery> getNamedQueries() {
-        return Collections.unmodifiableList(namedQueries);
-    }
-
-    @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
+    @Override 
+    public void appendAttributesTo(final Map<String, Object> attributeMap) {
         super.appendAttributesTo(attributeMap);
         attributeMap.put("namedQueries", namedQueries);
     }
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryFacetAnnotation.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryFacetAnnotation.java
index cbbce58..277f244 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryFacetAnnotation.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryFacetAnnotation.java
@@ -20,6 +20,7 @@ package org.apache.isis.persistence.jdo.metamodel.facets.object.query;
 
 import javax.jdo.annotations.Query;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query.JdoQueryFacet;
 
@@ -27,10 +28,11 @@ import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query.Jd
 public class JdoQueryFacetAnnotation extends JdoQueryFacetAbstract
 implements JdoQueryFacet {
 
-    public JdoQueryFacetAnnotation(final Query jdoNamedQuery,
+    public JdoQueryFacetAnnotation(
+            final Query jdoNamedQuery,
             final FacetHolder holder) {
-        super(holder);
-        add(jdoNamedQuery);
+        
+        super(holder, Can.ofSingleton(jdoNamedQuery));
     }
 
 
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/VisitorForClauseAbstract.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/VisitorForClauseAbstract.java
index 134bf66..d37ad3a 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/VisitorForClauseAbstract.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/VisitorForClauseAbstract.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.persistence.jdo.metamodel.facets.object.query;
 
-import java.util.List;
-
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -27,7 +25,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
-import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query.JdoNamedQuery;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query.JdoQueryFacet;
 
 import lombok.val;
@@ -58,12 +55,11 @@ abstract class VisitorForClauseAbstract implements MetaModelValidatorVisiting.Vi
             final ObjectSpecification objectSpec,
             final MetaModelValidator validator) {
         
-        final JdoQueryFacet facet = objectSpec.getFacet(JdoQueryFacet.class);
-        if(facet == null) {
+        val jdoQueryFacet = objectSpec.getFacet(JdoQueryFacet.class);
+        if(jdoQueryFacet == null) {
             return;
         }
-        final List<JdoNamedQuery> namedQueries = facet.getNamedQueries();
-        for (final JdoNamedQuery namedQuery : namedQueries) {
+        for (val namedQuery : jdoQueryFacet.getNamedQueries()) {
             if(namedQuery.getLanguage().equals("JDOQL")) {
                 final String query = namedQuery.getQuery();
                 final String fromClassName = deriveClause(query);
diff --git a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/query/JdoNamedQuery.java b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/query/JdoNamedQuery.java
index 99d5a0a..f435745 100644
--- a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/query/JdoNamedQuery.java
+++ b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/query/JdoNamedQuery.java
@@ -18,39 +18,37 @@
  */
 package org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query;
 
+import javax.annotation.Nullable;
 import javax.jdo.annotations.Query;
 
 import org.apache.isis.core.metamodel.services.metamodel.MetaModelExportSupport;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NonNull;
+import lombok.ToString;
+
 /**
  * Value object that represents the information of a
  * {@link javax.jdo.annotations.Query}.
  *
  * @see {@link JdoQueryFacet}.
  */
+@Getter 
+@AllArgsConstructor(access = AccessLevel.PRIVATE) 
+@ToString @EqualsAndHashCode
 public final class JdoNamedQuery implements MetaModelExportSupport {
 
-    private final String name;
-    private final String query;
-    private final String language;
-    private final ObjectSpecification objSpec;
-
-    private JdoNamedQuery(
-            final String name,
-            final String query,
-            final String language,
-            final ObjectSpecification noSpec) {
-        this.language = language;
-
-        assert name != null;
-        assert query != null;
-        assert noSpec != null;
-
-        this.name = name;
-        this.query = query;
-        this.objSpec = noSpec;
-    }
+    private final @NonNull  String name;
+    private final @NonNull  String query;
+    private final @Nullable String language;
+    
+    @ToString.Exclude
+    @EqualsAndHashCode.Exclude
+    private final @NonNull  ObjectSpecification objectSpecification;
 
     public JdoNamedQuery(
             final Query jdoNamedQuery,
@@ -58,52 +56,6 @@ public final class JdoNamedQuery implements MetaModelExportSupport {
         this(jdoNamedQuery.name(), jdoNamedQuery.value(), jdoNamedQuery.language(), objSpec);
     }
 
-    public String getName() {
-        return name;
-    }
-
-    public String getQuery() {
-        return query;
-    }
-
-    public String getLanguage() {
-        return language;
-    }
-
-    public ObjectSpecification getObjectSpecification() {
-        return objSpec;
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((name == null) ? 0 : name.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        final JdoNamedQuery other = (JdoNamedQuery) obj;
-        if (name == null) {
-            if (other.name != null) {
-                return false;
-            }
-        } else if (!name.equals(other.name)) {
-            return false;
-        }
-        return true;
-    }
-
     @Override
     public String toMetamodelString() {
         return getName();
diff --git a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/query/JdoQueryFacet.java b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/query/JdoQueryFacet.java
index 3851353..cb5a0b0 100644
--- a/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/query/JdoQueryFacet.java
+++ b/persistence/jdo/provider/src/main/java/org/apache/isis/persistence/jdo/provider/metamodel/facets/object/query/JdoQueryFacet.java
@@ -18,10 +18,9 @@
  */
 package org.apache.isis.persistence.jdo.provider.metamodel.facets.object.query;
 
-import java.util.List;
-
 import javax.jdo.annotations.Query;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 
 
@@ -53,7 +52,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 public interface JdoQueryFacet extends Facet {
 
     /**
-     * Returns an immutable {@link List}.
+     * Returns an immutable {@link Can}.
      */
-    List<JdoNamedQuery> getNamedQueries();
+    Can<JdoNamedQuery> getNamedQueries();
 }