Repository: deltaspike
Updated Branches:
  refs/heads/master d3a21c0fd -> fcf4d77d6


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/pom.xml
----------------------------------------------------------------------
diff --git a/deltaspike/modules/partial-bean/impl/pom.xml 
b/deltaspike/modules/partial-bean/impl/pom.xml
index 6fdf84e..c0d1f00 100644
--- a/deltaspike/modules/partial-bean/impl/pom.xml
+++ b/deltaspike/modules/partial-bean/impl/pom.xml
@@ -48,43 +48,6 @@
         </deltaspike.osgi.provide.capability>
     </properties>
 
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <version>2.3</version>
-                <configuration>
-                    <shadedArtifactAttached>false</shadedArtifactAttached>
-                    
<createDependencyReducedPom>false</createDependencyReducedPom>
-                    
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
-                    <relocations>
-                        <relocation>
-                            <pattern>org.objectweb.asm</pattern>
-                            
<shadedPattern>org.apache.deltaspike.partialbean.impl.asm5</shadedPattern>
-                        </relocation>
-                    </relocations>
-                    <artifactSet>
-                        <includes>
-                            <include>org.ow2.asm:asm</include>
-                            <include>org.ow2.asm:asm-commons</include>
-                            <include>org.ow2.asm:asm-tree</include>
-                        </includes>
-                    </artifactSet>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
     <dependencies>
         <dependency>
             <groupId>org.apache.deltaspike.core</groupId>
@@ -95,24 +58,5 @@
             <groupId>org.apache.deltaspike.modules</groupId>
             <artifactId>deltaspike-partial-bean-module-api</artifactId>
         </dependency>
-
-        <dependency>
-            <groupId>org.ow2.asm</groupId>
-            <artifactId>asm</artifactId>
-            <version>5.0.3</version>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.ow2.asm</groupId>
-            <artifactId>asm-commons</artifactId>
-            <version>5.0.3</version>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.ow2.asm</groupId>
-            <artifactId>asm-tree</artifactId>
-            <version>5.0.3</version>
-            <optional>true</optional>
-        </dependency>
     </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanBindingExtension.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanBindingExtension.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanBindingExtension.java
index 6a3841c..399f4f3 100644
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanBindingExtension.java
+++ 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanBindingExtension.java
@@ -18,7 +18,6 @@
  */
 package org.apache.deltaspike.partialbean.impl;
 
-import org.apache.deltaspike.partialbean.impl.proxy.PartialBeanProxyFactory;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Modifier;
@@ -36,6 +35,7 @@ import 
org.apache.deltaspike.core.spi.activation.Deactivatable;
 import org.apache.deltaspike.core.util.ClassDeactivationUtils;
 import org.apache.deltaspike.core.util.bean.BeanBuilder;
 import org.apache.deltaspike.core.util.metadata.builder.AnnotatedTypeBuilder;
+import 
org.apache.deltaspike.core.util.proxy.DeltaSpikeProxyContextualLifecycle;
 import org.apache.deltaspike.partialbean.api.PartialBeanBinding;
 
 public class PartialBeanBindingExtension implements Extension, Deactivatable
@@ -60,12 +60,6 @@ public class PartialBeanBindingExtension implements 
Extension, Deactivatable
 
         Class<X> beanClass = pat.getAnnotatedType().getJavaClass();
 
-        // skip early generated proxies
-        if (PartialBeanProxyFactory.isProxyClass(beanClass))
-        {
-            return;
-        }
-
         // skip classes without a partial bean binding
         Class<? extends Annotation> bindingClass = extractBindingClass(pat);
         if (bindingClass == null)
@@ -170,13 +164,15 @@ public class PartialBeanBindingExtension implements 
Extension, Deactivatable
 
         AnnotatedType<T> annotatedType = new 
AnnotatedTypeBuilder<T>().readFromType(beanClass).create();
 
-        PartialBeanLifecycle beanLifecycle =
-                new PartialBeanLifecycle(beanClass, descriptor.getHandler(), 
beanManager);
+        DeltaSpikeProxyContextualLifecycle lifecycle = new 
DeltaSpikeProxyContextualLifecycle(beanClass,
+                descriptor.getHandler(),
+                PartialBeanProxyFactory.getInstance(),
+                beanManager);
 
         BeanBuilder<T> beanBuilder = new BeanBuilder<T>(beanManager)
                 .readFromType(annotatedType)
                 .passivationCapable(true)
-                .beanLifecycle(beanLifecycle);
+                .beanLifecycle(lifecycle);
 
         return beanBuilder.create();
     }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanLifecycle.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanLifecycle.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanLifecycle.java
deleted file mode 100644
index dc05a02..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanLifecycle.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * 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.partialbean.impl;
-
-import org.apache.deltaspike.partialbean.impl.proxy.PartialBeanProxyFactory;
-import org.apache.deltaspike.partialbean.impl.proxy.PartialBeanProxy;
-import org.apache.deltaspike.core.util.ExceptionUtils;
-import org.apache.deltaspike.core.util.metadata.builder.ContextualLifecycle;
-
-import javax.enterprise.context.spi.CreationalContext;
-import java.lang.reflect.InvocationHandler;
-import java.util.Set;
-import javax.enterprise.context.Dependent;
-import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InjectionTarget;
-import javax.enterprise.inject.spi.PassivationCapable;
-
-import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
-import org.apache.deltaspike.core.api.provider.BeanProvider;
-
-class PartialBeanLifecycle<T, H extends InvocationHandler> implements 
ContextualLifecycle<T>
-{
-    private final Class<T> proxyClass;
-    private final Class<T> partialBeanClass;
-    private final Class<H> handlerClass;
-    
-    private InjectionTarget<T> injectionTarget;
-    private CreationalContext<?> creationalContextOfDependentHandler;
-
-    PartialBeanLifecycle(Class<T> partialBeanClass, Class<H> handlerClass, 
BeanManager beanManager)
-    {
-        this.partialBeanClass = partialBeanClass;
-        this.proxyClass = 
PartialBeanProxyFactory.getProxyClass(partialBeanClass, handlerClass);
-        this.handlerClass = handlerClass;
-
-        if (!partialBeanClass.isInterface())
-        {
-            AnnotatedType<T> annotatedType = 
beanManager.createAnnotatedType(this.partialBeanClass);
-            this.injectionTarget = 
beanManager.createInjectionTarget(annotatedType);
-        }
-    }
-
-    @Override
-    public T create(Bean bean, CreationalContext creationalContext)
-    {
-        try
-        {
-            T instance = proxyClass.newInstance();
-
-            ((PartialBeanProxy) 
instance).setRedirectInvocationHandler(createHandlerInstance());
-
-            if (this.injectionTarget != null)
-            {
-                this.injectionTarget.inject(instance, creationalContext);
-                this.injectionTarget.postConstruct(instance);
-            }
-
-            return instance;
-        }
-        catch (Exception e)
-        {
-            ExceptionUtils.throwAsRuntimeException(e);
-        }
-
-        //can't happen
-        return null;
-    }
-
-    @Override
-    public void destroy(Bean<T> bean, T instance, CreationalContext<T> 
creationalContext)
-    {
-        if (this.injectionTarget != null)
-        {
-            this.injectionTarget.preDestroy(instance);
-        }
-        
-        if (this.creationalContextOfDependentHandler != null)
-        {
-            this.creationalContextOfDependentHandler.release();
-        }
-
-        creationalContext.release();
-    }
-    
-    private H createHandlerInstance()
-    {
-        Set<Bean<H>> handlerBeans = 
BeanProvider.getBeanDefinitions(this.handlerClass, false, true);
-        
-        if (handlerBeans.size() != 1)
-        {
-            StringBuilder beanInfo = new StringBuilder();
-            for (Bean<H> bean : handlerBeans)
-            {
-                if (beanInfo.length() != 0)
-                {
-                    beanInfo.append(", ");
-                }
-                beanInfo.append(bean);
-
-                if (bean instanceof PassivationCapable)
-                {
-                    beanInfo.append(" bean-id: 
").append(((PassivationCapable)bean).getId());
-                }
-            }
-
-            throw new IllegalStateException(handlerBeans.size() + " beans 
found for " + this.handlerClass +
-                " found beans: " + beanInfo.toString());
-        }
-
-        Bean<H> handlerBean = handlerBeans.iterator().next();
-        
-        BeanManager beanManager = 
BeanManagerProvider.getInstance().getBeanManager();
-        CreationalContext<?> creationalContext = 
beanManager.createCreationalContext(handlerBean);
-        
-        H handlerInstance = (H) beanManager.getReference(handlerBean, 
this.handlerClass, creationalContext);
-        
-        if (handlerBean.getScope().equals(Dependent.class))
-        {
-            this.creationalContextOfDependentHandler = creationalContext;
-        }
-
-        return handlerInstance;
-    }
-}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanProxyFactory.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanProxyFactory.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanProxyFactory.java
new file mode 100644
index 0000000..7dd0582
--- /dev/null
+++ 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/PartialBeanProxyFactory.java
@@ -0,0 +1,62 @@
+/*
+ * 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.partialbean.impl;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Iterator;
+import javax.enterprise.inject.Typed;
+import org.apache.deltaspike.core.util.proxy.DeltaSpikeProxyFactory;
+
+@Typed
+public class PartialBeanProxyFactory extends DeltaSpikeProxyFactory
+{
+    private static final PartialBeanProxyFactory INSTANCE = new 
PartialBeanProxyFactory();
+    
+    public static PartialBeanProxyFactory getInstance()
+    {
+        return INSTANCE;
+    }
+    
+    @Override
+    protected String getProxyClassSuffix()
+    {
+        return "$$DSPartialBeanProxy";
+    }
+
+    @Override
+    protected ArrayList<Method> getDelegateMethods(Class<?> targetClass, 
ArrayList<Method> allMethods)
+    {
+        ArrayList<Method> methods = new ArrayList<Method>();
+        
+        Iterator<Method> it = allMethods.iterator();
+        while (it.hasNext())
+        {
+            Method method = it.next();
+
+            if (Modifier.isAbstract(method.getModifiers()))
+            {
+                methods.add(method);
+            }
+        }
+        
+        return methods;
+    }
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/AbstractManualInvocationHandler.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/AbstractManualInvocationHandler.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/AbstractManualInvocationHandler.java
deleted file mode 100644
index 713c486..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/AbstractManualInvocationHandler.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.partialbean.impl.interception;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import javax.enterprise.inject.Typed;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InterceptionType;
-import javax.enterprise.inject.spi.Interceptor;
-import javax.interceptor.InterceptorBinding;
-import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
-
-@Typed
-public abstract class AbstractManualInvocationHandler implements 
InvocationHandler
-{
-    @Override
-    public Object invoke(Object proxy, Method method, Object[] parameters) 
throws Throwable
-    {
-        List<Interceptor<?>> interceptors = resolveInterceptors(proxy, method);
-        if (interceptors != null && interceptors.size() > 0)
-        {
-            try
-            {
-                ManualInvocationContext invocationContext =
-                        new ManualInvocationContext(this, interceptors, proxy, 
method, parameters, null);
-
-                Object returnValue = invocationContext.proceed();
-
-                if (invocationContext.isProceedOriginal())
-                {
-                    return invocationContext.getProceedOriginalReturnValue();
-                }
-
-                return returnValue;
-            }
-            catch (ManualInvocationThrowableWrapperException e)
-            {
-                throw e.getCause();
-            }
-        }
-
-        return proceedOriginal(proxy, method, parameters);
-    }
-
-    protected abstract Object proceedOriginal(Object proxy, Method method, 
Object[] parameters) throws Throwable;
-
-    protected List<Interceptor<?>> resolveInterceptors(Object instance, Method 
method)
-    {
-        Annotation[] interceptorBindings = 
extractInterceptorBindings(instance, method);
-        if (interceptorBindings.length > 0)
-        {
-            BeanManager beanManager = 
BeanManagerProvider.getInstance().getBeanManager();
-            return 
beanManager.resolveInterceptors(InterceptionType.AROUND_INVOKE, 
interceptorBindings);
-        }
-
-        return null;
-    }
-
-    // TODO stereotypes
-    protected Annotation[] extractInterceptorBindings(Object instance, Method 
method)
-    {
-        ArrayList<Annotation> bindings = new ArrayList<Annotation>();
-
-        for (Annotation annotation : 
instance.getClass().getDeclaredAnnotations())
-        {
-            if 
(annotation.annotationType().isAnnotationPresent(InterceptorBinding.class)
-                    && !bindings.contains(annotation))
-            {
-                bindings.add(annotation);
-            }
-        }
-
-        for (Annotation annotation : method.getDeclaredAnnotations())
-        {
-            if 
(annotation.annotationType().isAnnotationPresent(InterceptorBinding.class)
-                    && !bindings.contains(annotation))
-            {
-                bindings.add(annotation);
-            }
-        }
-
-        return bindings.toArray(new Annotation[bindings.size()]);
-    }
-}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/ManualInvocationContext.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/ManualInvocationContext.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/ManualInvocationContext.java
deleted file mode 100644
index 39cdc8f..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/ManualInvocationContext.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * 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.partialbean.impl.interception;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.Typed;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InterceptionType;
-import javax.enterprise.inject.spi.Interceptor;
-import javax.interceptor.InvocationContext;
-import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
-
-@Typed
-public class ManualInvocationContext<T, H> implements InvocationContext
-{
-    protected List<Interceptor<H>> interceptors;
-    protected int interceptorIndex;
-    protected T target;
-    protected Method method;
-    protected Object[] parameters;
-    protected Map<String, Object> contextData;
-    protected Object timer;
-    protected AbstractManualInvocationHandler manualInvocationHandler;
-
-    protected BeanManager beanManager;
-
-    protected boolean proceedOriginal;
-    protected Object proceedOriginalReturnValue;
-
-    public ManualInvocationContext(AbstractManualInvocationHandler 
manualInvocationHandler,
-            List<Interceptor<H>> interceptors, T target, Method method, 
Object[] parameters, Object timer)
-    {
-        this.manualInvocationHandler = manualInvocationHandler;
-        this.interceptors = interceptors;
-        this.target = target;
-        this.method = method;
-        this.parameters = parameters;
-        this.timer = timer;
-
-        this.interceptorIndex = 0;
-    }
-
-    @Override
-    public Object getTarget()
-    {
-        return target;
-    }
-
-    @Override
-    public Method getMethod()
-    {
-        return method;
-    }
-
-    @Override
-    public Object[] getParameters()
-    {
-        return parameters;
-    }
-
-    @Override
-    public void setParameters(Object[] os)
-    {
-        parameters = os;
-    }
-
-    @Override
-    public Map<String, Object> getContextData()
-    {
-        if (contextData == null)
-        {
-            contextData = new HashMap<String, Object>();
-        }
-        return contextData;
-    }
-
-    @Override
-    public Object proceed() throws Exception
-    {
-        if (proceedOriginal)
-        {
-            return null;
-        }
-
-        if (interceptors.size() > interceptorIndex)
-        {
-            Interceptor<H> interceptor = null;
-            CreationalContext<H> creationalContext = null;
-            H interceptorInstance = null;
-
-            try
-            {
-                // lazy init beanManager
-                if (beanManager == null)
-                {
-                    beanManager = 
BeanManagerProvider.getInstance().getBeanManager();
-                }
-
-                interceptor = interceptors.get(interceptorIndex++);
-                creationalContext = 
beanManager.createCreationalContext(interceptor);
-                interceptorInstance = interceptor.create(creationalContext);
-
-                return interceptor.intercept(InterceptionType.AROUND_INVOKE, 
interceptorInstance, this);
-            }
-            finally
-            {
-                if (creationalContext != null)
-                {
-                    if (interceptorInstance != null && interceptor != null)
-                    {
-                        interceptor.destroy(interceptorInstance, 
creationalContext);
-                    }
-
-                    creationalContext.release();
-                }
-            }
-        }
-
-
-        // workaround for OWB 1.1, otherwise we could just return the 
proceedOriginalReturnValue value in this method
-        try
-        {
-            proceedOriginal = true;
-            proceedOriginalReturnValue = 
manualInvocationHandler.proceedOriginal(target, method, parameters);
-        }
-        catch (Exception e)
-        {
-            throw e;
-        }
-        catch (Throwable e)
-        {
-            // wrap the Throwable here as interceptors declared only "throws 
Exception"
-            throw new ManualInvocationThrowableWrapperException(e);
-        }
-
-        return null;
-    }
-
-    @Override
-    public Object getTimer()
-    {
-        return timer;
-    }
-
-    // @Override
-    // CDI 1.1 compatibility
-    public Constructor getConstructor()
-    {
-        return null;
-    }
-
-    public boolean isProceedOriginal()
-    {
-        return proceedOriginal;
-    }
-
-    public Object getProceedOriginalReturnValue()
-    {
-        return proceedOriginalReturnValue;
-    }
-
-    public void setProceedOriginalReturnValue(Object 
proceedOriginalReturnValue)
-    {
-        this.proceedOriginalReturnValue = proceedOriginalReturnValue;
-    }
-}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/ManualInvocationThrowableWrapperException.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/ManualInvocationThrowableWrapperException.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/ManualInvocationThrowableWrapperException.java
deleted file mode 100644
index 23edf17..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/interception/ManualInvocationThrowableWrapperException.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.partialbean.impl.interception;
-
-public class ManualInvocationThrowableWrapperException extends Exception
-{
-    public ManualInvocationThrowableWrapperException(Throwable e)
-    {
-        super(e);
-    }
-}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/AsmProxyClassGenerator.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/AsmProxyClassGenerator.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/AsmProxyClassGenerator.java
deleted file mode 100644
index 1ac77f7..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/AsmProxyClassGenerator.java
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * 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.partialbean.impl.proxy;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.UndeclaredThrowableException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import javax.enterprise.inject.Typed;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Label;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.Type;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
-
-@Typed
-public abstract class AsmProxyClassGenerator
-{
-    private static final String FIELDNAME_HANDLER = "__handler";
-
-    private static final Type TYPE_CLASS = Type.getType(Class.class);
-    private static final Type TYPE_OBJECT = Type.getType(Object.class);
-
-    private AsmProxyClassGenerator()
-    {
-        // prevent instantiation
-    }
-
-    public static <T> Class<T> generateProxyClass(ClassLoader classLoader,
-            Class<T> targetClass,
-            Class<? extends InvocationHandler> invocationHandlerClass,
-            String suffix,
-            String superAccessorMethodSuffix,
-            java.lang.reflect.Method[] redirectMethods,
-            java.lang.reflect.Method[] interceptionMethods)
-    {
-        String proxyName = targetClass.getCanonicalName() + suffix;
-        String classFileName = proxyName.replace('.', '/');
-
-        byte[] proxyBytes = generateProxyClassBytes(targetClass, 
invocationHandlerClass,
-                classFileName, superAccessorMethodSuffix, redirectMethods, 
interceptionMethods);
-        
-        Class<T> proxyClass = (Class<T>) loadClass(classLoader, proxyName, 
proxyBytes);
-
-        return proxyClass;
-    }
-
-    private static byte[] generateProxyClassBytes(Class<?> targetClass,
-            Class<? extends InvocationHandler> invocationHandlerClass,
-            String proxyName,
-            String superAccessorMethodSuffix,
-            java.lang.reflect.Method[] redirectMethods,
-            java.lang.reflect.Method[] interceptionMethods)
-    {
-        Class<?> superClass = targetClass;
-        String[] interfaces = new String[] { };
-
-        if (targetClass.isInterface())
-        {
-            superClass = Object.class;
-            interfaces = new String[] { Type.getInternalName(targetClass) };
-        }
-
-        // add PartialBeanProxy as interface
-        interfaces = Arrays.copyOf(interfaces, interfaces.length + 1);
-        interfaces[interfaces.length - 1] = 
Type.getInternalName(PartialBeanProxy.class);
-
-        Type superType = Type.getType(superClass);
-        Type proxyType = Type.getObjectType(proxyName);
-        Type invocationHandlerType = Type.getType(invocationHandlerClass);
-
-        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
-        cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, 
proxyType.getInternalName(), null,
-                superType.getInternalName(), interfaces);
-
-        // copy annotations
-        for (Annotation annotation : targetClass.getDeclaredAnnotations())
-        {
-            
cw.visitAnnotation(Type.getDescriptor(annotation.annotationType()), 
true).visitEnd();
-        }
-
-        defineInvocationHandlerField(cw, invocationHandlerType);
-        defineConstructor(cw, proxyType, superType);
-        definePartialBeanProxyMethods(cw, proxyType, invocationHandlerType);
-
-        for (java.lang.reflect.Method method : redirectMethods)
-        {
-            defineMethod(cw, method, RedirectManualInvocationHandler.class);
-        }
-
-        for (java.lang.reflect.Method method : interceptionMethods)
-        {
-            defineSuperAccessorMethod(cw, method, superType, 
superAccessorMethodSuffix);
-            defineMethod(cw, method, CallSuperManualInvocationHandler.class);
-        }
-
-        return cw.toByteArray();
-    }
-
-    private static void defineInvocationHandlerField(ClassWriter cw, Type 
invocationHandlerType)
-    {
-        // generates
-        // private MyPartialBeanInvocationHandler __handler;
-        cw.visitField(Opcodes.ACC_PRIVATE, FIELDNAME_HANDLER, 
invocationHandlerType.getDescriptor(), null, null)
-                .visitEnd();
-    }
-
-    private static void defineConstructor(ClassWriter cw, Type proxyType, Type 
superType)
-    {
-        GeneratorAdapter mg = new GeneratorAdapter(Opcodes.ACC_PUBLIC,
-                new Method("<init>", Type.VOID_TYPE, new Type[]{ }),
-                null,
-                null,
-                cw);
-
-        mg.visitCode();
-
-        // invoke super constructor
-        mg.loadThis();
-        mg.invokeConstructor(superType, Method.getMethod("void <init> ()"));
-        mg.returnValue();
-        mg.endMethod();
-
-        mg.visitEnd();
-    }
-
-    private static void definePartialBeanProxyMethods(ClassWriter cw, Type 
proxyType, Type invocationHandlerType)
-    {
-        try
-        {
-            // implement #setRedirectInvocationHandler
-            Method asmMethod = 
Method.getMethod(PartialBeanProxy.class.getDeclaredMethod(
-                    "setRedirectInvocationHandler", InvocationHandler.class));
-            GeneratorAdapter mg = new GeneratorAdapter(Opcodes.ACC_PUBLIC, 
asmMethod, null, null, cw);
-
-            mg.visitCode();
-
-            mg.loadThis();
-            mg.loadArg(0);
-            mg.checkCast(invocationHandlerType);
-            mg.putField(proxyType, FIELDNAME_HANDLER, invocationHandlerType);
-            mg.returnValue();
-
-            mg.visitMaxs(2, 1);
-            mg.visitEnd();
-
-
-            // implement #getRedirectInvocationHandler
-            asmMethod = 
Method.getMethod(PartialBeanProxy.class.getDeclaredMethod("getRedirectInvocationHandler"));
-            mg = new GeneratorAdapter(Opcodes.ACC_PUBLIC, asmMethod, null, 
null, cw);
-
-            mg.visitCode();
-
-            mg.loadThis();
-            mg.getField(proxyType, FIELDNAME_HANDLER, invocationHandlerType);
-            mg.returnValue();
-
-            mg.visitMaxs(2, 1);
-            mg.visitEnd();
-        }
-        catch (NoSuchMethodException e)
-        {
-            throw new IllegalStateException("Unable to implement " + 
PartialBeanProxy.class.getName(), e);
-        }
-    }
-
-    private static void defineSuperAccessorMethod(ClassWriter cw, 
java.lang.reflect.Method method, Type superType,
-            String superAccessorMethodSuffix) 
-    {
-        Method originalAsmMethod = Method.getMethod(method);
-        Method newAsmMethod = new Method(method.getName() + 
superAccessorMethodSuffix,
-                originalAsmMethod.getReturnType(),
-                originalAsmMethod.getArgumentTypes());
-        GeneratorAdapter mg = new GeneratorAdapter(Opcodes.ACC_PUBLIC, 
newAsmMethod, null, null, cw);
-        
-        mg.visitCode();
-        
-        // call super method
-        mg.loadThis();
-        mg.loadArgs();
-        mg.visitMethodInsn(Opcodes.INVOKESPECIAL,
-                superType.getInternalName(),
-                method.getName(),
-                Type.getMethodDescriptor(method),
-                false);
-        mg.returnValue();
-        
-        // finish the method
-        mg.endMethod();
-        mg.visitMaxs(10, 10);
-        mg.visitEnd();
-    }
-    
-    private static void defineMethod(ClassWriter cw, java.lang.reflect.Method 
method,
-            Class manualInvocationHandlerClass)
-    {
-        Type methodType = Type.getType(method);
-        
-        ArrayList<Type> exceptionsToCatch = new ArrayList<Type>();
-        for (Class<?> exception : method.getExceptionTypes())
-        {
-            if (!RuntimeException.class.isAssignableFrom(exception))
-            {
-                exceptionsToCatch.add(Type.getType(exception));
-            }
-        }
-        
-        // push the method definition
-        int modifiers = (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED) & 
method.getModifiers();
-        Method asmMethod = Method.getMethod(method);
-        GeneratorAdapter mg = new GeneratorAdapter(modifiers,
-                asmMethod,
-                null,
-                getTypes(method.getExceptionTypes()),
-                cw);
-
-        // copy annotations
-        for (Annotation annotation : method.getDeclaredAnnotations())
-        {
-            
mg.visitAnnotation(Type.getDescriptor(annotation.annotationType()), 
true).visitEnd();
-        }
-
-        mg.visitCode();
-
-        Label tryBlockStart = mg.mark();
-
-        mg.loadThis();
-        loadCurrentMethod(mg, method, methodType);
-        loadArguments(mg, method, methodType);
-        
-        // invoke our ProxyInvocationHandler
-        mg.invokeStatic(Type.getType(manualInvocationHandlerClass),
-                Method.getMethod("Object staticInvoke(Object, 
java.lang.reflect.Method, Object[])"));
-
-        // cast the result
-        mg.unbox(methodType.getReturnType());
-
-        // build try catch
-        Label tryBlockEnd = mg.mark();
-        
-        // push return
-        mg.returnValue();
-
-        // catch runtime exceptions and rethrow it
-        Label rethrow = mg.mark();
-        mg.visitVarInsn(Opcodes.ASTORE, 1);
-        mg.visitVarInsn(Opcodes.ALOAD, 1);
-        mg.throwException();
-        mg.visitTryCatchBlock(tryBlockStart, tryBlockEnd, rethrow, 
Type.getInternalName(RuntimeException.class));
-
-        // catch checked exceptions and rethrow it
-        boolean throwableCatched = false;
-        if (exceptionsToCatch.size() > 0)
-        {
-            rethrow = mg.mark();
-            mg.visitVarInsn(Opcodes.ASTORE, 1);
-            mg.visitVarInsn(Opcodes.ALOAD, 1);
-            mg.throwException();
-
-            // catch declared exceptions and rethrow it...
-            for (Type exceptionType : exceptionsToCatch)
-            {
-                if 
(exceptionType.getClassName().equals(Throwable.class.getName()))
-                {
-                    throwableCatched = true;
-                }
-                mg.visitTryCatchBlock(tryBlockStart, tryBlockEnd, rethrow, 
exceptionType.getInternalName());
-            }
-        }
-
-        // if throwable isn't alreached cachted, catch it and wrap it with an 
UndeclaredThrowableException and throw it
-        if (!throwableCatched)
-        {
-            Type uteType = Type.getType(UndeclaredThrowableException.class);
-            Label wrapAndRethrow = mg.mark();
-
-            mg.visitVarInsn(Opcodes.ASTORE, 1);
-            mg.newInstance(uteType);
-            mg.dup();
-            mg.visitVarInsn(Opcodes.ALOAD, 1);
-            mg.invokeConstructor(uteType,
-                    Method.getMethod("void <init>(java.lang.Throwable)"));
-            mg.throwException();
-
-            mg.visitTryCatchBlock(tryBlockStart, tryBlockEnd, wrapAndRethrow, 
Type.getInternalName(Throwable.class));
-        }
-
-        // finish the method
-        mg.endMethod();
-        mg.visitMaxs(10, 10);
-        mg.visitEnd();
-    }
-
-    /**
-     * Generates:
-     * <pre>
-     * Method method =
-     *      method.getDeclaringClass().getMethod("methodName", new Class[] { 
args... });
-     * </pre>
-     * @param mg
-     * @param method
-     * @param methodType
-     */
-    private static void loadCurrentMethod(GeneratorAdapter mg, 
java.lang.reflect.Method method, Type methodType)
-    {
-        mg.push(Type.getType(method.getDeclaringClass()));
-        mg.push(method.getName());
-
-        // create the Class[]
-        mg.push(methodType.getArgumentTypes().length);
-        mg.newArray(TYPE_CLASS);
-
-        // push parameters into array
-        for (int i = 0; i < methodType.getArgumentTypes().length; i++)
-        {
-            // keep copy of array on stack
-            mg.dup();
-
-            // push index onto stack
-            mg.push(i);
-            mg.push(methodType.getArgumentTypes()[i]);
-            mg.arrayStore(TYPE_CLASS);
-        }
-
-        // invoke getMethod() with the method name and the array of types
-        mg.invokeVirtual(TYPE_CLASS, 
Method.getMethod("java.lang.reflect.Method getDeclaredMethod(String, 
Class[])"));
-    }
-
-    /**
-     * Defines a new Object[] and push all method argmuments into the array.
-     *
-     * @param mg
-     * @param method
-     * @param methodType
-     */
-    private static void loadArguments(GeneratorAdapter mg, 
java.lang.reflect.Method method, Type methodType)
-    {
-        // create the Object[]
-        mg.push(methodType.getArgumentTypes().length);
-        mg.newArray(TYPE_OBJECT);
-
-        // push parameters into array
-        for (int i = 0; i < methodType.getArgumentTypes().length; i++)
-        {
-            // keep copy of array on stack
-            mg.dup();
-
-            // push index onto stack
-            mg.push(i);
-
-            mg.loadArg(i);
-            mg.valueOf(methodType.getArgumentTypes()[i]);
-            mg.arrayStore(TYPE_OBJECT);
-        }
-    }
-
-    private static Type[] getTypes(Class<?>... src)
-    {
-        Type[] result = new Type[src.length];
-        for (int i = 0; i < result.length; i++)
-        {
-            result[i] = Type.getType(src[i]);
-        }
-        return result;
-    }
-
-    /**
-     * Adapted from http://asm.ow2.org/doc/faq.html#Q5
-     *
-     * @param b
-     *
-     * @return Class<?>
-     */
-    private static Class<?> loadClass(ClassLoader loader, String className, 
byte[] b)
-    {
-        // override classDefine (as it is protected) and define the class.
-        try
-        {
-            java.lang.reflect.Method method = 
ClassLoader.class.getDeclaredMethod(
-                    "defineClass", String.class, byte[].class, int.class, 
int.class);
-
-            // protected method invocation
-            boolean accessible = method.isAccessible();
-            if (!accessible)
-            {
-                method.setAccessible(true);
-            }
-            try
-            {
-                return (Class<?>) method.invoke(loader, className, b, 
Integer.valueOf(0), Integer.valueOf(b.length));
-            }
-            finally
-            {
-                if (!accessible)
-                {
-                    method.setAccessible(false);
-                }
-            }
-        }
-        catch (Exception e)
-        {
-            throw e instanceof RuntimeException ? ((RuntimeException) e) : new 
RuntimeException(e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/CallSuperManualInvocationHandler.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/CallSuperManualInvocationHandler.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/CallSuperManualInvocationHandler.java
deleted file mode 100644
index 2f87849..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/CallSuperManualInvocationHandler.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.partialbean.impl.proxy;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import javax.enterprise.inject.Typed;
-import 
org.apache.deltaspike.partialbean.impl.interception.AbstractManualInvocationHandler;
-
-@Typed
-public class CallSuperManualInvocationHandler extends 
AbstractManualInvocationHandler
-{
-    private static final CallSuperManualInvocationHandler INSTANCE = new 
CallSuperManualInvocationHandler();
-    
-    public static Object staticInvoke(Object proxy, Method method, Object[] 
parameters) throws Throwable
-    {
-        return INSTANCE.invoke(proxy, method, parameters);
-    }
-    
-    @Override
-    protected Object proceedOriginal(Object proxy, Method method, Object[] 
parameters) throws Throwable
-    {
-        try
-        {
-            Method superAccessorMethod = 
PartialBeanProxyFactory.getSuperAccessorMethod(proxy, method);
-            return superAccessorMethod.invoke(proxy, parameters);
-        }
-        catch (InvocationTargetException e)
-        {
-            // rethrow original exception
-            throw e.getCause();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/PartialBeanProxy.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/PartialBeanProxy.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/PartialBeanProxy.java
deleted file mode 100644
index 9ec50c5..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/PartialBeanProxy.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.partialbean.impl.proxy;
-
-import java.lang.reflect.InvocationHandler;
-
-public interface PartialBeanProxy
-{
-    void setRedirectInvocationHandler(InvocationHandler 
redirectInvocationHandler);
-
-    InvocationHandler getRedirectInvocationHandler();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/PartialBeanProxyFactory.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/PartialBeanProxyFactory.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/PartialBeanProxyFactory.java
deleted file mode 100644
index e0f971f..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/PartialBeanProxyFactory.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * 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.partialbean.impl.proxy;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import javax.enterprise.inject.Typed;
-import javax.interceptor.InterceptorBinding;
-import org.apache.deltaspike.core.util.ClassUtils;
-
-@Typed
-public abstract class PartialBeanProxyFactory
-{
-    private static final String CLASSNAME_SUFFIX = "$$DSPartialBeanProxy";
-    private static final String SUPER_ACCESSOR_METHOD_SUFFIX = "$super";
-
-    private PartialBeanProxyFactory()
-    {
-        // prevent instantiation
-    }
-
-    public static <T> Class<T> getProxyClass(Class<T> targetClass,
-            Class<? extends InvocationHandler> invocationHandlerClass)
-    {
-        Class<T> proxyClass = 
ClassUtils.tryToLoadClassForName(constructProxyClassName(targetClass), 
targetClass);
-        if (proxyClass == null)
-        {
-            proxyClass = createProxyClass(targetClass.getClassLoader(), 
targetClass, invocationHandlerClass);
-        }
-
-        return proxyClass;
-    }
-
-    private static synchronized <T> Class<T> createProxyClass(ClassLoader 
classLoader, Class<T> targetClass,
-            Class<? extends InvocationHandler> invocationHandlerClass)
-    {
-        Class<T> proxyClass = 
ClassUtils.tryToLoadClassForName(constructProxyClassName(targetClass), 
targetClass);
-        if (proxyClass == null)
-        {
-            ArrayList<Method> redirectMethods = new ArrayList<Method>();
-            ArrayList<Method> interceptionMethods = new ArrayList<Method>();
-            collectMethods(targetClass, redirectMethods, interceptionMethods);
-
-            // check if a interceptor is defined on class level. if yes -> 
proxy all public methods
-            if 
(!containsInterceptorBinding(targetClass.getDeclaredAnnotations()))
-            {
-                // loop every method and check if a interceptor is defined on 
the method -> otherwise don't proxy
-                Iterator<Method> iterator = interceptionMethods.iterator();
-                while (iterator.hasNext())
-                {
-                    Method method = iterator.next();
-                    if 
(!containsInterceptorBinding(method.getDeclaredAnnotations()))
-                    {
-                        iterator.remove();
-                    }
-                }
-            }
-            
-            proxyClass = AsmProxyClassGenerator.generateProxyClass(classLoader,
-                    targetClass,
-                    invocationHandlerClass,
-                    CLASSNAME_SUFFIX,
-                    SUPER_ACCESSOR_METHOD_SUFFIX,
-                    redirectMethods.toArray(new 
Method[redirectMethods.size()]),
-                    interceptionMethods.toArray(new 
Method[interceptionMethods.size()]));
-        }
-
-        return proxyClass;
-    }
-
-    // TODO stereotypes
-    private static boolean containsInterceptorBinding(Annotation[] annotations)
-    {
-        for (Annotation annotation : annotations)
-        {
-            if 
(annotation.annotationType().isAnnotationPresent(InterceptorBinding.class))
-            {
-                return true;
-            }
-        }
-        
-        return false;
-    }
-    
-    private static String constructProxyClassName(Class<?> clazz)
-    {
-        return clazz.getCanonicalName() + CLASSNAME_SUFFIX;
-    }
-
-    private static String constructSuperAccessorMethodName(Method method)
-    {
-        return method.getName() + SUPER_ACCESSOR_METHOD_SUFFIX;
-    }
-    
-    public static Method getSuperAccessorMethod(Object proxy, Method method) 
throws NoSuchMethodException
-    {
-        return proxy.getClass().getMethod(
-                constructSuperAccessorMethodName(method),
-                method.getParameterTypes());
-    }
-    
-    /**
-     * Checks if the given class is DS proxy class.
-     *
-     * @param clazz
-     * @return
-     */
-    public static boolean isProxyClass(Class<?> clazz)
-    {
-        return clazz.getName().endsWith(CLASSNAME_SUFFIX);
-    }
-
-    private static void collectMethods(Class<?> clazz,
-            ArrayList<Method> redirectMethods,
-            ArrayList<Method> interceptionMethods)
-    {
-        List<Method> methods = new ArrayList<Method>();
-        for (Method method : clazz.getDeclaredMethods())
-        {
-            if (!ignoreMethod(method, methods))
-            {
-                methods.add(method);
-            }
-        }
-        for (Method method : clazz.getMethods())
-        {
-            if (!ignoreMethod(method, methods))
-            {
-                methods.add(method);
-            }
-        }
-
-        // collect methods from abstract super classes...
-        Class currentSuperClass = clazz.getSuperclass();
-        while (currentSuperClass != null)
-        {
-            if (Modifier.isAbstract(currentSuperClass.getModifiers()))
-            {
-                for (Method method : currentSuperClass.getDeclaredMethods())
-                {
-                    if (!ignoreMethod(method, methods))
-                    {
-                        methods.add(method);
-                    }
-                }
-                for (Method method : currentSuperClass.getMethods())
-                {
-                    if (!ignoreMethod(method, methods))
-                    {
-                        methods.add(method);
-                    }
-                }
-            }
-            currentSuperClass = currentSuperClass.getSuperclass();
-        }
-
-        // sort out somewhere implemented abstract methods
-        Class currentClass = clazz;
-        while (currentClass != null)
-        {
-            Iterator<Method> methodIterator = methods.iterator();
-            while (methodIterator.hasNext())
-            {
-                Method method = methodIterator.next();
-                if (Modifier.isAbstract(method.getModifiers()))
-                {
-                    try
-                    {
-                        Method foundMethod = 
currentClass.getMethod(method.getName(), method.getParameterTypes());
-                        // if method is implementent in the current class -> 
remove it
-                        if (foundMethod != null && 
!Modifier.isAbstract(foundMethod.getModifiers()))
-                        {
-                            methodIterator.remove();
-                        }
-                    }
-                    catch (Exception e)
-                    {
-                        // ignore...
-                    }
-                }
-            }
-
-            currentClass = currentClass.getSuperclass();
-        }
-
-        Iterator<Method> it = methods.iterator();
-        while (it.hasNext())
-        {
-            Method method = it.next();
-
-            if (Modifier.isAbstract(method.getModifiers()))
-            {
-                redirectMethods.add(method);
-            }
-            else if (Modifier.isPublic(method.getModifiers()) && 
!Modifier.isFinal(method.getModifiers()))
-            {
-                interceptionMethods.add(method);
-            }
-        }
-
-    }
-
-    private static boolean ignoreMethod(Method method, List<Method> methods)
-    {
-        // we have no interest in generics bridge methods
-        if (method.isBridge())
-        {
-            return true;
-        }
-
-        // we do not proxy finalize()
-        if ("finalize".equals(method.getName()))
-        {
-            return true;
-        }
-
-        // same method...
-        if (methods.contains(method))
-        {
-            return true;
-        }
-
-        // check if a method with the same signature is already available
-        for (Method currentMethod : methods)
-        {
-            if (hasSameSignature(currentMethod, method))
-            {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    private static boolean hasSameSignature(Method a, Method b)
-    {
-        return a.getName().equals(b.getName())
-                && a.getReturnType().equals(b.getReturnType())
-                && Arrays.equals(a.getParameterTypes(), b.getParameterTypes());
-    }
-}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/RedirectManualInvocationHandler.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/RedirectManualInvocationHandler.java
 
b/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/RedirectManualInvocationHandler.java
deleted file mode 100644
index c8b553b..0000000
--- 
a/deltaspike/modules/partial-bean/impl/src/main/java/org/apache/deltaspike/partialbean/impl/proxy/RedirectManualInvocationHandler.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.partialbean.impl.proxy;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import javax.enterprise.inject.Typed;
-import 
org.apache.deltaspike.partialbean.impl.interception.AbstractManualInvocationHandler;
-
-@Typed
-public class RedirectManualInvocationHandler extends 
AbstractManualInvocationHandler
-{
-    private static final RedirectManualInvocationHandler INSTANCE = new 
RedirectManualInvocationHandler();
-    
-    public static Object staticInvoke(Object proxy, Method method, Object[] 
parameters) throws Throwable
-    {
-        return INSTANCE.invoke(proxy, method, parameters);
-    }
-    
-    @Override
-    protected Object proceedOriginal(Object proxy, Method method, Object[] 
parameters) throws Throwable
-    {
-        InvocationHandler redirectInvocationHandler = ((PartialBeanProxy) 
proxy).getRedirectInvocationHandler();
-        return redirectInvocationHandler.invoke(proxy, method, parameters);
-    }
-}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/fcf4d77d/deltaspike/modules/partial-bean/impl/src/test/java/org/apache/deltaspike/test/core/api/partialbean/util/ArchiveUtils.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/partial-bean/impl/src/test/java/org/apache/deltaspike/test/core/api/partialbean/util/ArchiveUtils.java
 
b/deltaspike/modules/partial-bean/impl/src/test/java/org/apache/deltaspike/test/core/api/partialbean/util/ArchiveUtils.java
index c75cc77..2b760d5 100644
--- 
a/deltaspike/modules/partial-bean/impl/src/test/java/org/apache/deltaspike/test/core/api/partialbean/util/ArchiveUtils.java
+++ 
b/deltaspike/modules/partial-bean/impl/src/test/java/org/apache/deltaspike/test/core/api/partialbean/util/ArchiveUtils.java
@@ -44,13 +44,6 @@ public abstract class ArchiveUtils
                 "ds-core_and_partial-bean");
         result.addAll(Arrays.asList(temp));
 
-        temp = ShrinkWrapArchiveUtil.getArchives(null,
-                "META-INF/MANIFEST.MF",
-                new String[] { "org.objectweb.asm" },
-                new String[] { },
-                "asm");
-        result.addAll(Arrays.asList(temp));
-
         return result.toArray(new JavaArchive[result.size()]);
     }
 }

Reply via email to