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 2014/12/30 10:32:11 UTC
[2/2] isis git commit: ISIS-970: reworking property/collection/action
interaction facets (done by the interaction facet factories);
process hidden facet for property/collection/action annotation facets;
process editing for collections; process typeof for
ISIS-970: reworking property/collection/action interaction facets (done by the interaction facet factories); process hidden facet for property/collection/action annotation facets; process editing for collections; process typeof for collections (done by typeof facet factory)
Also:
- some refactoring of {Disabled/Hidden}Facet{Impl/AlwaysEverywhere}, made abstract (name adjusted accordingly) and created subtypes where used directly
- most notably DisabledFacetForContributee, also {Disabled/Hidden}FacetOnStaticMethod
- deleted {Disabled/Hidden}FacetNever, since not used.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b55af5f1
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b55af5f1
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b55af5f1
Branch: refs/heads/ISIS-970
Commit: b55af5f1db08e2e2719d6f3dc724fcc700a1cf26
Parents: 06c8199
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Dec 30 09:32:02 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Dec 30 09:32:02 2014 +0000
----------------------------------------------------------------------
.../core/metamodel/facetapi/FacetAbstract.java | 2 +-
.../action/ActionAnnotationFacetFactory.java | 31 +++++---
...tionInteractionFacetForActionAnnotation.java | 36 ++++++++++
.../action/HiddenFacetForActionAnnotation.java | 49 +++++++++++++
.../ActionInteractionFacetAnnotation.java | 4 +-
.../ActionInteractionFacetDefault.java | 4 +-
.../ActionInteractionFacetFactory.java | 15 +++-
.../TypeOfFacetForActionAnnotation.java | 35 +++++++++
.../TypeOfFacetOnActionAnnotation.java | 5 +-
.../TypeOfFacetOnActionAnnotationFactory.java | 15 +++-
.../CollectionAnnotationFacetFactory.java | 56 +++++++++------
...InteractionFacetForCollectionAnnotation.java | 48 +++++++++++++
.../DisabledFacetForCollectionAnnotation.java | 57 +++++++++++++++
.../HiddenFacetForCollectionAnnotation.java | 49 +++++++++++++
.../CollectionInteractionFacetAnnotation.java | 4 +-
.../CollectionInteractionFacetDefault.java | 4 +-
.../CollectionInteractionFacetFactory.java | 16 +++--
.../members/disabled/DisabledFacetAbstract.java | 6 +-
.../DisabledFacetAbstractAlwaysEverywhere.java | 41 +++++++++++
.../disabled/DisabledFacetAbstractImpl.java | 74 ++++++++++++++++++++
.../disabled/DisabledFacetAlwaysEverywhere.java | 41 -----------
.../disabled/DisabledFacetForContributee.java | 31 ++++++++
.../members/disabled/DisabledFacetImpl.java | 74 --------------------
.../members/disabled/DisabledFacetNever.java | 46 ------------
.../annotprop/DisabledFacetAnnotation.java | 4 +-
.../annotprop/DisabledFacetFromProperties.java | 4 +-
.../DisabledFacetForStaticMethod.java | 32 +++++++++
.../DisabledFacetStaticMethodFacetFactory.java | 6 +-
.../members/hidden/HiddenFacetAbstract.java | 6 +-
.../HiddenFacetAbstractAlwaysEverywhere.java | 41 +++++++++++
.../members/hidden/HiddenFacetAbstractImpl.java | 59 ++++++++++++++++
.../hidden/HiddenFacetAlwaysEverywhere.java | 42 -----------
.../facets/members/hidden/HiddenFacetImpl.java | 59 ----------------
.../facets/members/hidden/HiddenFacetNever.java | 45 ------------
.../HiddenFacetOnMemberAnnotation.java | 4 +-
.../HiddenFacetOnMemberFromProperties.java | 4 +-
.../staticmethod/HiddenFacetOnStaticMethod.java | 31 ++++++++
.../HiddenFacetStaticMethodFactory.java | 6 +-
.../annotation/HiddenFacetOnTypeAnnotation.java | 4 +-
.../DisabledFacetOnPropertyInferred.java | 15 ++--
.../DisabledFacetOnPropertyInferredFactory.java | 3 +-
.../PropertyInteractionFacetAnnotation.java | 4 +-
.../PropertyInteractionFacetDefault.java | 4 +-
.../PropertyInteractionFacetFactory.java | 14 +++-
.../DisabledFacetForPropertyAnnotation.java | 10 +--
.../HiddenFacetForPropertyAnnotation.java | 49 +++++++++++++
.../PropertyAnnotationFacetFactory.java | 15 ++--
...tyInteractionFacetForPropertyAnnotation.java | 23 +-----
.../update/PropertySetAndClearFacetFactory.java | 1 -
.../json/LayoutMetadataReaderFromJson.java | 6 +-
.../metamodel/spec/feature/ObjectMember.java | 1 -
.../OneToManyAssociationContributee.java | 11 ++-
.../OneToOneAssociationContributee.java | 7 +-
...FacetDerivedFromJdoPrimaryKeyAnnotation.java | 4 +-
.../CollectionFieldMethodsFacetFactoryTest.java | 12 ++--
.../HiddenAnnotationFacetFactoryTest.java | 2 +-
.../PropertyMethodsFacetFactoryTest.java | 8 +--
.../system/ObjectMemberAbstractTest.java | 38 ++++------
...oryAbstractTest_wrappedObject_transient.java | 6 +-
59 files changed, 835 insertions(+), 488 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java
index 790540e..5ac2575 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java
@@ -54,7 +54,7 @@ public abstract class FacetAbstract implements Facet {
final Derivation derivation) {
this.facetType = ensureThatArg(facetType, is(not(nullValue(Class.class))));
setFacetHolder(ensureThatArg(holder, is(not(nullValue(FacetHolder.class)))));
- this.derived = derivation == Derivation.DERIVED;
+ this.derived = (derivation == Derivation.DERIVED);
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 0cd3927..210c137 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -21,9 +21,13 @@ package org.apache.isis.core.metamodel.facets.actions.action;
import java.lang.reflect.Method;
import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Collection;
+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.collections.collection.HiddenFacetForCollectionAnnotation;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
@@ -44,18 +48,25 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
return;
}
-// processInteraction(processMethodContext);
+ processInteraction(processMethodContext);
+ processHidden(processMethodContext);
}
-// private void processInteraction(final ProcessMethodContext processMethodContext) {
-// final Method method = processMethodContext.getMethod();
-// final Property property = Annotations.getAnnotation(method, Property.class);
-// final FacetHolder holder = processMethodContext.getFacetHolder();
-//
-// FacetUtil.addFacet(
-// PropertyInteractionFacetForPropertyAnnotation.create(
-// property, servicesInjector, getSpecificationLoader(), holder));
-// }
+ private void processInteraction(final ProcessMethodContext processMethodContext) {
+
+ // interaction is handled by ActionInteractionFacetFactory, because the
+ // deprecated annotations must also be supported.
+
+ }
+
+ private void processHidden(final ProcessMethodContext processMethodContext) {
+ final Method method = processMethodContext.getMethod();
+ final Action action = Annotations.getAnnotation(method, Action.class);
+ final FacetHolder holder = processMethodContext.getFacetHolder();
+
+ FacetUtil.addFacet(
+ HiddenFacetForActionAnnotation.create(action, holder));
+ }
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionInteractionFacetForActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionInteractionFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionInteractionFacetForActionAnnotation.java
new file mode 100644
index 0000000..b074292
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionInteractionFacetForActionAnnotation.java
@@ -0,0 +1,36 @@
+/*
+ * 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.actions.action;
+
+import org.apache.isis.applib.services.eventbus.ActionInteractionEvent;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.actions.interaction.ActionInteractionFacetAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+
+public class ActionInteractionFacetForActionAnnotation extends ActionInteractionFacetAbstract {
+
+ public ActionInteractionFacetForActionAnnotation(
+ final Class<? extends ActionInteractionEvent<?>> eventType,
+ final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {
+ super(eventType, holder, servicesInjector, specificationLoader);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/HiddenFacetForActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/HiddenFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/HiddenFacetForActionAnnotation.java
new file mode 100644
index 0000000..a0575ef
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/HiddenFacetForActionAnnotation.java
@@ -0,0 +1,49 @@
+/*
+ * 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.actions.action;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+
+public class HiddenFacetForActionAnnotation extends HiddenFacetAbstract {
+
+ public static HiddenFacet create(final Action action, final FacetHolder holder) {
+ final Where where = action.hidden();
+ return where != null && where != Where.NOT_SPECIFIED ? new HiddenFacetForActionAnnotation(where, holder) : null;
+ }
+
+ private HiddenFacetForActionAnnotation(final Where where, final FacetHolder holder) {
+ super(When.ALWAYS, where, holder);
+ }
+
+ @Override
+ public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+ if(!where().includes(whereContext)) {
+ return null;
+ }
+ return "Hidden on " + where().getFriendlyName();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetAnnotation.java
index 615485e..c0a2173 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetAnnotation.java
@@ -28,9 +28,7 @@ public class ActionInteractionFacetAnnotation extends ActionInteractionFacetAbst
public ActionInteractionFacetAnnotation(
final Class<? extends ActionInteractionEvent<?>> eventType,
- final FacetHolder holder,
- final ServicesInjector servicesInjector,
- final SpecificationLoader specificationLoader) {
+ final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {
super(eventType, holder, servicesInjector, specificationLoader);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetDefault.java
index 530adb5..125ae71 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetDefault.java
@@ -28,9 +28,7 @@ public class ActionInteractionFacetDefault extends ActionInteractionFacetAbstrac
public ActionInteractionFacetDefault(
final Class<? extends ActionInteractionEvent<?>> eventType,
- final FacetHolder holder,
- final ServicesInjector servicesInjector,
- final SpecificationLoader specificationLoader) {
+ final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {
super(eventType, holder, servicesInjector, specificationLoader);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetFactory.java
index 4f48ff4..95a6b00 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacetFactory.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.actions.interaction;
import java.lang.reflect.Method;
+import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionInteraction;
import org.apache.isis.applib.annotation.PostsActionInvokedEvent;
import org.apache.isis.applib.services.eventbus.ActionInteractionEvent;
@@ -32,6 +33,7 @@ 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.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.actions.action.ActionInteractionFacetForActionAnnotation;
import org.apache.isis.core.metamodel.facets.actions.debug.DebugFacet;
import org.apache.isis.core.metamodel.facets.actions.exploration.ExplorationFacet;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
@@ -107,16 +109,23 @@ public class ActionInteractionFacetFactory extends MethodPrefixBasedFacetFactory
//
// Set up ActionInteractionFacet, which will act as the hiding/disabling/validating advisor
//
+ final Action action = Annotations.getAnnotation(actionMethod, Action.class);
final ActionInteraction actionInteraction =Annotations.getAnnotation(actionMethod, ActionInteraction.class);
final Class<? extends ActionInteractionEvent<?>> actionInteractionEventType;
final ActionInteractionFacetAbstract actionInteractionFacet;
- if(actionInteraction != null) {
+ if(action != null && action.interaction() != null) {
+ actionInteractionEventType = action.interaction();
+ actionInteractionFacet = new ActionInteractionFacetForActionAnnotation(
+ actionInteractionEventType, servicesInjector, getSpecificationLoader(), holder);
+ } else if(actionInteraction != null) {
actionInteractionEventType = actionInteraction.value();
- actionInteractionFacet = new ActionInteractionFacetAnnotation(actionInteractionEventType, holder, servicesInjector, getSpecificationLoader());
+ actionInteractionFacet = new ActionInteractionFacetAnnotation(
+ actionInteractionEventType, servicesInjector, getSpecificationLoader(), holder);
} else {
actionInteractionEventType = ActionInteractionEvent.Default.class;
- actionInteractionFacet = new ActionInteractionFacetDefault(actionInteractionEventType, holder, servicesInjector, getSpecificationLoader());
+ actionInteractionFacet = new ActionInteractionFacetDefault(
+ actionInteractionEventType, servicesInjector, getSpecificationLoader(), holder);
}
FacetUtil.addFacet(actionInteractionFacet);
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetForActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetForActionAnnotation.java
new file mode 100644
index 0000000..0b8e561
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetForActionAnnotation.java
@@ -0,0 +1,35 @@
+/*
+ * 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.actions.typeof.annotation;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetAbstract;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+
+public class TypeOfFacetForActionAnnotation extends TypeOfFacetAbstract {
+
+ public TypeOfFacetForActionAnnotation(
+ final Class<?> type,
+ final SpecificationLoader specificationLookup,
+ final FacetHolder holder) {
+ super(type, holder, specificationLookup);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotation.java
index 5d09294..bb6a460 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotation.java
@@ -25,7 +25,10 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoader;
public class TypeOfFacetOnActionAnnotation extends TypeOfFacetAbstract {
- public TypeOfFacetOnActionAnnotation(final Class<?> type, final FacetHolder holder, final SpecificationLoader specificationLookup) {
+ public TypeOfFacetOnActionAnnotation(
+ final Class<?> type,
+ final SpecificationLoader specificationLookup,
+ final FacetHolder holder) {
super(type, holder, specificationLookup);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java
index e7f40e8..24636c1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/typeof/annotation/TypeOfFacetOnActionAnnotationFactory.java
@@ -19,7 +19,12 @@
package org.apache.isis.core.metamodel.facets.actions.typeof.annotation;
-import java.lang.reflect.*;
+import java.lang.reflect.GenericDeclaration;
+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;
@@ -53,9 +58,15 @@ public class TypeOfFacetOnActionAnnotationFactory extends FacetFactoryAbstract {
return;
}
+ final Collection collection = Annotations.getAnnotation(method, Collection.class);
+ if (collection != null && collection.typeOf() != null) {
+ FacetUtil.addFacet(new TypeOfFacetForActionAnnotation(collection.typeOf(), getSpecificationLoader(), processMethodContext.getFacetHolder()));
+ return;
+ }
+
final TypeOf annotation = Annotations.getAnnotation(method, TypeOf.class);
if (annotation != null) {
- FacetUtil.addFacet(new TypeOfFacetOnActionAnnotation(annotation.value(), processMethodContext.getFacetHolder(), getSpecificationLoader()));
+ FacetUtil.addFacet(new TypeOfFacetOnActionAnnotation(annotation.value(), getSpecificationLoader(), processMethodContext.getFacetHolder()));
return;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
index c9ef42b..b97374a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
@@ -21,6 +21,8 @@ package org.apache.isis.core.metamodel.facets.collections.collection;
import java.lang.reflect.Method;
import org.apache.isis.applib.annotation.Collection;
+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;
@@ -44,28 +46,42 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract imple
return;
}
-// processInteraction(processMethodContext);
-// processDisabled(processMethodContext);
+ processInteraction(processMethodContext);
+ processHidden(processMethodContext);
+ processEditing(processMethodContext);
+ processTypeOf(processMethodContext);
}
-// private void processInteraction(final ProcessMethodContext processMethodContext) {
-// final Method method = processMethodContext.getMethod();
-// final Property property = Annotations.getAnnotation(method, Property.class);
-// final FacetHolder holder = processMethodContext.getFacetHolder();
-//
-// FacetUtil.addFacet(
-// PropertyInteractionFacetForPropertyAnnotation.create(
-// property, servicesInjector, getSpecificationLoader(), holder));
-// }
-//
-// private void processDisabled(final ProcessMethodContext processMethodContext) {
-// final Method method = processMethodContext.getMethod();
-// final Property property = Annotations.getAnnotation(method, Property.class);
-// final FacetHolder holder = processMethodContext.getFacetHolder();
-//
-// FacetUtil.addFacet(
-// DisabledFacetForPropertyAnnotation.create(property, holder));
-// }
+ private void processInteraction(final ProcessMethodContext processMethodContext) {
+
+ // interaction is handled by CollectionInteractionFacetFactory, because the
+ // deprecated annotations must also be supported.
+
+ }
+
+ private void processHidden(final ProcessMethodContext processMethodContext) {
+ final Method method = processMethodContext.getMethod();
+ final Collection collection = Annotations.getAnnotation(method, Collection.class);
+ final FacetHolder holder = processMethodContext.getFacetHolder();
+
+ FacetUtil.addFacet(
+ HiddenFacetForCollectionAnnotation.create(collection, holder));
+ }
+
+ private void processEditing(final ProcessMethodContext processMethodContext) {
+ final Method method = processMethodContext.getMethod();
+ final Collection collection = Annotations.getAnnotation(method, Collection.class);
+ final FacetHolder holder = processMethodContext.getFacetHolder();
+
+ FacetUtil.addFacet(
+ DisabledFacetForCollectionAnnotation.create(collection, holder));
+ }
+
+ private void processTypeOf(final ProcessMethodContext processMethodContext) {
+
+ // typeOf is handled by TypeOfFacetOnActionAnnotationFactory, because the
+ // deprecated annotations etc that must also be supported.
+ }
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionInteractionFacetForCollectionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionInteractionFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionInteractionFacetForCollectionAnnotation.java
new file mode 100644
index 0000000..c6e09c2
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionInteractionFacetForCollectionAnnotation.java
@@ -0,0 +1,48 @@
+/*
+ * 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.collection;
+
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.services.eventbus.CollectionInteractionEvent;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.collections.interaction.CollectionInteractionFacet;
+import org.apache.isis.core.metamodel.facets.collections.interaction.CollectionInteractionFacetAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+
+public class CollectionInteractionFacetForCollectionAnnotation extends CollectionInteractionFacetAbstract {
+
+ static CollectionInteractionFacet create(
+ final Collection collection,
+ final ServicesInjector servicesInjector,
+ final SpecificationLoader specificationLoader,
+ final FacetHolder holder) {
+ Class<? extends CollectionInteractionEvent<?, ?>> collectionInteractionEventType = collection.interaction();
+ return new CollectionInteractionFacetForCollectionAnnotation(
+ collectionInteractionEventType, servicesInjector, specificationLoader, holder);
+ }
+
+ public CollectionInteractionFacetForCollectionAnnotation(
+ final Class<? extends CollectionInteractionEvent<?, ?>> eventType,
+ final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {
+ super(eventType, holder, servicesInjector, specificationLoader);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/DisabledFacetForCollectionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/DisabledFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/DisabledFacetForCollectionAnnotation.java
new file mode 100644
index 0000000..ed881f4
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/DisabledFacetForCollectionAnnotation.java
@@ -0,0 +1,57 @@
+/*
+ * 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.collection;
+
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.EditPolicy;
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractImpl;
+
+public class DisabledFacetForCollectionAnnotation extends DisabledFacetAbstractImpl {
+
+ public static DisabledFacet create(final Collection collection, final FacetHolder holder) {
+ final EditPolicy editPolicy = collection.editing();
+ final String disabledReason = collection.editingDisabledReason();
+
+ switch (editPolicy) {
+ case AS_CONFIGURED:
+
+ // nothing needs to be done here; the DomainObjectFactory (processing @DomainObject annotation)
+ // will install an ImmutableFacetForDomainObjectAnnotation on the domain object and then a
+ // DisabledFacetOnCollectionDerivedFromImmutable facet will be installed.
+
+ return null;
+
+ case DISABLED:
+ return new DisabledFacetForCollectionAnnotation(disabledReason, holder);
+ case ENABLED:
+ return null;
+ }
+ return null;
+ }
+
+ private DisabledFacetForCollectionAnnotation(final String reason, final FacetHolder holder) {
+ super(When.ALWAYS, Where.EVERYWHERE, reason, holder);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/HiddenFacetForCollectionAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/HiddenFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/HiddenFacetForCollectionAnnotation.java
new file mode 100644
index 0000000..9de9f87
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/HiddenFacetForCollectionAnnotation.java
@@ -0,0 +1,49 @@
+/*
+ * 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.collection;
+
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+
+public class HiddenFacetForCollectionAnnotation extends HiddenFacetAbstract {
+
+ public static HiddenFacet create(final Collection collection, final FacetHolder holder) {
+ final Where where = collection.hidden();
+ return where != null && where != Where.NOT_SPECIFIED ? new HiddenFacetForCollectionAnnotation(where, holder) : null;
+ }
+
+ private HiddenFacetForCollectionAnnotation(final Where where, final FacetHolder holder) {
+ super(When.ALWAYS, where, holder);
+ }
+
+ @Override
+ public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+ if(!where().includes(whereContext)) {
+ return null;
+ }
+ return "Hidden on " + where().getFriendlyName();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetAnnotation.java
index 292b2b7..3eb8c41 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetAnnotation.java
@@ -28,9 +28,7 @@ public class CollectionInteractionFacetAnnotation extends CollectionInteractionF
public CollectionInteractionFacetAnnotation(
final Class<? extends CollectionInteractionEvent<?, ?>> eventType,
- final FacetHolder holder,
- final ServicesInjector servicesInjector,
- final SpecificationLoader specificationLoader) {
+ final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {
super(eventType, holder, servicesInjector, specificationLoader);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetDefault.java
index 394c3e3..a5894c1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetDefault.java
@@ -28,9 +28,7 @@ public class CollectionInteractionFacetDefault extends CollectionInteractionFace
public CollectionInteractionFacetDefault(
final Class<? extends CollectionInteractionEvent<?, ?>> eventType,
- final FacetHolder holder,
- final ServicesInjector servicesInjector,
- final SpecificationLoader specificationLoader) {
+ final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {
super(eventType, holder, servicesInjector, specificationLoader);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetFactory.java
index e55cfc0..27ab56b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/interaction/CollectionInteractionFacetFactory.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.collections.interaction;
import java.lang.reflect.Method;
+import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.CollectionInteraction;
import org.apache.isis.applib.annotation.PostsCollectionAddedToEvent;
import org.apache.isis.applib.annotation.PostsCollectionRemovedFromEvent;
@@ -30,6 +31,7 @@ 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.collections.collection.CollectionInteractionFacetForCollectionAnnotation;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
@@ -54,18 +56,24 @@ public class CollectionInteractionFacetFactory extends FacetFactoryAbstract impl
//
// Set up CollectionInteractionFacet, which will act as the hiding/disabling/validating advisor
//
+ final Collection collection = Annotations.getAnnotation(method, Collection.class);
final CollectionInteraction collectionInteraction = Annotations.getAnnotation(method, CollectionInteraction.class);
final Class<? extends CollectionInteractionEvent<?, ?>> collectionInteractionEventType;
final CollectionInteractionFacetAbstract collectionInteractionFacet;
- if(collectionInteraction != null) {
+ if(collection != null && collection.interaction() != null) {
+ collectionInteractionEventType = collection.interaction();
+ collectionInteractionFacet = new CollectionInteractionFacetForCollectionAnnotation(
+ collectionInteractionEventType, servicesInjector, getSpecificationLoader(), holder);
+
+ } else if(collectionInteraction != null) {
collectionInteractionEventType = collectionInteraction.value();
collectionInteractionFacet = new CollectionInteractionFacetAnnotation(
- collectionInteractionEventType, holder, servicesInjector, getSpecificationLoader());
+ collectionInteractionEventType, servicesInjector, getSpecificationLoader(), holder);
} else {
collectionInteractionEventType = CollectionInteractionEvent.Default.class;
collectionInteractionFacet = new CollectionInteractionFacetDefault(
- collectionInteractionEventType, holder, servicesInjector, getSpecificationLoader());
+ collectionInteractionEventType, servicesInjector, getSpecificationLoader(), holder);
}
FacetUtil.addFacet(collectionInteractionFacet);
@@ -128,7 +136,7 @@ public class CollectionInteractionFacetFactory extends FacetFactoryAbstract impl
// would look rather odd
//
- FacetUtil.addFacet(new CollectionInteractionFacetDefault(CollectionInteractionEvent.Default.class, objectMember, servicesInjector, getSpecificationLoader()));
+ FacetUtil.addFacet(new CollectionInteractionFacetDefault(CollectionInteractionEvent.Default.class, servicesInjector, getSpecificationLoader(), objectMember));
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
index c2f9d69..0ca15f7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
@@ -35,7 +35,11 @@ public abstract class DisabledFacetAbstract extends WhenAndWhereValueFacetAbstra
}
public DisabledFacetAbstract(final When when, Where where, final FacetHolder holder) {
- super(type(), holder, when, where);
+ this(type(), when, where, holder);
+ }
+
+ private DisabledFacetAbstract(final Class<? extends Facet> type, final When when, Where where, final FacetHolder holder) {
+ super(type, holder, when, where);
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
new file mode 100644
index 0000000..52057c6
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
@@ -0,0 +1,41 @@
+/*
+ * 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.members.disabled;
+
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+public abstract class DisabledFacetAbstractAlwaysEverywhere extends DisabledFacetAbstract {
+
+ public DisabledFacetAbstractAlwaysEverywhere(final FacetHolder holder) {
+ super(When.ALWAYS, Where.ANYWHERE, holder);
+ }
+
+ /**
+ * Always returns <i>Always disabled</i>.
+ */
+ @Override
+ public String disabledReason(final ObjectAdapter target) {
+ return "Always disabled";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
new file mode 100644
index 0000000..45ae641
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
@@ -0,0 +1,74 @@
+/*
+ * 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.members.disabled;
+
+import com.google.common.base.Strings;
+
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+public abstract class DisabledFacetAbstractImpl extends DisabledFacetAbstract {
+
+ private final String reason;
+
+ public DisabledFacetAbstractImpl(final When when, final Where where, final FacetHolder holder) {
+ this(when, where, null, holder);
+ }
+
+ public DisabledFacetAbstractImpl(final When when, final Where where, final String reason, final FacetHolder holder) {
+ super(when, where, holder);
+ this.reason = reason;
+ }
+
+ @Override
+ public String disabledReason(final ObjectAdapter targetAdapter) {
+ if (when() == When.ALWAYS) {
+ return disabledReasonElse("Always disabled");
+ } else if (when() == When.NEVER) {
+ return null;
+ }
+
+ // remaining tests depend upon the actual target in question
+ if (targetAdapter == null) {
+ return null;
+ }
+
+ if (when() == When.UNTIL_PERSISTED) {
+ return targetAdapter.isTransient() ? disabledReasonElse("Disabled until persisted") : null;
+ } else if (when() == When.ONCE_PERSISTED) {
+ return targetAdapter.representsPersistent() ? disabledReasonElse("Disabled once persisted") : null;
+ }
+ return null;
+ }
+
+ private String disabledReasonElse(final String defaultReason) {
+ return !Strings.isNullOrEmpty(reason) ? reason : defaultReason;
+ }
+
+ /**
+ * Not API... the reason as defined in subclass
+ */
+ public String getReason() {
+ return reason;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAlwaysEverywhere.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAlwaysEverywhere.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAlwaysEverywhere.java
deleted file mode 100644
index 8831068..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAlwaysEverywhere.java
+++ /dev/null
@@ -1,41 +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.members.disabled;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class DisabledFacetAlwaysEverywhere extends DisabledFacetAbstract {
-
- public DisabledFacetAlwaysEverywhere(final FacetHolder holder) {
- super(When.ALWAYS, Where.ANYWHERE, holder);
- }
-
- /**
- * Always returns <i>Always disabled</i>.
- */
- @Override
- public String disabledReason(final ObjectAdapter target) {
- return "Always disabled";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetForContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetForContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetForContributee.java
new file mode 100644
index 0000000..ea13bf8
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetForContributee.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.members.disabled;
+
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+public class DisabledFacetForContributee extends DisabledFacetAbstractImpl {
+
+ public DisabledFacetForContributee(String reason, FacetHolder holder) {
+ super(When.ALWAYS, Where.ANYWHERE, reason, holder);
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetImpl.java
deleted file mode 100644
index 070956e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetImpl.java
+++ /dev/null
@@ -1,74 +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.members.disabled;
-
-import com.google.common.base.Strings;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class DisabledFacetImpl extends DisabledFacetAbstract {
-
- private final String reason;
-
- public DisabledFacetImpl(final When when, final Where where, final FacetHolder holder) {
- this(when, where, null, holder);
- }
-
- public DisabledFacetImpl(final When when, final Where where, final String reason, final FacetHolder holder) {
- super(when, where, holder);
- this.reason = reason;
- }
-
- @Override
- public String disabledReason(final ObjectAdapter targetAdapter) {
- if (when() == When.ALWAYS) {
- return disabledReasonElse("Always disabled");
- } else if (when() == When.NEVER) {
- return null;
- }
-
- // remaining tests depend upon the actual target in question
- if (targetAdapter == null) {
- return null;
- }
-
- if (when() == When.UNTIL_PERSISTED) {
- return targetAdapter.isTransient() ? disabledReasonElse("Disabled until persisted") : null;
- } else if (when() == When.ONCE_PERSISTED) {
- return targetAdapter.representsPersistent() ? disabledReasonElse("Disabled once persisted") : null;
- }
- return null;
- }
-
- private String disabledReasonElse(final String defaultReason) {
- return !Strings.isNullOrEmpty(reason) ? reason : defaultReason;
- }
-
- /**
- * Not API... the reason as defined in subclass
- */
- public String getReason() {
- return reason;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetNever.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetNever.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetNever.java
deleted file mode 100644
index c3e359c..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetNever.java
+++ /dev/null
@@ -1,46 +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.members.disabled;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class DisabledFacetNever extends DisabledFacetAbstract {
-
- public DisabledFacetNever(final FacetHolder holder) {
- super(When.NEVER, Where.ANYWHERE, holder);
- }
-
- /**
- * Always returns <tt>null</tt>.
- */
- @Override
- public String disabledReason(final ObjectAdapter target) {
- return null;
- }
-
- @Override
- public boolean isNoop() {
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetAnnotation.java
index 0a855fd..2ea6b6f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetAnnotation.java
@@ -22,9 +22,9 @@ package org.apache.isis.core.metamodel.facets.members.disabled.annotprop;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetImpl;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractImpl;
-public class DisabledFacetAnnotation extends DisabledFacetImpl {
+public class DisabledFacetAnnotation extends DisabledFacetAbstractImpl {
public DisabledFacetAnnotation(final When when, Where where, String reason, final FacetHolder holder) {
super(when, where, reason, holder);
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetFromProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetFromProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetFromProperties.java
index 89002d6..9926444 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetFromProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/annotprop/DisabledFacetFromProperties.java
@@ -24,9 +24,9 @@ import java.util.Properties;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetImpl;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractImpl;
-public class DisabledFacetFromProperties extends DisabledFacetImpl {
+public class DisabledFacetFromProperties extends DisabledFacetAbstractImpl {
public DisabledFacetFromProperties(final When when, Where where, String reason, final FacetHolder holder) {
super(when, where, reason, holder);
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetForStaticMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetForStaticMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetForStaticMethod.java
new file mode 100644
index 0000000..2b4d663
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetForStaticMethod.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.members.disabled.staticmethod;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
+
+public class DisabledFacetForStaticMethod extends DisabledFacetAbstractAlwaysEverywhere {
+
+ public DisabledFacetForStaticMethod(final FacetHolder holder) {
+ super(holder);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
index 33efd7c..91a62bc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/staticmethod/DisabledFacetStaticMethodFacetFactory.java
@@ -20,7 +20,6 @@
package org.apache.isis.core.metamodel.facets.members.disabled.staticmethod;
import java.lang.reflect.Method;
-
import org.apache.isis.core.commons.lang.MethodExtensions;
import org.apache.isis.core.commons.lang.StringExtensions;
import org.apache.isis.core.metamodel.exceptions.MetaModelException;
@@ -28,11 +27,10 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
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.members.disabled.DisabledFacetAlwaysEverywhere;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
public class DisabledFacetStaticMethodFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
@@ -77,7 +75,7 @@ public class DisabledFacetStaticMethodFacetFactory extends MethodPrefixBasedFace
}
final FacetHolder facetedMethod = processMethodContext.getFacetHolder();
- FacetUtil.addFacet(new DisabledFacetAlwaysEverywhere(facetedMethod));
+ FacetUtil.addFacet(new DisabledFacetForStaticMethod(facetedMethod));
}
private static Boolean invokeProtectMethod(final Method protectMethod) {
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
index 094fd7d..ff75db6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
@@ -36,7 +36,11 @@ public abstract class HiddenFacetAbstract extends WhenAndWhereValueFacetAbstract
}
public HiddenFacetAbstract(final When when, Where where, final FacetHolder holder) {
- super(type(), holder, when, where);
+ this(type(), when, where, holder);
+ }
+
+ private HiddenFacetAbstract(final Class<? extends Facet> type, final When when, Where where, final FacetHolder holder) {
+ super(type, holder, when, where);
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
new file mode 100644
index 0000000..d805992
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
@@ -0,0 +1,41 @@
+/*
+ * 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.members.hidden;
+
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+public abstract class HiddenFacetAbstractAlwaysEverywhere extends HiddenFacetAbstract {
+
+ public HiddenFacetAbstractAlwaysEverywhere(final FacetHolder holder) {
+ super(When.ALWAYS, Where.ANYWHERE, holder);
+ }
+
+ /**
+ * Always returns <i>Always hidden</i>.
+ */
+ @Override
+ public String hiddenReason(final ObjectAdapter target, Where where) {
+ return "Always hidden";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java
new file mode 100644
index 0000000..386f56c
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.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.members.hidden;
+
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+
+public abstract class HiddenFacetAbstractImpl extends HiddenFacetAbstract {
+
+ public HiddenFacetAbstractImpl(final When when, Where where, final FacetHolder holder) {
+ super(when, where, holder);
+ }
+
+ @Override
+ public String hiddenReason(final ObjectAdapter targetAdapter, Where whereContext) {
+ if(!where().includes(whereContext)) {
+ return null;
+ }
+
+ if (when() == When.ALWAYS) {
+ return "Always hidden";
+ }
+ if (when() == When.NEVER) {
+ return null;
+ }
+
+ // remaining tests depend on target in question.
+ if (targetAdapter == null) {
+ return null;
+ }
+
+ if (when() == When.UNTIL_PERSISTED) {
+ return targetAdapter.isTransient() ? "Hidden until persisted" : null;
+ } else if (when() == When.ONCE_PERSISTED) {
+ return targetAdapter.representsPersistent() ? "Hidden once persisted" : null;
+ }
+ return null;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAlwaysEverywhere.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAlwaysEverywhere.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAlwaysEverywhere.java
deleted file mode 100644
index 7b179c2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAlwaysEverywhere.java
+++ /dev/null
@@ -1,42 +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.members.hidden;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
-
-public class HiddenFacetAlwaysEverywhere extends HiddenFacetAbstract {
-
- public HiddenFacetAlwaysEverywhere(final FacetHolder holder) {
- super(When.ALWAYS, Where.ANYWHERE, holder);
- }
-
- /**
- * Always returns <i>Always hidden</i>.
- */
- @Override
- public String hiddenReason(final ObjectAdapter target, Where where) {
- return "Always hidden";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetImpl.java
deleted file mode 100644
index 5b877be..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetImpl.java
+++ /dev/null
@@ -1,59 +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.members.hidden;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class HiddenFacetImpl extends HiddenFacetAbstract {
-
- public HiddenFacetImpl(final When when, Where where, final FacetHolder holder) {
- super(when, where, holder);
- }
-
- @Override
- public String hiddenReason(final ObjectAdapter targetAdapter, Where whereContext) {
- if(!where().includes(whereContext)) {
- return null;
- }
-
- if (when() == When.ALWAYS) {
- return "Always hidden";
- }
- if (when() == When.NEVER) {
- return null;
- }
-
- // remaining tests depend on target in question.
- if (targetAdapter == null) {
- return null;
- }
-
- if (when() == When.UNTIL_PERSISTED) {
- return targetAdapter.isTransient() ? "Hidden until persisted" : null;
- } else if (when() == When.ONCE_PERSISTED) {
- return targetAdapter.representsPersistent() ? "Hidden once persisted" : null;
- }
- return null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetNever.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetNever.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetNever.java
deleted file mode 100644
index ba7b7da..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetNever.java
+++ /dev/null
@@ -1,45 +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.members.hidden;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class HiddenFacetNever extends HiddenFacetAbstract {
-
- public HiddenFacetNever(final FacetHolder holder) {
- super(When.NEVER, Where.ANYWHERE, holder);
- }
-
- /**
- * Always returns <tt>null</tt>.
- */
- @Override
- public String hiddenReason(final ObjectAdapter target, Where where) {
- return null;
- }
-
- @Override
- public boolean isNoop() {
- return true;
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberAnnotation.java
index 19b422a..76b9ab4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberAnnotation.java
@@ -22,9 +22,9 @@ package org.apache.isis.core.metamodel.facets.members.hidden.annotprop;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetImpl;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractImpl;
-public class HiddenFacetOnMemberAnnotation extends HiddenFacetImpl {
+public class HiddenFacetOnMemberAnnotation extends HiddenFacetAbstractImpl {
public HiddenFacetOnMemberAnnotation(final When when, Where where, final FacetHolder holder) {
super(when, where, holder);
http://git-wip-us.apache.org/repos/asf/isis/blob/b55af5f1/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberFromProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberFromProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberFromProperties.java
index 5f238ba..5ddc964 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberFromProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/annotprop/HiddenFacetOnMemberFromProperties.java
@@ -24,9 +24,9 @@ import java.util.Properties;
import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetImpl;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractImpl;
-public class HiddenFacetOnMemberFromProperties extends HiddenFacetImpl {
+public class HiddenFacetOnMemberFromProperties extends HiddenFacetAbstractImpl {
public HiddenFacetOnMemberFromProperties(final When when, Where where, final FacetHolder holder) {
super(when, where, holder);