Title: Interceptors

*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*

## ClassLevelInterceptorOne

    package org.superbiz.interceptors;
    
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class ClassLevelInterceptorOne {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## ClassLevelInterceptorSuperClassOne

    package org.superbiz.interceptors;
    
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class ClassLevelInterceptorSuperClassOne {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## ClassLevelInterceptorSuperClassTwo

    package org.superbiz.interceptors;
    
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class ClassLevelInterceptorSuperClassTwo extends SuperClassOfClassLevelInterceptor {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## ClassLevelInterceptorTwo

    package org.superbiz.interceptors;
    
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class ClassLevelInterceptorTwo {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## DefaultInterceptorOne

    package org.superbiz.interceptors;
    
    import javax.annotation.PostConstruct;
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class DefaultInterceptorOne {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    
        @PostConstruct
        protected void postConstructInterceptor(InvocationContext ic) throws Exception {
            Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## DefaultInterceptorTwo

    package org.superbiz.interceptors;
    
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class DefaultInterceptorTwo {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## FullyIntercepted

    package org.superbiz.interceptors;
    
    import java.util.List;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public interface FullyIntercepted {
    
        List<String> businessMethod();
    
        List<String> methodWithDefaultInterceptorsExcluded();
    }

## FullyInterceptedBean

    package org.superbiz.interceptors;
    
    import javax.ejb.Local;
    import javax.ejb.Stateless;
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.Interceptors;
    import javax.interceptor.InvocationContext;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    @Stateless
    @Local
    @Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
    public class FullyInterceptedBean extends FullyInterceptedSuperClass implements FullyIntercepted {
    
        @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
        public List<String> businessMethod() {
            List<String> list = new ArrayList<String>();
            list.add("businessMethod");
            return list;
        }
    
        @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
        public List<String> methodWithDefaultInterceptorsExcluded() {
            List<String> list = new ArrayList<String>();
            list.add("methodWithDefaultInterceptorsExcluded");
            return list;
        }
    
        @AroundInvoke
        protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, "beanClassBusinessMethodInterceptor");
        }
    }

## FullyInterceptedSuperClass

    package org.superbiz.interceptors;
    
    import javax.interceptor.Interceptors;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    @Interceptors({ClassLevelInterceptorSuperClassOne.class, ClassLevelInterceptorSuperClassTwo.class})
    public class FullyInterceptedSuperClass {
    }

## MethodLevelInterceptorOne

    package org.superbiz.interceptors;
    
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class MethodLevelInterceptorOne {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## MethodLevelInterceptorOnlyIntf

    package org.superbiz.interceptors;
    
    import java.io.Serializable;
    import java.util.List;
    
    public interface MethodLevelInterceptorOnlyIntf<T extends Serializable> {
        public List<T> makePersistent(T entity);
    }

## MethodLevelInterceptorOnlyParent

    package org.superbiz.interceptors;
    
    import java.util.List;
    
    public interface MethodLevelInterceptorOnlyParent extends MethodLevelInterceptorOnlyIntf<String> {
    
        public List<String> makePersistent(String entity);
    }

## MethodLevelInterceptorOnlySLSBean

    package org.superbiz.interceptors;
    
    import javax.ejb.Local;
    import javax.ejb.Stateless;
    import javax.interceptor.Interceptors;
    import java.util.ArrayList;
    import java.util.List;
    
    @Local(MethodLevelInterceptorOnlyParent.class)
    @Stateless
    public class MethodLevelInterceptorOnlySLSBean implements MethodLevelInterceptorOnlyParent {
    
        @Interceptors(MethodLevelInterceptorOne.class)
        public List<String> makePersistent(String entity) {
            List<String> list = new ArrayList<String>();
            list.add("makePersistent");
            return list;
        }
    }

## MethodLevelInterceptorTwo

    package org.superbiz.interceptors;
    
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class MethodLevelInterceptorTwo {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## SecondStatelessInterceptedBean

    package org.superbiz.interceptors;
    
    import javax.ejb.Stateless;
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.Interceptors;
    import javax.interceptor.InvocationContext;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
     */
    @Stateless
    @Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
    public class SecondStatelessInterceptedBean implements SecondStatelessInterceptedLocal {
    
        @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
        public List<String> methodWithDefaultInterceptorsExcluded() {
            List<String> list = new ArrayList<String>();
            list.add("methodWithDefaultInterceptorsExcluded");
            return list;
        }
    
        @AroundInvoke
        protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## SecondStatelessInterceptedLocal

    package org.superbiz.interceptors;
    
    import java.util.List;
    
    /**
     * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
     */
    public interface SecondStatelessInterceptedLocal {
        List<String> methodWithDefaultInterceptorsExcluded();
    }

## SuperClassOfClassLevelInterceptor

    package org.superbiz.interceptors;
    
    import javax.annotation.PostConstruct;
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    /**
     * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
     */
    public class SuperClassOfClassLevelInterceptor {
    
        @AroundInvoke
        protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    
        @PostConstruct
        protected void postConstructInterceptor(InvocationContext ic) throws Exception {
            Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## ThirdSLSBean

    package org.superbiz.interceptors;
    
    import javax.ejb.Stateless;
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.ExcludeClassInterceptors;
    import javax.interceptor.ExcludeDefaultInterceptors;
    import javax.interceptor.Interceptors;
    import javax.interceptor.InvocationContext;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
     */
    @Stateless
    @Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
    @ExcludeDefaultInterceptors
    public class ThirdSLSBean implements ThirdSLSBeanLocal {
    
        @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
        public List<String> businessMethod() {
            List<String> list = new ArrayList<String>();
            list.add("businessMethod");
            return list;
        }
    
        @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
        @ExcludeClassInterceptors
        public List<String> anotherBusinessMethod() {
            List<String> list = new ArrayList<String>();
            list.add("anotherBusinessMethod");
            return list;
        }
    
    
        @AroundInvoke
        protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
            return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
        }
    }

## ThirdSLSBeanLocal

    package org.superbiz.interceptors;
    
    import java.util.List;
    
    /**
     * @version $Rev: 607320 $ $Date: 2007-12-28 12:15:06 -0800 (Fri, 28 Dec 2007) $
     */
    public interface ThirdSLSBeanLocal {
        List<String> businessMethod();
    
        List<String> anotherBusinessMethod();
    }

## Utils

    package org.superbiz.interceptors;
    
    import javax.interceptor.InvocationContext;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
     */
    public class Utils {
    
        public static List<String> addClassSimpleName(InvocationContext ic, String classSimpleName) throws Exception {
            List<String> list = new ArrayList<String>();
            list.add(classSimpleName);
            List<String> listOfStrings = (List<String>) ic.proceed();
            if (listOfStrings != null) {
                list.addAll(listOfStrings);
            }
            return list;
        }
    }

## ejb-jar.xml

    <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
             version="3.0">
      <interceptors>
        <interceptor>
          <interceptor-class>org.superbiz.interceptors.DefaultInterceptorOne</interceptor-class>
        </interceptor>
        <interceptor>
          <interceptor-class>org.superbiz.interceptors.DefaultInterceptorTwo</interceptor-class>
        </interceptor>
      </interceptors>
      <assembly-descriptor>
        <interceptor-binding>
          <ejb-name>*</ejb-name>
          <interceptor-class>org.superbiz.interceptors.DefaultInterceptorOne</interceptor-class>
        </interceptor-binding>
        <interceptor-binding>
          <ejb-name>*</ejb-name>
          <interceptor-class>org.superbiz.interceptors.DefaultInterceptorTwo</interceptor-class>
        </interceptor-binding>
        <interceptor-binding>
          <ejb-name>FullyInterceptedBean</ejb-name>
          <exclude-default-interceptors>true</exclude-default-interceptors>
          <method>
            <method-name>methodWithDefaultInterceptorsExcluded</method-name>
          </method>
        </interceptor-binding>
        <interceptor-binding>
          <ejb-name>SecondStatelessInterceptedBean</ejb-name>
          <exclude-default-interceptors>true</exclude-default-interceptors>
        </interceptor-binding>
        <interceptor-binding>
          <ejb-name>MethodLevelInterceptorOnlySLSBean</ejb-name>
          <exclude-default-interceptors>true</exclude-default-interceptors>
        </interceptor-binding>
      </assembly-descriptor>
    </ejb-jar>

## FullyInterceptedTest

    package org.superbiz.interceptors;
    
    import junit.framework.TestCase;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    
    /**
     * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
     */
    public class FullyInterceptedTest extends TestCase {
    
        private InitialContext initCtx;
    
        @Before
        public void setUp() throws Exception {
            Properties properties = new Properties();
            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
            properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
    
            initCtx = new InitialContext(properties);
        }
    
        @Test
        public void testBusinessMethod() throws Exception {
    
            FullyIntercepted fullyIntercepted = (FullyIntercepted) initCtx.lookup("FullyInterceptedBeanLocal");
    
            assert fullyIntercepted != null;
    
            List<String> expected = new ArrayList<String>();
            expected.add("DefaultInterceptorOne");
            expected.add("DefaultInterceptorTwo");
            expected.add("ClassLevelInterceptorSuperClassOne");
            expected.add("ClassLevelInterceptorSuperClassTwo");
            expected.add("ClassLevelInterceptorOne");
            expected.add("ClassLevelInterceptorTwo");
            expected.add("MethodLevelInterceptorOne");
            expected.add("MethodLevelInterceptorTwo");
            expected.add("beanClassBusinessMethodInterceptor");
            expected.add("businessMethod");
    
            List<String> actual = fullyIntercepted.businessMethod();
            assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
        }
    
        @Test
        public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
    
            FullyIntercepted fullyIntercepted = (FullyIntercepted) initCtx.lookup("FullyInterceptedBeanLocal");
    
            assert fullyIntercepted != null;
    
            List<String> expected = new ArrayList<String>();
            expected.add("ClassLevelInterceptorSuperClassOne");
            expected.add("ClassLevelInterceptorSuperClassTwo");
            expected.add("ClassLevelInterceptorOne");
            expected.add("ClassLevelInterceptorTwo");
            expected.add("MethodLevelInterceptorOne");
            expected.add("MethodLevelInterceptorTwo");
            expected.add("beanClassBusinessMethodInterceptor");
            expected.add("methodWithDefaultInterceptorsExcluded");
    
            List<String> actual = fullyIntercepted.methodWithDefaultInterceptorsExcluded();
            assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
        }
    
        @After
        public void tearDown() throws Exception {
            initCtx.close();
        }
    }

## MethodLevelInterceptorOnlyTest

    package org.superbiz.interceptors;
    
    import junit.framework.TestCase;
    import org.junit.Before;
    import org.junit.Test;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    
    /**
     * @version $Rev: 895825 $ $Date: 2010-01-04 15:35:22 -0800 (Mon, 04 Jan 2010) $
     */
    public class MethodLevelInterceptorOnlyTest extends TestCase {
        private InitialContext initCtx;
    
        @Before
        public void setUp() throws Exception {
            Properties properties = new Properties();
            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
            properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
    
            initCtx = new InitialContext(properties);
        }
    
        @Test
        public void testInterceptedGenerifiedBusinessIntfMethod() throws Exception {
            MethodLevelInterceptorOnlyParent bean = (MethodLevelInterceptorOnlyParent) initCtx.lookup("MethodLevelInterceptorOnlySLSBeanLocal");
    
            assert bean != null;
    
            List<String> expected = new ArrayList<String>();
            expected.add("MethodLevelInterceptorOne");
            expected.add("makePersistent");
    
            List<String> actual = bean.makePersistent(null);
            assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
        }
    }

## SecondStatelessInterceptedTest

    package org.superbiz.interceptors;
    
    import junit.framework.TestCase;
    import org.junit.Before;
    import org.junit.Test;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    
    /**
     * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
     */
    public class SecondStatelessInterceptedTest extends TestCase {
    
        private InitialContext initCtx;
    
        @Before
        public void setUp() throws Exception {
            Properties properties = new Properties();
            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
            properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
    
            initCtx = new InitialContext(properties);
        }
    
        @Test
        public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
            SecondStatelessInterceptedLocal bean =
                    (SecondStatelessInterceptedLocal) initCtx.lookup("SecondStatelessInterceptedBeanLocal");
    
            assert bean != null;
    
            List<String> expected = new ArrayList<String>();
            expected.add("ClassLevelInterceptorOne");
            expected.add("ClassLevelInterceptorTwo");
            expected.add("MethodLevelInterceptorOne");
            expected.add("MethodLevelInterceptorTwo");
            expected.add("SecondStatelessInterceptedBean");
            expected.add("methodWithDefaultInterceptorsExcluded");
    
            List<String> actual = bean.methodWithDefaultInterceptorsExcluded();
            assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
        }
    }

## ThirdSLSBeanTest

    package org.superbiz.interceptors;
    
    import junit.framework.TestCase;
    import org.junit.Before;
    import org.junit.Test;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    
    /**
     * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
     */
    public class ThirdSLSBeanTest extends TestCase {
        private InitialContext initCtx;
    
        @Before
        public void setUp() throws Exception {
            Properties properties = new Properties();
            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
            properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
    
            initCtx = new InitialContext(properties);
        }
    
        @Test
        public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
            ThirdSLSBeanLocal bean = (ThirdSLSBeanLocal) initCtx.lookup("ThirdSLSBeanLocal");
    
            assert bean != null;
    
            List<String> expected = new ArrayList<String>();
            expected.add("ClassLevelInterceptorOne");
            expected.add("ClassLevelInterceptorTwo");
            expected.add("MethodLevelInterceptorOne");
            expected.add("MethodLevelInterceptorTwo");
            expected.add("ThirdSLSBean");
            expected.add("businessMethod");
    
            List<String> actual = bean.businessMethod();
            assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
        }
    
        @Test
        public void testMethodWithDefaultAndClassInterceptorsExcluded() throws Exception {
            ThirdSLSBeanLocal bean = (ThirdSLSBeanLocal) initCtx.lookup("ThirdSLSBeanLocal");
    
            assert bean != null;
    
            List<String> expected = new ArrayList<String>();
            expected.add("MethodLevelInterceptorOne");
            expected.add("MethodLevelInterceptorTwo");
            expected.add("ThirdSLSBean");
            expected.add("anotherBusinessMethod");
    
            List<String> actual = bean.anotherBusinessMethod();
            assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
        }
    }

# Running

    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running org.superbiz.interceptors.FullyInterceptedTest
    Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
    http://tomee.apache.org/
    INFO - openejb.home = /Users/dblevins/examples/interceptors
    INFO - openejb.base = /Users/dblevins/examples/interceptors
    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
    INFO - Using 'openejb.deployments.classpath.include=.*interceptors/target/classes.*'
    INFO - Found EjbModule in classpath: /Users/dblevins/examples/interceptors/target/classes
    INFO - Beginning load: /Users/dblevins/examples/interceptors/target/classes
    INFO - Configuring enterprise application: /Users/dblevins/examples/interceptors/classpath.ear
    INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
    INFO - Auto-creating a container for bean FullyInterceptedBean: Container(type=STATELESS, id=Default Stateless Container)
    INFO - Enterprise application "/Users/dblevins/examples/interceptors/classpath.ear" loaded.
    INFO - Assembling app: /Users/dblevins/examples/interceptors/classpath.ear
    INFO - Jndi(name=FullyInterceptedBeanLocal) --> Ejb(deployment-id=FullyInterceptedBean)
    INFO - Jndi(name=global/classpath.ear/interceptors/FullyInterceptedBean!org.superbiz.interceptors.FullyIntercepted) --> Ejb(deployment-id=FullyInterceptedBean)
    INFO - Jndi(name=global/classpath.ear/interceptors/FullyInterceptedBean) --> Ejb(deployment-id=FullyInterceptedBean)
    INFO - Jndi(name=ThirdSLSBeanLocal) --> Ejb(deployment-id=ThirdSLSBean)
    INFO - Jndi(name=global/classpath.ear/interceptors/ThirdSLSBean!org.superbiz.interceptors.ThirdSLSBeanLocal) --> Ejb(deployment-id=ThirdSLSBean)
    INFO - Jndi(name=global/classpath.ear/interceptors/ThirdSLSBean) --> Ejb(deployment-id=ThirdSLSBean)
    INFO - Jndi(name=SecondStatelessInterceptedBeanLocal) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
    INFO - Jndi(name=global/classpath.ear/interceptors/SecondStatelessInterceptedBean!org.superbiz.interceptors.SecondStatelessInterceptedLocal) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
    INFO - Jndi(name=global/classpath.ear/interceptors/SecondStatelessInterceptedBean) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
    INFO - Jndi(name=MethodLevelInterceptorOnlySLSBeanLocal) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
    INFO - Jndi(name=global/classpath.ear/interceptors/MethodLevelInterceptorOnlySLSBean!org.superbiz.interceptors.MethodLevelInterceptorOnlyParent) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
    INFO - Jndi(name=global/classpath.ear/interceptors/MethodLevelInterceptorOnlySLSBean) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
    INFO - Created Ejb(deployment-id=ThirdSLSBean, ejb-name=ThirdSLSBean, container=Default Stateless Container)
    INFO - Created Ejb(deployment-id=SecondStatelessInterceptedBean, ejb-name=SecondStatelessInterceptedBean, container=Default Stateless Container)
    INFO - Created Ejb(deployment-id=FullyInterceptedBean, ejb-name=FullyInterceptedBean, container=Default Stateless Container)
    INFO - Created Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean, ejb-name=MethodLevelInterceptorOnlySLSBean, container=Default Stateless Container)
    INFO - Started Ejb(deployment-id=ThirdSLSBean, ejb-name=ThirdSLSBean, container=Default Stateless Container)
    INFO - Started Ejb(deployment-id=SecondStatelessInterceptedBean, ejb-name=SecondStatelessInterceptedBean, container=Default Stateless Container)
    INFO - Started Ejb(deployment-id=FullyInterceptedBean, ejb-name=FullyInterceptedBean, container=Default Stateless Container)
    INFO - Started Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean, ejb-name=MethodLevelInterceptorOnlySLSBean, container=Default Stateless Container)
    INFO - Deployed Application(path=/Users/dblevins/examples/interceptors/classpath.ear)
    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.564 sec
    Running org.superbiz.interceptors.MethodLevelInterceptorOnlyTest
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
    Running org.superbiz.interceptors.SecondStatelessInterceptedTest
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
    Running org.superbiz.interceptors.ThirdSLSBeanTest
    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
    
    Results :
    
    Tests run: 6, Failures: 0, Errors: 0, Skipped: 0
    
