Matt What do you mean? We have three emitters, all three are deactivatable...
On Tue, Sep 3, 2013 at 8:35 AM, Matt Benson <[email protected]> wrote: > I see... not all emitters are deactivatable. Still, what about an abstract > deactivatable emitter class? > On Sep 3, 2013 7:32 AM, "Matt Benson" <[email protected]> wrote: > >> Hi Christian, >> This activation check seems pretty generic if it's only based on the >> emitter's runtime class... what about moving up to Emitter and doing the >> check in #fireEvent()? >> >> br, >> Matt >> On Sep 3, 2013 2:13 AM, <[email protected]> wrote: >> >>> Updated Branches: >>> refs/heads/master 28169465d -> 502fecd7a >>> >>> >>> DELTASPIKE-409 Servlet module events should be deactivatable >>> >>> >>> Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo >>> Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/502fecd7 >>> Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/502fecd7 >>> Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/502fecd7 >>> >>> Branch: refs/heads/master >>> Commit: 502fecd7a66950665ee6dda1d13d1043f7d81a20 >>> Parents: 2816946 >>> Author: Christian Kaltepoth <[email protected]> >>> Authored: Tue Sep 3 09:12:29 2013 +0200 >>> Committer: Christian Kaltepoth <[email protected]> >>> Committed: Tue Sep 3 09:12:29 2013 +0200 >>> >>> ---------------------------------------------------------------------- >>> .../impl/event/EventBridgeContextListener.java | 21 +++++++++++++--- >>> .../servlet/impl/event/EventBridgeFilter.java | 25 ++++++++++++++++---- >>> .../impl/event/EventBridgeSessionListener.java | 21 +++++++++++++--- >>> 3 files changed, 56 insertions(+), 11 deletions(-) >>> ---------------------------------------------------------------------- >>> >>> >>> >>> http://git-wip-us.apache.org/repos/asf/deltaspike/blob/502fecd7/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeContextListener.java >>> ---------------------------------------------------------------------- >>> diff --git >>> a/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeContextListener.java >>> b/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeContextListener.java >>> index 2f7cd7c..c80d92e 100644 >>> --- >>> a/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeContextListener.java >>> +++ >>> b/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeContextListener.java >>> @@ -21,25 +21,40 @@ package org.apache.deltaspike.servlet.impl.event; >>> import javax.servlet.ServletContextEvent; >>> import javax.servlet.ServletContextListener; >>> >>> +import org.apache.deltaspike.core.spi.activation.Deactivatable; >>> +import org.apache.deltaspike.core.util.ClassDeactivationUtils; >>> import org.apache.deltaspike.servlet.api.literal.DestroyedLiteral; >>> import org.apache.deltaspike.servlet.api.literal.InitializedLiteral; >>> >>> /** >>> * This class listens for servlet context events and forwards them to >>> the CDI event bus. >>> */ >>> -public class EventBridgeContextListener extends EventEmitter implements >>> ServletContextListener >>> +public class EventBridgeContextListener extends EventEmitter implements >>> ServletContextListener, Deactivatable >>> { >>> >>> + private final boolean activated; >>> + >>> + public EventBridgeContextListener() >>> + { >>> + this.activated = ClassDeactivationUtils.isActivated(getClass()); >>> + } >>> + >>> @Override >>> public void contextInitialized(ServletContextEvent sce) >>> { >>> - fireEvent(sce.getServletContext(), InitializedLiteral.INSTANCE); >>> + if (activated) >>> + { >>> + fireEvent(sce.getServletContext(), >>> InitializedLiteral.INSTANCE); >>> + } >>> } >>> >>> @Override >>> public void contextDestroyed(ServletContextEvent sce) >>> { >>> - fireEvent(sce.getServletContext(), DestroyedLiteral.INSTANCE); >>> + if (activated) >>> + { >>> + fireEvent(sce.getServletContext(), >>> DestroyedLiteral.INSTANCE); >>> + } >>> } >>> >>> } >>> >>> >>> http://git-wip-us.apache.org/repos/asf/deltaspike/blob/502fecd7/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeFilter.java >>> ---------------------------------------------------------------------- >>> diff --git >>> a/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeFilter.java >>> b/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeFilter.java >>> index 529d4c7..ce1f279 100644 >>> --- >>> a/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeFilter.java >>> +++ >>> b/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeFilter.java >>> @@ -27,15 +27,24 @@ import javax.servlet.ServletException; >>> import javax.servlet.ServletRequest; >>> import javax.servlet.ServletResponse; >>> >>> +import org.apache.deltaspike.core.spi.activation.Deactivatable; >>> +import org.apache.deltaspike.core.util.ClassDeactivationUtils; >>> import org.apache.deltaspike.servlet.api.literal.DestroyedLiteral; >>> import org.apache.deltaspike.servlet.api.literal.InitializedLiteral; >>> >>> /** >>> * This filter sends events to the CDI event bus when requests and >>> responses get created and destroyed. >>> */ >>> -public class EventBridgeFilter extends EventEmitter implements Filter >>> +public class EventBridgeFilter extends EventEmitter implements Filter, >>> Deactivatable >>> { >>> >>> + private final boolean activated; >>> + >>> + public EventBridgeFilter() >>> + { >>> + this.activated = ClassDeactivationUtils.isActivated(getClass()); >>> + } >>> + >>> @Override >>> public void init(FilterConfig config) throws ServletException >>> { >>> @@ -48,8 +57,11 @@ public class EventBridgeFilter extends EventEmitter >>> implements Filter >>> { >>> >>> // fire @Initialized events >>> - fireEvent(request, InitializedLiteral.INSTANCE); >>> - fireEvent(response, InitializedLiteral.INSTANCE); >>> + if (activated) >>> + { >>> + fireEvent(request, InitializedLiteral.INSTANCE); >>> + fireEvent(response, InitializedLiteral.INSTANCE); >>> + } >>> >>> try >>> { >>> @@ -58,8 +70,11 @@ public class EventBridgeFilter extends EventEmitter >>> implements Filter >>> finally >>> { >>> // fire @Destroyed events >>> - fireEvent(request, DestroyedLiteral.INSTANCE); >>> - fireEvent(response, DestroyedLiteral.INSTANCE); >>> + if (activated) >>> + { >>> + fireEvent(request, DestroyedLiteral.INSTANCE); >>> + fireEvent(response, DestroyedLiteral.INSTANCE); >>> + } >>> } >>> >>> } >>> >>> >>> http://git-wip-us.apache.org/repos/asf/deltaspike/blob/502fecd7/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeSessionListener.java >>> ---------------------------------------------------------------------- >>> diff --git >>> a/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeSessionListener.java >>> b/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeSessionListener.java >>> index c923ec5..73f14c3 100644 >>> --- >>> a/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeSessionListener.java >>> +++ >>> b/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl/event/EventBridgeSessionListener.java >>> @@ -21,24 +21,39 @@ package org.apache.deltaspike.servlet.impl.event; >>> import javax.servlet.http.HttpSessionEvent; >>> import javax.servlet.http.HttpSessionListener; >>> >>> +import org.apache.deltaspike.core.spi.activation.Deactivatable; >>> +import org.apache.deltaspike.core.util.ClassDeactivationUtils; >>> import org.apache.deltaspike.servlet.api.literal.DestroyedLiteral; >>> import org.apache.deltaspike.servlet.api.literal.InitializedLiteral; >>> >>> /** >>> * This class listens for HTTP session events and forwards them to the >>> CDI event bus. >>> */ >>> -public class EventBridgeSessionListener extends EventEmitter implements >>> HttpSessionListener >>> +public class EventBridgeSessionListener extends EventEmitter implements >>> HttpSessionListener, Deactivatable >>> { >>> >>> + private final boolean activated; >>> + >>> + public EventBridgeSessionListener() >>> + { >>> + this.activated = ClassDeactivationUtils.isActivated(getClass()); >>> + } >>> + >>> @Override >>> public void sessionCreated(HttpSessionEvent se) >>> { >>> - fireEvent(se.getSession(), InitializedLiteral.INSTANCE); >>> + if (activated) >>> + { >>> + fireEvent(se.getSession(), InitializedLiteral.INSTANCE); >>> + } >>> } >>> >>> @Override >>> public void sessionDestroyed(HttpSessionEvent se) >>> { >>> - fireEvent(se.getSession(), DestroyedLiteral.INSTANCE); >>> + if (activated) >>> + { >>> + fireEvent(se.getSession(), DestroyedLiteral.INSTANCE); >>> + } >>> } >>> } >>> >>>
