You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by ta...@apache.org on 2016/03/21 23:10:28 UTC

deltaspike git commit: DELTASPIKE-1069 evaluate interceptors for producer-methods

Repository: deltaspike
Updated Branches:
  refs/heads/master 495aa0bf4 -> dfe5676a9


DELTASPIKE-1069 evaluate interceptors for producer-methods

Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/dfe5676a
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/dfe5676a
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/dfe5676a

Branch: refs/heads/master
Commit: dfe5676a9237784067ceaf8da7b361ac2af75d83
Parents: 495aa0b
Author: Thomas Andraschko <ta...@apache.org>
Authored: Mon Mar 21 23:09:56 2016 +0100
Committer: Thomas Andraschko <ta...@apache.org>
Committed: Mon Mar 21 23:10:18 2016 +0100

----------------------------------------------------------------------
 .../proxy/api/DeltaSpikeProxyFactory.java       |  6 ++
 .../proxy/api/EnableBeanInterceptors.java       | 37 ++++++++++
 .../proxy/spi/DummyInvocationHandler.java       | 31 +++++++++
 .../spi/EnableBeanInterceptorsInterceptor.java  | 52 ++++++++++++++
 .../spi/EnableBeanInterceptorsProxyFactory.java | 45 ++++++++++++
 .../api/src/main/resources/META-INF/beans.xml   |  3 +
 deltaspike/modules/proxy/impl-asm5/pom.xml      |  6 ++
 .../EnableBeanInterceptorsTest.java             | 73 ++++++++++++++++++++
 ...eanInterceptors_WithoutInterceptor_Test.java | 66 ++++++++++++++++++
 .../impl/enablebeaninterceptors/MyBean.java     | 55 +++++++++++++++
 .../MyBeanInterceptor.java                      | 37 ++++++++++
 .../MyBeanInterceptorBinding.java               | 37 ++++++++++
 .../enablebeaninterceptors/MyBeanProducer.java  | 32 +++++++++
 .../test/proxy/impl/util/ArchiveUtils.java      | 49 +++++++++++++
 14 files changed, 529 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java
index ddd9d00..fc2cc2d 100644
--- a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java
+++ b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyFactory.java
@@ -32,6 +32,7 @@ import javax.interceptor.InterceptorBinding;
 
 import org.apache.deltaspike.core.util.ClassUtils;
 import org.apache.deltaspike.core.util.ServiceUtils;
+import org.apache.deltaspike.proxy.spi.DummyInvocationHandler;
 import org.apache.deltaspike.proxy.spi.ProxyClassGenerator;
 
 public abstract class DeltaSpikeProxyFactory
@@ -100,6 +101,11 @@ public abstract class DeltaSpikeProxyFactory
 
         return proxyClass;
     }
+    
+    public <T> Class<T> getProxyClass(BeanManager beanManager, Class<T> targetClass)
+    {
+        return getProxyClass(beanManager, targetClass, DummyInvocationHandler.class);
+    }
 
     private synchronized <T> Class<T> createProxyClass(BeanManager beanManager, ClassLoader classLoader,
             Class<T> targetClass, Class<? extends InvocationHandler> delegateInvocationHandlerClass)

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/EnableBeanInterceptors.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/EnableBeanInterceptors.java b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/EnableBeanInterceptors.java
new file mode 100644
index 0000000..94122d0
--- /dev/null
+++ b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/EnableBeanInterceptors.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.api;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.interceptor.InterceptorBinding;
+
+@InterceptorBinding
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE, ElementType.METHOD })
+public @interface EnableBeanInterceptors
+{
+    
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/DummyInvocationHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/DummyInvocationHandler.java b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/DummyInvocationHandler.java
new file mode 100644
index 0000000..a8c9b53
--- /dev/null
+++ b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/DummyInvocationHandler.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.spi;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+public class DummyInvocationHandler implements InvocationHandler
+{
+    @Override
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
+    {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/EnableBeanInterceptorsInterceptor.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/EnableBeanInterceptorsInterceptor.java b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/EnableBeanInterceptorsInterceptor.java
new file mode 100644
index 0000000..28c9285
--- /dev/null
+++ b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/EnableBeanInterceptorsInterceptor.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.spi;
+
+import java.io.Serializable;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.inject.Inject;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptor;
+import javax.interceptor.InvocationContext;
+import org.apache.deltaspike.proxy.api.EnableBeanInterceptors;
+
+@Interceptor
+@EnableBeanInterceptors
+public class EnableBeanInterceptorsInterceptor implements Serializable
+{
+    @Inject
+    private BeanManager beanManager;
+    
+    @AroundInvoke
+    public Object wrapBeanCandidate(InvocationContext invocationContext) throws Exception
+    {
+        Object beanCandidate = invocationContext.proceed();
+        
+        if (beanCandidate == null)
+        {
+            throw new IllegalStateException("Can not apply "
+                    + EnableBeanInterceptors.class.getSimpleName()
+                    + " on a null instance!");
+        }
+
+        Class proxy = EnableBeanInterceptorsProxyFactory.getInstance().getProxyClass(beanManager,
+                beanCandidate.getClass());
+        return proxy.newInstance();
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/EnableBeanInterceptorsProxyFactory.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/EnableBeanInterceptorsProxyFactory.java b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/EnableBeanInterceptorsProxyFactory.java
new file mode 100644
index 0000000..d3a68aa
--- /dev/null
+++ b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/spi/EnableBeanInterceptorsProxyFactory.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.spi;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import org.apache.deltaspike.proxy.api.DeltaSpikeProxyFactory;
+
+public class EnableBeanInterceptorsProxyFactory extends DeltaSpikeProxyFactory
+{
+    private static final EnableBeanInterceptorsProxyFactory INSTANCE = new EnableBeanInterceptorsProxyFactory();
+    
+    public static EnableBeanInterceptorsProxyFactory getInstance()
+    {
+        return INSTANCE;
+    }
+   
+    @Override
+    protected ArrayList<Method> getDelegateMethods(Class<?> targetClass, ArrayList<Method> allMethods)
+    {
+        return null;
+    }
+
+    @Override
+    protected String getProxyClassSuffix()
+    {
+        return "$$DSBeanInterceptorProxy";
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/api/src/main/resources/META-INF/beans.xml
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/api/src/main/resources/META-INF/beans.xml b/deltaspike/modules/proxy/api/src/main/resources/META-INF/beans.xml
index a2308ff..2eecf4c 100644
--- a/deltaspike/modules/proxy/api/src/main/resources/META-INF/beans.xml
+++ b/deltaspike/modules/proxy/api/src/main/resources/META-INF/beans.xml
@@ -20,4 +20,7 @@
 <beans 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/beans_1_0.xsd">
+    <interceptors>
+        <class>org.apache.deltaspike.proxy.spi.EnableBeanInterceptorsInterceptor</class>
+    </interceptors>
 </beans>

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/impl-asm5/pom.xml
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/impl-asm5/pom.xml b/deltaspike/modules/proxy/impl-asm5/pom.xml
index b566601..0c79ad1 100644
--- a/deltaspike/modules/proxy/impl-asm5/pom.xml
+++ b/deltaspike/modules/proxy/impl-asm5/pom.xml
@@ -116,6 +116,12 @@
             <version>5.0.3</version>
             <optional>true</optional>
         </dependency>
+        
+        <dependency>
+            <groupId>org.apache.deltaspike.core</groupId>
+            <artifactId>deltaspike-core-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
 	</dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/EnableBeanInterceptorsTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/EnableBeanInterceptorsTest.java b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/EnableBeanInterceptorsTest.java
new file mode 100644
index 0000000..553c869
--- /dev/null
+++ b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/EnableBeanInterceptorsTest.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.impl.enablebeaninterceptors;
+
+import javax.inject.Inject;
+import org.apache.deltaspike.test.proxy.impl.util.ArchiveUtils;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(Arquillian.class)
+public class EnableBeanInterceptorsTest
+{    
+    @Deployment
+    public static WebArchive war()
+    {
+        Asset beansXml = new StringAsset(
+            "<beans><interceptors><class>" +
+                    MyBeanInterceptor.class.getName() +
+            "</class></interceptors></beans>"
+        );
+
+        String simpleName = EnableBeanInterceptorsTest.class.getSimpleName();
+        String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
+
+        JavaArchive testJar = ShrinkWrap.create(JavaArchive.class, archiveName + ".jar")
+                .addPackage(EnableBeanInterceptorsTest.class.getPackage())
+                .addAsManifestResource(beansXml, "beans.xml");
+
+        return ShrinkWrap.create(WebArchive.class, archiveName + ".war")
+                .addAsLibraries(ArchiveUtils.getDeltaSpikeCoreAndProxyArchive())
+                .addAsLibraries(testJar)
+                .addAsWebInfResource(beansXml, "beans.xml");
+    }
+
+    @Inject
+    private MyBean myBean;
+    
+    @Test
+    public void testPartialBeanWithApplicationScope() throws Exception
+    {
+        Assert.assertFalse(myBean.isIntercepted());
+        Assert.assertFalse(myBean.isMethodCalled());
+        
+        myBean.somethingIntercepted();
+        
+        Assert.assertTrue(myBean.isIntercepted());
+        Assert.assertTrue(myBean.isMethodCalled());
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/EnableBeanInterceptors_WithoutInterceptor_Test.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/EnableBeanInterceptors_WithoutInterceptor_Test.java b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/EnableBeanInterceptors_WithoutInterceptor_Test.java
new file mode 100644
index 0000000..42ea1f5
--- /dev/null
+++ b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/EnableBeanInterceptors_WithoutInterceptor_Test.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.impl.enablebeaninterceptors;
+
+import javax.inject.Inject;
+import org.apache.deltaspike.test.proxy.impl.util.ArchiveUtils;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(Arquillian.class)
+public class EnableBeanInterceptors_WithoutInterceptor_Test
+{    
+    @Deployment
+    public static WebArchive war()
+    {
+        String simpleName = EnableBeanInterceptors_WithoutInterceptor_Test.class.getSimpleName();
+        String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
+
+        JavaArchive testJar = ShrinkWrap.create(JavaArchive.class, archiveName + ".jar")
+                .addPackage(EnableBeanInterceptors_WithoutInterceptor_Test.class.getPackage())
+                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
+
+        return ShrinkWrap.create(WebArchive.class, archiveName + ".war")
+                .addAsLibraries(ArchiveUtils.getDeltaSpikeCoreAndProxyArchive())
+                .addAsLibraries(testJar)
+                .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
+    }
+
+    @Inject
+    private MyBean myBean;
+    
+    @Test
+    public void testPartialBeanWithApplicationScope() throws Exception
+    {
+        Assert.assertFalse(myBean.isIntercepted());
+        Assert.assertFalse(myBean.isMethodCalled());
+        
+        myBean.somethingIntercepted();
+        
+        Assert.assertFalse(myBean.isIntercepted());
+        Assert.assertTrue(myBean.isMethodCalled());
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBean.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBean.java b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBean.java
new file mode 100644
index 0000000..65969a4
--- /dev/null
+++ b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBean.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.impl.enablebeaninterceptors;
+
+import org.apache.deltaspike.core.api.exclude.Exclude;
+
+@Exclude
+public class MyBean
+{
+    private boolean intercepted;
+    private boolean methodCalled;
+
+    public boolean isIntercepted()
+    {
+        return intercepted;
+    }
+
+    public void setIntercepted(boolean intercepted)
+    {
+        this.intercepted = intercepted;
+    }
+
+    public boolean isMethodCalled()
+    {
+        return methodCalled;
+    }
+
+    public void setMethodCalled(boolean methodCalled)
+    {
+        this.methodCalled = methodCalled;
+    }
+    
+    
+    @MyBeanInterceptorBinding
+    public void somethingIntercepted()
+    {
+        methodCalled = true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanInterceptor.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanInterceptor.java b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanInterceptor.java
new file mode 100644
index 0000000..74fe9d9
--- /dev/null
+++ b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanInterceptor.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.impl.enablebeaninterceptors;
+
+import java.io.Serializable;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptor;
+import javax.interceptor.InvocationContext;
+
+@Interceptor
+@MyBeanInterceptorBinding
+public class MyBeanInterceptor implements Serializable
+{
+    @AroundInvoke
+    public Object wrapBeanCandidate(InvocationContext invocationContext) throws Exception
+    {
+        ((MyBean) invocationContext.getTarget()).setIntercepted(true);
+        
+        return invocationContext.proceed();
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanInterceptorBinding.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanInterceptorBinding.java b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanInterceptorBinding.java
new file mode 100644
index 0000000..5e54ea1
--- /dev/null
+++ b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanInterceptorBinding.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.impl.enablebeaninterceptors;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.interceptor.InterceptorBinding;
+
+@InterceptorBinding
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE, ElementType.METHOD })
+public @interface MyBeanInterceptorBinding
+{
+    
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanProducer.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanProducer.java b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanProducer.java
new file mode 100644
index 0000000..1903a7a
--- /dev/null
+++ b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/proxy/impl/enablebeaninterceptors/MyBeanProducer.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.proxy.impl.enablebeaninterceptors;
+
+import javax.enterprise.inject.Produces;
+import org.apache.deltaspike.proxy.api.EnableBeanInterceptors;
+
+public class MyBeanProducer
+{
+    @Produces
+    @EnableBeanInterceptors
+    public MyBean produce()
+    {
+        return new MyBean();
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/dfe5676a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/test/proxy/impl/util/ArchiveUtils.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/test/proxy/impl/util/ArchiveUtils.java b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/test/proxy/impl/util/ArchiveUtils.java
new file mode 100644
index 0000000..bba08f5
--- /dev/null
+++ b/deltaspike/modules/proxy/impl-asm5/src/test/java/org/apache/deltaspike/test/proxy/impl/util/ArchiveUtils.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.deltaspike.test.proxy.impl.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import org.apache.deltaspike.test.utils.ShrinkWrapArchiveUtil;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+
+public abstract class ArchiveUtils
+{
+    private ArchiveUtils()
+    {
+    }
+
+    public static JavaArchive[] getDeltaSpikeCoreAndProxyArchive()
+    {
+        ArrayList<JavaArchive> result = new ArrayList<JavaArchive>();
+
+        JavaArchive[] temp;
+
+        temp = ShrinkWrapArchiveUtil.getArchives(null,
+                "META-INF/beans.xml",
+                new String[] { "org.apache.deltaspike.core",
+                        "org.apache.deltaspike.proxy",
+                        "org.apache.deltaspike.test.category" },
+                new String[] { "META-INF.apache-deltaspike.properties" },
+                "ds-core_and_proxy");
+        result.addAll(Arrays.asList(temp));
+
+        return result.toArray(new JavaArchive[result.size()]);
+    }
+}