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 2021/01/19 07:17:57 UTC

[isis] 01/07: ISIS-439: removes @Collection#editing and makes all collections disabled always

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-439
in repository https://gitbox.apache.org/repos/asf/isis.git

commit d092c90da962c394f6e7e21962255f9326964ebc
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jan 12 08:47:04 2021 +0000

    ISIS-439: removes @Collection#editing and makes all collections disabled always
---
 .../pages/2020/2.0.0-M3/migrating-to-2.0.0.adoc    |  6 ++
 .../pages/index/applib/annotation/Collection.adoc  | 16 -----
 .../applib-ant/examples/annotation/Collection.java | 21 -------
 .../adoc/modules/applib-ant/pages/Collection.adoc  |  9 ---
 .../applib-ant/pages/Collection/editing.adoc       | 63 --------------------
 .../modules/applib-ant/pages/Property/editing.adoc |  1 -
 .../apache/isis/applib/annotation/Collection.java  | 10 +---
 .../isis/applib/domain/DomainObjectList.java       |  3 +-
 .../CollectionAnnotationFacetFactory.java          | 10 ++--
 .../disabled/DisabledFacetForCollection.java       | 37 ++++++++++++
 .../DisabledFacetForCollectionAnnotation.java      | 69 ----------------------
 .../CollectionAnnotationFacetFactoryTest.java      | 29 ++++-----
 ...bledAnnotationOnCollectionFacetFactoryTest.java |  8 +--
 .../dom/annotDomain/Collection/editing/.gitkeep    |  0
 .../secman/jdo/dom/role/ApplicationRole.java       |  7 +--
 .../secman/jdo/dom/tenancy/ApplicationTenancy.java |  3 +-
 .../secman/jdo/dom/user/ApplicationUser.java       |  7 +--
 17 files changed, 72 insertions(+), 227 deletions(-)

diff --git a/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/migrating-to-2.0.0.adoc b/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/migrating-to-2.0.0.adoc
index a902707..9c18943 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/migrating-to-2.0.0.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/migrating-to-2.0.0.adoc
@@ -724,6 +724,12 @@ isis.value-types. +
 
 
 
+=== Annotations
+
+Collections are no longer editable.
+The `@Collection#editing()` and `@Collection#editingDisabledReason()` members have been removed.
+
+
 === No longer any archetypes
 
 The archetypes have been replaced by starter apps.
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Collection.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Collection.adoc
index 3fa05c7..352b425 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Collection.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Collection.adoc
@@ -10,10 +10,6 @@ Domain semantics for domain object collection.
 
   Class<? extends CollectionDomainEvent<?, ?>> domainEvent() default CollectionDomainEvent.Default.class; // <.>
 
-  Editing editing() default Editing.NOT_SPECIFIED; // <.>
-
-  String editingDisabledReason() default ""; // <.>
-
   Where hidden() default Where.NOT_SPECIFIED; // <.>
 
   Class<?> typeOf() default Object.class; // <.>
@@ -39,18 +35,6 @@ public class Order {
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
-<.> `[teal]#*_editing_*#` : `xref:system:generated:index/applib/annotation/Editing.adoc[Editing]`
-+
---
-Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
-
-Note that non-editable objects can nevertheless have actions invoked upon them.
---
-<.> `[teal]#*_editingDisabledReason_*#` : `String`
-+
---
-If _#editing()_ is set to _Editing#DISABLED_ , then the reason to provide to the user as to why this property cannot be edited.
---
 <.> `[teal]#*_hidden_*#` : `xref:system:generated:index/applib/annotation/Where.adoc[Where]`
 +
 --
diff --git a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Collection.java b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Collection.java
index 33aeaf3..30e790e 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Collection.java
+++ b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Collection.java
@@ -69,27 +69,6 @@ public @interface Collection {
 
     // end::refguide[]
     /**
-     * Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
-     *
-     * <p>
-     *     Note that non-editable objects can nevertheless have actions invoked upon them.
-     * </p>
-     */
-    // tag::refguide[]
-    Editing editing()                                           // <.>
-            default Editing.NOT_SPECIFIED;
-
-    // end::refguide[]
-    /**
-     * If {@link #editing()} is set to {@link Editing#DISABLED},
-     * then the reason to provide to the user as to why this property cannot be edited.
-     */
-    // tag::refguide[]
-    String editingDisabledReason()                              // <.>
-            default "";
-
-    // end::refguide[]
-    /**
      * Indicates when the collection is not visible to the user.
      */
     // tag::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/Collection.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages/Collection.adoc
index 0fc7006..3bbd45f 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Collection.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/Collection.adoc
@@ -14,14 +14,6 @@ include::refguide:applib-ant:example$annotation/Collection.java[tags="refguide"]
 +
 The event type to be posted to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] to broadcast the collection's business rule checking (hide, disable, validate) and its modification (before and after).
 
-<.> xref:refguide:applib-ant:Collection.adoc#editing[`editing()`]
-+
-Whether a collection can be added to or removed from within the UI
-
-<.> `editingDisabledReason()`
-+
-If `editing()` is `DISABLED`, provides a reason as to why.
-
 <.> xref:refguide:applib-ant:Collection.adoc#hidden[`hidden()`]
 +
 Indicates where (in the UI) the collection should be hidden from the user.
@@ -70,6 +62,5 @@ so that boilerplate-busting tools such as link:https://projectlombok.org/[Projec
 
 
 include::Collection/domainEvent.adoc[leveloffset=+1]
-include::Collection/editing.adoc[leveloffset=+1]
 include::Collection/hidden.adoc[leveloffset=+1]
 include::Collection/typeOf.adoc[leveloffset=+1]
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/Collection/editing.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages/Collection/editing.adoc
deleted file mode 100644
index 4b30d3e..0000000
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Collection/editing.adoc
+++ /dev/null
@@ -1,63 +0,0 @@
-[#editing]
-= `editing()`
-
-:Notice: 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 ag [...]
-:page-partial:
-
-
-
-The `editing()` annotation indicates whether a collection can be added to or removed from within the UI.
-
-The related `editingDisabledReason` attribute specifies the a hard-coded reason why the collection cannot be modified directly.
-
-[WARNING]
-====
-The xref:vw:ROOT:about.adoc[Wicket viewer] does *not* currently support the modification of collections; they are rendered read-only.
-
-The workaround is to create add/remove actions and use xref:refguide:applib-ant:MemberOrder.adoc[UI hints] to render them close to the collection.
-====
-
-Whether a collection is enabled or disabled depends upon these factors:
-
-* whether the domain object has been configured as immutable through the xref:refguide:applib-ant:DomainObject.adoc#editing[`@DomainObject#editing()`] attribute
-
-* else (that is, if the domain object's editability is specified as being `AS_CONFIGURED`), then the value of the
-xref:refguide:config:sections/isis.applib.adoc#isis.applib.annotation.domain-object.editing['isis.applib.annotation.domain-object.editing'] configuration property.
-If set to `false`, then the object's collections (and properties) are *not* editable
-
-* else, then the value of the `@Collection(editing=...)` attribute itself.
-
-* else, the result of invoking any supporting xref:refguide:applib-methods:prefixes.adoc#disable[`disable...()`] supporting methods
-
-
-Thus, to make a collection read-only even if the object would otherwise be editable, use:
-
-[source,java]
-----
-import lombok.Getter;
-import lombok.Setter;
-
-public class ToDoItem {
-
-    @Collection(
-        editing=Editing.DISABLED,
-        editingDisabledReason="Use the add and remove actions to modify"
-    )
-    @Getter @Setter
-    private SortedSet<ToDoItem> dependencies = ...
-
-}
-----
-
-[NOTE]
-====
-To reiterate, it is _not_ possible to enable editing for a collection if editing has been disabled at the object-level.
-====
-
-== See also
-
-This attribute can also be specified for:
-
-* xref:refguide:applib-ant:Property.adoc#editing[properties]
-* xref:refguide:applib-ant:DomainObject.adoc#editing[domain object]
-
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/Property/editing.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages/Property/editing.adoc
index 97a865b..b949914 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Property/editing.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/Property/editing.adoc
@@ -44,5 +44,4 @@ public class Customer {
 
 This attribute can also be specified for:
 
-* xref:refguide:applib-ant:Collection.adoc#editing[collections]
 * xref:refguide:applib-ant:DomainObject.adoc#editing[domain object].
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
index eeec4a6..86cdc89 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.events.domain.CollectionDomainEvent;
 
 /**
  * Domain semantics for domain object collection.
- * 
+ *
  * @since 1.x {@index}
  */
 @Inherited
@@ -75,14 +75,6 @@ public @interface Collection {
      */
     Editing editing()
             default Editing.NOT_SPECIFIED;
-
-    /**
-     * If {@link #editing()} is set to {@link Editing#DISABLED},
-     * then the reason to provide to the user as to why this property cannot be edited.
-     */
-    String editingDisabledReason()
-            default "";
-
     /**
      * Indicates when the collection is not visible to the user.
      */
diff --git a/api/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java b/api/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
index 7dfe76a..97072ae 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
@@ -164,8 +164,7 @@ public class DomainObjectList {
     private List<Object> objects = new ArrayList<>();
 
     @Collection(
-            domainEvent = ObjectsDomainEvent.class,
-            editing = Editing.DISABLED
+            domainEvent = ObjectsDomainEvent.class
             )
     public List<Object> getObjects() {
         return objects;
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 ee2bfea..84fdca4 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
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredF
 import org.apache.isis.core.metamodel.facets.actions.contributing.ContributingFacetAbstract;
 import org.apache.isis.core.metamodel.facets.actions.contributing.ContributingFacet.Contributing;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
-import org.apache.isis.core.metamodel.facets.collections.collection.disabled.DisabledFacetForCollectionAnnotation;
+import org.apache.isis.core.metamodel.facets.collections.collection.disabled.DisabledFacetForCollection;
 import org.apache.isis.core.metamodel.facets.collections.collection.hidden.HiddenFacetForCollectionAnnotation;
 import org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionAddToFacetForDomainEventFromAbstract;
 import org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionAddToFacetForDomainEventFromCollectionAnnotation;
@@ -73,7 +73,7 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
 
         processModify(processMethodContext, collectionIfAny);
         processHidden(processMethodContext, collectionIfAny);
-        processEditing(processMethodContext, collectionIfAny);
+        processEditing(processMethodContext);
         processTypeOf(processMethodContext, collectionIfAny);
     }
 
@@ -208,11 +208,9 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
         super.addFacet(facet);
     }
 
-    void processEditing(final ProcessMethodContext processMethodContext, Optional<Collection> collectionIfAny) {
+    void processEditing(final ProcessMethodContext processMethodContext) {
         val holder = processMethodContext.getFacetHolder();
-
-        // check for @Collection(editing=...)
-        val facet = DisabledFacetForCollectionAnnotation.create(collectionIfAny, holder);
+        val facet = DisabledFacetForCollection.create(holder);
 
         super.addFacet(facet);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollection.java
new file mode 100644
index 0000000..b99e1b1
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollection.java
@@ -0,0 +1,37 @@
+/*
+ *  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.disabled;
+
+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 DisabledFacetForCollection extends DisabledFacetAbstractImpl {
+
+    public static DisabledFacet create(final FacetHolder holder) {
+        return new DisabledFacetForCollection(holder);
+    }
+
+    private DisabledFacetForCollection(final FacetHolder holder) {
+        super(Where.EVERYWHERE, "Always disabled", holder);
+    }
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java
deleted file mode 100644
index 39faaf0..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.collections.collection.disabled;
-
-import java.util.Optional;
-
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.Editing;
-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 Optional<Collection> collectionIfAny,
-            final FacetHolder holder) {
-
-        return collectionIfAny
-                .filter(collection -> collection.editing() != Editing.NOT_SPECIFIED)
-                .map(collection -> {
-                    final Editing editing = collection.editing();
-                    final String disabledReason = collection.editingDisabledReason();
-
-                    switch (editing) {
-                    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 (DisabledFacet)new DisabledFacetForCollectionAnnotation(disabledReason, holder);
-
-                    case ENABLED:
-                        return null;
-                    default:
-                        break;
-                    }
-                    throw new IllegalStateException("editing '" + editing + "' not recognised");
-                })
-                .orElse(null);
-    }
-
-    private DisabledFacetForCollectionAnnotation(final String reason, final FacetHolder holder) {
-        super(Where.EVERYWHERE, reason, holder);
-    }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index 5405423..18657e1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -5,9 +5,9 @@
  * 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
@@ -43,7 +43,6 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
-import org.apache.isis.core.metamodel.facets.collections.collection.disabled.DisabledFacetForCollectionAnnotation;
 import org.apache.isis.core.metamodel.facets.collections.collection.hidden.HiddenFacetForCollectionAnnotation;
 import org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionAddToFacetForDomainEventFromCollectionAnnotation;
 import org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionAddToFacetForDomainEventFromDefault;
@@ -94,13 +93,13 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
             }
         });
     }
-    
+
     private static void processModify(
             CollectionAnnotationFacetFactory facetFactory, FacetFactory.ProcessMethodContext processMethodContext) {
         val collectionIfAny = processMethodContext.synthesizeOnMethod(Collection.class);
         facetFactory.processModify(processMethodContext, collectionIfAny);
     }
-    
+
     private static void processHidden(
             CollectionAnnotationFacetFactory facetFactory, FacetFactory.ProcessMethodContext processMethodContext) {
         val collectionIfAny = processMethodContext.synthesizeOnMethod(Collection.class);
@@ -110,16 +109,16 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
     private static void processEditing(
             CollectionAnnotationFacetFactory facetFactory, FacetFactory.ProcessMethodContext processMethodContext) {
         val collectionIfAny = processMethodContext.synthesizeOnMethod(Collection.class);
-        facetFactory.processEditing(processMethodContext, collectionIfAny);
+        facetFactory.processEditing(processMethodContext);
     }
-    
+
     private static void processTypeOf(
             CollectionAnnotationFacetFactory facetFactory, FacetFactory.ProcessMethodContext processMethodContext) {
         val collectionIfAny = processMethodContext.synthesizeOnMethod(Collection.class);
         facetFactory.processTypeOf(processMethodContext, collectionIfAny);
     }
 
-    
+
     @Before
     public void setUp() throws Exception {
         facetFactory = new CollectionAnnotationFacetFactory();
@@ -432,6 +431,9 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
 
     }
 
+    /**
+     * This feature has been removed, so this is a negative test
+     */
     public static class Editing extends CollectionAnnotationFacetFactoryTest {
 
         @Test
@@ -440,10 +442,7 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
             class Order {
             }
             class Customer {
-                @Collection(
-                        editing = org.apache.isis.applib.annotation.Editing.DISABLED,
-                        editingDisabledReason = "you cannot edit the orders collection"
-                        )
+                @Collection()
                 public List<Order> getOrders() {
                     return null;
                 }
@@ -464,10 +463,6 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
             // then
             final DisabledFacet disabledFacet = facetedMethod.getFacet(DisabledFacet.class);
             Assert.assertNotNull(disabledFacet);
-            Assert.assertTrue(disabledFacet instanceof DisabledFacetForCollectionAnnotation);
-            final DisabledFacetForCollectionAnnotation disabledFacetImpl = (DisabledFacetForCollectionAnnotation) disabledFacet;
-            assertThat(disabledFacet.where(), is(Where.EVERYWHERE));
-            assertThat(disabledFacetImpl.getReason(), is("you cannot edit the orders collection"));
         }
     }
 
@@ -567,4 +562,4 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/DisabledAnnotationOnCollectionFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/DisabledAnnotationOnCollectionFacetFactoryTest.java
index 9556f33..51082ec 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/DisabledAnnotationOnCollectionFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/DisabledAnnotationOnCollectionFacetFactoryTest.java
@@ -50,17 +50,17 @@ public class DisabledAnnotationOnCollectionFacetFactoryTest extends AbstractFace
         facetFactory = null;
         super.tearDown();
     }
-    
+
     private static void processEditing(
             CollectionAnnotationFacetFactory facetFactory, FacetFactory.ProcessMethodContext processMethodContext) {
         val collectionIfAny = processMethodContext.synthesizeOnMethod(Collection.class);
-        facetFactory.processEditing(processMethodContext, collectionIfAny);
+        facetFactory.processEditing(processMethodContext);
     }
 
 
-    public void testDisabledAnnotationPickedUpOnCollection() {
+    public void testDisabledFacetPickedUpOnCollection() {
         class Customer {
-            @org.apache.isis.applib.annotation.Collection(editing = Editing.DISABLED)
+            @org.apache.isis.applib.annotation.Collection()
             public java.util.Collection<?> getOrders() {
                 return null;
             }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Collection/editing/.gitkeep b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Collection/editing/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
index d4f5e5e..9355370 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
@@ -87,12 +87,12 @@ import lombok.Setter;
 @DomainObjectLayout(
         bookmarking = BookmarkPolicy.AS_ROOT
         )
-public class ApplicationRole 
+public class ApplicationRole
 implements org.apache.isis.extensions.secman.api.role.ApplicationRole, Comparable<ApplicationRole> {
 
     @Inject private ApplicationFeatureRepository applicationFeatureRepository;
     @Inject private ApplicationPermissionRepository applicationPermissionRepository;
-    
+
     // -- name (property)
 
     public static class NameDomainEvent extends PropertyDomainEvent<String> {}
@@ -167,8 +167,7 @@ implements org.apache.isis.extensions.secman.api.role.ApplicationRole, Comparabl
 
     @javax.jdo.annotations.Persistent(mappedBy = "roles")
     @Collection(
-            domainEvent = UsersDomainEvent.class,
-            editing = Editing.DISABLED
+            domainEvent = UsersDomainEvent.class
             )
     @CollectionLayout(
             defaultView="table"
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
index 6e0dd1b..21b371c 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
@@ -143,8 +143,7 @@ org.apache.isis.extensions.secman.api.tenancy.ApplicationTenancy {
 
     @javax.jdo.annotations.Persistent(mappedBy = "parent")
     @Collection(
-            domainEvent = ChildrenDomainEvent.class,
-            editing = Editing.DISABLED
+            domainEvent = ChildrenDomainEvent.class
             )
     @CollectionLayout(
             defaultView="table"
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
index a71ebae..85d6c20 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
@@ -124,7 +124,7 @@ import lombok.val;
 //    middle= {"Contact Details"},
 //    right= {"Status", "AtPath"}
 //)
-public class ApplicationUser implements Comparable<ApplicationUser>, 
+public class ApplicationUser implements Comparable<ApplicationUser>,
 org.apache.isis.extensions.secman.api.user.ApplicationUser {
 
     @Inject private ApplicationUserRepository applicationUserRepository;
@@ -371,8 +371,7 @@ org.apache.isis.extensions.secman.api.user.ApplicationUser {
     @javax.jdo.annotations.Join(column="userId")
     @javax.jdo.annotations.Element(column="roleId")
     @Collection(
-            domainEvent = RolesDomainEvent.class,
-            editing = Editing.DISABLED
+            domainEvent = RolesDomainEvent.class
             )
     @CollectionLayout(
             defaultView="table"
@@ -431,7 +430,7 @@ org.apache.isis.extensions.secman.api.user.ApplicationUser {
     // -- equals, hashCode, compareTo, toString
     private static final String propertyNames = "username";
 
-    private static final ObjectContract<ApplicationUser> contract = 
+    private static final ObjectContract<ApplicationUser> contract =
             ObjectContracts.parse(ApplicationUser.class, propertyNames);