You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/11/13 18:57:22 UTC

[11/11] isis git commit: ISIS-1254: adding Noop subclasses for the domain events so that the programmer can explicitly disable event propogation if required.

ISIS-1254: adding Noop subclasses for the domain events  so that the programmer can explicitly disable event propogation if required.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/25ce7360
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/25ce7360
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/25ce7360

Branch: refs/heads/master
Commit: 25ce7360983c20b7760bb5064a103bc813e91bdc
Parents: 99c55b8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Nov 13 17:56:46 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Nov 13 17:56:46 2015 +0000

----------------------------------------------------------------------
 .../applib/services/eventbus/ActionDomainEvent.java | 16 ++++++++++++++--
 .../services/eventbus/CollectionDomainEvent.java    | 16 ++++++++++++++--
 .../services/eventbus/PropertyDomainEvent.java      | 16 ++++++++++++++--
 .../action/ActionAnnotationFacetFactory.java        |  4 +++-
 .../CollectionAnnotationFacetFactory.java           |  4 +++-
 .../property/PropertyAnnotationFacetFactory.java    |  5 ++++-
 6 files changed, 52 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/25ce7360/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
index 17d6f7c..93ca053 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
@@ -34,8 +34,9 @@ public abstract class ActionDomainEvent<S> extends AbstractInteractionEvent<S> {
     //region > Default class
 
     /**
-     * Propagated if no custom subclass was specified using
-     * {@link org.apache.isis.applib.annotation.Action#domainEvent()} annotation attribute.
+     * The default for {@link org.apache.isis.applib.annotation.Action#domainEvent()} annotation attribute, will be
+     * used as the event class to be posted if some other subclass wasn't specified (though setting to
+     * {@link org.apache.isis.applib.services.eventbus.ActionDomainEvent.Noop} will disable).
      */
     public static class Default extends ActionInteractionEvent<Object> {
         private static final long serialVersionUID = 1L;
@@ -45,6 +46,17 @@ public abstract class ActionDomainEvent<S> extends AbstractInteractionEvent<S> {
     }
     //endregion
 
+    //region > Noop class
+
+    /**
+     * Disables event propogation if explicitly set as the value of
+     * {@link org.apache.isis.applib.annotation.Action#domainEvent()} annotation attribute.
+     */
+    public static class Noop extends ActionDomainEvent<Object> {
+        private static final long serialVersionUID = 1L;
+    }
+    //endregion
+
     //region > constructors
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/25ce7360/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java
index c91daa7..2fef767 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java
@@ -27,8 +27,9 @@ public abstract class CollectionDomainEvent<S,T> extends AbstractInteractionEven
 
     //region > Default class
     /**
-     * Propagated if no custom subclass was specified using
-     * {@link org.apache.isis.applib.annotation.Collection#domainEvent()} annotation attribute.
+     * The default for {@link org.apache.isis.applib.annotation.Collection#domainEvent()} annotation attribute, will be
+     * used as the event class to be posted if some other subclass wasn't specified (though setting to
+     * {@link org.apache.isis.applib.services.eventbus.CollectionDomainEvent.Noop} will disable).
      */
     public static class Default extends CollectionInteractionEvent<Object, Object> {
         private static final long serialVersionUID = 1L;
@@ -42,6 +43,17 @@ public abstract class CollectionDomainEvent<S,T> extends AbstractInteractionEven
     }
     //endregion
 
+    //region > Noop class
+
+    /**
+     * Disables event propogation if explicitly set as the value of
+     * {@link org.apache.isis.applib.annotation.Collection#domainEvent()} annotation attribute.
+     */
+    public static class Noop extends CollectionDomainEvent<Object,Object> {
+        private static final long serialVersionUID = 1L;
+    }
+    //endregion
+
     //region > constructors
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/25ce7360/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java
index b641276..1114f34 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java
@@ -27,8 +27,9 @@ public abstract class PropertyDomainEvent<S,T> extends AbstractInteractionEvent<
 
     //region > Default class
     /**
-     * Propagated if no custom subclass was specified using
-     * {@link org.apache.isis.applib.annotation.Property#domainEvent()} annotation attribute.
+     * The default for {@link org.apache.isis.applib.annotation.Property#domainEvent()} annotation attribute, will be
+     * used as the event class to be posted if some other subclass wasn't specified (though setting to
+     * {@link org.apache.isis.applib.services.eventbus.PropertyDomainEvent.Noop} will disable).
      */
     public static class Default extends PropertyInteractionEvent<Object, Object> {
         private static final long serialVersionUID = 1L;
@@ -38,6 +39,17 @@ public abstract class PropertyDomainEvent<S,T> extends AbstractInteractionEvent<
     }
     //endregion
 
+    //region > Noop class
+
+    /**
+     * Disables event propogation if explicitly set as the value of
+     * {@link org.apache.isis.applib.annotation.Property#domainEvent()} annotation attribute.
+     */
+    public static class Noop extends PropertyDomainEvent<Object,Object> {
+        private static final long serialVersionUID = 1L;
+    }
+    //endregion
+
     //region > constructors
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/25ce7360/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 8f9da41..cca21b9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -199,7 +199,9 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implement
                 actionDomainEventFacet = new ActionDomainEventFacetDefault(
                         actionDomainEventType, servicesInjector, getSpecificationLoader(), holder);
             }
-            FacetUtil.addFacet(actionDomainEventFacet);
+            if(!ActionDomainEvent.Noop.class.isAssignableFrom(actionDomainEventFacet.getEventType())) {
+                FacetUtil.addFacet(actionDomainEventFacet);
+            }
 
 
             // replace the current actionInvocationFacet with one that will

http://git-wip-us.apache.org/repos/asf/isis/blob/25ce7360/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
index e4ccfb9..ef1022b 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
@@ -166,7 +166,9 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract imple
             collectionDomainEventFacet = new CollectionDomainEventFacetDefault(
                     collectionDomainEventType, servicesInjector, getSpecificationLoader(), holder);
         }
-        FacetUtil.addFacet(collectionDomainEventFacet);
+        if(!CollectionDomainEvent.Noop.class.isAssignableFrom(collectionDomainEventFacet.getEventType())) {
+            FacetUtil.addFacet(collectionDomainEventFacet);
+        }
 
 
         //

http://git-wip-us.apache.org/repos/asf/isis/blob/25ce7360/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index 6ec1109..7dfb0d5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -167,7 +167,10 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
             propertyDomainEventFacet = new PropertyDomainEventFacetDefault(
                     propertyDomainEventType, getterFacet, servicesInjector, getSpecificationLoader(), holder);
         }
-        FacetUtil.addFacet(propertyDomainEventFacet);
+        if(!PropertyDomainEvent.Noop.class.isAssignableFrom(propertyDomainEventFacet.getEventType())) {
+            FacetUtil.addFacet(propertyDomainEventFacet);
+        }
+
 
 
         //