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/07/09 06:59:39 UTC

[4/8] ISIS-831: use of @InteractionWith{Action|Property|Collection} and {Action|Property|Collection}InteractionEvents

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/event/PostsActionInvokedEventFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/event/PostsActionInvokedEventFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/event/PostsActionInvokedEventFacet_UtilTest_newEvent.java
deleted file mode 100644
index 1008d08..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/event/PostsActionInvokedEventFacet_UtilTest_newEvent.java
+++ /dev/null
@@ -1,70 +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.actions.event;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-import org.junit.Test;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.services.eventbus.ActionInvokedEvent;
-
-public class PostsActionInvokedEventFacet_UtilTest_newEvent {
-
-    public static class SomeDomainObject {
-        public String foo(int x, String y) { return null; }
-    }
-    
-    public static class SomeDomainObjectFooInvokedEvent extends ActionInvokedEvent<SomeDomainObject> {
-        private static final long serialVersionUID = 1L;
-        public SomeDomainObjectFooInvokedEvent(SomeDomainObject source, Identifier identifier, Object... arguments) {
-            super(source, identifier, arguments);
-        }
-    }
-    
-    @Test
-    public void defaultEventType() throws Exception {
-        SomeDomainObject sdo = new SomeDomainObject();
-        Identifier identifier = Identifier.actionIdentifier(SomeDomainObject.class, "foo", new Class[]{int.class, String.class});
-
-        final ActionInvokedEvent<Object> ev = PostsActionInvokedEventFacet.Util.newEvent(
-                ActionInvokedEvent.Default.class, sdo, identifier, new Object[]{1, "bar"});
-        assertThat(ev.getSource(), is((Object)sdo));
-        assertThat(ev.getIdentifier(), is(identifier));
-        assertThat(ev.getArguments(), is(not(nullValue())));
-        assertThat(ev.getArguments().get(0), is((Object)Integer.valueOf(1)));
-        assertThat(ev.getArguments().get(1), is((Object)"bar"));
-    }
-
-    @Test
-    public void customEventType() throws Exception {
-        SomeDomainObject sdo = new SomeDomainObject();
-        Identifier identifier = Identifier.actionIdentifier(SomeDomainObject.class, "foo", new Class[]{int.class, String.class});
-        
-        final ActionInvokedEvent<SomeDomainObject> ev = PostsActionInvokedEventFacet.Util.newEvent(
-                SomeDomainObjectFooInvokedEvent.class, sdo, identifier, new Object[]{1, "bar"});
-        assertThat((SomeDomainObject)ev.getSource(), is(sdo));
-        assertThat(ev.getIdentifier(), is(identifier));
-        assertThat(ev.getArguments(), is(not(nullValue())));
-        assertThat(ev.getArguments().get(0), is((Object)Integer.valueOf(1)));
-        assertThat(ev.getArguments().get(1), is((Object)"bar"));
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacet_UtilTest_newEvent.java
new file mode 100644
index 0000000..c973804
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/interaction/ActionInteractionFacet_UtilTest_newEvent.java
@@ -0,0 +1,82 @@
+/**
+ *  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.interaction;
+
+import org.junit.Test;
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.eventbus.ActionInteractionEvent;
+import org.apache.isis.applib.services.eventbus.ActionInvokedEvent;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+public class ActionInteractionFacet_UtilTest_newEvent {
+
+    public static class SomeDomainObject {
+        public String foo(int x, String y) { return null; }
+    }
+    
+    public static class SomeDomainObjectFooInvokedEvent extends ActionInteractionEvent<SomeDomainObject> {
+        private static final long serialVersionUID = 1L;
+        public SomeDomainObjectFooInvokedEvent(SomeDomainObject source, Identifier identifier, Object... arguments) {
+            super(source, identifier, arguments);
+        }
+    }
+    
+    @Test
+    public void defaultEventType() throws Exception {
+        SomeDomainObject sdo = new SomeDomainObject();
+        Identifier identifier = Identifier.actionIdentifier(SomeDomainObject.class, "foo", new Class[]{int.class, String.class});
+
+        final ActionInteractionEvent<Object> ev = ActionInteractionFacet.Util.newEvent(
+                ActionInteractionEvent.Default.class, sdo, identifier, new Object[]{1, "bar"});
+        assertThat(ev.getSource(), is((Object)sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getArguments(), is(not(nullValue())));
+        assertThat(ev.getArguments().get(0), is((Object)Integer.valueOf(1)));
+        assertThat(ev.getArguments().get(1), is((Object)"bar"));
+    }
+
+    @Test
+    public void actionInvokedEventDefaultEventType() throws Exception {
+        SomeDomainObject sdo = new SomeDomainObject();
+        Identifier identifier = Identifier.actionIdentifier(SomeDomainObject.class, "foo", new Class[]{int.class, String.class});
+
+        final ActionInteractionEvent<Object> ev = ActionInteractionFacet.Util.newEvent(
+                ActionInvokedEvent.Default.class, sdo, identifier, new Object[]{1, "bar"});
+        assertThat(ev.getSource(), is((Object)sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getArguments(), is(not(nullValue())));
+        assertThat(ev.getArguments().get(0), is((Object)Integer.valueOf(1)));
+        assertThat(ev.getArguments().get(1), is((Object)"bar"));
+    }
+
+    @Test
+    public void customEventType() throws Exception {
+        SomeDomainObject sdo = new SomeDomainObject();
+        Identifier identifier = Identifier.actionIdentifier(SomeDomainObject.class, "foo", new Class[]{int.class, String.class});
+        
+        final ActionInteractionEvent<SomeDomainObject> ev = ActionInteractionFacet.Util.newEvent(
+                SomeDomainObjectFooInvokedEvent.class, sdo, identifier, new Object[]{1, "bar"});
+        assertThat((SomeDomainObject)ev.getSource(), is(sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getArguments(), is(not(nullValue())));
+        assertThat(ev.getArguments().get(0), is((Object)Integer.valueOf(1)));
+        assertThat(ev.getArguments().get(1), is((Object)"bar"));
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/InteractionWithCollectionAddFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/InteractionWithCollectionAddFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/InteractionWithCollectionAddFacet_UtilTest_newEvent.java
new file mode 100644
index 0000000..880bce8
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/InteractionWithCollectionAddFacet_UtilTest_newEvent.java
@@ -0,0 +1,84 @@
+/**
+ *  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.event;
+
+import java.util.Set;
+import org.junit.Test;
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.eventbus.CollectionAddedToEvent;
+import org.apache.isis.applib.services.eventbus.CollectionInteractionEvent;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class InteractionWithCollectionAddFacet_UtilTest_newEvent {
+
+    public static class SomeDomainObject {
+        public Set<SomeReferencedObject> getReferences() { return null; }
+    }
+    public static class SomeReferencedObject {}
+    
+    public static class SomeDomainObjectCollectionEvent extends CollectionInteractionEvent<SomeDomainObject, SomeReferencedObject> {
+        private static final long serialVersionUID = 1L;
+        public SomeDomainObjectCollectionEvent(SomeDomainObject source, Identifier identifier, Of of, SomeReferencedObject value) {
+            super(source, identifier, of, value);
+        }
+    }
+    
+    @Test
+    public void defaultEventType() throws Exception {
+        final SomeDomainObject sdo = new SomeDomainObject();
+        final SomeReferencedObject other = new SomeReferencedObject();
+        final Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
+
+        final CollectionInteractionEvent<Object, Object> ev = InteractionWithCollectionAddFacet.Util.newEvent(
+                CollectionInteractionEvent.Default.class, sdo, identifier, other);
+        assertThat(ev.getSource(), is((Object)sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOf(), is(CollectionInteractionEvent.Of.ADD_TO));
+        assertThat(ev.getValue(), is((Object)other));
+    }
+
+    @Test
+    public void collectionAddedToDefaultEventType() throws Exception {
+        final SomeDomainObject sdo = new SomeDomainObject();
+        final SomeReferencedObject other = new SomeReferencedObject();
+        final Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
+
+        final CollectionInteractionEvent<Object, Object> ev = InteractionWithCollectionAddFacet.Util.newEvent(
+                CollectionAddedToEvent.Default.class, sdo, identifier, other);
+        assertThat(ev.getSource(), is((Object)sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOf(), is(CollectionInteractionEvent.Of.ADD_TO));
+        assertThat(ev.getValue(), is((Object)other));
+    }
+
+    @Test
+    public void customEventType() throws Exception {
+        final SomeDomainObject sdo = new SomeDomainObject();
+        final SomeReferencedObject other = new SomeReferencedObject();
+        final Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
+        
+        final CollectionInteractionEvent<SomeDomainObject, SomeReferencedObject> ev = InteractionWithCollectionAddFacet.Util.newEvent(
+                SomeDomainObjectCollectionEvent.class, sdo, identifier, other);
+        assertThat(ev.getSource(), is(sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOf(), is(CollectionInteractionEvent.Of.ADD_TO));
+        assertThat(ev.getValue(), is(other));
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/InteractionWithCollectionRemoveFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/InteractionWithCollectionRemoveFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/InteractionWithCollectionRemoveFacet_UtilTest_newEvent.java
new file mode 100644
index 0000000..f60c9ce
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/InteractionWithCollectionRemoveFacet_UtilTest_newEvent.java
@@ -0,0 +1,84 @@
+/**
+ *  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.event;
+
+import java.util.Set;
+import org.junit.Test;
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.eventbus.CollectionInteractionEvent;
+import org.apache.isis.applib.services.eventbus.CollectionRemovedFromEvent;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class InteractionWithCollectionRemoveFacet_UtilTest_newEvent {
+
+    public static class SomeDomainObject {
+        public Set<SomeReferencedObject> getReferences() { return null; }
+    }
+    public static class SomeReferencedObject {}
+    
+    public static class SomeDomainObjectCollectionRemovedFromEvent extends CollectionInteractionEvent<SomeDomainObject, SomeReferencedObject> {
+        private static final long serialVersionUID = 1L;
+        public SomeDomainObjectCollectionRemovedFromEvent(SomeDomainObject source, Identifier identifier, Of of, SomeReferencedObject value) {
+            super(source, identifier, of, value);
+        }
+    }
+    
+    @Test
+    public void defaultEventType() throws Exception {
+        SomeDomainObject sdo = new SomeDomainObject();
+        SomeReferencedObject other = new SomeReferencedObject();
+        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
+
+        final CollectionInteractionEvent<Object, Object> ev = InteractionWithCollectionRemoveFacet.Util.newEvent(
+                CollectionRemovedFromEvent.Default.class, sdo, identifier, other);
+        assertThat(ev.getSource(), is((Object)sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOf(), is(CollectionInteractionEvent.Of.REMOVE_FROM));
+        assertThat(ev.getValue(), is((Object)other));
+    }
+
+    @Test
+    public void collectionRemovedFromDefaultEventType() throws Exception {
+        SomeDomainObject sdo = new SomeDomainObject();
+        SomeReferencedObject other = new SomeReferencedObject();
+        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
+
+        final CollectionInteractionEvent<Object, Object> ev = InteractionWithCollectionRemoveFacet.Util.newEvent(
+                CollectionRemovedFromEvent.Default.class, sdo, identifier, other);
+        assertThat(ev.getSource(), is((Object)sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOf(), is(CollectionInteractionEvent.Of.REMOVE_FROM));
+        assertThat(ev.getValue(), is((Object)other));
+    }
+
+    @Test
+    public void customEventType() throws Exception {
+        SomeDomainObject sdo = new SomeDomainObject();
+        SomeReferencedObject other = new SomeReferencedObject();
+        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
+
+        final CollectionInteractionEvent<SomeDomainObject, SomeReferencedObject> ev = InteractionWithCollectionRemoveFacet.Util.newEvent(
+                SomeDomainObjectCollectionRemovedFromEvent.class, sdo, identifier, other);
+        assertThat(ev.getSource(), is(sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOf(), is(CollectionInteractionEvent.Of.REMOVE_FROM));
+        assertThat(ev.getValue(), is(other));
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/PostsCollectionAddedToEventFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/PostsCollectionAddedToEventFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/PostsCollectionAddedToEventFacet_UtilTest_newEvent.java
deleted file mode 100644
index e548365..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/PostsCollectionAddedToEventFacet_UtilTest_newEvent.java
+++ /dev/null
@@ -1,72 +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.event;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-import java.util.Set;
-
-import org.junit.Test;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.PostsCollectionAddedToEvent;
-import org.apache.isis.applib.services.eventbus.CollectionAddedToEvent;
-import org.apache.isis.core.metamodel.facets.collections.event.PostsCollectionAddedToEventFacetAbstract;
-import org.apache.isis.core.progmodel.facets.collections.event.PostsCollectionAddedToEventFacetAnnotation;
-
-public class PostsCollectionAddedToEventFacet_UtilTest_newEvent {
-
-    public static class SomeDomainObject {
-        public Set<SomeReferencedObject> getReferences() { return null; }
-    }
-    public static class SomeReferencedObject {}
-    
-    public static class SomeDomainObjectCollectionAddedToEvent extends CollectionAddedToEvent<SomeDomainObject, SomeReferencedObject> {
-        private static final long serialVersionUID = 1L;
-        public SomeDomainObjectCollectionAddedToEvent(SomeDomainObject source, Identifier identifier, SomeReferencedObject value) {
-            super(source, identifier, value);
-        }
-    }
-    
-    @Test
-    public void defautEventType() throws Exception {
-        final SomeDomainObject sdo = new SomeDomainObject();
-        final SomeReferencedObject other = new SomeReferencedObject();
-        final Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
-
-        final CollectionAddedToEvent<Object, Object> ev = PostsCollectionAddedToEventFacet.Util.newEvent(
-                CollectionAddedToEvent.Default.class, sdo, identifier, other);
-        assertThat(ev.getSource(), is((Object)sdo));
-        assertThat(ev.getIdentifier(), is(identifier));
-        assertThat(ev.getValue(), is((Object)other));
-    }
-
-    @Test
-    public void customEventType() throws Exception {
-        final SomeDomainObject sdo = new SomeDomainObject();
-        final SomeReferencedObject other = new SomeReferencedObject();
-        final Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
-        
-        final CollectionAddedToEvent<SomeDomainObject, SomeReferencedObject> ev = PostsCollectionAddedToEventFacet.Util.newEvent(
-                SomeDomainObjectCollectionAddedToEvent.class, sdo, identifier, other);
-        assertThat(ev.getSource(), is(sdo));
-        assertThat(ev.getIdentifier(), is(identifier));
-        assertThat(ev.getValue(), is(other));
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/PostsCollectionRemovedFromEventFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/PostsCollectionRemovedFromEventFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/PostsCollectionRemovedFromEventFacet_UtilTest_newEvent.java
deleted file mode 100644
index 7404a26..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/event/PostsCollectionRemovedFromEventFacet_UtilTest_newEvent.java
+++ /dev/null
@@ -1,70 +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.event;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-import java.util.Set;
-
-import org.junit.Test;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.services.eventbus.CollectionRemovedFromEvent;
-import org.apache.isis.core.metamodel.facets.collections.event.PostsCollectionRemovedFromEventFacetAbstract;
-
-public class PostsCollectionRemovedFromEventFacet_UtilTest_newEvent {
-
-    public static class SomeDomainObject {
-        public Set<SomeReferencedObject> getReferences() { return null; }
-    }
-    public static class SomeReferencedObject {}
-    
-    public static class SomeDomainObjectCollectionRemovedFromEvent extends CollectionRemovedFromEvent<SomeDomainObject, SomeReferencedObject> {
-        private static final long serialVersionUID = 1L;
-        public SomeDomainObjectCollectionRemovedFromEvent(SomeDomainObject source, Identifier identifier, SomeReferencedObject value) {
-            super(source, identifier, value);
-        }
-    }
-    
-    @Test
-    public void defaultEventType() throws Exception {
-        SomeDomainObject sdo = new SomeDomainObject();
-        SomeReferencedObject other = new SomeReferencedObject();
-        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
-
-        final CollectionRemovedFromEvent<Object, Object> ev = PostsCollectionRemovedFromEventFacet.Util.newEvent(
-                CollectionRemovedFromEvent.Default.class, sdo, identifier, other);
-        assertThat(ev.getSource(), is((Object)sdo));
-        assertThat(ev.getIdentifier(), is(identifier));
-        assertThat(ev.getValue(), is((Object)other));
-    }
-
-    @Test
-    public void customEventType() throws Exception {
-        SomeDomainObject sdo = new SomeDomainObject();
-        SomeReferencedObject other = new SomeReferencedObject();
-        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "references");
-        
-        final CollectionRemovedFromEvent<SomeDomainObject, SomeReferencedObject> ev = PostsCollectionRemovedFromEventFacet.Util.newEvent(
-                SomeDomainObjectCollectionRemovedFromEvent.class, sdo, identifier, other);
-        assertThat(ev.getSource(), is(sdo));
-        assertThat(ev.getIdentifier(), is(identifier));
-        assertThat(ev.getValue(), is(other));
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/event/PostsPropertyChangedEventFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/event/PostsPropertyChangedEventFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/event/PostsPropertyChangedEventFacet_UtilTest_newEvent.java
deleted file mode 100644
index c67013d..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/event/PostsPropertyChangedEventFacet_UtilTest_newEvent.java
+++ /dev/null
@@ -1,73 +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.properties.event;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-import org.joda.time.LocalDate;
-import org.junit.Test;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.services.eventbus.PropertyChangedEvent;
-import org.apache.isis.core.metamodel.facets.properties.event.PostsPropertyChangedEventSetterFacetAbstract;
-
-public class PostsPropertyChangedEventFacet_UtilTest_newEvent {
-
-    public static class SomeDomainObject {}
-    
-    public static class SomeDatePropertyChangedEvent extends PropertyChangedEvent<SomeDomainObject, LocalDate> {
-        private static final long serialVersionUID = 1L;
-        public SomeDatePropertyChangedEvent(SomeDomainObject source, Identifier identifier, LocalDate oldValue, LocalDate newValue) {
-            super(source, identifier, oldValue, newValue);
-        }
-    }
-
-    @Test
-    public void defaultEventType() throws Exception {
-        
-        SomeDomainObject sdo = new SomeDomainObject();
-        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "someDateProperty");
-        LocalDate oldValue = new LocalDate(2013,4,1);
-        LocalDate newValue = new LocalDate(2013,5,2);
-        
-        final PropertyChangedEvent<Object, Object> ev = 
-                PostsPropertyChangedEventSetterFacet.Util.newEvent(PropertyChangedEvent.Default.class, sdo, identifier, oldValue, newValue);
-        assertThat(ev.getSource(), is((Object)sdo));
-        assertThat(ev.getIdentifier(), is(identifier));
-        assertThat(ev.getOldValue(), is((Object)oldValue));
-        assertThat(ev.getNewValue(), is((Object)newValue));
-    }
-
-
-    @Test
-    public void customEventType() throws Exception {
-
-        SomeDomainObject sdo = new SomeDomainObject();
-        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "someDateProperty");
-        LocalDate oldValue = new LocalDate(2013,4,1);
-        LocalDate newValue = new LocalDate(2013,5,2);
-        
-        final PropertyChangedEvent<SomeDomainObject, LocalDate> ev = 
-                PostsPropertyChangedEventSetterFacet.Util.newEvent(SomeDatePropertyChangedEvent.class, sdo, identifier, oldValue, newValue);
-        assertThat(ev.getSource(), is(sdo));
-        assertThat(ev.getIdentifier(), is(identifier));
-        assertThat(ev.getOldValue(), is(oldValue));
-        assertThat(ev.getNewValue(), is(newValue));
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/interaction/InteractionWithPropertyClearFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/interaction/InteractionWithPropertyClearFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/interaction/InteractionWithPropertyClearFacet_UtilTest_newEvent.java
new file mode 100644
index 0000000..c2e771d
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/interaction/InteractionWithPropertyClearFacet_UtilTest_newEvent.java
@@ -0,0 +1,72 @@
+/**
+ *  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.interaction;
+
+import org.joda.time.LocalDate;
+import org.junit.Test;
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.eventbus.PropertyInteractionEvent;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+public class InteractionWithPropertyClearFacet_UtilTest_newEvent {
+
+    public static class SomeDomainObject {}
+    
+    public static class SomeDatePropertyChangedEvent extends PropertyInteractionEvent<SomeDomainObject, LocalDate> {
+        private static final long serialVersionUID = 1L;
+        public SomeDatePropertyChangedEvent(SomeDomainObject source, Identifier identifier, LocalDate oldValue, LocalDate newValue) {
+            super(source, identifier, oldValue, newValue);
+        }
+    }
+
+    @Test
+    public void defaultEventType() throws Exception {
+        
+        SomeDomainObject sdo = new SomeDomainObject();
+        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "someDateProperty");
+        LocalDate oldValue = new LocalDate(2013,4,1);
+        LocalDate newValue = null;
+        
+        final PropertyInteractionEvent<Object, Object> ev =
+                InteractionWithPropertyClearFacet.Util.newEvent(PropertyInteractionEvent.Default.class, sdo, identifier, oldValue, newValue);
+        assertThat(ev.getSource(), is((Object)sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOldValue(), is((Object)oldValue));
+        assertThat(ev.getNewValue(), is((Object)newValue));
+    }
+
+
+    @Test
+    public void customEventType() throws Exception {
+
+        SomeDomainObject sdo = new SomeDomainObject();
+        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "someDateProperty");
+        LocalDate oldValue = new LocalDate(2013,4,1);
+        LocalDate newValue = null;
+        
+        final PropertyInteractionEvent<SomeDomainObject, LocalDate> ev =
+                InteractionWithPropertyClearFacet.Util.newEvent(SomeDatePropertyChangedEvent.class, sdo, identifier, oldValue, newValue);
+        assertThat(ev.getSource(), is(sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOldValue(), is(oldValue));
+        assertThat(ev.getNewValue(), is(nullValue()));
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/interaction/InteractionWithPropertySetterFacet_UtilTest_newEvent.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/interaction/InteractionWithPropertySetterFacet_UtilTest_newEvent.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/interaction/InteractionWithPropertySetterFacet_UtilTest_newEvent.java
new file mode 100644
index 0000000..6f48dd1
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/interaction/InteractionWithPropertySetterFacet_UtilTest_newEvent.java
@@ -0,0 +1,71 @@
+/**
+ *  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.interaction;
+
+import org.joda.time.LocalDate;
+import org.junit.Test;
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.eventbus.PropertyInteractionEvent;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class InteractionWithPropertySetterFacet_UtilTest_newEvent {
+
+    public static class SomeDomainObject {}
+    
+    public static class SomeDatePropertyChangedEvent extends PropertyInteractionEvent<SomeDomainObject, LocalDate> {
+        private static final long serialVersionUID = 1L;
+        public SomeDatePropertyChangedEvent(SomeDomainObject source, Identifier identifier, LocalDate oldValue, LocalDate newValue) {
+            super(source, identifier, oldValue, newValue);
+        }
+    }
+
+    @Test
+    public void defaultEventType() throws Exception {
+        
+        SomeDomainObject sdo = new SomeDomainObject();
+        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "someDateProperty");
+        LocalDate oldValue = new LocalDate(2013,4,1);
+        LocalDate newValue = new LocalDate(2013,5,2);
+        
+        final PropertyInteractionEvent<Object, Object> ev =
+                InteractionWithPropertySetterFacet.Util.newEvent(PropertyInteractionEvent.Default.class, sdo, identifier, oldValue, newValue);
+        assertThat(ev.getSource(), is((Object)sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOldValue(), is((Object)oldValue));
+        assertThat(ev.getNewValue(), is((Object)newValue));
+    }
+
+
+    @Test
+    public void customEventType() throws Exception {
+
+        SomeDomainObject sdo = new SomeDomainObject();
+        Identifier identifier = Identifier.propertyOrCollectionIdentifier(SomeDomainObject.class, "someDateProperty");
+        LocalDate oldValue = new LocalDate(2013,4,1);
+        LocalDate newValue = new LocalDate(2013,5,2);
+        
+        final PropertyInteractionEvent<SomeDomainObject, LocalDate> ev =
+                InteractionWithPropertySetterFacet.Util.newEvent(SomeDatePropertyChangedEvent.class, sdo, identifier, oldValue, newValue);
+        assertThat(ev.getSource(), is(sdo));
+        assertThat(ev.getIdentifier(), is(identifier));
+        assertThat(ev.getOldValue(), is(oldValue));
+        assertThat(ev.getNewValue(), is(newValue));
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/actions/ActionMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/actions/ActionMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/actions/ActionMethodsFacetFactoryTest.java
index 6a5f0a6..942eb34 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -24,7 +24,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
-
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.security.UserMemento;
@@ -49,8 +48,8 @@ import org.apache.isis.core.metamodel.testspec.ObjectSpecificationStub;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.progmodel.facets.actions.defaults.method.ActionDefaultsFacetFactory;
 import org.apache.isis.core.progmodel.facets.actions.defaults.method.ActionDefaultsFacetViaMethod;
-import org.apache.isis.core.progmodel.facets.actions.invoke.ActionInvocationFacetFactory;
-import org.apache.isis.core.progmodel.facets.actions.invoke.ActionInvocationFacetViaMethod;
+import org.apache.isis.core.progmodel.facets.actions.invoke.event.InteractionWithActionFacetAbstract;
+import org.apache.isis.core.progmodel.facets.actions.invoke.event.InteractionWithActionFacetFactory;
 import org.apache.isis.core.progmodel.facets.actions.validate.ActionValidationFacet;
 import org.apache.isis.core.progmodel.facets.actions.validate.method.ActionValidationFacetViaMethod;
 import org.apache.isis.core.progmodel.facets.actions.validate.method.ActionValidationFacetViaValidateMethodFacetFactory;
@@ -86,7 +85,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     private final ObjectSpecification customerSpec = new ObjectSpecificationStub("Customer");
 
     public void testActionInvocationFacetIsInstalledAndMethodRemoved() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 
@@ -101,15 +100,15 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         final Facet facet = facetedMethod.getFacet(ActionInvocationFacet.class);
         assertNotNull(facet);
-        assertTrue(facet instanceof ActionInvocationFacetViaMethod);
-        final ActionInvocationFacetViaMethod actionInvocationFacetViaMethod = (ActionInvocationFacetViaMethod) facet;
+        assertTrue(facet instanceof InteractionWithActionFacetAbstract);
+        final InteractionWithActionFacetAbstract actionInvocationFacetViaMethod = (InteractionWithActionFacetAbstract) facet;
         assertEquals(actionMethod, actionInvocationFacetViaMethod.getMethods().get(0));
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(actionMethod));
     }
 
     public void testProvidesDefaultNameForActionButIgnoresAnyNamedAnnotation() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 
@@ -131,7 +130,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     public void testPicksUpDebugPrefixAndSetsNameAppropriatelyAlso() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 
@@ -155,7 +154,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     public void testPicksUpExplorationPrefixAndSetsNameAppropriatelyAlso() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 
@@ -179,7 +178,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     public void testCannotHaveBothDebugAndThenExplorationPrefix() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 
@@ -200,7 +199,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     public void testCannotHaveBothExplorationAndThenDebugPrefix() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 
@@ -568,7 +567,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     public void testActionReturnTypeWhenVoid() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 
@@ -582,12 +581,12 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
 
         final Facet facet = facetedMethod.getFacet(ActionInvocationFacet.class);
-        final ActionInvocationFacetViaMethod actionInvocationFacetViaMethod = (ActionInvocationFacetViaMethod) facet;
+        final InteractionWithActionFacetAbstract actionInvocationFacetViaMethod = (InteractionWithActionFacetAbstract) facet;
         assertEquals(voidSpec, actionInvocationFacetViaMethod.getReturnType());
     }
 
     public void testActionReturnTypeWhenNotVoid() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(stringSpec);
 
@@ -602,12 +601,12 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
 
         final Facet facet = facetedMethod.getFacet(ActionInvocationFacet.class);
-        final ActionInvocationFacetViaMethod actionInvocationFacetViaMethod = (ActionInvocationFacetViaMethod) facet;
+        final InteractionWithActionFacetAbstract actionInvocationFacetViaMethod = (InteractionWithActionFacetAbstract) facet;
         assertEquals(stringSpec, actionInvocationFacetViaMethod.getReturnType());
     }
 
     public void testActionOnType() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(customerSpec);
 
@@ -622,7 +621,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
 
         final Facet facet = facetedMethod.getFacet(ActionInvocationFacet.class);
-        final ActionInvocationFacetViaMethod actionInvocationFacetViaMethod = (ActionInvocationFacetViaMethod) facet;
+        final InteractionWithActionFacetAbstract actionInvocationFacetViaMethod = (InteractionWithActionFacetAbstract) facet;
         assertEquals(customerSpec, actionInvocationFacetViaMethod.getOnType());
     }
 
@@ -770,7 +769,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
     
     public void testActionsPickedUpFromSuperclass() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 
@@ -794,7 +793,7 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     }
 
     public void testActionsPickedUpFromSuperclassButHelpersFromSubClass() {
-        final ActionInvocationFacetFactory facetFactory = new ActionInvocationFacetFactory();
+        final InteractionWithActionFacetFactory facetFactory = new InteractionWithActionFacetFactory();
         facetFactory.setSpecificationLookup(reflector);
         reflector.setLoadSpecificationStringReturn(voidSpec);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/actions/ActionsEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/actions/ActionsEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/actions/ActionsEntityRepository.java
index 632abd1..f53bca0 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/actions/ActionsEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/actions/ActionsEntityRepository.java
@@ -21,18 +21,14 @@ package org.apache.isis.core.tck.dom.actions;
 
 import java.util.List;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.*;
 import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.MustSatisfy;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.ObjectType;
-import org.apache.isis.applib.annotation.Optional;
 import org.apache.isis.applib.spec.Specification;
 import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("ActionsEntities")
 @ObjectType("ActionsEntities")
+@DomainService
 public class ActionsEntityRepository extends AbstractEntityRepository<ActionsEntity> {
 
     public ActionsEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/busrules/BusRulesEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/busrules/BusRulesEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/busrules/BusRulesEntityRepository.java
index fd7d8a7..e13664c 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/busrules/BusRulesEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/busrules/BusRulesEntityRepository.java
@@ -19,19 +19,15 @@
 
 package org.apache.isis.core.tck.dom.busrules;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.*;
 import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.annotation.Disabled;
-import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.ObjectType;
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.query.QueryDefault;
 import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("BusinessRulesEntities")
 @ObjectType("BusinessRulesEntities")
+@DomainService
 public class BusRulesEntityRepository extends AbstractEntityRepository<BusRulesEntity> {
 
     public BusRulesEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/HiddenRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/HiddenRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/HiddenRepository.java
index 6a628bb..0383050 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/HiddenRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/HiddenRepository.java
@@ -18,9 +18,11 @@
  */
 package org.apache.isis.core.tck.dom.defaults;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.Hidden;
 
 @Hidden
+@DomainService
 public class HiddenRepository {
 
     public String someAction() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/WithDefaultsEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/WithDefaultsEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/WithDefaultsEntityRepository.java
index 22f09d9..158f949 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/WithDefaultsEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/defaults/WithDefaultsEntityRepository.java
@@ -22,12 +22,14 @@ package org.apache.isis.core.tck.dom.defaults;
 import java.util.List;
 
 import org.apache.isis.applib.AbstractFactoryAndRepository;
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.QueryOnly;
 import org.apache.isis.applib.filter.Filter;
 
 @Named("Simples")
+@DomainService
 public class WithDefaultsEntityRepository extends AbstractFactoryAndRepository  {
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithListParentEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithListParentEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithListParentEntityRepository.java
index d5b73b5..a12eeec 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithListParentEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithListParentEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("BidirWithListParentEntities")
 @ObjectType("BidirWithListParentEntities")
+@DomainService
 public class BidirWithListParentEntityRepository extends AbstractEntityRepository<BidirWithListParentEntity> {
 
     public BidirWithListParentEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithSetParentEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithSetParentEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithSetParentEntityRepository.java
index de01a15..130c27e 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithSetParentEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/BidirWithSetParentEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("BidirWithSetParentEntities")
 @ObjectType("BidirWithSetParentEntities")
+@DomainService
 public class BidirWithSetParentEntityRepository extends AbstractEntityRepository<BidirWithSetParentEntity> {
 
     public BidirWithSetParentEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/ParentEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/ParentEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/ParentEntityRepository.java
index 0842eca..25ef44d 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/ParentEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/ParentEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("ParentEntities")
 @ObjectType("ParentEntities")
+@DomainService
 public class ParentEntityRepository extends AbstractEntityRepository<ParentEntity> {
 
     public ParentEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyClassParentEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyClassParentEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyClassParentEntityRepository.java
index 34f60b3..a358cfd 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyClassParentEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyClassParentEntityRepository.java
@@ -19,14 +19,12 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
-import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.ObjectType;
+import org.apache.isis.applib.annotation.*;
 import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("PolyClassParentEntities")
 @ObjectType("PolyClassParentEntities")
+@DomainService
 public class PolyClassParentEntityRepository extends AbstractEntityRepository<PolyClassParentEntity> {
 
     public PolyClassParentEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceIdentityStrategyParentEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceIdentityStrategyParentEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceIdentityStrategyParentEntityRepository.java
index ce93a61..232f177 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceIdentityStrategyParentEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceIdentityStrategyParentEntityRepository.java
@@ -19,14 +19,12 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
-import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.ObjectType;
+import org.apache.isis.applib.annotation.*;
 import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("PolyInterfaceIdentityStrategyParentEntities")
 @ObjectType("PolyInterfaceIdentityStrategyParentEntities")
+@DomainService
 public class PolyInterfaceIdentityStrategyParentEntityRepository extends AbstractEntityRepository<PolyInterfaceIdentityStrategyParentEntity> {
 
     public PolyInterfaceIdentityStrategyParentEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceParentEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceParentEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceParentEntityRepository.java
index 9005a78..5d302e4 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceParentEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/PolyInterfaceParentEntityRepository.java
@@ -19,14 +19,12 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
-import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.ObjectType;
+import org.apache.isis.applib.annotation.*;
 import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("PolyInterfaceParentEntities")
 @ObjectType("PolyInterfaceParentEntities")
+@DomainService
 public class PolyInterfaceParentEntityRepository extends AbstractEntityRepository<PolyInterfaceParentEntity> {
 
     public PolyInterfaceParentEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirFkParentEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirFkParentEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirFkParentEntityRepository.java
index fcbcadd..5277df6 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirFkParentEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirFkParentEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("UnidirFkParentEntities")
 @ObjectType("UnidirFkParentEntities")
+@DomainService
 public class UnidirFkParentEntityRepository extends AbstractEntityRepository<UnidirFkParentEntity> {
 
     public UnidirFkParentEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirJoinParentEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirJoinParentEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirJoinParentEntityRepository.java
index 47fd53c..47da2d4 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirJoinParentEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirJoinParentEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("UnidirJoinParentEntities")
 @ObjectType("UnidirJoinParentEntities")
+@DomainService
 public class UnidirJoinParentEntityRepository extends AbstractEntityRepository<UnidirJoinParentEntity> {
 
     public UnidirJoinParentEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencedEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencedEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencedEntityRepository.java
index c25d9f6..6decf98 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencedEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencedEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("UnidirReferencedEntities")
 @ObjectType("UnidirReferencedEntities")
+@DomainService
 public class UnidirReferencedEntityRepository extends AbstractEntityRepository<UnidirReferencedEntity> {
 
     public UnidirReferencedEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencingEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencingEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencingEntityRepository.java
index c4df740..9100601 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencingEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/refs/UnidirReferencingEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.refs;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("UnidirReferencingEntities")
 @ObjectType("UnidirReferencingEntities")
+@DomainService
 public class UnidirReferencingEntityRepository extends AbstractEntityRepository<UnidirReferencingEntity> {
 
     public UnidirReferencingEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/ApplibValuedEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/ApplibValuedEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/ApplibValuedEntityRepository.java
index 50a9ac2..79c982d 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/ApplibValuedEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/ApplibValuedEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.scalars;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("ApplibValuedEntities")
 @ObjectType("ApplibValuedEntities")
+@DomainService
 public class ApplibValuedEntityRepository extends AbstractEntityRepository<ApplibValuedEntity> {
 
     public ApplibValuedEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntityRepository.java
index febf5d3..9a0624e 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JdkValuedEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.scalars;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("JdkValuedEntities")
 @ObjectType("JdkValuedEntities")
+@DomainService
 public class JdkValuedEntityRepository extends AbstractEntityRepository<JdkValuedEntity> {
 
     public JdkValuedEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JodaValuedEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JodaValuedEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JodaValuedEntityRepository.java
index 1630539..8f46899 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JodaValuedEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/JodaValuedEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.scalars;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("JodaValuedEntities")
 @ObjectType("JodaValuedEntities")
+@DomainService
 public class JodaValuedEntityRepository extends AbstractEntityRepository<JodaValuedEntity> {
 
     public JodaValuedEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/PrimitiveValuedEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/PrimitiveValuedEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/PrimitiveValuedEntityRepository.java
index 79be01a..aa84d55 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/PrimitiveValuedEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/PrimitiveValuedEntityRepository.java
@@ -19,16 +19,14 @@
 
 package org.apache.isis.core.tck.dom.scalars;
 
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.ObjectType;
-import org.apache.isis.applib.annotation.QueryOnly;
+import org.apache.isis.applib.annotation.*;
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.query.QueryDefault;
 import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("PrimitiveValuedEntities")
 @ObjectType("PrimitiveValuedEntities")
+@DomainService
 public class PrimitiveValuedEntityRepository extends AbstractEntityRepository<PrimitiveValuedEntity> {
 
     public PrimitiveValuedEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/WrapperValuedEntityRepository.java
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/WrapperValuedEntityRepository.java b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/WrapperValuedEntityRepository.java
index 113bad2..e9f9eb9 100644
--- a/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/WrapperValuedEntityRepository.java
+++ b/core/tck/tck-dom/src/main/java/org/apache/isis/core/tck/dom/scalars/WrapperValuedEntityRepository.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.tck.dom.scalars;
 
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
@@ -26,6 +27,7 @@ import org.apache.isis.core.tck.dom.AbstractEntityRepository;
 
 @Named("WrapperValues")
 @ObjectType("WrapperValues")
+@DomainService
 public class WrapperValuedEntityRepository extends AbstractEntityRepository<WrapperValuedEntity> {
 
     public WrapperValuedEntityRepository() {

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/viewer-restfulobjects-tck/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-tck/pom.xml b/core/viewer-restfulobjects-tck/pom.xml
index 032f9a1..b8e4f4c 100644
--- a/core/viewer-restfulobjects-tck/pom.xml
+++ b/core/viewer-restfulobjects-tck/pom.xml
@@ -121,6 +121,11 @@
         </dependency>
 
         <dependency>
+            <groupId>org.reflections</groupId>
+            <artifactId>reflections</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/viewer-restfulobjects-tck/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-tck/src/main/webapp/WEB-INF/isis.properties b/core/viewer-restfulobjects-tck/src/main/webapp/WEB-INF/isis.properties
index b5cab51..4407ca7 100644
--- a/core/viewer-restfulobjects-tck/src/main/webapp/WEB-INF/isis.properties
+++ b/core/viewer-restfulobjects-tck/src/main/webapp/WEB-INF/isis.properties
@@ -21,27 +21,10 @@ isis.authorization=bypass
 isis.user-profile-store=in-memory
 isis.persistor=in-memory
 
-isis.services.prefix = org.apache.isis.core.tck.dom
-isis.services =\
-    scalars.ApplibValuedEntityRepository,\
-    scalars.JdkValuedEntityRepository,\
-    scalars.PrimitiveValuedEntityRepository,\
-    scalars.WrapperValuedEntityRepository, \
-    refs.ParentEntityRepository,\
-    refs.BidirWithListParentEntityRepository,\
-    refs.BidirWithSetParentEntityRepository,\
-    refs.PolyClassParentEntityRepository,\
-    refs.PolyInterfaceIdentityStrategyParentEntityRepository,\
-    refs.PolyInterfaceParentEntityRepository,\
-    refs.UnidirFkParentEntityRepository,\
-    refs.UnidirJoinParentEntityRepository,\
-    refs.UnidirReferencedEntityRepository,\
-    refs.UnidirReferencingEntityRepository,\
-    defaults.WithDefaultsEntityRepository,\
-    defaults.HiddenRepository,\
-    busrules.BusRulesEntityRepository,\
-    actions.ActionsEntityRepository,\
-    scalars.JodaValuedEntityRepository
+isis.services-installer=configuration-and-annotation
+isis.services.ServicesInstallerFromAnnotation.packagePrefix=org.apache.isis.core.tck.dom
+
+isis.services = org.apache.isis.applib.services.eventbus.EventBusService$Noop
 
 isis.fixtures.prefix= org.apache.isis.core.tck.fixture
 isis.fixtures=\

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenDisabledMembers_thenRepresentation_ok.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenDisabledMembers_thenRepresentation_ok.java b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenDisabledMembers_thenRepresentation_ok.java
index 1a7b17f..66590fc 100644
--- a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenDisabledMembers_thenRepresentation_ok.java
+++ b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenDisabledMembers_thenRepresentation_ok.java
@@ -18,23 +18,14 @@
  */
 package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
-
 import java.io.IOException;
-
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status.Family;
-
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
-
 import org.apache.isis.core.webserver.WebServer;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
@@ -43,6 +34,9 @@ import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRe
 import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
 import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 public class Get_givenDisabledMembers_thenRepresentation_ok {
 
     @Rule
@@ -64,7 +58,7 @@ public class Get_givenDisabledMembers_thenRepresentation_ok {
     public void domainObjectWithDisabledMembers() throws Exception {
 
         // given, when
-        final DomainObjectRepresentation domainObjectRepr = givenDomainObjectRepresentationFor("BSRL","64");
+        final DomainObjectRepresentation domainObjectRepr = givenDomainObjectRepresentationFor("BSRL","74");
 
         // property ('visibleButNotEditableProperty')
         final JsonRepresentation properties = domainObjectRepr.getProperties();

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithActions_thenRepresentation_ok.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithActions_thenRepresentation_ok.java b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithActions_thenRepresentation_ok.java
index 194868a..4590600 100644
--- a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithActions_thenRepresentation_ok.java
+++ b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithActions_thenRepresentation_ok.java
@@ -57,7 +57,7 @@ public class Get_givenEntityWithActions_thenRepresentation_ok {
     public void thenMembers() throws Exception {
 
         // when
-        final Response jaxrsResponse = domainObjectResource.object("RTNE","67");
+        final Response jaxrsResponse = domainObjectResource.object("RTNE","75");
         final RestfulResponse<DomainObjectRepresentation> restfulResponse = RestfulResponse.ofT(jaxrsResponse);
         assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
 

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithCollections_thenRepresentation_ok_TODO.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithCollections_thenRepresentation_ok_TODO.java b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithCollections_thenRepresentation_ok_TODO.java
index c1dad12..f67b40f 100644
--- a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithCollections_thenRepresentation_ok_TODO.java
+++ b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithCollections_thenRepresentation_ok_TODO.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid;
 
 import javax.ws.rs.core.Response;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.apache.isis.core.webserver.WebServer;
@@ -57,7 +56,7 @@ public class Get_givenEntityWithCollections_thenRepresentation_ok_TODO {
     public void thenCollections() throws Exception {
 
         // when
-        final Response jaxrsResponse = domainObjectResource.object("PRMV","31");
+        final Response jaxrsResponse = domainObjectResource.object("PRMV","40");
         final RestfulResponse<DomainObjectRepresentation> restfulResponse = RestfulResponse.ofT(jaxrsResponse);
         assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
 

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenHiddenMembers_thenRepresentation_ok.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenHiddenMembers_thenRepresentation_ok.java b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenHiddenMembers_thenRepresentation_ok.java
index 3a91f87..e0dc57c 100644
--- a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenHiddenMembers_thenRepresentation_ok.java
+++ b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenHiddenMembers_thenRepresentation_ok.java
@@ -58,7 +58,7 @@ public class Get_givenHiddenMembers_thenRepresentation_ok {
     public void domainObjectWithHiddenMembers() throws Exception {
 
         // given, when
-        final DomainObjectRepresentation domainObjectRepr = givenDomainObjectRepresentationFor("BSRL","64");
+        final DomainObjectRepresentation domainObjectRepr = givenDomainObjectRepresentationFor("BSRL","74");
 
         // property ('invisibleProperty')
         final JsonRepresentation properties = domainObjectRepr.getProperties();

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenQueryArg_xRoDomainModel_ok.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenQueryArg_xRoDomainModel_ok.java b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenQueryArg_xRoDomainModel_ok.java
index 552c875..fa68219 100644
--- a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenQueryArg_xRoDomainModel_ok.java
+++ b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenQueryArg_xRoDomainModel_ok.java
@@ -18,21 +18,21 @@
  */
 package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
 import org.apache.isis.core.webserver.WebServer;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation;
 import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
 
 public class Get_whenQueryArg_xRoDomainModel_ok {
     @Rule
@@ -45,7 +45,7 @@ public class Get_whenQueryArg_xRoDomainModel_ok {
     public void setUp() throws Exception {
         final WebServer webServer = webServerRule.getWebServer();
         client = new RestfulClient(webServer.getBase());
-        request = client.createRequest(RestfulHttpMethod.GET, "/objects/BSRL/64");
+        request = client.createRequest(RestfulHttpMethod.GET, "/objects/BSRL/74");
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/isis/blob/9dd104af/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenRequestHeaders_Accept_ok.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenRequestHeaders_Accept_ok.java b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenRequestHeaders_Accept_ok.java
index aeb467d..d950b10 100644
--- a/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenRequestHeaders_Accept_ok.java
+++ b/core/viewer-restfulobjects-tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_whenRequestHeaders_Accept_ok.java
@@ -45,7 +45,7 @@ public class Get_whenRequestHeaders_Accept_ok {
     @Before
     public void setUp() throws Exception {
         client = webServerRule.getClient();
-        request = client.createRequest(RestfulHttpMethod.GET, "objects/BSRL/64");
+        request = client.createRequest(RestfulHttpMethod.GET, "objects/BSRL/74");
     }
 
     @Test