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));
+    }
+
 
 }