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

Reply via email to