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/22 17:53:21 UTC

[06/52] [abbrv] 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

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetOnStaticMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetOnStaticMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetOnStaticMethod.java
new file mode 100644
index 0000000..b2f25a8
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetOnStaticMethod.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.hidden.staticmethod;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractAlwaysEverywhere;
+
+public class HiddenFacetOnStaticMethod extends HiddenFacetAbstractAlwaysEverywhere {
+
+    public HiddenFacetOnStaticMethod(final FacetHolder holder) {
+        super(holder);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
index ef73ce3..a4fa725 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/staticmethod/HiddenFacetStaticMethodFactory.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.members.hidden.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.hidden.HiddenFacetAlwaysEverywhere;
-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 HiddenFacetStaticMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
@@ -76,7 +74,7 @@ public class HiddenFacetStaticMethodFactory extends MethodPrefixBasedFacetFactor
         }
 
         final FacetHolder facetedMethod = processMethodContext.getFacetHolder();
-        FacetUtil.addFacet(new HiddenFacetAlwaysEverywhere(facetedMethod));
+        FacetUtil.addFacet(new HiddenFacetOnStaticMethod(facetedMethod));
     }
 
     private static Boolean invokeAlwaysHideMethod(final Method alwaysHideMethod) {

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java
index 6058189..983503c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java
@@ -22,9 +22,9 @@ package org.apache.isis.core.metamodel.facets.object.hidden.annotation;
 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 HiddenFacetOnTypeAnnotation extends HiddenFacetImpl {
+public class HiddenFacetOnTypeAnnotation extends HiddenFacetAbstractImpl {
 
     public HiddenFacetOnTypeAnnotation(final When when, final FacetHolder holder) {
         super(when, Where.ANYWHERE, holder);

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferred.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferred.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferred.java
index 8f428a6..987afe0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferred.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferred.java
@@ -19,21 +19,14 @@
 
 package org.apache.isis.core.metamodel.facets.properties.disabled.inferred;
 
-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.disabled.DisabledFacetAbstract;
-import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 
-public class DisabledFacetOnPropertyInferred extends DisabledFacetAbstract {
+public class DisabledFacetOnPropertyInferred extends DisabledFacetAbstractAlwaysEverywhere {
 
-    public DisabledFacetOnPropertyInferred(final ImmutableFacet immutableFacet, final FacetHolder holder) {
-        super(immutableFacet.when(), Where.ANYWHERE, holder);
+    public DisabledFacetOnPropertyInferred(final FacetHolder holder) {
+        super(holder);
     }
 
-    @Override
-    public String disabledReason(final ObjectAdapter target) {
-        return when().appliesTo(target) ? "Immutable" : null;
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferredFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferredFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferredFactory.java
index 29f2241..d074aae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferredFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/inferred/DisabledFacetOnPropertyInferredFactory.java
@@ -24,7 +24,6 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 
 /**
@@ -51,7 +50,7 @@ public class DisabledFacetOnPropertyInferredFactory extends FacetFactoryAbstract
         }
 
         // else, infer that this is not modifiable
-        FacetUtil.addFacet(new DisabledFacetAlwaysEverywhere(property));
+        FacetUtil.addFacet(new DisabledFacetOnPropertyInferred(property));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetAnnotation.java
index 84050af..20ad23e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetAnnotation.java
@@ -30,9 +30,7 @@ public class PropertyInteractionFacetAnnotation extends PropertyInteractionFacet
     public PropertyInteractionFacetAnnotation(
             final Class<? extends PropertyInteractionEvent<?, ?>> eventType,
             final PropertyOrCollectionAccessorFacet getterFacet,
-            final FacetHolder holder,
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader) {
+            final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {
         super(eventType, getterFacet, holder, servicesInjector, specificationLoader);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetDefault.java
index 0098182..ef115b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetDefault.java
@@ -30,9 +30,7 @@ public class PropertyInteractionFacetDefault extends PropertyInteractionFacetAbs
     public PropertyInteractionFacetDefault(
             final Class<? extends PropertyInteractionEvent<?, ?>> eventType,
             final PropertyOrCollectionAccessorFacet getterFacet,
-            final FacetHolder holder,
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader) {
+            final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {
         super(eventType, getterFacet, holder, servicesInjector, specificationLoader);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetFactory.java
index c10881d..54cfc8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/interaction/PropertyInteractionFacetFactory.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
 import java.util.Comparator;
 import java.util.List;
 import org.apache.isis.applib.annotation.PostsPropertyChangedEvent;
+import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyInteraction;
 import org.apache.isis.applib.services.eventbus.PropertyInteractionEvent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -34,6 +35,7 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
+import org.apache.isis.core.metamodel.facets.properties.property.PropertyInteractionFacetForPropertyAnnotation;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
@@ -68,18 +70,24 @@ public class PropertyInteractionFacetFactory extends FacetFactoryAbstract implem
         //
         // Set up PropertyInteractionFacet, which will act as the hiding/disabling/validating advisor
         //
+        final Property property = Annotations.getAnnotation(method, Property.class);
         final PropertyInteraction propertyInteraction = Annotations.getAnnotation(method, PropertyInteraction.class);
         final Class<? extends PropertyInteractionEvent<?, ?>> propertyInteractionEventType;
 
         final PropertyInteractionFacetAbstract propertyInteractionFacet;
-        if(propertyInteraction != null) {
+        if(property != null && property.interaction() != null) {
+            propertyInteractionEventType = property.interaction();
+            propertyInteractionFacet = new PropertyInteractionFacetForPropertyAnnotation(
+                    propertyInteractionEventType, getterFacet, servicesInjector, getSpecificationLoader(), holder);
+
+        } else if(propertyInteraction != null) {
             propertyInteractionEventType = propertyInteraction.value();
             propertyInteractionFacet = new PropertyInteractionFacetAnnotation(
-                    propertyInteractionEventType, getterFacet, holder, servicesInjector, getSpecificationLoader());
+                    propertyInteractionEventType, getterFacet, servicesInjector, getSpecificationLoader(), holder);
         } else {
             propertyInteractionEventType = PropertyInteractionEvent.Default.class;
             propertyInteractionFacet = new PropertyInteractionFacetDefault(
-                    propertyInteractionEventType, getterFacet, holder, servicesInjector, getSpecificationLoader());
+                    propertyInteractionEventType, getterFacet, servicesInjector, getSpecificationLoader(), holder);
         }
         FacetUtil.addFacet(propertyInteractionFacet);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/DisabledFacetForPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/DisabledFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/DisabledFacetForPropertyAnnotation.java
index dbeeb80..c169c28 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/DisabledFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/DisabledFacetForPropertyAnnotation.java
@@ -25,11 +25,11 @@ 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.DisabledFacetImpl;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractImpl;
 
-public class DisabledFacetForPropertyAnnotation extends DisabledFacetImpl {
+public class DisabledFacetForPropertyAnnotation extends DisabledFacetAbstractImpl {
 
-    public static DisabledFacet create(Property property, FacetHolder holder) {
+    public static DisabledFacet create(final Property property, final FacetHolder holder) {
         final EditPolicy editPolicy = property.editing();
         final String disabledReason = property.editingDisabledReason();
 
@@ -38,7 +38,7 @@ public class DisabledFacetForPropertyAnnotation extends DisabledFacetImpl {
 
                 // nothing needs to be done here; the DomainObjectFactory (processing @DomainObject annotation)
                 // will install an ImmutableFacetForDomainObjectAnnotation on the domain object and then a
-                // DisabledFacetOnPropertyInferredFromImmutable facet will be installed.
+                // DisabledFacetOnPropertyDerivedFromImmutable facet will be installed.
 
                 return null;
 
@@ -50,7 +50,7 @@ public class DisabledFacetForPropertyAnnotation extends DisabledFacetImpl {
         return null;
     }
 
-    private DisabledFacetForPropertyAnnotation(String reason, final FacetHolder holder) {
+    private DisabledFacetForPropertyAnnotation(final String reason, final FacetHolder holder) {
         super(When.ALWAYS, Where.EVERYWHERE, reason, holder);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/HiddenFacetForPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/HiddenFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/HiddenFacetForPropertyAnnotation.java
new file mode 100644
index 0000000..4e38895
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/HiddenFacetForPropertyAnnotation.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.properties.property;
+
+import org.apache.isis.applib.annotation.Property;
+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 HiddenFacetForPropertyAnnotation extends HiddenFacetAbstract {
+
+    public static HiddenFacet create(final Property property, final FacetHolder holder) {
+        final Where where = property.hidden();
+        return where != null && where != Where.NOT_SPECIFIED ? new HiddenFacetForPropertyAnnotation(where, holder) : null;
+    }
+
+    private HiddenFacetForPropertyAnnotation(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/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index 4d8c705..792ac23 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -47,7 +47,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
         }
 
         processInteraction(processMethodContext);
-        processDisabled(processMethodContext);
+        processHidden(processMethodContext);
+        processEditing(processMethodContext);
         processMaxLength(processMethodContext);
         processMustSatisfy(processMethodContext);
         processNotPersisted(processMethodContext);
@@ -56,16 +57,22 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
     }
 
     private void processInteraction(final ProcessMethodContext processMethodContext) {
+
+        // interaction is handled by PropertyInteractionFacetFactory, because the
+        // deprecated annotations must also be supported.
+
+    }
+
+    private void processHidden(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));
+                HiddenFacetForPropertyAnnotation.create(property, holder));
     }
 
-    private void processDisabled(final ProcessMethodContext processMethodContext) {
+    private void processEditing(final ProcessMethodContext processMethodContext) {
         final Method method = processMethodContext.getMethod();
         final Property property = Annotations.getAnnotation(method, Property.class);
         final FacetHolder holder = processMethodContext.getFacetHolder();

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyInteractionFacetForPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyInteractionFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyInteractionFacetForPropertyAnnotation.java
index a0a66dc..84e1d23 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyInteractionFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyInteractionFacetForPropertyAnnotation.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.properties.property;
 
-import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.services.eventbus.PropertyInteractionEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
@@ -29,27 +28,7 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 
 public class PropertyInteractionFacetForPropertyAnnotation extends PropertyInteractionFacetAbstract {
 
-    static PropertyInteractionFacetAbstract create(
-            final Property property,
-            final ServicesInjector servicesInjector,
-            final SpecificationLoader specificationLoader,
-            final FacetHolder holder) {
-
-        final PropertyOrCollectionAccessorFacet getterFacet = holder.getFacet(PropertyOrCollectionAccessorFacet.class);
-        if(getterFacet == null) {
-            return null;
-        }
-
-        final Class<? extends PropertyInteractionEvent<?, ?>> interaction = property.interaction();
-        if(interaction == null) {
-            return null;
-        }
-
-        return new PropertyInteractionFacetForPropertyAnnotation(
-                interaction, getterFacet, servicesInjector, specificationLoader, holder);
-    }
-
-    private PropertyInteractionFacetForPropertyAnnotation(
+    public PropertyInteractionFacetForPropertyAnnotation(
             final Class<? extends PropertyInteractionEvent<?, ?>> eventType,
             final PropertyOrCollectionAccessorFacet getterFacet,
             final ServicesInjector servicesInjector, final SpecificationLoader specificationLoader, final FacetHolder holder) {

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
index f29653e..9c2d997 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
@@ -28,7 +28,6 @@ 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.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaClearMethod;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod;

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
index 7c6f327..8a8705e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
@@ -44,7 +44,7 @@ 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.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetImpl;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractImpl;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
 import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet;
@@ -526,8 +526,8 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
         DisabledFacet disabledFacet = assoc.getFacet(DisabledFacet.class);
         if(disabledFacet != null && !disabledFacet.isNoop()) {
             DisabledFacetRepr disabledFacetRepr = new DisabledFacetRepr();
-            if(disabledFacet instanceof DisabledFacetImpl) {
-                DisabledFacetImpl disabledFacetImpl = (DisabledFacetImpl) disabledFacet;
+            if(disabledFacet instanceof DisabledFacetAbstractImpl) {
+                DisabledFacetAbstractImpl disabledFacetImpl = (DisabledFacetAbstractImpl) disabledFacet;
                 disabledFacetRepr.reason = Strings.emptyToNull(disabledFacetImpl.getReason());
             }
             disabledFacetRepr.when = whenAlwaysToNull(disabledFacet.when());

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
index bec9623..71f74f7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
@@ -24,7 +24,6 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.interactions.AccessContext;

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index 928fa20..cb6721d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -17,7 +17,6 @@
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import java.util.List;
-
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
@@ -31,10 +30,12 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
-import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
-import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacetAbstract;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetAbstract;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetForContributee;
+import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
+import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
@@ -42,8 +43,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetImpl;
 
 public class OneToManyAssociationContributee extends OneToManyAssociationImpl implements ContributeeMember {
 
@@ -104,7 +103,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
             return originalFacet;
         }
         // ensure that the contributed association is always disabled
-        return new DisabledFacetImpl(When.ALWAYS, Where.ANYWHERE, "Contributed collection", this);
+        return new DisabledFacetForContributee("Contributed collection", this);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 773dc3b..c14bee9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -17,7 +17,6 @@
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import java.util.List;
-
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
@@ -31,6 +30,8 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetForContributee;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.InteractionUtils;
@@ -39,8 +40,6 @@ import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetImpl;
 
 public class OneToOneAssociationContributee extends OneToOneAssociationImpl implements ContributeeMember {
 
@@ -90,7 +89,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
             return originalFacet;
         }
         // ensure that the contributed association is always disabled
-        return new DisabledFacetImpl(When.ALWAYS, Where.ANYWHERE, "Contributed property", this);
+        return new DisabledFacetForContributee("Contributed property", this);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java
index 4a60a6f..4f23ce6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java
@@ -21,13 +21,13 @@ package org.apache.isis.objectstore.jdo.metamodel.facets.prop.primarykey;
 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;
 
 
 /**
  * Derived by the presence of the primary key.
  */
-public class DisabledFacetDerivedFromJdoPrimaryKeyAnnotation extends DisabledFacetImpl {
+public class DisabledFacetDerivedFromJdoPrimaryKeyAnnotation extends DisabledFacetAbstractImpl {
 
     public DisabledFacetDerivedFromJdoPrimaryKeyAnnotation(final FacetHolder holder) {
         super(When.ALWAYS, Where.ANYWHERE, holder);

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
index ab1c3d9..740b5a4 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
@@ -56,11 +56,11 @@ import org.apache.isis.core.metamodel.facets.collections.validate.CollectionVali
 import org.apache.isis.core.metamodel.facets.members.disabled.forsession.DisableForSessionFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.forsession.DisableForSessionFacetViaMethod;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAlwaysEverywhere;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.isis.core.metamodel.facets.members.hidden.forsession.HideForSessionFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.forsession.HideForSessionFacetViaMethod;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAlwaysEverywhere;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractAlwaysEverywhere;
 
 public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
@@ -665,8 +665,8 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
 
         final Facet facet = facetedMethod.getFacet(HiddenFacet.class);
         assertNotNull(facet);
-        assertTrue(facet instanceof HiddenFacetAlwaysEverywhere);
-        final HiddenFacetAbstract hiddenFacetAlways = (HiddenFacetAlwaysEverywhere) facet;
+        assertTrue(facet instanceof HiddenFacetAbstractAlwaysEverywhere);
+        final HiddenFacetAbstract hiddenFacetAlways = (HiddenFacetAbstractAlwaysEverywhere) facet;
         assertEquals(When.ALWAYS, hiddenFacetAlways.when());
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(alwaysHideMethod));
@@ -697,8 +697,8 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
 
         final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
         assertNotNull(facet);
-        assertTrue(facet instanceof DisabledFacetAlwaysEverywhere);
-        final DisabledFacetAlwaysEverywhere disabledFacetAlways = (DisabledFacetAlwaysEverywhere) facet;
+        assertTrue(facet instanceof DisabledFacetAbstractAlwaysEverywhere);
+        final DisabledFacetAbstractAlwaysEverywhere disabledFacetAlways = (DisabledFacetAbstractAlwaysEverywhere) facet;
         assertEquals(When.ALWAYS, disabledFacetAlways.when());
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(protectMethod));

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenAnnotationFacetFactoryTest.java
index 7efe7f4..144bf81 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenAnnotationFacetFactoryTest.java
@@ -27,8 +27,8 @@ import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.annotprop.HiddenFacetOnMemberFactory;
 
 public class HiddenAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
index 7afe6e4..b4489c9 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
@@ -30,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.members.describedas.staticmethod.DescribedAsFacetStaticMethod;
 import org.apache.isis.core.metamodel.facets.members.describedas.staticmethod.DescribedAsFacetStaticMethodFactory;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAlwaysEverywhere;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.members.disabled.forsession.DisableForSessionFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.forsession.DisableForSessionFacetViaMethod;
 import org.apache.isis.core.metamodel.facets.members.disabled.forsession.DisableForSessionFacetViaMethodFactory;
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.facets.members.disabled.method.DisableForC
 import org.apache.isis.core.metamodel.facets.members.disabled.method.DisableForContextFacetViaMethod;
 import org.apache.isis.core.metamodel.facets.members.disabled.method.DisableForContextFacetViaMethodFactory;
 import org.apache.isis.core.metamodel.facets.members.disabled.staticmethod.DisabledFacetStaticMethodFacetFactory;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAlwaysEverywhere;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.members.hidden.forsession.HideForSessionFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.forsession.HideForSessionFacetViaMethod;
 import org.apache.isis.core.metamodel.facets.members.hidden.forsession.HideForSessionFacetViaMethodFactory;
@@ -741,7 +741,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         final Facet facet = facetedMethod.getFacet(HiddenFacet.class);
         assertNotNull(facet);
-        assertTrue(facet instanceof HiddenFacetAlwaysEverywhere);
+        assertTrue(facet instanceof HiddenFacetAbstractAlwaysEverywhere);
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyAlwaysHideMethod));
     }
@@ -771,7 +771,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
         assertNotNull(facet);
-        assertTrue(facet instanceof DisabledFacetAlwaysEverywhere);
+        assertTrue(facet instanceof DisabledFacetAbstractAlwaysEverywhere);
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(propertyProtectMethod));
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 5e1898d..5eaaebe 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -19,19 +19,9 @@
 
 package org.apache.isis.core.runtime.system;
 
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.isEmptyString;
-import static org.hamcrest.Matchers.not;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -43,6 +33,12 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbstract;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
+import org.apache.isis.core.metamodel.facets.members.disabled.forsession.DisableForSessionFacetAbstract;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractAlwaysEverywhere;
+import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractImpl;
+import org.apache.isis.core.metamodel.facets.members.hidden.forsession.HideForSessionFacetAbstract;
+import org.apache.isis.core.metamodel.facets.members.hidden.method.HideForContextFacetNone;
 import org.apache.isis.core.metamodel.interactions.PropertyUsabilityContext;
 import org.apache.isis.core.metamodel.interactions.PropertyVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
@@ -51,18 +47,20 @@ import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract;
-import org.apache.isis.core.metamodel.facets.members.disabled.forsession.DisableForSessionFacetAbstract;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetImpl;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetNever;
-import org.apache.isis.core.metamodel.facets.members.hidden.method.HideForContextFacetNone;
-import org.apache.isis.core.metamodel.facets.members.hidden.forsession.HideForSessionFacetAbstract;
-import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAlwaysEverywhere;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdapterBuilder.Persistence;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.isEmptyString;
+import static org.hamcrest.Matchers.not;
+
 public class ObjectMemberAbstractTest {
 
     @Rule
@@ -118,14 +116,14 @@ public class ObjectMemberAbstractTest {
     @Test
     public void testVisibleWhenTargetPersistentAndHiddenFacetSetToOncePersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
-        testMember.addFacet(new HiddenFacetImpl(When.ONCE_PERSISTED, Where.ANYWHERE, testMember));
+        testMember.addFacet(new HiddenFacetAbstractImpl(When.ONCE_PERSISTED, Where.ANYWHERE, testMember){});
         assertFalse(testMember.isVisible(null, persistentAdapter, Where.ANYWHERE).isAllowed());
     }
 
     @Test
     public void testVisibleWhenTargetPersistentAndHiddenFacetSetToUntilPersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
-        testMember.addFacet(new HiddenFacetImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember));
+        testMember.addFacet(new HiddenFacetAbstractImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember){});
         final Consent visible = testMember.isVisible(null, persistentAdapter, Where.ANYWHERE);
         assertTrue(visible.isAllowed());
     }
@@ -133,23 +131,15 @@ public class ObjectMemberAbstractTest {
     @Test
     public void testVisibleWhenTargetTransientAndHiddenFacetSetToUntilPersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
-        testMember.addFacet(new HiddenFacetImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember));
+        testMember.addFacet(new HiddenFacetAbstractImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember){});
         
         final Consent visible = testMember.isVisible(null, transientAdapter, Where.ANYWHERE);
         assertFalse(visible.isAllowed());
     }
 
     @Test
-    public void testVisibleDeclarativelyByDefault() {
-        testMember.addFacet(new HiddenFacetNever(testMember) {
-        });
-        assertTrue(testMember.isVisible(null, persistentAdapter, Where.ANYWHERE).isAllowed());
-    }
-
-    @Test
     public void testVisibleDeclaratively() {
-        testMember.addFacet(new HiddenFacetAlwaysEverywhere(testMember) {
-        });
+        testMember.addFacet(new HiddenFacetAbstractAlwaysEverywhere(testMember) {});
         assertFalse(testMember.isVisible(null, persistentAdapter, Where.ANYWHERE).isAllowed());
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/7842d674/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
index e0010ae..fccfc37 100644
--- a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.consent.Veto;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAlwaysEverywhere;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
@@ -173,8 +173,8 @@ public abstract class WrapperFactoryAbstractTest_wrappedObject_transient {
     public void shouldNotBeAbleToModifyProperty() {
 
         // given
-        final DisabledFacet disabledFacet = new DisabledFacetAlwaysEverywhere(mockPasswordMember);
-        facets = Arrays.asList((Facet)disabledFacet, new PropertySetterFacetViaSetterMethod(setPasswordMethod, mockPasswordMember));
+        final DisabledFacet disabledFacet = new DisabledFacetAbstractAlwaysEverywhere(mockPasswordMember){};
+        facets = Arrays.asList(disabledFacet, new PropertySetterFacetViaSetterMethod(setPasswordMethod, mockPasswordMember));
 
         final Consent visibilityConsent = new Allow(new InteractionResult(new PropertyVisibilityEvent(employeeDO, null)));