You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by jc...@apache.org on 2013/01/14 15:02:15 UTC
[2/3] git commit: ISIS-301: Error when using class name as
discriminator strategy
ISIS-301: Error when using class name as discriminator strategy
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b75cc3e8
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b75cc3e8
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b75cc3e8
Branch: refs/heads/master
Commit: b75cc3e80607d219587555fe476d004f7eaf1f88
Parents: eebe9f8
Author: Jeroen van der Wal <je...@stromboli.it>
Authored: Mon Jan 14 13:39:11 2013 +0100
Committer: Jeroen van der Wal <je...@stromboli.it>
Committed: Mon Jan 14 13:39:11 2013 +0100
----------------------------------------------------------------------
.../JdoDiscriminatorAnnotationFacetFactory.java | 27 +++++++++++++--
1 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/b75cc3e8/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
index 8976bd4..1ffb553 100644
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
@@ -21,12 +21,21 @@ package org.apache.isis.objectstore.jdo.metamodel.facets.object.discriminator;
import javax.jdo.annotations.Discriminator;
+import com.google.common.base.Strings;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.Annotations;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.object.objecttype.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
+import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutorAware;
+import org.apache.isis.core.progmodel.facets.object.objecttype.ObjectSpecIdFacetDerivedFromClassName;
+
+public class JdoDiscriminatorAnnotationFacetFactory extends FacetFactoryAbstract implements ClassSubstitutorAware {
-public class JdoDiscriminatorAnnotationFacetFactory extends FacetFactoryAbstract {
+ private ClassSubstitutor classSubstitutor;
public JdoDiscriminatorAnnotationFacetFactory() {
super(FeatureType.OBJECTS_ONLY);
@@ -39,10 +48,22 @@ public class JdoDiscriminatorAnnotationFacetFactory extends FacetFactoryAbstract
if (annotation == null) {
return;
}
- final String annotationValueAttribute = annotation.value();
+ String annotationValueAttribute = annotation.value();
+ if(!Strings.isNullOrEmpty(annotationValueAttribute)) {
+ FacetUtil.addFacet(new ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation(annotationValueAttribute, processClassContext.getFacetHolder()));
+ } else {
+ final FacetHolder facetHolder = processClassContext.getFacetHolder();
+ final Class<?> originalClass = processClassContext.getCls();
+ final Class<?> substitutedClass = classSubstitutor.getClass(originalClass);
+ FacetUtil.addFacet(new ObjectSpecIdFacetDerivedFromClassName(substitutedClass.getCanonicalName(), facetHolder));
+ }
- FacetUtil.addFacet(new ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation(annotationValueAttribute, processClassContext.getFacetHolder()));
FacetUtil.addFacet(new JdoDiscriminatorFacetDefault(annotationValueAttribute, processClassContext.getFacetHolder()));
}
+ @Override
+ public void setClassSubstitutor(ClassSubstitutor classSubstitutor) {
+ this.classSubstitutor = classSubstitutor;
+ }
+
}