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/09 16:08:01 UTC

[isis] branch v2 updated: ISIS-2158: polishing SpecificationLoader interface

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


The following commit(s) were added to refs/heads/v2 by this push:
     new 99b1f59  ISIS-2158: polishing SpecificationLoader interface
99b1f59 is described below

commit 99b1f594761b1c9f6e32b063f6dd7136700e4195
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Oct 9 18:07:48 2019 +0200

    ISIS-2158: polishing SpecificationLoader interface
---
 .../apache/isis/metamodel/spec/ObjectSpecId.java    | 21 ---------------------
 .../metamodel/specloader/SpecificationLoader.java   | 11 +++++------
 .../specloader/SpecificationLoaderDefault.java      |  2 +-
 .../validator/MetaModelValidatorAbstract.java       | 14 +++++++-------
 .../validator/MetaModelValidatorVisiting.java       |  5 ++++-
 .../object/query/VisitorForClauseAbstract.java      | 10 +++++++---
 .../facets/object/query/VisitorForFromClause.java   |  3 ++-
 .../object/query/VisitorForVariablesClause.java     | 13 +++++++++----
 .../DataNucleusApplicationComponents5.java          | 19 +++++++++++--------
 .../widgets/select2/Select2ChoiceExt.java           |  2 ++
 .../widgets/select2/Select2MultiChoiceExt.java      |  2 ++
 11 files changed, 50 insertions(+), 52 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ObjectSpecId.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ObjectSpecId.java
index 42d768b..97c4582 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ObjectSpecId.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ObjectSpecId.java
@@ -56,27 +56,6 @@ public final class ObjectSpecId implements Serializable {
         return specId;
     }
 
-    //replaced by lombok ...    
-    //    @Override
-    //    public int hashCode() {
-    //        return specId.hashCode();
-    //    }
-    //
-    //    @Override
-    //    public boolean equals(Object obj) {
-    //        if (this == obj) {
-    //            return true;
-    //        }
-    //        if (obj == null) {
-    //            return false;
-    //        }
-    //        if (getClass() != obj.getClass()) {
-    //            return false;
-    //        }
-    //        final ObjectSpecId other = (ObjectSpecId) obj;
-    //        return Objects.equals(specId, other.specId);
-    //    }
-
     @Override
     public String toString() {
         return asString();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoader.java
index 6a90caa..152f5a2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoader.java
@@ -22,7 +22,6 @@ import java.util.Collection;
 
 import javax.annotation.Nullable;
 
-import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.metamodel.commons.ClassUtil;
 import org.apache.isis.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.metamodel.spec.ObjectSpecId;
@@ -100,20 +99,20 @@ public interface SpecificationLoader {
     }
 
     default ObjectSpecification loadSpecification(
-            @Nullable String className, 
+            @Nullable ObjectSpecId objectSpecId, 
             @Nullable IntrospectionState introspectionState) {
 
-        if(_Strings.isNullOrEmpty(className)) {
+        if(objectSpecId==null) {
             return null;
         }
-        val type = ClassUtil.forNameElseFail(className);
+        val type = ClassUtil.forNameElseFail(objectSpecId.asString());
         return introspectionState!=null 
                 ? loadSpecification(type, introspectionState)
                         : loadSpecification(type);
     }
 
-    default ObjectSpecification loadSpecification(@Nullable String className) {
-        return loadSpecification(className, null);
+    default ObjectSpecification loadSpecification(@Nullable ObjectSpecId objectSpecId) {
+        return loadSpecification(objectSpecId, null);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
index 92555ac..6dcf67a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
@@ -295,7 +295,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
             return spec;
         }
         // fallback
-        return loadSpecification(objectSpecId.asString(), IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
+        return loadSpecification(objectSpecId, IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorAbstract.java
index 80ac727..3606b86 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorAbstract.java
@@ -20,19 +20,15 @@
 package org.apache.isis.metamodel.specloader.validator;
 
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 
 import lombok.NonNull;
 
 public abstract class MetaModelValidatorAbstract 
-implements MetaModelValidator, MetaModelContext.Delegating {
+implements MetaModelValidator {
 
-    @Override
-    public MetaModelContext getMetaModelContext() {
-        return MetaModelContext.current();
-    }
-    
     protected final ValidationFailures failures = new ValidationFailures();
     
     /**
@@ -54,5 +50,9 @@ implements MetaModelValidator, MetaModelContext.Delegating {
         MetaModelValidator.super.onFailure(facetHolder, deficiencyOrigin, deficiencyMessageFormat, args);
         failures.add(deficiencyOrigin, deficiencyMessageFormat, args);
     }
-
+    
+    protected IsisConfiguration getConfiguration() {
+        return MetaModelContext.current().getConfiguration();
+    }
+    
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorVisiting.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorVisiting.java
index 3d752f2..84b2aa2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorVisiting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/validator/MetaModelValidatorVisiting.java
@@ -23,6 +23,7 @@ import java.util.Collection;
 import java.util.List;
 
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
 import lombok.NonNull;
@@ -65,11 +66,13 @@ public class MetaModelValidatorVisiting extends MetaModelValidatorAbstract {
 
     private boolean validateSpecs(List<ObjectSpecification> specsAlreadyValidated) {
 
+        val specLoader = MetaModelContext.current().getSpecificationLoader();
+        
         // all currently known specs
         // (previously we took a protective copy to avoid a concurrent modification exception,
         // but this is now done by SpecificationLoader itself)
         final Collection<ObjectSpecification> specsToValidate = 
-                getSpecificationLoader().snapshotSpecifications();
+                specLoader.snapshotSpecifications();
 
         // don't validate any specs already processed
         specsToValidate.removeAll(specsAlreadyValidated);
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForClauseAbstract.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForClauseAbstract.java
index 95873bc..f630af2 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForClauseAbstract.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForClauseAbstract.java
@@ -21,11 +21,15 @@ package org.apache.isis.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.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.validator.MetaModelValidator;
 import org.apache.isis.metamodel.specloader.validator.MetaModelValidatorVisiting;
 
+import lombok.val;
+
 abstract class VisitorForClauseAbstract implements MetaModelValidatorVisiting.Visitor {
 
     private final JdoQueryAnnotationFacetFactory facetFactory;
@@ -72,12 +76,12 @@ abstract class VisitorForClauseAbstract implements MetaModelValidatorVisiting.Vi
             final String query,
             final MetaModelValidator validator) {
 
-        if (classNameFromClause == null) {
+        if (_Strings.isNullOrEmpty(classNameFromClause)) {
             return;
         }
 
-        final String className = objectSpec.getCorrespondingClass().getName();
-        if (getSpecificationLoader().loadSpecification(classNameFromClause)==null) {
+        val className = objectSpec.getCorrespondingClass().getName();
+        if (getSpecificationLoader().loadSpecification(ObjectSpecId.of(classNameFromClause))==null) {
             validator.onFailure(
                     objectSpec,
                     Identifier.classIdentifier(className),
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForFromClause.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForFromClause.java
index 92df70a..e28ce6a 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForFromClause.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForFromClause.java
@@ -22,6 +22,7 @@ import java.util.Objects;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.metamodel.spec.Hierarchical;
+import org.apache.isis.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.specloader.validator.MetaModelValidator;
 
@@ -50,7 +51,7 @@ class VisitorForFromClause extends VisitorForClauseAbstract {
         if (Objects.equals(classNameFromClause, className)) {
             return;
         }
-        val fromSpec = getSpecificationLoader().loadSpecification(classNameFromClause);
+        val fromSpec = getSpecificationLoader().loadSpecification(ObjectSpecId.of(classNameFromClause));
         val subclasses = fromSpec.subclasses(Hierarchical.Depth.TRANSITIVE);
         if(subclasses.contains(objectSpec)) {
             return;
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForVariablesClause.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForVariablesClause.java
index 5a608c5..0626355 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForVariablesClause.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/query/VisitorForVariablesClause.java
@@ -20,10 +20,13 @@ package org.apache.isis.jdo.metamodel.facets.object.query;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
+import org.apache.isis.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.specloader.specimpl.IntrospectionState;
 import org.apache.isis.metamodel.specloader.validator.MetaModelValidator;
 
+import lombok.val;
+
 class VisitorForVariablesClause extends VisitorForClauseAbstract {
 
     VisitorForVariablesClause(final JdoQueryAnnotationFacetFactory facetFactory) {
@@ -43,10 +46,12 @@ class VisitorForVariablesClause extends VisitorForClauseAbstract {
             final MetaModelValidator validator) {
 
 
-        final String className = objectSpec.getCorrespondingClass().getName();
-
-        ObjectSpecification objectSpecification = getSpecificationLoader().loadSpecification(classNameFromClause,
-                IntrospectionState.TYPE_INTROSPECTED);
+        val className = objectSpec.getCorrespondingClass().getName();
+        val objectSpecification = getSpecificationLoader()
+                .loadSpecification(
+                        ObjectSpecId.of(classNameFromClause), 
+                        IntrospectionState.TYPE_INTROSPECTED);
+        
         JdoPersistenceCapableFacet persistenceCapableFacet =
                 objectSpecification.getFacet(JdoPersistenceCapableFacet.class);
 
diff --git a/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/DataNucleusApplicationComponents5.java b/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/DataNucleusApplicationComponents5.java
index 1a04dca..e30b345 100644
--- a/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/DataNucleusApplicationComponents5.java
+++ b/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/DataNucleusApplicationComponents5.java
@@ -43,12 +43,14 @@ import org.apache.isis.jdo.datanucleus.DataNucleusLifeCycleHelper;
 import org.apache.isis.jdo.datanucleus.DataNucleusPropertiesAware;
 import org.apache.isis.jdo.metamodel.facets.object.query.JdoNamedQuery;
 import org.apache.isis.jdo.metamodel.facets.object.query.JdoQueryFacet;
-import org.apache.isis.metamodel.spec.ObjectSpecification;
+import org.apache.isis.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.runtime.system.context.IsisContext;
 
 import static org.apache.isis.commons.internal.base._NullSafe.stream;
 
+import lombok.val;
+
 @Vetoed
 public class DataNucleusApplicationComponents5 implements ApplicationScopedComponent {
 
@@ -244,15 +246,16 @@ public class DataNucleusApplicationComponents5 implements ApplicationScopedCompo
     }
 
     static void catalogNamedQueries(
-            Set<String> persistableClassNames, final SpecificationLoader specificationLoader) {
-        final Map<String, JdoNamedQuery> namedQueryByName = _Maps.newHashMap();
-        for (final String persistableClassName: persistableClassNames) {
-            final ObjectSpecification spec = specificationLoader.loadSpecification(persistableClassName);
-            final JdoQueryFacet facet = spec.getFacet(JdoQueryFacet.class);
-            if (facet == null) {
+            Set<String> persistableClassNames, SpecificationLoader specificationLoader) {
+        
+        val namedQueryByName = _Maps.<String, JdoNamedQuery>newHashMap();
+        for (val persistableClassName: persistableClassNames) {
+            val spec = specificationLoader.loadSpecification(ObjectSpecId.of(persistableClassName));
+            val jdoQueryFacet = spec.getFacet(JdoQueryFacet.class);
+            if (jdoQueryFacet == null) {
                 continue;
             }
-            for (final JdoNamedQuery namedQuery : facet.getNamedQueries()) {
+            for (val namedQuery : jdoQueryFacet.getNamedQueries()) {
                 namedQueryByName.put(namedQuery.getName(), namedQuery);
             }
         }
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceExt.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceExt.java
index 1a29081..1d5d45b 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceExt.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceExt.java
@@ -27,6 +27,8 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.widgets.select2.providers.EmptyChoiceProvider;
 
 public class Select2ChoiceExt extends Select2Choice<ObjectAdapterMemento> implements ChoiceExt {
+    
+    private static final long serialVersionUID = 1L;
 
     public static Select2ChoiceExt create(
             final String id,
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2MultiChoiceExt.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2MultiChoiceExt.java
index ab38d19..6b9023b 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2MultiChoiceExt.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2MultiChoiceExt.java
@@ -33,6 +33,8 @@ public class Select2MultiChoiceExt
 extends Select2MultiChoice<ObjectAdapterMemento>
 implements ChoiceExt {
 
+    private static final long serialVersionUID = 1L;
+
     public static Select2MultiChoiceExt create(
             final String id,
             final IModel<ArrayList<ObjectAdapterMemento>> modelObject,