public void say() { if (null != list && 0 != list.size()) { System.out.println("list..."); for (BeanInterface bean : list) { System.out.println(bean.getClass().getName()); } } else { System.out.println("List<BeanInterface> list is null !!!!!!!!!!"); } System.out.println(); if (null != map && 0 != map.size()) { System.out.println("map..."); for (Map.Entry<String, BeanInterface> entry : map.entrySet()) { System.out.println(entry.getKey() + " " + entry.getValue().getClass().getName()); } } else { System.out.println("Map<String, BeanInterface> map is null !!!!!!!!!!"); } System.out.println(); if (null != beanInterface) { System.out.println(beanInterface.getClass().getName()); } else { System.out.println("beanInterface is null..."); } }
public void test() throws Exception { System.setProperty( javax.naming.Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName()); final Assembler assembler = new Assembler(); final ConfigurationFactory config = new ConfigurationFactory(); assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class)); assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class)); assembler.createSecurityService(config.configureService(SecurityServiceInfo.class)); final EjbJar ejbJar = new EjbJar(); final AssemblyDescriptor assemblyDescriptor = ejbJar.getAssemblyDescriptor(); final Interceptor interceptor = new Interceptor(SimpleInterceptor.class); ejbJar.addInterceptor(interceptor); // Test SessionSynchronization interface final StatefulBean subBeanA = new StatefulBean(SubBeanA.class); ejbJar.addEnterpriseBean(subBeanA); assemblyDescriptor.addInterceptorBinding(new InterceptorBinding(subBeanA, interceptor)); // Test configure session synchronization callback methods in deployment plan final StatefulBean subBeanB = new StatefulBean(SubBeanB.class); subBeanB.setAfterBeginMethod(new NamedMethod(SubBeanB.class.getDeclaredMethod("afterBegin"))); subBeanB.setBeforeCompletionMethod( new NamedMethod(SubBeanB.class.getDeclaredMethod("beforeCompletion"))); subBeanB.setAfterCompletionMethod( new NamedMethod(SubBeanB.class.getDeclaredMethod("afterCompletion", boolean.class))); ejbJar.addEnterpriseBean(subBeanB); assemblyDescriptor.addInterceptorBinding(new InterceptorBinding(subBeanB, interceptor)); // Test session synchronization methods via annotations final StatefulBean subBeanC = new StatefulBean(SubBeanC.class); ejbJar.addEnterpriseBean(subBeanC); assemblyDescriptor.addInterceptorBinding(new InterceptorBinding(subBeanC, interceptor)); // Test override the annotations by deployment plan final StatefulBean subBeanD = new StatefulBean(SubBeanD.class); subBeanD.setAfterBeginMethod( new NamedMethod(SubBeanD.class.getDeclaredMethod("afterBeginNew"))); subBeanD.setBeforeCompletionMethod( new NamedMethod(SubBeanD.class.getDeclaredMethod("beforeCompletionNew"))); subBeanD.setAfterCompletionMethod( new NamedMethod(SubBeanD.class.getDeclaredMethod("afterCompletionNew", boolean.class))); ejbJar.addEnterpriseBean(subBeanD); assemblyDescriptor.addInterceptorBinding(new InterceptorBinding(subBeanD, interceptor)); // Test only one session synchronization method @AfterBegin final StatefulBean subBeanE = new StatefulBean(SubBeanE.class); ejbJar.addEnterpriseBean(subBeanE); assemblyDescriptor.addInterceptorBinding(new InterceptorBinding(subBeanE, interceptor)); // Test only one session synchronization method @AfterCompletion final StatefulBean subBeanF = new StatefulBean(SubBeanF.class); ejbJar.addEnterpriseBean(subBeanF); assemblyDescriptor.addInterceptorBinding(new InterceptorBinding(subBeanF, interceptor)); // Test only one session synchronization method @BeforeCompletion final StatefulBean subBeanG = new StatefulBean(SubBeanG.class); ejbJar.addEnterpriseBean(subBeanG); assemblyDescriptor.addInterceptorBinding(new InterceptorBinding(subBeanG, interceptor)); // Test SessionSynchronization interface but methods are in the parent class // Interceptor is declared on the bean method final StatefulBean subBeanH = new StatefulBean(SubBeanH.class); ejbJar.addEnterpriseBean(subBeanH); // Test SessionSynchronization interface but methods are in the parent class // using @LocalBean final StatefulBean subBeanI = new StatefulBean(SubBeanI.class); ejbJar.addEnterpriseBean(subBeanI); final EjbJarInfo ejbJarInfo = config.configureApplication(ejbJar); assembler.createApplication(ejbJarInfo); final InitialContext context = new InitialContext(); final List<Call> expectedResult = Arrays.asList( Call.INTERCEPTOR_AFTER_BEGIN, Call.BEAN_AFTER_BEGIN, Call.INTERCEPTOR_AROUND_INVOKE_BEGIN, Call.BEAN_AROUND_INVOKE_BEGIN, Call.BEAN_METHOD, Call.BEAN_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_BEFORE_COMPLETION, Call.BEAN_BEFORE_COMPLETION, Call.INTERCEPTOR_AFTER_COMPLETION, Call.BEAN_AFTER_COMPLETION); { final BeanInterface beanA = (BeanInterface) context.lookup("SubBeanALocal"); beanA.simpleMethod(); assertEquals(expectedResult, result); result.clear(); } { final BeanInterface beanB = (BeanInterface) context.lookup("SubBeanBLocal"); beanB.simpleMethod(); assertEquals(expectedResult, result); result.clear(); } { final BeanInterface beanC = (BeanInterface) context.lookup("SubBeanCLocal"); beanC.simpleMethod(); assertEquals(expectedResult, result); result.clear(); } { final BeanInterface beanD = (BeanInterface) context.lookup("SubBeanDLocal"); beanD.simpleMethod(); assertEquals(expectedResult, result); result.clear(); } { final BeanInterface beanE = (BeanInterface) context.lookup("SubBeanELocal"); beanE.simpleMethod(); assertEquals( Arrays.asList( Call.INTERCEPTOR_AFTER_BEGIN, Call.BEAN_AFTER_BEGIN, Call.INTERCEPTOR_AROUND_INVOKE_BEGIN, Call.BEAN_AROUND_INVOKE_BEGIN, Call.BEAN_METHOD, Call.BEAN_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_BEFORE_COMPLETION, Call.INTERCEPTOR_AFTER_COMPLETION), result); result.clear(); } { final BeanInterface beanF = (BeanInterface) context.lookup("SubBeanFLocal"); beanF.simpleMethod(); assertEquals( Arrays.asList( Call.INTERCEPTOR_AFTER_BEGIN, Call.INTERCEPTOR_AROUND_INVOKE_BEGIN, Call.BEAN_AROUND_INVOKE_BEGIN, Call.BEAN_METHOD, Call.BEAN_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_BEFORE_COMPLETION, Call.INTERCEPTOR_AFTER_COMPLETION, Call.BEAN_AFTER_COMPLETION), result); result.clear(); } { final BeanInterface beanG = (BeanInterface) context.lookup("SubBeanGLocal"); beanG.simpleMethod(); assertEquals( Arrays.asList( Call.INTERCEPTOR_AFTER_BEGIN, Call.INTERCEPTOR_AROUND_INVOKE_BEGIN, Call.BEAN_AROUND_INVOKE_BEGIN, Call.BEAN_METHOD, Call.BEAN_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_BEFORE_COMPLETION, Call.BEAN_BEFORE_COMPLETION, Call.INTERCEPTOR_AFTER_COMPLETION), result); result.clear(); } final List<Call> synchAndArroundInvokeResult = Arrays.asList( Call.BEAN_AFTER_BEGIN, Call.INTERCEPTOR_AROUND_INVOKE_BEGIN, Call.BEAN_AROUND_INVOKE_BEGIN, Call.BEAN_METHOD, Call.BEAN_AROUND_INVOKE_AFTER, Call.INTERCEPTOR_AROUND_INVOKE_AFTER, Call.BEAN_BEFORE_COMPLETION, Call.BEAN_AFTER_COMPLETION); { final BeanInterface beanH = (BeanInterface) context.lookup("SubBeanHLocal"); beanH.simpleMethod(); assertEquals(synchAndArroundInvokeResult, result); result.clear(); } { final BeanInterface beanI = (BeanInterface) context.lookup("SubBeanILocalBean"); beanI.simpleMethod(); assertEquals(synchAndArroundInvokeResult, result); result.clear(); } }