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 2015/01/15 11:28:14 UTC
[34/49] isis git commit: ISIS-970: completed the
ActionAnnotationFacetFactory,
with additional refactoring for DomainObjectFacetFactory
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
new file mode 100644
index 0000000..065da4f
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.core.metamodel.facets.collections.layout;
+
+
+import java.util.Properties;
+import org.apache.isis.applib.annotation.CollectionLayout;
+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.ContributeeMemberFacetFactory;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
+import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
+import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
+import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;
+import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
+import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
+import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
+
+
+public class CollectionLayoutFacetFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory {
+
+ public CollectionLayoutFacetFactory() {
+ super(FeatureType.COLLECTIONS_ONLY);
+ }
+
+ @Override
+ public void process(final ProcessMethodContext processMethodContext) {
+
+ final FacetHolder holder = processMethodContext.getFacetHolder();
+
+ Properties properties = processMethodContext.metadataProperties("collectionLayout");
+ if(properties == null) {
+ // alternate key
+ properties = processMethodContext.metadataProperties("layout");
+ }
+ final CollectionLayout collectionLayout = Annotations.getAnnotation(processMethodContext.getMethod(), CollectionLayout.class);
+
+
+ // cssClass
+ CssClassFacet cssClassFacet = CssClassFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ if(cssClassFacet == null) {
+ cssClassFacet = CssClassFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
+ }
+ FacetUtil.addFacet(cssClassFacet);
+
+
+ // describedAs
+ DescribedAsFacet describedAsFacet = DescribedAsFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ if(describedAsFacet == null) {
+ describedAsFacet = DescribedAsFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
+ }
+ FacetUtil.addFacet(describedAsFacet);
+
+
+ // hidden
+ HiddenFacet hiddenFacet = HiddenFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ if(hiddenFacet == null) {
+ hiddenFacet = HiddenFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
+ }
+ FacetUtil.addFacet(hiddenFacet);
+
+
+ // named
+ NamedFacet namedFacet = NamedFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ if(namedFacet == null) {
+ namedFacet = NamedFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
+ }
+ FacetUtil.addFacet(namedFacet);
+
+
+ // paged
+ PagedFacet pagedFacet = PagedFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ if(pagedFacet == null) {
+ pagedFacet = PagedFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
+ }
+ FacetUtil.addFacet(pagedFacet);
+
+
+ // renderType
+ RenderFacet renderFacet = RenderFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ if(renderFacet == null) {
+ renderFacet = RenderFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
+ }
+ FacetUtil.addFacet(renderFacet);
+
+
+ // sortedBy
+ SortedByFacet sortedByFacet = SortedByFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ if(sortedByFacet == null) {
+ sortedByFacet = SortedByFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
+ }
+ FacetUtil.addFacet(sortedByFacet);
+
+ }
+
+ @Override
+ public void process(ProcessContributeeMemberContext processMemberContext) {
+
+ final FacetHolder holder = processMemberContext.getFacetHolder();
+
+ Properties properties = processMemberContext.metadataProperties("collectionLayout");
+ if(properties == null) {
+ // alternate key
+ properties = processMemberContext.metadataProperties("layout");
+ }
+
+
+ // cssClass
+ CssClassFacet cssClassFacet = CssClassFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ FacetUtil.addFacet(cssClassFacet);
+
+
+ // describedAs
+ DescribedAsFacet describedAsFacet = DescribedAsFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ FacetUtil.addFacet(describedAsFacet);
+
+
+ // hidden
+ HiddenFacet hiddenFacet = HiddenFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ FacetUtil.addFacet(hiddenFacet);
+
+
+ // named
+ NamedFacet namedFacet = NamedFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ FacetUtil.addFacet(namedFacet);
+
+
+ // paged
+ PagedFacet pagedFacet = PagedFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ FacetUtil.addFacet(pagedFacet);
+
+
+ // renderType
+ RenderFacet renderFacet = RenderFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ FacetUtil.addFacet(renderFacet);
+
+
+ // sortedBy
+ SortedByFacet sortedByFacet = SortedByFacetOnCollectionFromLayoutProperties.create(properties, holder);
+ FacetUtil.addFacet(sortedByFacet);
+
+
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFactory.java
deleted file mode 100644
index 236649e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFactory.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.collections.layout;
-
-
-import java.util.Properties;
-import org.apache.isis.applib.annotation.CollectionLayout;
-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.ContributeeMemberFacetFactory;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
-import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
-import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;
-import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
-import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
-import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
-
-
-public class CollectionLayoutFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory {
-
- public CollectionLayoutFactory() {
- super(FeatureType.COLLECTIONS_ONLY);
- }
-
- @Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- final FacetHolder holder = processMethodContext.getFacetHolder();
-
- Properties properties = processMethodContext.metadataProperties("collectionLayout");
- if(properties == null) {
- // alternate key
- properties = processMethodContext.metadataProperties("layout");
- }
- final CollectionLayout collectionLayout = Annotations.getAnnotation(processMethodContext.getMethod(), CollectionLayout.class);
-
-
- // cssClass
- CssClassFacet cssClassFacet = CssClassFacetOnCollectionFromLayoutProperties.create(properties, holder);
- if(cssClassFacet == null) {
- cssClassFacet = CssClassFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
- FacetUtil.addFacet(cssClassFacet);
-
-
- // describedAs
- DescribedAsFacet describedAsFacet = DescribedAsFacetOnCollectionFromLayoutProperties.create(properties, holder);
- if(describedAsFacet == null) {
- describedAsFacet = DescribedAsFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
- FacetUtil.addFacet(describedAsFacet);
-
-
- // hidden
- HiddenFacet hiddenFacet = HiddenFacetOnCollectionFromLayoutProperties.create(properties, holder);
- if(hiddenFacet == null) {
- hiddenFacet = HiddenFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
- FacetUtil.addFacet(hiddenFacet);
-
-
- // named
- NamedFacet namedFacet = NamedFacetOnCollectionFromLayoutProperties.create(properties, holder);
- if(namedFacet == null) {
- namedFacet = NamedFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
- FacetUtil.addFacet(namedFacet);
-
-
- // paged
- PagedFacet pagedFacet = PagedFacetOnCollectionFromLayoutProperties.create(properties, holder);
- if(pagedFacet == null) {
- pagedFacet = PagedFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
- FacetUtil.addFacet(pagedFacet);
-
-
- // renderType
- RenderFacet renderFacet = RenderFacetOnCollectionFromLayoutProperties.create(properties, holder);
- if(renderFacet == null) {
- renderFacet = RenderFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
- FacetUtil.addFacet(renderFacet);
-
-
- // sortedBy
- SortedByFacet sortedByFacet = SortedByFacetOnCollectionFromLayoutProperties.create(properties, holder);
- if(sortedByFacet == null) {
- sortedByFacet = SortedByFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
- FacetUtil.addFacet(sortedByFacet);
-
- }
-
- @Override
- public void process(ProcessContributeeMemberContext processMemberContext) {
-
- final FacetHolder holder = processMemberContext.getFacetHolder();
-
- Properties properties = processMemberContext.metadataProperties("collectionLayout");
- if(properties == null) {
- // alternate key
- properties = processMemberContext.metadataProperties("layout");
- }
-
-
- // cssClass
- CssClassFacet cssClassFacet = CssClassFacetOnCollectionFromLayoutProperties.create(properties, holder);
- FacetUtil.addFacet(cssClassFacet);
-
-
- // describedAs
- DescribedAsFacet describedAsFacet = DescribedAsFacetOnCollectionFromLayoutProperties.create(properties, holder);
- FacetUtil.addFacet(describedAsFacet);
-
-
- // hidden
- HiddenFacet hiddenFacet = HiddenFacetOnCollectionFromLayoutProperties.create(properties, holder);
- FacetUtil.addFacet(hiddenFacet);
-
-
- // named
- NamedFacet namedFacet = NamedFacetOnCollectionFromLayoutProperties.create(properties, holder);
- FacetUtil.addFacet(namedFacet);
-
-
- // paged
- PagedFacet pagedFacet = PagedFacetOnCollectionFromLayoutProperties.create(properties, holder);
- FacetUtil.addFacet(pagedFacet);
-
-
- // renderType
- RenderFacet renderFacet = RenderFacetOnCollectionFromLayoutProperties.create(properties, holder);
- FacetUtil.addFacet(renderFacet);
-
-
- // sortedBy
- SortedByFacet sortedByFacet = SortedByFacetOnCollectionFromLayoutProperties.create(properties, holder);
- FacetUtil.addFacet(sortedByFacet);
-
-
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetForCollectionLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetForCollectionLayoutAnnotation.java
index f627c3d..9f2df39 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetForCollectionLayoutAnnotation.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.isis.applib.annotation.RenderType;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
import org.apache.isis.core.metamodel.facets.members.render.RenderFacetAbstract;
@@ -30,12 +31,12 @@ public class RenderFacetForCollectionLayoutAnnotation extends RenderFacetAbstrac
if (collectionLayout == null) {
return null;
}
- final CollectionLayout.RenderType renderType = collectionLayout.render();
+ final RenderType renderType = collectionLayout.render();
return renderType != null ? new RenderFacetForCollectionLayoutAnnotation(renderType, holder) : null;
}
- private RenderFacetForCollectionLayoutAnnotation(final CollectionLayout.RenderType renderType, final FacetHolder holder) {
- super(CollectionLayout.RenderType.typeOf(renderType), holder);
+ private RenderFacetForCollectionLayoutAnnotation(final RenderType renderType, final FacetHolder holder) {
+ super(RenderType.typeOf(renderType), holder);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetOnCollectionFromLayoutProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetOnCollectionFromLayoutProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetOnCollectionFromLayoutProperties.java
index b5a7b47..e9173c2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetOnCollectionFromLayoutProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/RenderFacetOnCollectionFromLayoutProperties.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.collections.layout;
import java.util.Properties;
import com.google.common.base.Strings;
-import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.isis.applib.annotation.RenderType;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
import org.apache.isis.core.metamodel.facets.members.render.RenderFacetAbstract;
@@ -29,15 +29,15 @@ import org.apache.isis.core.metamodel.facets.members.render.RenderFacetAbstract;
public class RenderFacetOnCollectionFromLayoutProperties extends RenderFacetAbstract {
public static RenderFacet create(Properties properties, FacetHolder holder) {
- final CollectionLayout.RenderType renderType = render(properties);
+ final RenderType renderType = render(properties);
return renderType != null? new RenderFacetOnCollectionFromLayoutProperties(renderType, holder): null;
}
- private RenderFacetOnCollectionFromLayoutProperties(CollectionLayout.RenderType renderType, FacetHolder holder) {
- super(CollectionLayout.RenderType.typeOf(renderType), holder);
+ private RenderFacetOnCollectionFromLayoutProperties(RenderType renderType, FacetHolder holder) {
+ super(RenderType.typeOf(renderType), holder);
}
- private static CollectionLayout.RenderType render(Properties properties) {
+ private static RenderType render(Properties properties) {
if(properties == null) {
return null;
}
@@ -45,7 +45,7 @@ public class RenderFacetOnCollectionFromLayoutProperties extends RenderFacetAbst
if(renderType == null) {
return null;
}
- return CollectionLayout.RenderType.valueOf(renderType);
+ return RenderType.valueOf(renderType);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java
index 43eca17..1f0ea8a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/typeof/annotation/TypeOfFacetOnCollectionAnnotationFactory.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
+import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.TypeOf;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -54,7 +55,16 @@ public class TypeOfFacetOnCollectionAnnotationFactory extends FacetFactoryAbstra
return;
}
- Method method = processMethodContext.getMethod();
+ final Method method = processMethodContext.getMethod();
+ final Collection collection = Annotations.getAnnotation(method, Collection.class);
+ if (collection != null) {
+ final Class<?> typeOf = collection.typeOf();
+ if(typeOf != null && typeOf != Object.class) {
+ FacetUtil.addFacet(new TypeOfFacetOnCollectionAnnotation(typeOf, processMethodContext.getFacetHolder(), getSpecificationLoader()));
+ return;
+ }
+ }
+
final TypeOf annotation = Annotations.getAnnotation(method, TypeOf.class);
if (annotation != null) {
FacetUtil.addFacet(new TypeOfFacetOnCollectionAnnotation(annotation.value(), processMethodContext.getFacetHolder(), getSpecificationLoader()));
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAuditedAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAuditedAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAuditedAnnotation.java
index 95a69b4..99b76ea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAuditedAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetAuditedAnnotation.java
@@ -19,7 +19,9 @@
package org.apache.isis.core.metamodel.facets.object.audit.annotation;
+import org.apache.isis.applib.annotation.Audited;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacetImpl;
@@ -29,4 +31,12 @@ public class AuditableFacetAuditedAnnotation extends AuditableFacetImpl {
super(facetHolder, enablement);
}
+ public static AuditableFacet create(final Audited annotation, final FacetHolder holder) {
+ if (annotation == null) {
+ return null;
+ }
+ return new AuditableFacetAuditedAnnotation(
+ holder,
+ Enablement.ifDisabled(annotation.disabled()));
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetFromAuditedAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetFromAuditedAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetFromAuditedAnnotationFactory.java
index f6e0e67..36440c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetFromAuditedAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/annotation/AuditableFacetFromAuditedAnnotationFactory.java
@@ -19,12 +19,8 @@
package org.apache.isis.core.metamodel.facets.object.audit.annotation;
-import org.apache.isis.applib.annotation.Audited;
-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.audit.AuditableFacetAbstract.Enablement;
public class AuditableFacetFromAuditedAnnotationFactory extends FacetFactoryAbstract {
@@ -35,16 +31,10 @@ public class AuditableFacetFromAuditedAnnotationFactory extends FacetFactoryAbst
@Override
public void process(ProcessClassContext processClassContext) {
- final Class<?> cls = processClassContext.getCls();
- final Audited annotation = Annotations.getAnnotation(cls, Audited.class);
- if (annotation == null) {
- return;
- }
- FacetUtil.addFacet(
- new AuditableFacetAuditedAnnotation(
- processClassContext.getFacetHolder(),
- Enablement.ifDisabled(annotation.disabled())));
- return;
+
+ //
+ // moved to DomainObjectAnnotationFacetFactory
+ //
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetForDomainObjectAnnotationAsConfigured.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetForDomainObjectAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetForDomainObjectAnnotationAsConfigured.java
new file mode 100644
index 0000000..b5e5a66
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetForDomainObjectAnnotationAsConfigured.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.core.metamodel.facets.object.audit.configuration;
+
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.domainobject.AuditableFacetForDomainObjectAnnotation;
+
+
+public class AuditableFacetForDomainObjectAnnotationAsConfigured extends AuditableFacetForDomainObjectAnnotation {
+
+ public AuditableFacetForDomainObjectAnnotationAsConfigured(final FacetHolder facetHolder) {
+ super(Enablement.ENABLED, facetHolder);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfiguration.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfiguration.java
deleted file mode 100644
index a0722a3..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfiguration.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.audit.configuration;
-
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacetImpl;
-
-
-public class AuditableFacetFromConfiguration extends AuditableFacetImpl {
-
- public AuditableFacetFromConfiguration(final FacetHolder facetHolder) {
- super(facetHolder, Enablement.ENABLED);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfigurationFactory.java
index 11e754c..1a5e826 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/configuration/AuditableFacetFromConfigurationFactory.java
@@ -19,15 +19,10 @@
package org.apache.isis.core.metamodel.facets.object.audit.configuration;
-import org.apache.isis.applib.services.HasTransactionId;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.config.IsisConfigurationAware;
-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.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
-import org.apache.isis.core.metamodel.facets.object.domainobject.AuditObjectsConfiguration;
public class AuditableFacetFromConfigurationFactory extends FacetFactoryAbstract implements IsisConfigurationAware {
@@ -41,25 +36,10 @@ public class AuditableFacetFromConfigurationFactory extends FacetFactoryAbstract
@Override
public void process(ProcessClassContext processClassContext) {
- final AuditObjectsConfiguration categorization = AuditObjectsConfiguration.parse(configuration);
- if(categorization == AuditObjectsConfiguration.NONE) {
- return;
- }
- final Class<?> cls = processClassContext.getCls();
- final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
- if(facetHolder.containsDoOpFacet(AuditableFacet.class)) {
- // do not replace
- return;
- }
- if(HasTransactionId.class.isAssignableFrom(cls)) {
- // do not install on any implementation of HasTransactionId
- // (ie commands, audit entries, published events).
- return;
- }
-
- FacetUtil.addFacet(new AuditableFacetFromConfiguration(facetHolder));
- return;
+ //
+ // replaced by equivalent processing in DomainObjectAnnotationFacetFactory
+ // that checks the configured value.
+ //
}
// //////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AuditableFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AuditableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AuditableFacetForDomainObjectAnnotation.java
index c0ab0a1..4a88191 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AuditableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AuditableFacetForDomainObjectAnnotation.java
@@ -19,11 +19,13 @@
package org.apache.isis.core.metamodel.facets.object.domainobject;
+import org.apache.isis.applib.annotation.Auditing;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.audit.configuration.AuditableFacetForDomainObjectAnnotationAsConfigured;
public class AuditableFacetForDomainObjectAnnotation extends AuditableFacetAbstract {
@@ -33,23 +35,21 @@ public class AuditableFacetForDomainObjectAnnotation extends AuditableFacetAbstr
final IsisConfiguration configuration,
final FacetHolder holder) {
- final DomainObject.AuditingPolicy auditingPolicy = domainObject.auditing();
- switch (auditingPolicy) {
- case AS_CONFIGURED:
+ if(domainObject == null) {
+ return null;
+ }
- //
- // this rule also implemented in AuditableFacetFromConfigurationFactory
- // don't overwrite if already explicitly specified.
- //
- if(holder.containsDoOpFacet(AuditableFacet.class)) {
- // do not replace
- return null;
- }
+ final Auditing auditing = domainObject.auditing();
+ switch (auditing) {
+ case AS_CONFIGURED:
final AuditObjectsConfiguration setting = AuditObjectsConfiguration.parse(configuration);
- return setting.asEnablement() == Enablement.ENABLED
- ? new AuditableFacetForDomainObjectAnnotation(Enablement.ENABLED, holder)
- : null;
+ switch (setting) {
+ case NONE:
+ return null;
+ default:
+ return new AuditableFacetForDomainObjectAnnotationAsConfigured(holder);
+ }
case DISABLED:
return null;
case ENABLED:
@@ -58,7 +58,9 @@ public class AuditableFacetForDomainObjectAnnotation extends AuditableFacetAbstr
return null;
}
- private AuditableFacetForDomainObjectAnnotation(Enablement enablement, FacetHolder holder) {
+ protected AuditableFacetForDomainObjectAnnotation(
+ final Enablement enablement,
+ final FacetHolder holder) {
super(holder, enablement);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AutoCompleteFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AutoCompleteFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AutoCompleteFacetForDomainObjectAnnotation.java
index cd45b62..703f5d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AutoCompleteFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/AutoCompleteFacetForDomainObjectAnnotation.java
@@ -36,8 +36,12 @@ public class AutoCompleteFacetForDomainObjectAnnotation extends AutoCompleteFace
final ServicesInjector servicesInjector,
final FacetHolder holder) {
+ if(domainObject == null) {
+ return null;
+ }
+
final Class<?> autoCompleteRepository = domainObject.autoCompleteRepository();
- if(autoCompleteRepository == null) {
+ if(autoCompleteRepository == null || autoCompleteRepository == Object.class) {
return null;
}
final String autoCompleteAction = domainObject.autoCompleteAction();
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetForDomainObjectAnnotation.java
index 74dfa00..7a80ceb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetForDomainObjectAnnotation.java
@@ -31,6 +31,11 @@ public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBound
final DomainObject domainObject,
final QuerySubmitter querySubmitter,
final FacetHolder facetHolder) {
+
+ if(domainObject == null) {
+ return null;
+ }
+
final boolean bounded = domainObject.bounded();
return bounded ? new ChoicesFacetForDomainObjectAnnotation(facetHolder, querySubmitter): null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 942eacf..18a37d3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -19,7 +19,9 @@
package org.apache.isis.core.metamodel.facets.object.domainobject;
+import org.apache.isis.applib.annotation.Audited;
import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.PublishedObject;
import org.apache.isis.applib.services.HasTransactionId;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.config.IsisConfigurationAware;
@@ -32,6 +34,10 @@ 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.audit.AuditableFacet;
+import org.apache.isis.core.metamodel.facets.object.audit.annotation.AuditableFacetAuditedAnnotation;
+import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObjectFacet;
+import org.apache.isis.core.metamodel.facets.object.publishedobject.annotation.PublishedObjectFacetAnnotation;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
@@ -51,12 +57,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
@Override
public void process(ProcessClassContext processClassContext) {
- final Class<?> cls = processClassContext.getCls();
- final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
- if(domainObject == null) {
- return;
- }
-
processAuditing(processClassContext);
processPublishing(processClassContext);
processAutoComplete(processClassContext);
@@ -66,10 +66,10 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
processViewModel(processClassContext);
}
- private void processAuditing(ProcessClassContext processClassContext) {
+ private void processAuditing(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
- final FacetHolder facetHolder = processClassContext.getFacetHolder();
+ final FacetHolder holder = processClassContext.getFacetHolder();
//
// this rule originally implemented only in AuditableFacetFromConfigurationFactory
@@ -81,16 +81,49 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
return;
}
- FacetUtil.addFacet(AuditableFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
+
+ AuditableFacet auditableFacet;
+
+ // check for the deprecated annotation first
+ final Audited annotation = Annotations.getAnnotation(cls, Audited.class);
+ auditableFacet = AuditableFacetAuditedAnnotation.create(annotation, holder);
+
+ // else check for @DomainObject(auditing=....)
+ if(auditableFacet == null) {
+ auditableFacet = AuditableFacetForDomainObjectAnnotation.create(domainObject, configuration, holder);
+ }
+
+ FacetUtil.addFacet(auditableFacet);
}
- private void processPublishing(ProcessClassContext processClassContext) {
+ private void processPublishing(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
- FacetUtil.addFacet(PublishedObjectFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
+ //
+ // this rule inspired by a similar rule for auditing, see above
+ //
+ if(HasTransactionId.class.isAssignableFrom(cls)) {
+ // do not install on any implementation of HasTransactionId
+ // (ie commands, audit entries, published events).
+ return;
+ }
+
+ PublishedObjectFacet publishedObjectFacet;
+
+ // check for the deprecated @PublishedObject annotation first
+ final PublishedObject publishedObject = Annotations.getAnnotation(processClassContext.getCls(), PublishedObject.class);
+ publishedObjectFacet = PublishedObjectFacetAnnotation.create(publishedObject, processClassContext.getFacetHolder());
+
+ // else check from @DomainObject(publishing=...)
+ if(publishedObjectFacet == null) {
+ publishedObjectFacet=
+ PublishedObjectFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder);
+ }
+ FacetUtil.addFacet(
+ publishedObjectFacet);
}
private void processAutoComplete(final ProcessClassContext processClassContext) {
@@ -98,7 +131,9 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
- FacetUtil.addFacet(AutoCompleteFacetForDomainObjectAnnotation.create(domainObject, getSpecificationLoader(), adapterManager, servicesInjector, facetHolder));
+ FacetUtil.addFacet(
+ AutoCompleteFacetForDomainObjectAnnotation.create(
+ domainObject, getSpecificationLoader(), adapterManager, servicesInjector, facetHolder));
}
private void processBounded(final ProcessClassContext processClassContext) {
@@ -106,7 +141,8 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
- FacetUtil.addFacet(ChoicesFacetForDomainObjectAnnotation.create(domainObject, querySubmitter, facetHolder));
+ FacetUtil.addFacet(
+ ChoicesFacetForDomainObjectAnnotation.create(domainObject, querySubmitter, facetHolder));
}
private void processEditing(final ProcessClassContext processClassContext) {
@@ -114,7 +150,8 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
- FacetUtil.addFacet(ImmutableFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
+ FacetUtil.addFacet(
+ ImmutableFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
}
private void processObjectType(final ProcessClassContext processClassContext) {
@@ -122,7 +159,8 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
- FacetUtil.addFacet(ObjectSpecIdFacetForDomainObjectAnnotation.create(domainObject, facetHolder));
+ FacetUtil.addFacet(
+ ObjectSpecIdFacetForDomainObjectAnnotation.create(domainObject, facetHolder));
}
private void processViewModel(final ProcessClassContext processClassContext) {
@@ -130,7 +168,9 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
- FacetUtil.addFacet(ViewModelFacetForDomainObjectAnnotation.create(domainObject, getSpecificationLoader(), adapterManager, servicesInjector, facetHolder));
+ FacetUtil.addFacet(
+ ViewModelFacetForDomainObjectAnnotation.create(
+ domainObject, getSpecificationLoader(), adapterManager, servicesInjector, facetHolder));
}
@@ -139,7 +179,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract imp
this.configuration = configuration;
}
-
@Override
public void setAdapterManager(AdapterManager adapterManager) {
this.adapterManager = adapterManager;
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ImmutableFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ImmutableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ImmutableFacetForDomainObjectAnnotation.java
index 9142dcf..7db27c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ImmutableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ImmutableFacetForDomainObjectAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.domainobject;
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.EditPolicy;
+import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -40,9 +40,13 @@ public class ImmutableFacetForDomainObjectAnnotation extends ImmutableFacetAbstr
final IsisConfiguration configuration,
final FacetHolder holder) {
- final EditPolicy editPolicy = domainObject.editing();
+ if(domainObject == null) {
+ return null;
+ }
+
+ final Editing editing = domainObject.editing();
final String disabledReason = domainObject.editingDisabledReason();
- switch (editPolicy) {
+ switch (editing) {
case AS_CONFIGURED:
if(holder.containsDoOpFacet(ImmutableFacet.class)) {
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectSpecIdFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectSpecIdFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectSpecIdFacetForDomainObjectAnnotation.java
index 963b526..329c96c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectSpecIdFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectSpecIdFacetForDomainObjectAnnotation.java
@@ -31,6 +31,10 @@ public class ObjectSpecIdFacetForDomainObjectAnnotation extends ObjectSpecIdFace
final DomainObject domainObject,
final FacetHolder holder) {
+ if(domainObject == null) {
+ return null;
+ }
+
final String objectType = domainObject.objectType();
if(Strings.isNullOrEmpty(objectType)) {
return null;
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishObjectsConfiguration.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishObjectsConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishObjectsConfiguration.java
index d77485c..4458b09 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishObjectsConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishObjectsConfiguration.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package org.apache.isis.core.metamodel.facets.object.domainobject;
import org.apache.isis.core.commons.config.IsisConfiguration;
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotation.java
index a2b5329..b6143b3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotation.java
@@ -21,7 +21,9 @@ package org.apache.isis.core.metamodel.facets.object.domainobject;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.PublishedObject;
-import org.apache.isis.applib.annotation.PublishingPolicy;
+import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.annotation.PublishingChangeKind;
+import org.apache.isis.applib.annotation.PublishingPayloadFactoryForObject;
import org.apache.isis.applib.services.publish.EventPayload;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -35,29 +37,35 @@ public class PublishedObjectFacetForDomainObjectAnnotation extends PublishedObje
final IsisConfiguration configuration,
final FacetHolder holder) {
- final PublishingPolicy publishingPolicy = domainObject.publishing();
+ if(domainObject == null) {
+ return null;
+ }
- switch (publishingPolicy) {
- case AS_CONFIGURED:
+ final Publishing publishing = domainObject.publishing();
- if(holder.containsDoOpFacet(PublishedObjectFacet.class)) {
- // do not replace
- return null;
- }
+ switch (publishing) {
+ case AS_CONFIGURED:
final PublishObjectsConfiguration setting = PublishObjectsConfiguration.parse(configuration);
- return setting == PublishObjectsConfiguration.ALL
- ? new PublishedObjectFacetForDomainObjectAnnotation(newPayloadFactory(domainObject.publishingPayloadFactory()), holder)
- : null;
+ switch (setting) {
+ case NONE:
+ return null;
+ default:
+ return new PublishedObjectFacetForDomainObjectAnnotationAsConfigured(
+ newPayloadFactory(domainObject), holder);
+ }
case DISABLED:
return null;
case ENABLED:
- return new PublishedObjectFacetForDomainObjectAnnotation(newPayloadFactory(domainObject.publishingPayloadFactory()), holder);
+ return new PublishedObjectFacetForDomainObjectAnnotation(
+ newPayloadFactory(domainObject), holder);
}
return null;
}
- private static DomainObject.PublishingPayloadFactory newPayloadFactory(final Class<? extends DomainObject.PublishingPayloadFactory> value) {
+ protected static PublishingPayloadFactoryForObject newPayloadFactory(
+ final DomainObject domainObject) {
+ final Class<? extends PublishingPayloadFactoryForObject> value = domainObject.publishingPayloadFactory();
if(value == null) {
return null;
}
@@ -71,13 +79,13 @@ public class PublishedObjectFacetForDomainObjectAnnotation extends PublishedObje
}
- private PublishedObjectFacetForDomainObjectAnnotation(DomainObject.PublishingPayloadFactory publishingPayloadFactory, final FacetHolder holder) {
+ PublishedObjectFacetForDomainObjectAnnotation(PublishingPayloadFactoryForObject publishingPayloadFactory, final FacetHolder holder) {
super(legacyPayloadFactoryFor(publishingPayloadFactory), holder);
}
- private static PublishedObject.PayloadFactory legacyPayloadFactoryFor(DomainObject.PublishingPayloadFactory publishingPayloadFactory) {
- if(publishingPayloadFactory instanceof DomainObject.PublishingPayloadFactory.Adapter) {
- final DomainObject.PublishingPayloadFactory.Adapter adapter = (DomainObject.PublishingPayloadFactory.Adapter) publishingPayloadFactory;
+ private static PublishedObject.PayloadFactory legacyPayloadFactoryFor(PublishingPayloadFactoryForObject publishingPayloadFactory) {
+ if(publishingPayloadFactory instanceof PublishingPayloadFactoryForObject.Adapter) {
+ final PublishingPayloadFactoryForObject.Adapter adapter = (PublishingPayloadFactoryForObject.Adapter) publishingPayloadFactory;
return adapter.getPayloadFactory();
}
return new LegacyAdapter(publishingPayloadFactory);
@@ -85,15 +93,15 @@ public class PublishedObjectFacetForDomainObjectAnnotation extends PublishedObje
private static class LegacyAdapter implements PublishedObject.PayloadFactory {
- private final DomainObject.PublishingPayloadFactory payloadFactory;
+ private final PublishingPayloadFactoryForObject payloadFactory;
- LegacyAdapter(final DomainObject.PublishingPayloadFactory payloadFactory) {
+ LegacyAdapter(final PublishingPayloadFactoryForObject payloadFactory) {
this.payloadFactory = payloadFactory;
}
@Override
public EventPayload payloadFor(Object changedObject, PublishedObject.ChangeKind changeKind) {
- return payloadFactory.payloadFor(changedObject, DomainObject.PublishingChangeKind.from(changeKind));
+ return payloadFactory.payloadFor(changedObject, PublishingChangeKind.from(changeKind));
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotationAsConfigured.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotationAsConfigured.java
new file mode 100644
index 0000000..72077a1
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/PublishedObjectFacetForDomainObjectAnnotationAsConfigured.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.object.domainobject;
+
+import org.apache.isis.applib.annotation.PublishingPayloadFactoryForObject;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+public class PublishedObjectFacetForDomainObjectAnnotationAsConfigured extends PublishedObjectFacetForDomainObjectAnnotation {
+
+
+ PublishedObjectFacetForDomainObjectAnnotationAsConfigured(final PublishingPayloadFactoryForObject publishingPayloadFactory, final FacetHolder holder) {
+ super(publishingPayloadFactory, holder);
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ViewModelFacetForDomainObjectAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ViewModelFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ViewModelFacetForDomainObjectAnnotation.java
index ab2c649..8eb5ef4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ViewModelFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/ViewModelFacetForDomainObjectAnnotation.java
@@ -36,6 +36,10 @@ public class ViewModelFacetForDomainObjectAnnotation extends ViewModelFacetDecla
final ServicesInjector servicesInjector,
final FacetHolder holder) {
+ if(domainObject == null) {
+ return null;
+ }
+
final boolean viewModel = domainObject.viewModel();
if(!viewModel) {
return null;
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
new file mode 100644
index 0000000..5722b21
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.core.metamodel.facets.object.domainobjectlayout;
+
+
+import org.apache.isis.applib.annotation.DomainObjectLayout;
+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;
+
+
+public class DomainObjectLayoutFacetFactory extends FacetFactoryAbstract {
+
+ public DomainObjectLayoutFacetFactory() {
+ super(FeatureType.OBJECTS_ONLY);
+ }
+
+ @Override
+ public void process(ProcessClassContext processClassContext) {
+ final Class<?> cls = processClassContext.getCls();
+ final DomainObjectLayout domainObjectLayout = Annotations.getAnnotation(cls, DomainObjectLayout.class);
+ final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+ FacetUtil.addFacet(
+ CssClassFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
+ FacetUtil.addFacet(
+ DescribedAsFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
+ FacetUtil.addFacet(
+ NamedFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
+ FacetUtil.addFacet(
+ PagedFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
+ FacetUtil.addFacet(
+ PluralFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
+ FacetUtil.addFacet(
+ BookmarkPolicyFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
+
+ return;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactory.java
deleted file mode 100644
index 4e8314b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactory.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.domainobjectlayout;
-
-
-import org.apache.isis.applib.annotation.DomainObjectLayout;
-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;
-
-
-public class DomainObjectLayoutFactory extends FacetFactoryAbstract {
-
- public DomainObjectLayoutFactory() {
- super(FeatureType.OBJECTS_ONLY);
- }
-
- @Override
- public void process(ProcessClassContext processClassContext) {
- final Class<?> cls = processClassContext.getCls();
- final DomainObjectLayout domainObjectLayout = Annotations.getAnnotation(cls, DomainObjectLayout.class);
-
- final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
- FacetUtil.addFacet(CssClassFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
- FacetUtil.addFacet(DescribedAsFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
- FacetUtil.addFacet(NamedFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
- FacetUtil.addFacet(PagedFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
- FacetUtil.addFacet(PluralFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
- FacetUtil.addFacet(BookmarkPolicyFacetForDomainObjectLayoutAnnotation.create(domainObjectLayout, facetHolder));
-
- return;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotation.java
index 3a211f0..0d279d4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotation.java
@@ -21,13 +21,37 @@ package org.apache.isis.core.metamodel.facets.object.publishedobject.annotation;
import org.apache.isis.applib.annotation.PublishedObject;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObjectFacet;
import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObjectFacetAbstract;
public class PublishedObjectFacetAnnotation extends PublishedObjectFacetAbstract {
- public PublishedObjectFacetAnnotation(PublishedObject.PayloadFactory eventCanonicalizer, final FacetHolder holder) {
- super(eventCanonicalizer, holder);
+ public static PublishedObjectFacet create(
+ final PublishedObject publishedObject,
+ final FacetHolder holder) {
+
+ if (publishedObject == null) {
+ return null;
+ }
+
+ else return new PublishedObjectFacetAnnotation(newPayloadFactory(publishedObject.value()), holder);
}
+ private PublishedObjectFacetAnnotation(final PublishedObject.PayloadFactory payloadFactory, final FacetHolder holder) {
+ super(payloadFactory, holder);
+ }
+
+ private static PublishedObject.PayloadFactory newPayloadFactory(final Class<? extends PublishedObject.PayloadFactory> value) {
+ if(value == null) {
+ return null;
+ }
+ try {
+ return value.newInstance();
+ } catch (final InstantiationException e) {
+ return null;
+ } catch (final IllegalAccessException e) {
+ return null;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotationFactory.java
index 5baae70..c34da38 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/publishedobject/annotation/PublishedObjectFacetAnnotationFactory.java
@@ -19,13 +19,8 @@
package org.apache.isis.core.metamodel.facets.object.publishedobject.annotation;
-import org.apache.isis.applib.annotation.PublishedObject;
-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.publishedobject.PublishedObjectFacet;
public class PublishedObjectFacetAnnotationFactory extends FacetFactoryAbstract {
@@ -34,27 +29,12 @@ public class PublishedObjectFacetAnnotationFactory extends FacetFactoryAbstract
}
@Override
- public void process(ProcessClassContext processClassContext) {
- super.process(processClassContext);
- final PublishedObject annotation = Annotations.getAnnotation(processClassContext.getCls(), PublishedObject.class);
- FacetUtil.addFacet(create(annotation, processClassContext.getFacetHolder()));
- }
+ public void process(final ProcessClassContext processClassContext) {
- private PublishedObjectFacet create(final PublishedObject annotation, final FacetHolder holder) {
- return annotation == null ? null : new PublishedObjectFacetAnnotation(newPayloadFactory(annotation.value()), holder);
+ //
+ // moved to DomainObjectAnnotationFacetFactory
+ //
}
- private static PublishedObject.PayloadFactory newPayloadFactory(final Class<? extends PublishedObject.PayloadFactory> value) {
- if(value == null) {
- return null;
- }
- try {
- return (PublishedObject.PayloadFactory) value.newInstance();
- } catch (final InstantiationException e) {
- return null;
- } catch (final IllegalAccessException e) {
- return null;
- }
- }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/ParameterLayoutFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/ParameterLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/ParameterLayoutFacetFactory.java
new file mode 100644
index 0000000..37363f4
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/ParameterLayoutFacetFactory.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.param.layout;
+
+import java.lang.annotation.Annotation;
+import org.apache.isis.applib.annotation.ParameterLayout;
+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.FacetedMethodParameter;
+
+public class ParameterLayoutFacetFactory extends FacetFactoryAbstract {
+
+ public ParameterLayoutFacetFactory() {
+ super(FeatureType.PARAMETERS_ONLY);
+ }
+
+ @Override
+ public void processParams(final ProcessParameterContext processParameterContext) {
+ final Class<?>[] parameterTypes = processParameterContext.getMethod().getParameterTypes();
+ if (processParameterContext.getParamNum() >= parameterTypes.length) {
+ // ignore
+ return;
+ }
+
+ final Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(processParameterContext.getMethod())[processParameterContext.getParamNum()];
+ for (final Annotation parameterAnnotation : parameterAnnotations) {
+ if (parameterAnnotation instanceof ParameterLayout) {
+ final ParameterLayout parameterLayout = (ParameterLayout) parameterAnnotation;
+ addFacets(processParameterContext, parameterLayout);
+ return;
+ }
+ }
+ }
+
+ protected void addFacets(ProcessParameterContext processParameterContext, ParameterLayout parameterLayout) {
+ final FacetedMethodParameter facetHolder = processParameterContext.getFacetHolder();
+
+ FacetUtil.addFacet(CssClassFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
+ FacetUtil.addFacet(DescribedAsFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
+ FacetUtil.addFacet(LabelAtFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
+ FacetUtil.addFacet(MultiLineFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
+ FacetUtil.addFacet(NamedFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
+ FacetUtil.addFacet(RenderedAdjustedFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
+ FacetUtil.addFacet(TypicalLengthFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/ParameterLayoutFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/ParameterLayoutFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/ParameterLayoutFactory.java
deleted file mode 100644
index 757b68b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/ParameterLayoutFactory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.param.layout;
-
-import java.lang.annotation.Annotation;
-import org.apache.isis.applib.annotation.ParameterLayout;
-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.FacetedMethodParameter;
-
-public class ParameterLayoutFactory extends FacetFactoryAbstract {
-
- public ParameterLayoutFactory() {
- super(FeatureType.PARAMETERS_ONLY);
- }
-
- @Override
- public void processParams(final ProcessParameterContext processParameterContext) {
- final Class<?>[] parameterTypes = processParameterContext.getMethod().getParameterTypes();
- if (processParameterContext.getParamNum() >= parameterTypes.length) {
- // ignore
- return;
- }
-
- final Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(processParameterContext.getMethod())[processParameterContext.getParamNum()];
- for (final Annotation parameterAnnotation : parameterAnnotations) {
- if (parameterAnnotation instanceof ParameterLayout) {
- final ParameterLayout parameterLayout = (ParameterLayout) parameterAnnotation;
- addFacets(processParameterContext, parameterLayout);
- return;
- }
- }
- }
-
- protected void addFacets(ProcessParameterContext processParameterContext, ParameterLayout parameterLayout) {
- final FacetedMethodParameter facetHolder = processParameterContext.getFacetHolder();
-
- FacetUtil.addFacet(CssClassFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
- FacetUtil.addFacet(DescribedAsFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
- FacetUtil.addFacet(LabelAtFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
- FacetUtil.addFacet(MultiLineFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
- FacetUtil.addFacet(NamedFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
- FacetUtil.addFacet(RenderedAdjustedFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
- FacetUtil.addFacet(TypicalLengthFacetForParameterLayoutAnnotation.create(parameterLayout, facetHolder));
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java
index 733e472..65de746 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java
@@ -32,11 +32,20 @@ public abstract class MandatoryFacetForParameterAnnotation extends MandatoryFace
super(holder, semantics);
}
- static MandatoryFacet create(final Parameter parameter, Method method, final FacetHolder holder) {
+ static MandatoryFacet create(
+ final Parameter parameter,
+ final Method method,
+ final FacetHolder holder) {
+
+ if (parameter == null) {
+ return null;
+ }
+
final Class<?> returnType = method.getReturnType();
if (returnType.isPrimitive()) {
return new MandatoryFacetForParameterAnnotation.Primitive(holder);
}
+
final Optionality optionality = parameter.optional();
switch (optionality) {
case DEFAULT:
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java
index 74c17c3..b065684 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java
@@ -26,7 +26,14 @@ import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacetAbst
public class MaxLengthFacetForParameterAnnotation extends MaxLengthFacetAbstract {
- public static MaxLengthFacet create(Parameter parameter, FacetHolder holder) {
+ public static MaxLengthFacet create(
+ final Parameter parameter,
+ final FacetHolder holder) {
+
+ if (parameter == null) {
+ return null;
+ }
+
final int maxLength = parameter.maxLength();
return maxLength != -1
? new MaxLengthFacetForParameterAnnotation(maxLength, holder)
http://git-wip-us.apache.org/repos/asf/isis/blob/62ebe98d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java
index 43d9624..25beaf3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java
@@ -30,6 +30,11 @@ import org.apache.isis.core.metamodel.facets.propparam.mustsatisfyspec.MustSatis
public class MustSatisfySpecificationFacetForParameterAnnotation extends MustSatisfySpecificationFacetAbstract {
static Facet create(final Parameter parameter, final FacetHolder holder) {
+
+ if (parameter == null) {
+ return null;
+ }
+
final Class<?>[] values = parameter.mustSatisfy();
final List<Specification> specifications = Lists.newArrayList();
for (final Class<?> value : values) {