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);
+ }
+
//