Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2014 Red Hat, Inc., and individual contributors
   * as indicated by the @author tags.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  *  Unless required by applicable law or agreed to in writing, software
  *  distributed under the License is distributed on an "AS IS" BASIS,
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
 
 package io.undertow.servlet.core;
 
 
 import java.util.List;
 
 import static io.undertow.servlet.core.ApplicationListeners.ListenerState.DECLARED_LISTENER;
 import static io.undertow.servlet.core.ApplicationListeners.ListenerState.PROGRAMATIC_LISTENER;

Class that is responsible for invoking application listeners.

This class does not perform any context setup, the context must be setup before invoking this class.

Note that arrays are used instead of lists for performance reasons.

Author(s):
Stuart Douglas
 
 public class ApplicationListeners implements Lifecycle {
 
 
     private static final ManagedListener[] EMPTY = {};
 
     private static final Class[] LISTENER_CLASSES = {ServletContextListener.class,
             ServletContextAttributeListener.class,
             ServletRequestListener.class,
             ServletRequestAttributeListener.class,
             javax.servlet.http.HttpSessionListener.class,
             javax.servlet.http.HttpSessionAttributeListener.class,
             HttpSessionIdListener.class};
 
         @Override
         protected ListenerState initialValue() {
             return .;
         }
     };
 
     private ServletContext servletContext;
     private final List<ManagedListenerallListeners = new ArrayList<>();
     private volatile boolean started = false;
 
     public ApplicationListeners(final List<ManagedListenerallListenersfinal ServletContext servletContext) {
         this. = servletContext;
          = ;
          = ;
          = ;
          = ;
          = ;
         for (final ManagedListener listener : allListeners) {
             addListener(listener);
         }
     }
    public void addListener(final ManagedListener listener) {
        if (ServletContextListener.class.isAssignableFrom(listener.getListenerInfo().getListenerClass())) {
            ManagedListener[] old = ;
             = new ManagedListener[old.length + 1];
            System.arraycopy(old, 0, , 0, old.length);
            [old.length] = listener;
        }
            ManagedListener[] old = ;
             = new ManagedListener[old.length + 1];
            System.arraycopy(old, 0, , 0, old.length);
            [old.length] = listener;
        }
        if (ServletRequestListener.class.isAssignableFrom(listener.getListenerInfo().getListenerClass())) {
            ManagedListener[] old = ;
             = new ManagedListener[old.length + 1];
            System.arraycopy(old, 0, , 0, old.length);
            [old.length] = listener;
        }
            ManagedListener[] old = ;
             = new ManagedListener[old.length + 1];
            System.arraycopy(old, 0, , 0, old.length);
            [old.length] = listener;
        }
        if (HttpSessionListener.class.isAssignableFrom(listener.getListenerInfo().getListenerClass())) {
            ManagedListener[] old = ;
             = new ManagedListener[old.length + 1];
            System.arraycopy(old, 0, , 0, old.length);
            [old.length] = listener;
        }
            ManagedListener[] old = ;
             = new ManagedListener[old.length + 1];
            System.arraycopy(old, 0, , 0, old.length);
            [old.length] = listener;
        }
        if (HttpSessionIdListener.class.isAssignableFrom(listener.getListenerInfo().getListenerClass())) {
            ManagedListener[] old = ;
             = new ManagedListener[old.length + 1];
            System.arraycopy(old, 0, , 0, old.length);
            [old.length] = listener;
        }
        this..add(listener);
    }
    public void start() {
         = true;
    }
    public void stop() {
        if () {
             = false;
            for (final ManagedListener listener : ) {
                listener.stop();
            }
        }
    }
    @Override
    public boolean isStarted() {
        return ;
    }
    public void contextInitialized() {
        //new listeners can be added here, so we don't use an iterator
        final ServletContextEvent event = new ServletContextEvent();
        for (int i = 0; i < .; ++i) {
            ManagedListener listener = [i];
            try {
                this.<ServletContextListener>get(listener).contextInitialized(event);
            } finally {
                .remove();
            }
        }
    }
    public void contextDestroyed() {
        final ServletContextEvent event = new ServletContextEvent();
        for (int i = . - 1; i >= 0; --i) {
            ManagedListener listener = [i];
            try {
                this.<ServletContextListener>get(listener).contextDestroyed(event);
            } catch (Exception e) {
                ..errorInvokingListener("contextDestroyed"listener.getListenerInfo().getListenerClass(), e);
            }
        }
    }
    public void servletContextAttributeAdded(final String namefinal Object value) {
        final ServletContextAttributeEvent sre = new ServletContextAttributeEvent(namevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void servletContextAttributeRemoved(final String namefinal Object value) {
        final ServletContextAttributeEvent sre = new ServletContextAttributeEvent(namevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void servletContextAttributeReplaced(final String namefinal Object value) {
        final ServletContextAttributeEvent sre = new ServletContextAttributeEvent(namevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void requestInitialized(final ServletRequest request) {
        final ServletRequestEvent sre = new ServletRequestEvent(request);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void requestDestroyed(final ServletRequest request) {
        final ServletRequestEvent sre = new ServletRequestEvent(request);
        for (int i = . - 1; i >= 0; --i) {
            ManagedListener listener = [i];
            try {
                this.<ServletRequestListener>get(listener).requestDestroyed(sre);
            } catch (Exception e) {
                ..errorInvokingListener("requestDestroyed"listener.getListenerInfo().getListenerClass(), e);
            }
        }
    }
    public void servletRequestAttributeAdded(final HttpServletRequest requestfinal String namefinal Object value) {
        final ServletRequestAttributeEvent sre = new ServletRequestAttributeEvent(requestnamevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void servletRequestAttributeRemoved(final HttpServletRequest requestfinal String namefinal Object value) {
        final ServletRequestAttributeEvent sre = new ServletRequestAttributeEvent(requestnamevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void servletRequestAttributeReplaced(final HttpServletRequest requestfinal String namefinal Object value) {
        final ServletRequestAttributeEvent sre = new ServletRequestAttributeEvent(requestnamevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void sessionCreated(final HttpSession session) {
        final HttpSessionEvent sre = new HttpSessionEvent(session);
        for (int i = 0; i < .; ++i) {
            this.<HttpSessionListener>get([i]).sessionCreated(sre);
        }
    }
    public void sessionDestroyed(final HttpSession session) {
        final HttpSessionEvent sre = new HttpSessionEvent(session);
        for (int i = . - 1; i >= 0; --i) {
            ManagedListener listener = [i];
            this.<HttpSessionListener>get(listener).sessionDestroyed(sre);
        }
    }
    public void httpSessionAttributeAdded(final HttpSession sessionfinal String namefinal Object value) {
        final HttpSessionBindingEvent sre = new HttpSessionBindingEvent(sessionnamevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void httpSessionAttributeRemoved(final HttpSession sessionfinal String namefinal Object value) {
        final HttpSessionBindingEvent sre = new HttpSessionBindingEvent(sessionnamevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void httpSessionAttributeReplaced(final HttpSession sessionfinal String namefinal Object value) {
        final HttpSessionBindingEvent sre = new HttpSessionBindingEvent(sessionnamevalue);
        for (int i = 0; i < .; ++i) {
        }
    }
    public void httpSessionIdChanged(final HttpSession sessionfinal String oldSessionId) {
        final HttpSessionEvent sre = new HttpSessionEvent(session);
        for (int i = 0; i < .; ++i) {
            this.<HttpSessionIdListener>get([i]).sessionIdChanged(sreoldSessionId);
        }
    }
    private <T> T get(final ManagedListener listener) {
        return (T) listener.instance();
    }

    
returns true if this is in in a
    public static ListenerState listenerState() {
    }

    

Parameters:
clazz The potential listener class
Returns:
true if the provided class is a valid listener class
    public static boolean isListenerClass(final Class<?> clazz) {
        for (Class c : ) {
            if (c.isAssignableFrom(clazz)) {
                return true;
            }
        }
        return false;
    }
    public static enum ListenerState {
        NO_LISTENER,
        DECLARED_LISTENER,
        PROGRAMATIC_LISTENER,
    }
New to GrepCode? Check out our FAQ X