Skip to content

Commit 624d2f9

Browse files
committed
Merge pull request #185 from rhanus/master
added cdi/interceptors-prioriry
2 parents 4881b60 + f80087a commit 624d2f9

File tree

10 files changed

+180
-0
lines changed

10 files changed

+180
-0
lines changed

cdi/interceptors-priority/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<parent>
5+
<groupId>org.javaee7.cdi</groupId>
6+
<artifactId>cdi-samples</artifactId>
7+
<version>1.0-SNAPSHOT</version>
8+
<relativePath>../pom.xml</relativePath>
9+
</parent>
10+
11+
<artifactId>interceptors-prioriry</artifactId>
12+
</project>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.javaee7.cdi.interceptors.priority;
2+
3+
/**
4+
* @author Radim Hanus
5+
*/
6+
public interface Greeting {
7+
public String getGreet();
8+
public void setGreet(String name);
9+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.javaee7.cdi.interceptors.priority;
2+
3+
import javax.annotation.Priority;
4+
import javax.interceptor.AroundInvoke;
5+
import javax.interceptor.Interceptor;
6+
import javax.interceptor.InvocationContext;
7+
8+
/**
9+
* Interceptors with smaller priority values are called first.
10+
*
11+
* @author Radim Hanus
12+
*/
13+
@Interceptor
14+
@MyInterceptorBinding
15+
@Priority(Interceptor.Priority.APPLICATION + 100)
16+
public class HighPriorityInterceptor {
17+
@AroundInvoke
18+
public Object log(InvocationContext context) throws Exception {
19+
Object[] parameters = context.getParameters();
20+
if (parameters.length > 0 && parameters[0] instanceof String) {
21+
String param = (String) parameters[0];
22+
parameters[0] = "Hi " + param + " !";
23+
context.setParameters(parameters);
24+
}
25+
return context.proceed();
26+
}
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.javaee7.cdi.interceptors.priority;
2+
3+
import javax.annotation.Priority;
4+
import javax.interceptor.AroundInvoke;
5+
import javax.interceptor.Interceptor;
6+
import javax.interceptor.InvocationContext;
7+
8+
/**
9+
* Interceptors with smaller priority values are called first.
10+
*
11+
* @author Radim Hanus
12+
*/
13+
@Interceptor
14+
@MyInterceptorBinding
15+
@Priority(Interceptor.Priority.APPLICATION + 200)
16+
public class LowPriorityInterceptor {
17+
@AroundInvoke
18+
public Object log(InvocationContext context) throws Exception {
19+
Object[] parameters = context.getParameters();
20+
if (parameters.length > 0 && parameters[0] instanceof String) {
21+
String param = (String) parameters[0];
22+
parameters[0] = param + " Nice to meet you.";
23+
context.setParameters(parameters);
24+
}
25+
return context.proceed();
26+
}
27+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.javaee7.cdi.interceptors.priority;
2+
3+
import javax.interceptor.InterceptorBinding;
4+
import java.lang.annotation.Inherited;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.Target;
7+
8+
import static java.lang.annotation.ElementType.METHOD;
9+
import static java.lang.annotation.ElementType.TYPE;
10+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
11+
12+
/**
13+
* @author Arun Gupta
14+
*/
15+
@Inherited
16+
@InterceptorBinding
17+
@Retention(RUNTIME)
18+
@Target({METHOD, TYPE})
19+
public @interface MyInterceptorBinding {
20+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.javaee7.cdi.interceptors.priority;
2+
3+
/**
4+
* @author Radim Hanus
5+
*/
6+
@MyInterceptorBinding
7+
public class SimpleGreeting implements Greeting {
8+
private String greet;
9+
10+
public String getGreet() {
11+
return greet;
12+
}
13+
14+
public void setGreet(String greet) {
15+
this.greet = greet;
16+
}
17+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.javaee7.cdi.interceptors.priority;
2+
3+
import org.jboss.arquillian.container.test.api.Deployment;
4+
import org.jboss.arquillian.junit.Arquillian;
5+
import org.jboss.shrinkwrap.api.Archive;
6+
import org.jboss.shrinkwrap.api.ShrinkWrap;
7+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
11+
import javax.inject.Inject;
12+
13+
import static org.hamcrest.CoreMatchers.*;
14+
import static org.junit.Assert.assertEquals;
15+
import static org.junit.Assert.assertThat;
16+
17+
/**
18+
* Note that beans.xml doesn't define any interceptor. Interceptors declared using interceptor bindings
19+
* are enabled for the entire application and ordered using the Priority annotation.
20+
*
21+
* @author Radim Hanus
22+
*/
23+
@RunWith(Arquillian.class)
24+
public class GreetingTest {
25+
@Deployment
26+
public static Archive<?> deploy() {
27+
return ShrinkWrap.create(JavaArchive.class)
28+
.addClasses(Greeting.class, SimpleGreeting.class, MyInterceptorBinding.class, LowPriorityInterceptor.class, HighPriorityInterceptor.class)
29+
.addAsManifestResource("beans.xml");
30+
}
31+
32+
@Inject
33+
Greeting bean;
34+
35+
@Test
36+
public void test() throws Exception {
37+
assertThat(bean, is(notNullValue()));
38+
assertThat(bean, instanceOf(SimpleGreeting.class));
39+
40+
bean.setGreet("Arun");
41+
assertEquals(bean.getGreet(), "Hi Arun ! Nice to meet you.");
42+
}
43+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns="http://jboss.org/schema/arquillian"
5+
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
6+
7+
<defaultProtocol type="Servlet 3.0"/>
8+
9+
<container qualifier="test" default="true">
10+
<configuration>
11+
<property name="jbossHome">${serverRoot:target/wildfly-8.0.0.CR1}</property>
12+
<property name="serverConfig">${serverProfile:standalone-full.xml}</property>
13+
</configuration>
14+
</container>
15+
16+
</arquillian>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
6+
bean-discovery-mode="all">
7+
8+
</beans>

cdi/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<module>exclude-filter</module>
2525
<module>built-in</module>
2626
<module>interceptors</module>
27+
<module>interceptors-prioriry</module>
2728
<module>nobeans-xml</module>
2829
<module>beansxml-noversion</module>
2930
<module>beanmanager</module>

0 commit comments

Comments
 (0)