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,