You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/03/07 23:19:22 UTC
git commit: ISIS-295: JDO validator flags unsupported annotations
early.
Updated Branches:
refs/heads/master 539217012 -> 06c95bd1a
ISIS-295: JDO validator flags unsupported annotations early.
Don't want to tackle @Aggregated entities just yet, but - to improve matters at least a little -
have implemented a MetaModelValidator that will flag up any use of @Aggregated (or @EmbeddedOnly)
and say that they are not supported by the JDO objectstore.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/06c95bd1
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/06c95bd1
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/06c95bd1
Branch: refs/heads/master
Commit: 06c95bd1a3a53b2d4cfa7096a95d3f2012fb46f7
Parents: 5392170
Author: Dan Haywood <da...@apache.org>
Authored: Thu Mar 7 22:17:36 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Thu Mar 7 22:17:36 2013 +0000
----------------------------------------------------------------------
.../validator/JdoMetaModelValidator.java | 19 +++++++++++++-
1 files changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/06c95bd1/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/specloader/validator/JdoMetaModelValidator.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/specloader/validator/JdoMetaModelValidator.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/specloader/validator/JdoMetaModelValidator.java
index 5db1f76..65a75f9 100644
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/specloader/validator/JdoMetaModelValidator.java
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/specloader/validator/JdoMetaModelValidator.java
@@ -20,6 +20,8 @@ package org.apache.isis.objectstore.jdo.metamodel.specloader.validator;
import javax.jdo.annotations.IdentityType;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.core.metamodel.facets.object.aggregated.ParentedFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
@@ -30,8 +32,8 @@ public class JdoMetaModelValidator extends MetaModelValidatorComposite {
public JdoMetaModelValidator() {
addValidatorToEnsurePersistenceCapables();
-
addValidatorToEnsureIdentityType();
+ addValidatorToCheckForUnsupportedAnnotations();
}
private void addValidatorToEnsurePersistenceCapables() {
@@ -54,7 +56,7 @@ public class JdoMetaModelValidator extends MetaModelValidatorComposite {
validationFailures.add("DataNucleus object store: no @PersistenceCapable found. " +
"(Are the entities referenced by the registered services? " +
"are all services registered? " +
- "are you using the JDO programming model facets?)");
+ "did the DataNucleus enhancer run?)");
}
}
};
@@ -81,5 +83,18 @@ public class JdoMetaModelValidator extends MetaModelValidatorComposite {
add(new MetaModelValidatorVisiting(ensureIdentityType));
}
+ private void addValidatorToCheckForUnsupportedAnnotations() {
+ MetaModelValidatorVisiting.Visitor ensureIdentityType = new MetaModelValidatorVisiting.Visitor(){
+ @Override
+ public boolean visit(ObjectSpecification objSpec, ValidationFailures validationFailures) {
+ if (objSpec.containsDoOpFacet(ParentedFacet.class) && !objSpec.containsDoOpFacet(CollectionFacet.class)) {
+ validationFailures.add("DataNucleus object store currently does not supported Aggregated or EmbeddedOnly annotations: see %s", objSpec.getFullIdentifier());
+ }
+ return true;
+ }};
+
+ add(new MetaModelValidatorVisiting(ensureIdentityType));
+ }
+
}