From 644a7d23a450786222573e640c8aff6f1a77a7ab Mon Sep 17 00:00:00 2001 From: chernykhalexander Date: Sun, 24 Jul 2016 00:43:52 +0300 Subject: [PATCH 1/4] added module cdiexample --- cdiexample/pom.xml | 52 +++++++++++++++++++ .../com/baeldung/interceptor/Audited.java | 12 +++++ .../interceptor/AuditedInterceptor.java | 20 +++++++ .../com/baeldung/service/SuperService.java | 11 ++++ .../spring/aspect/SpringTestAspect.java | 19 +++++++ .../spring/configuration/AppConfig.java | 21 ++++++++ .../spring/service/SpringSuperService.java | 8 +++ .../src/main/resources/META-INF/beans.xml | 8 +++ .../baeldung/test/SpringTestInterceptor.java | 25 +++++++++ .../com/baeldung/test/TestInterceptor.java | 19 +++++++ 10 files changed, 195 insertions(+) create mode 100644 cdiexample/pom.xml create mode 100644 cdiexample/src/main/java/com/baeldung/interceptor/Audited.java create mode 100644 cdiexample/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java create mode 100644 cdiexample/src/main/java/com/baeldung/service/SuperService.java create mode 100644 cdiexample/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java create mode 100644 cdiexample/src/main/java/com/baeldung/spring/configuration/AppConfig.java create mode 100644 cdiexample/src/main/java/com/baeldung/spring/service/SpringSuperService.java create mode 100644 cdiexample/src/main/resources/META-INF/beans.xml create mode 100644 cdiexample/src/test/java/com/baeldung/test/SpringTestInterceptor.java create mode 100644 cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java diff --git a/cdiexample/pom.xml b/cdiexample/pom.xml new file mode 100644 index 0000000000..042d22a6e9 --- /dev/null +++ b/cdiexample/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + com.baeldung + cdiexample + 1.0-SNAPSHOT + + 4.3.1.RELEASE + + + + + org.jboss.weld.se + weld-se-core + 2.3.5.Final + + + + junit + junit + 4.12 + + + + org.springframework + spring-core + ${spring.version} + + + + org.springframework + spring-context + ${spring.version} + + + + org.springframework + spring-test + ${spring.version} + test + + + + org.aspectj + aspectjweaver + 1.8.9 + + + \ No newline at end of file diff --git a/cdiexample/src/main/java/com/baeldung/interceptor/Audited.java b/cdiexample/src/main/java/com/baeldung/interceptor/Audited.java new file mode 100644 index 0000000000..4065450b09 --- /dev/null +++ b/cdiexample/src/main/java/com/baeldung/interceptor/Audited.java @@ -0,0 +1,12 @@ +package com.baeldung.interceptor; + +import javax.interceptor.InterceptorBinding; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@InterceptorBinding +@Target( {ElementType.METHOD, ElementType.TYPE } ) +@Retention(RetentionPolicy.RUNTIME ) +public @interface Audited {} diff --git a/cdiexample/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java b/cdiexample/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java new file mode 100644 index 0000000000..6501c60ad0 --- /dev/null +++ b/cdiexample/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java @@ -0,0 +1,20 @@ +package com.baeldung.interceptor; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.Interceptor; +import javax.interceptor.InvocationContext; +import java.lang.reflect.Method; + +@Audited @Interceptor +public class AuditedInterceptor { + @AroundInvoke + public Object auditMethod(InvocationContext ctx) throws Exception { + Object[] parameters = ctx.getParameters(); + Method method= ctx.getMethod(); + String param = (String) parameters[0]; + System.out.println("Method "+method.getName()+" invoked with parameter "+param); + Object result = ctx.proceed(); + System.out.println("Method "+method.getName()+" exit"); + return result; + } +} diff --git a/cdiexample/src/main/java/com/baeldung/service/SuperService.java b/cdiexample/src/main/java/com/baeldung/service/SuperService.java new file mode 100644 index 0000000000..5309c80b10 --- /dev/null +++ b/cdiexample/src/main/java/com/baeldung/service/SuperService.java @@ -0,0 +1,11 @@ +package com.baeldung.service; + +import com.baeldung.interceptor.Audited; + +public class SuperService { + @Audited + public String deliverService(String uid) { + System.out.println("Service delivered for uid:" + uid); + return uid; + } +} diff --git a/cdiexample/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java b/cdiexample/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java new file mode 100644 index 0000000000..ab3036285e --- /dev/null +++ b/cdiexample/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java @@ -0,0 +1,19 @@ +package com.baeldung.spring.aspect; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; + +@Aspect +public class SpringTestAspect { + @Around("execution(* com.baeldung.spring.service.SpringSuperService.*(..))") + public Object advice(ProceedingJoinPoint jp) throws Throwable { + String methodName = jp.getSignature().getName(); + System.out.println("Call to "+methodName); + Object obj = jp.proceed(); + System.out.println("Method called successfully: "+methodName); + return obj; + } +} diff --git a/cdiexample/src/main/java/com/baeldung/spring/configuration/AppConfig.java b/cdiexample/src/main/java/com/baeldung/spring/configuration/AppConfig.java new file mode 100644 index 0000000000..e8dbf264b5 --- /dev/null +++ b/cdiexample/src/main/java/com/baeldung/spring/configuration/AppConfig.java @@ -0,0 +1,21 @@ +package com.baeldung.spring.configuration; + +import com.baeldung.spring.aspect.SpringTestAspect; +import com.baeldung.spring.service.SpringSuperService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +@Configuration +@EnableAspectJAutoProxy +public class AppConfig { + @Bean + public SpringSuperService springSuperService() { + return new SpringSuperService(); + } + + @Bean + public SpringTestAspect springTestAspect(){ + return new SpringTestAspect(); + } +} diff --git a/cdiexample/src/main/java/com/baeldung/spring/service/SpringSuperService.java b/cdiexample/src/main/java/com/baeldung/spring/service/SpringSuperService.java new file mode 100644 index 0000000000..5b96a24390 --- /dev/null +++ b/cdiexample/src/main/java/com/baeldung/spring/service/SpringSuperService.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.service; + +public class SpringSuperService { + public String getInfoFromService(String code){ + System.out.println("Doing calculations"); + return code; + } +} diff --git a/cdiexample/src/main/resources/META-INF/beans.xml b/cdiexample/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..d41b35e7d9 --- /dev/null +++ b/cdiexample/src/main/resources/META-INF/beans.xml @@ -0,0 +1,8 @@ + + + com.baeldung.interceptor.AuditedInterceptor + + \ No newline at end of file diff --git a/cdiexample/src/test/java/com/baeldung/test/SpringTestInterceptor.java b/cdiexample/src/test/java/com/baeldung/test/SpringTestInterceptor.java new file mode 100644 index 0000000000..6085187ecd --- /dev/null +++ b/cdiexample/src/test/java/com/baeldung/test/SpringTestInterceptor.java @@ -0,0 +1,25 @@ +package com.baeldung.test; + +import com.baeldung.spring.configuration.AppConfig; +import com.baeldung.spring.service.SpringSuperService; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.inject.Inject; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {AppConfig.class}) +public class SpringTestInterceptor { + @Inject + SpringSuperService springSuperService; + + @Test + public void givenService_whenServiceAndAspectExecuted_thenOk(){ + String code = "123456"; + String result = springSuperService.getInfoFromService(code); + Assert.assertEquals(code,result); + } +} diff --git a/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java b/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java new file mode 100644 index 0000000000..1ed0d99748 --- /dev/null +++ b/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java @@ -0,0 +1,19 @@ +package com.baeldung.test; + +import com.baeldung.service.SuperService; +import org.jboss.weld.environment.se.Weld; +import org.jboss.weld.environment.se.WeldContainer; +import org.junit.Assert; +import org.junit.Test; + +public class TestInterceptor { + @Test + public void givenTheService_whenMethodAndInterceptorExecuted_thenOK() { + Weld weld = new Weld(); + WeldContainer container = weld.initialize(); + SuperService superService = container.instance().select(SuperService.class).get(); + String code = "123456"; + superService.deliverService(code); + Assert.assertEquals("123456",code); + } +} From 6db9efda2131a298e89bcc81954fb53475556091 Mon Sep 17 00:00:00 2001 From: chernykhalexander Date: Sun, 24 Jul 2016 00:59:23 +0300 Subject: [PATCH 2/4] package name refactoring --- .../main/java/com/baeldung/{ => cdi}/interceptor/Audited.java | 2 +- .../baeldung/{ => cdi}/interceptor/AuditedInterceptor.java | 2 +- .../java/com/baeldung/{ => cdi}/service/SuperService.java | 4 ++-- cdiexample/src/main/resources/META-INF/beans.xml | 2 +- .../src/test/java/com/baeldung/test/TestInterceptor.java | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) rename cdiexample/src/main/java/com/baeldung/{ => cdi}/interceptor/Audited.java (90%) rename cdiexample/src/main/java/com/baeldung/{ => cdi}/interceptor/AuditedInterceptor.java (94%) rename cdiexample/src/main/java/com/baeldung/{ => cdi}/service/SuperService.java (69%) diff --git a/cdiexample/src/main/java/com/baeldung/interceptor/Audited.java b/cdiexample/src/main/java/com/baeldung/cdi/interceptor/Audited.java similarity index 90% rename from cdiexample/src/main/java/com/baeldung/interceptor/Audited.java rename to cdiexample/src/main/java/com/baeldung/cdi/interceptor/Audited.java index 4065450b09..459a1c35da 100644 --- a/cdiexample/src/main/java/com/baeldung/interceptor/Audited.java +++ b/cdiexample/src/main/java/com/baeldung/cdi/interceptor/Audited.java @@ -1,4 +1,4 @@ -package com.baeldung.interceptor; +package com.baeldung.cdi.interceptor; import javax.interceptor.InterceptorBinding; import java.lang.annotation.ElementType; diff --git a/cdiexample/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java b/cdiexample/src/main/java/com/baeldung/cdi/interceptor/AuditedInterceptor.java similarity index 94% rename from cdiexample/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java rename to cdiexample/src/main/java/com/baeldung/cdi/interceptor/AuditedInterceptor.java index 6501c60ad0..53a3af7091 100644 --- a/cdiexample/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java +++ b/cdiexample/src/main/java/com/baeldung/cdi/interceptor/AuditedInterceptor.java @@ -1,4 +1,4 @@ -package com.baeldung.interceptor; +package com.baeldung.cdi.interceptor; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; diff --git a/cdiexample/src/main/java/com/baeldung/service/SuperService.java b/cdiexample/src/main/java/com/baeldung/cdi/service/SuperService.java similarity index 69% rename from cdiexample/src/main/java/com/baeldung/service/SuperService.java rename to cdiexample/src/main/java/com/baeldung/cdi/service/SuperService.java index 5309c80b10..cbf22fd803 100644 --- a/cdiexample/src/main/java/com/baeldung/service/SuperService.java +++ b/cdiexample/src/main/java/com/baeldung/cdi/service/SuperService.java @@ -1,6 +1,6 @@ -package com.baeldung.service; +package com.baeldung.cdi.service; -import com.baeldung.interceptor.Audited; +import com.baeldung.cdi.interceptor.Audited; public class SuperService { @Audited diff --git a/cdiexample/src/main/resources/META-INF/beans.xml b/cdiexample/src/main/resources/META-INF/beans.xml index d41b35e7d9..0a68bbf29d 100644 --- a/cdiexample/src/main/resources/META-INF/beans.xml +++ b/cdiexample/src/main/resources/META-INF/beans.xml @@ -3,6 +3,6 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_2.xsd"> - com.baeldung.interceptor.AuditedInterceptor + com.baeldung.cdi.interceptor.AuditedInterceptor \ No newline at end of file diff --git a/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java b/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java index 1ed0d99748..d32890869c 100644 --- a/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java +++ b/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java @@ -1,6 +1,6 @@ package com.baeldung.test; -import com.baeldung.service.SuperService; +import com.baeldung.cdi.service.SuperService; import org.jboss.weld.environment.se.Weld; import org.jboss.weld.environment.se.WeldContainer; import org.junit.Assert; From ffa78dc1758525d6856ae325c3b9b031be0f2a10 Mon Sep 17 00:00:00 2001 From: chernykhalexander Date: Sat, 6 Aug 2016 22:59:54 +0300 Subject: [PATCH 3/4] remove old module --- cdiexample/pom.xml | 52 ------------------- .../com/baeldung/cdi/interceptor/Audited.java | 12 ----- .../cdi/interceptor/AuditedInterceptor.java | 20 ------- .../baeldung/cdi/service/SuperService.java | 11 ---- .../spring/aspect/SpringTestAspect.java | 19 ------- .../spring/configuration/AppConfig.java | 21 -------- .../spring/service/SpringSuperService.java | 8 --- .../src/main/resources/META-INF/beans.xml | 8 --- .../baeldung/test/SpringTestInterceptor.java | 25 --------- .../com/baeldung/test/TestInterceptor.java | 19 ------- 10 files changed, 195 deletions(-) delete mode 100644 cdiexample/pom.xml delete mode 100644 cdiexample/src/main/java/com/baeldung/cdi/interceptor/Audited.java delete mode 100644 cdiexample/src/main/java/com/baeldung/cdi/interceptor/AuditedInterceptor.java delete mode 100644 cdiexample/src/main/java/com/baeldung/cdi/service/SuperService.java delete mode 100644 cdiexample/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java delete mode 100644 cdiexample/src/main/java/com/baeldung/spring/configuration/AppConfig.java delete mode 100644 cdiexample/src/main/java/com/baeldung/spring/service/SpringSuperService.java delete mode 100644 cdiexample/src/main/resources/META-INF/beans.xml delete mode 100644 cdiexample/src/test/java/com/baeldung/test/SpringTestInterceptor.java delete mode 100644 cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java diff --git a/cdiexample/pom.xml b/cdiexample/pom.xml deleted file mode 100644 index 042d22a6e9..0000000000 --- a/cdiexample/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - 4.0.0 - - com.baeldung - cdiexample - 1.0-SNAPSHOT - - 4.3.1.RELEASE - - - - - org.jboss.weld.se - weld-se-core - 2.3.5.Final - - - - junit - junit - 4.12 - - - - org.springframework - spring-core - ${spring.version} - - - - org.springframework - spring-context - ${spring.version} - - - - org.springframework - spring-test - ${spring.version} - test - - - - org.aspectj - aspectjweaver - 1.8.9 - - - \ No newline at end of file diff --git a/cdiexample/src/main/java/com/baeldung/cdi/interceptor/Audited.java b/cdiexample/src/main/java/com/baeldung/cdi/interceptor/Audited.java deleted file mode 100644 index 459a1c35da..0000000000 --- a/cdiexample/src/main/java/com/baeldung/cdi/interceptor/Audited.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.cdi.interceptor; - -import javax.interceptor.InterceptorBinding; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@InterceptorBinding -@Target( {ElementType.METHOD, ElementType.TYPE } ) -@Retention(RetentionPolicy.RUNTIME ) -public @interface Audited {} diff --git a/cdiexample/src/main/java/com/baeldung/cdi/interceptor/AuditedInterceptor.java b/cdiexample/src/main/java/com/baeldung/cdi/interceptor/AuditedInterceptor.java deleted file mode 100644 index 53a3af7091..0000000000 --- a/cdiexample/src/main/java/com/baeldung/cdi/interceptor/AuditedInterceptor.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.cdi.interceptor; - -import javax.interceptor.AroundInvoke; -import javax.interceptor.Interceptor; -import javax.interceptor.InvocationContext; -import java.lang.reflect.Method; - -@Audited @Interceptor -public class AuditedInterceptor { - @AroundInvoke - public Object auditMethod(InvocationContext ctx) throws Exception { - Object[] parameters = ctx.getParameters(); - Method method= ctx.getMethod(); - String param = (String) parameters[0]; - System.out.println("Method "+method.getName()+" invoked with parameter "+param); - Object result = ctx.proceed(); - System.out.println("Method "+method.getName()+" exit"); - return result; - } -} diff --git a/cdiexample/src/main/java/com/baeldung/cdi/service/SuperService.java b/cdiexample/src/main/java/com/baeldung/cdi/service/SuperService.java deleted file mode 100644 index cbf22fd803..0000000000 --- a/cdiexample/src/main/java/com/baeldung/cdi/service/SuperService.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung.cdi.service; - -import com.baeldung.cdi.interceptor.Audited; - -public class SuperService { - @Audited - public String deliverService(String uid) { - System.out.println("Service delivered for uid:" + uid); - return uid; - } -} diff --git a/cdiexample/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java b/cdiexample/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java deleted file mode 100644 index ab3036285e..0000000000 --- a/cdiexample/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.spring.aspect; - -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; - -@Aspect -public class SpringTestAspect { - @Around("execution(* com.baeldung.spring.service.SpringSuperService.*(..))") - public Object advice(ProceedingJoinPoint jp) throws Throwable { - String methodName = jp.getSignature().getName(); - System.out.println("Call to "+methodName); - Object obj = jp.proceed(); - System.out.println("Method called successfully: "+methodName); - return obj; - } -} diff --git a/cdiexample/src/main/java/com/baeldung/spring/configuration/AppConfig.java b/cdiexample/src/main/java/com/baeldung/spring/configuration/AppConfig.java deleted file mode 100644 index e8dbf264b5..0000000000 --- a/cdiexample/src/main/java/com/baeldung/spring/configuration/AppConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.spring.configuration; - -import com.baeldung.spring.aspect.SpringTestAspect; -import com.baeldung.spring.service.SpringSuperService; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.EnableAspectJAutoProxy; - -@Configuration -@EnableAspectJAutoProxy -public class AppConfig { - @Bean - public SpringSuperService springSuperService() { - return new SpringSuperService(); - } - - @Bean - public SpringTestAspect springTestAspect(){ - return new SpringTestAspect(); - } -} diff --git a/cdiexample/src/main/java/com/baeldung/spring/service/SpringSuperService.java b/cdiexample/src/main/java/com/baeldung/spring/service/SpringSuperService.java deleted file mode 100644 index 5b96a24390..0000000000 --- a/cdiexample/src/main/java/com/baeldung/spring/service/SpringSuperService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.spring.service; - -public class SpringSuperService { - public String getInfoFromService(String code){ - System.out.println("Doing calculations"); - return code; - } -} diff --git a/cdiexample/src/main/resources/META-INF/beans.xml b/cdiexample/src/main/resources/META-INF/beans.xml deleted file mode 100644 index 0a68bbf29d..0000000000 --- a/cdiexample/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - com.baeldung.cdi.interceptor.AuditedInterceptor - - \ No newline at end of file diff --git a/cdiexample/src/test/java/com/baeldung/test/SpringTestInterceptor.java b/cdiexample/src/test/java/com/baeldung/test/SpringTestInterceptor.java deleted file mode 100644 index 6085187ecd..0000000000 --- a/cdiexample/src/test/java/com/baeldung/test/SpringTestInterceptor.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.test; - -import com.baeldung.spring.configuration.AppConfig; -import com.baeldung.spring.service.SpringSuperService; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; - -import javax.inject.Inject; - -@RunWith(SpringRunner.class) -@ContextConfiguration(classes = {AppConfig.class}) -public class SpringTestInterceptor { - @Inject - SpringSuperService springSuperService; - - @Test - public void givenService_whenServiceAndAspectExecuted_thenOk(){ - String code = "123456"; - String result = springSuperService.getInfoFromService(code); - Assert.assertEquals(code,result); - } -} diff --git a/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java b/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java deleted file mode 100644 index d32890869c..0000000000 --- a/cdiexample/src/test/java/com/baeldung/test/TestInterceptor.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.test; - -import com.baeldung.cdi.service.SuperService; -import org.jboss.weld.environment.se.Weld; -import org.jboss.weld.environment.se.WeldContainer; -import org.junit.Assert; -import org.junit.Test; - -public class TestInterceptor { - @Test - public void givenTheService_whenMethodAndInterceptorExecuted_thenOK() { - Weld weld = new Weld(); - WeldContainer container = weld.initialize(); - SuperService superService = container.instance().select(SuperService.class).get(); - String code = "123456"; - superService.deliverService(code); - Assert.assertEquals("123456",code); - } -} From bd3580585b20eb7b2829db01b8d8520d09a8d10d Mon Sep 17 00:00:00 2001 From: chernykhalexander Date: Sat, 6 Aug 2016 23:03:58 +0300 Subject: [PATCH 4/4] added cdi vs spring aspectj module --- cdi/pom.xml | 52 +++++++++++++++++++ .../com/baeldung/interceptor/Audited.java | 12 +++++ .../interceptor/AuditedInterceptor.java | 19 +++++++ .../com/baeldung/service/SuperService.java | 10 ++++ .../spring/aspect/SpringTestAspect.java | 26 ++++++++++ .../spring/configuration/AppConfig.java | 29 +++++++++++ .../spring/service/SpringSuperService.java | 7 +++ cdi/src/main/resources/META-INF/beans.xml | 8 +++ .../com/baeldung/test/TestInterceptor.java | 42 +++++++++++++++ .../baeldung/test/TestSpringInterceptor.java | 38 ++++++++++++++ 10 files changed, 243 insertions(+) create mode 100644 cdi/pom.xml create mode 100644 cdi/src/main/java/com/baeldung/interceptor/Audited.java create mode 100644 cdi/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java create mode 100644 cdi/src/main/java/com/baeldung/service/SuperService.java create mode 100644 cdi/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java create mode 100644 cdi/src/main/java/com/baeldung/spring/configuration/AppConfig.java create mode 100644 cdi/src/main/java/com/baeldung/spring/service/SpringSuperService.java create mode 100644 cdi/src/main/resources/META-INF/beans.xml create mode 100644 cdi/src/test/java/com/baeldung/test/TestInterceptor.java create mode 100644 cdi/src/test/java/com/baeldung/test/TestSpringInterceptor.java diff --git a/cdi/pom.xml b/cdi/pom.xml new file mode 100644 index 0000000000..2a9d32188b --- /dev/null +++ b/cdi/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + com.baeldung + cdi + 1.0-SNAPSHOT + + 4.3.1.RELEASE + + + + + junit + junit + 4.12 + + + + org.springframework + spring-core + ${spring.version} + + + + org.springframework + spring-context + ${spring.version} + + + + org.springframework + spring-test + ${spring.version} + test + + + + org.aspectj + aspectjweaver + 1.8.9 + + + + org.jboss.weld.se + weld-se-core + 2.3.5.Final + + + \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/interceptor/Audited.java b/cdi/src/main/java/com/baeldung/interceptor/Audited.java new file mode 100644 index 0000000000..4065450b09 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/interceptor/Audited.java @@ -0,0 +1,12 @@ +package com.baeldung.interceptor; + +import javax.interceptor.InterceptorBinding; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@InterceptorBinding +@Target( {ElementType.METHOD, ElementType.TYPE } ) +@Retention(RetentionPolicy.RUNTIME ) +public @interface Audited {} diff --git a/cdi/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java b/cdi/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java new file mode 100644 index 0000000000..46ab9b33c8 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/interceptor/AuditedInterceptor.java @@ -0,0 +1,19 @@ +package com.baeldung.interceptor; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.Interceptor; +import javax.interceptor.InvocationContext; +import java.lang.reflect.Method; + +@Audited @Interceptor +public class AuditedInterceptor { + public static boolean calledBefore = false; + public static boolean calledAfter = false; + @AroundInvoke + public Object auditMethod(InvocationContext ctx) throws Exception { + calledBefore = true; + Object result = ctx.proceed(); + calledAfter = true; + return result; + } +} diff --git a/cdi/src/main/java/com/baeldung/service/SuperService.java b/cdi/src/main/java/com/baeldung/service/SuperService.java new file mode 100644 index 0000000000..e1e57a4e0d --- /dev/null +++ b/cdi/src/main/java/com/baeldung/service/SuperService.java @@ -0,0 +1,10 @@ +package com.baeldung.service; + +import com.baeldung.interceptor.Audited; + +public class SuperService { + @Audited + public String deliverService(String uid) { + return uid; + } +} diff --git a/cdi/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java b/cdi/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java new file mode 100644 index 0000000000..8c2ff2600b --- /dev/null +++ b/cdi/src/main/java/com/baeldung/spring/aspect/SpringTestAspect.java @@ -0,0 +1,26 @@ +package com.baeldung.spring.aspect; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.inject.Inject; +import java.util.List; + +@Aspect +public class SpringTestAspect { + @Autowired + private List accumulator; + + @Around("execution(* com.baeldung.spring.service.SpringSuperService.*(..))") + public Object advice(ProceedingJoinPoint jp) throws Throwable { + String methodName = jp.getSignature().getName(); + accumulator.add("Call to "+methodName); + Object obj = jp.proceed(); + accumulator.add("Method called successfully: "+methodName); + return obj; + } +} diff --git a/cdi/src/main/java/com/baeldung/spring/configuration/AppConfig.java b/cdi/src/main/java/com/baeldung/spring/configuration/AppConfig.java new file mode 100644 index 0000000000..6cfc8f8743 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/spring/configuration/AppConfig.java @@ -0,0 +1,29 @@ +package com.baeldung.spring.configuration; + +import com.baeldung.spring.aspect.SpringTestAspect; +import com.baeldung.spring.service.SpringSuperService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +import java.util.ArrayList; +import java.util.List; + +@Configuration +@EnableAspectJAutoProxy +public class AppConfig { + @Bean + public SpringSuperService springSuperService() { + return new SpringSuperService(); + } + + @Bean + public SpringTestAspect springTestAspect(){ + return new SpringTestAspect(); + } + + @Bean + public List getAccumulator(){ + return new ArrayList(); + } +} diff --git a/cdi/src/main/java/com/baeldung/spring/service/SpringSuperService.java b/cdi/src/main/java/com/baeldung/spring/service/SpringSuperService.java new file mode 100644 index 0000000000..72dbd1c006 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/spring/service/SpringSuperService.java @@ -0,0 +1,7 @@ +package com.baeldung.spring.service; + +public class SpringSuperService { + public String getInfoFromService(String code){ + return code; + } +} diff --git a/cdi/src/main/resources/META-INF/beans.xml b/cdi/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..d41b35e7d9 --- /dev/null +++ b/cdi/src/main/resources/META-INF/beans.xml @@ -0,0 +1,8 @@ + + + com.baeldung.interceptor.AuditedInterceptor + + \ No newline at end of file diff --git a/cdi/src/test/java/com/baeldung/test/TestInterceptor.java b/cdi/src/test/java/com/baeldung/test/TestInterceptor.java new file mode 100644 index 0000000000..d1b851c94f --- /dev/null +++ b/cdi/src/test/java/com/baeldung/test/TestInterceptor.java @@ -0,0 +1,42 @@ +package com.baeldung.test; + +import com.baeldung.interceptor.Audited; +import com.baeldung.interceptor.AuditedInterceptor; +import com.baeldung.service.SuperService; +import org.jboss.weld.environment.se.Weld; +import org.jboss.weld.environment.se.WeldContainer; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import javax.enterprise.inject.spi.BeanManager; +import javax.enterprise.inject.spi.InterceptionType; +import javax.enterprise.inject.spi.Interceptor; +import javax.enterprise.util.AnnotationLiteral; + +import static javafx.beans.binding.Bindings.select; + +public class TestInterceptor { + Weld weld; + WeldContainer container; + @Before + public void init(){ + weld = new Weld(); + container = weld.initialize(); + } + + @After + public void shutdown(){ + weld.shutdown(); + } + + @Test + public void givenTheService_whenMethodAndInterceptorExecuted_thenOK() { + SuperService superService = container.select(SuperService.class).get(); + String code = "123456"; + superService.deliverService(code); + Assert.assertTrue(AuditedInterceptor.calledBefore); + Assert.assertTrue(AuditedInterceptor.calledAfter); + } +} diff --git a/cdi/src/test/java/com/baeldung/test/TestSpringInterceptor.java b/cdi/src/test/java/com/baeldung/test/TestSpringInterceptor.java new file mode 100644 index 0000000000..b5aedd4b76 --- /dev/null +++ b/cdi/src/test/java/com/baeldung/test/TestSpringInterceptor.java @@ -0,0 +1,38 @@ +package com.baeldung.test; + +import com.baeldung.spring.configuration.AppConfig; +import com.baeldung.spring.service.SpringSuperService; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; +import org.springframework.test.context.support.DirtiesContextTestExecutionListener; +import org.springframework.test.context.transaction.TransactionalTestExecutionListener; + +import javax.inject.Inject; +import java.util.List; + +import static org.hamcrest.CoreMatchers.is; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {AppConfig.class}) +public class TestSpringInterceptor { + @Autowired + SpringSuperService springSuperService; + + @Autowired + private List accumulator; + + @Test + public void givenService_whenServiceAndAspectExecuted_thenOk(){ + String code = "123456"; + String result = springSuperService.getInfoFromService(code); + Assert.assertThat(accumulator.size(), is(2)); + Assert.assertThat(accumulator.get(0),is("Call to getInfoFromService")); + Assert.assertThat(accumulator.get(1),is("Method called successfully: getInfoFromService")); + } +}