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