aslak

Arquillian - CDI - Intercepted

Apr 21st, 2010
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.12 KB | None | 0 0
  1. package com.acme.cdi.interceptor;
  2.  
  3. import javax.inject.Inject;
  4.  
  5. import org.jboss.arquillian.api.Deployment;
  6. import org.jboss.arquillian.junit.Arquillian;
  7. import org.jboss.shrinkwrap.api.ArchivePaths;
  8. import org.jboss.shrinkwrap.api.Archives;
  9. import org.jboss.shrinkwrap.api.spec.JavaArchive;
  10. import org.junit.Test;
  11. import org.junit.runner.RunWith;
  12.  
  13. @RunWith(Arquillian.class)
  14. public class InterceptorTestCase
  15. {
  16.    @Deployment
  17.    public static JavaArchive createDeployment() {
  18.       return Archives.create("test.jar", JavaArchive.class)
  19.                   .addPackage(InterceptorTestCase.class.getPackage())
  20.                   .addManifestResource(
  21.                         "com/acme/cdi/interceptor/beans.xml",
  22.                         ArchivePaths.create("beans.xml"));
  23.    }
  24.    
  25.    @Inject MyBean bean;
  26.    
  27.    @Test
  28.    public void shouldBeIntercepted() throws Exception
  29.    {
  30.       bean.test();
  31.    }
  32. }
  33.  
  34. <beans>
  35.    <interceptors>
  36.       <class>com.acme.cdi.interceptor.InterceptInterceptor</class>
  37.    </interceptors>
  38. </beans>
  39.  
  40.  
  41. package com.acme.cdi.interceptor;
  42.  
  43. public class MyBean
  44. {
  45.    @Intercept
  46.    public void test()
  47.    {
  48.       System.out.println("inside test");
  49.    }
  50. }
  51.  
  52.  
  53. package com.acme.cdi.interceptor;
  54.  
  55. import javax.interceptor.AroundInvoke;
  56. import javax.interceptor.Interceptor;
  57. import javax.interceptor.InvocationContext;
  58.  
  59. @Intercept
  60. @Interceptor
  61. public class InterceptInterceptor
  62. {
  63.    @AroundInvoke
  64.    public Object callback(InvocationContext context) throws Exception
  65.    {
  66.       System.out.println("intercepted");
  67.      
  68.       return context.proceed();
  69.    }
  70. }
  71.  
  72. package com.acme.cdi.interceptor;
  73.  
  74. import static java.lang.annotation.ElementType.METHOD;
  75. import static java.lang.annotation.ElementType.TYPE;
  76. import static java.lang.annotation.RetentionPolicy.RUNTIME;
  77.  
  78. import java.lang.annotation.Documented;
  79. import java.lang.annotation.Retention;
  80. import java.lang.annotation.Target;
  81.  
  82. import javax.interceptor.InterceptorBinding;
  83.  
  84. @InterceptorBinding
  85. @Target( { TYPE, METHOD })
  86. @Documented
  87. @Retention(RUNTIME)
  88. public @interface Intercept
  89. {
  90. }
  91.  
  92.  
  93. output:
  94. intercepted
  95. inside test
Advertisement
Add Comment
Please, Sign In to add comment