[jboss-cvs] JBossAS SVN: r107546 - in projects/interceptors/trunk: jboss-interceptor/src/main/java/org/jboss/interceptor/proxy and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Aug 11 23:47:59 EDT 2010


Author: marius.bogoevici
Date: 2010-08-11 23:47:59 -0400 (Wed, 11 Aug 2010)
New Revision: 107546

Added:
   projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/
   projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInterceptor.java
   projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContext.java
   projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextImpl.java
   projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextTest.java
   projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/Service.java
Modified:
   projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/proxy/InterceptorProxyCreator.java
   projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/proxy/InterceptorProxyCreatorImpl.java
   projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/reader/InterceptorMetadataUtils.java
   projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/proxy/InterceptionTestCase.java
   projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/proxy/SubclassingInterceptionTestCase.java
   projects/interceptors/trunk/pom.xml
Log:
Test custom invocation context + fixes

Modified: projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/proxy/InterceptorProxyCreator.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/proxy/InterceptorProxyCreator.java	2010-08-12 03:01:04 UTC (rev 107545)
+++ projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/proxy/InterceptorProxyCreator.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -27,8 +27,8 @@
 public interface InterceptorProxyCreator
 {
 
-   <T> MethodHandler createMethodHandler(Object target, ClassMetadata<T> proxyClass, InterceptorMetadata interceptorMetadata);
+   <T> MethodHandler createMethodHandler(Object target, ClassMetadata<T> proxyClass);
 
-   <T> MethodHandler createSubclassingMethodHandler(Object targetInstance, ClassMetadata<T> proxyClass, InterceptorMetadata interceptorMetadata);
+   <T> MethodHandler createSubclassingMethodHandler(Object targetInstance, ClassMetadata<T> proxyClass);
 
 }

Modified: projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/proxy/InterceptorProxyCreatorImpl.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/proxy/InterceptorProxyCreatorImpl.java	2010-08-12 03:01:04 UTC (rev 107545)
+++ projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/proxy/InterceptorProxyCreatorImpl.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -23,6 +23,7 @@
 import javassist.util.proxy.MethodHandler;
 import javassist.util.proxy.ProxyObject;
 import org.jboss.interceptor.proxy.javassist.CompositeHandler;
+import org.jboss.interceptor.reader.InterceptorMetadataUtils;
 import org.jboss.interceptor.spi.context.InvocationContextFactory;
 import org.jboss.interceptor.spi.instance.InterceptorInstantiator;
 import org.jboss.interceptor.spi.metadata.ClassMetadata;
@@ -50,10 +51,10 @@
    }
 
 
-   public <T> T createProxyFromClass(ClassMetadata<T> proxifiedClass, Class<?>[] constructorTypes, Object[] constructorArguments, InterceptorMetadata interceptorClassMetadata)
+   public <T> T createProxyFromClass(ClassMetadata<T> proxifiedClass, Class<?>[] constructorTypes, Object[] constructorArguments)
    {
       T instance = createAdvisedSubclassInstance(proxifiedClass, constructorTypes, constructorArguments);
-      MethodHandler interceptorMethodHandler = createSubclassingMethodHandler(instance, proxifiedClass, interceptorClassMetadata);
+      MethodHandler interceptorMethodHandler = createSubclassingMethodHandler(instance, proxifiedClass);
       ((ProxyObject)instance).setHandler(new CompositeHandler(Arrays
             .asList(new MethodHandler[]{interceptorMethodHandler})));
       return instance;
@@ -106,14 +107,14 @@
       }
    }
 
-   public <T> MethodHandler createMethodHandler(Object target, ClassMetadata<T> proxyClass, InterceptorMetadata interceptorMetadata)
+   public <T> MethodHandler createMethodHandler(Object target, ClassMetadata<T> proxyClass)
    {
-      return new InterceptorMethodHandler(target, interceptorMetadata, interceptionModel, interceptorInstantiator, invocationContextFactory,  true);
+      return new InterceptorMethodHandler(target, InterceptorMetadataUtils.readMetadataForTargetClass(proxyClass), interceptionModel, interceptorInstantiator, invocationContextFactory,  true);
    }
 
-    public <T> MethodHandler createSubclassingMethodHandler(Object targetInstance, ClassMetadata<T> proxyClass, InterceptorMetadata interceptorMetadata)
+    public <T> MethodHandler createSubclassingMethodHandler(Object targetInstance, ClassMetadata<T> proxyClass)
     {
-       return new InterceptorMethodHandler(targetInstance,  interceptorMetadata, interceptionModel, interceptorInstantiator, invocationContextFactory, false);
+       return new InterceptorMethodHandler(targetInstance,  InterceptorMetadataUtils.readMetadataForTargetClass(proxyClass), interceptionModel, interceptorInstantiator, invocationContextFactory, false);
     }
 
 

Modified: projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/reader/InterceptorMetadataUtils.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/reader/InterceptorMetadataUtils.java	2010-08-12 03:01:04 UTC (rev 107545)
+++ projects/interceptors/trunk/jboss-interceptor/src/main/java/org/jboss/interceptor/reader/InterceptorMetadataUtils.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -80,7 +80,7 @@
             return false;
          }
 
-         if (parameterTypes.length == 1 && !InvocationContext.class.equals(parameterTypes[0]))
+         if (parameterTypes.length == 1 && !InvocationContext.class.isAssignableFrom(parameterTypes[0]))
          {
             if (LOG.isDebugEnabled())
             {
@@ -113,7 +113,7 @@
             return false;
          }
 
-         if (!InvocationContext.class.equals(parameterTypes[0]))
+         if (!InvocationContext.class.isAssignableFrom(parameterTypes[0]))
          {
             if (LOG.isDebugEnabled())
             {

Added: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInterceptor.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInterceptor.java	                        (rev 0)
+++ projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInterceptor.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -0,0 +1,17 @@
+package org.jboss.interceptors.customInvocationContext;
+
+import javax.interceptor.AroundInvoke;
+
+public class CustomInterceptor
+{
+   
+   static int invocationCount = 0;
+   
+   @AroundInvoke
+   public Object aroundInvoke(CustomInvocationContext context) throws Exception
+   {
+      invocationCount ++;
+      return context.proceed();
+   }
+   
+}


Property changes on: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInterceptor.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContext.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContext.java	                        (rev 0)
+++ projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContext.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -0,0 +1,29 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and/or its affiliates, and individual
+ * contributors by the @authors tag. See the copyright.txt in the
+ * distribution for a full listing of individual contributors.
+ *
+ * Licensed 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.jboss.interceptors.customInvocationContext;
+
+import javax.interceptor.InvocationContext;
+
+/**
+ * 
+ * @author Marius Bogoevici
+ */
+public interface CustomInvocationContext extends InvocationContext
+{
+
+   public boolean isCustom();
+}


Property changes on: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContext.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextImpl.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextImpl.java	                        (rev 0)
+++ projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextImpl.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -0,0 +1,27 @@
+package org.jboss.interceptors.customInvocationContext;
+
+import java.lang.reflect.Method;
+
+import org.jboss.interceptor.proxy.InterceptorInvocationContext;
+import org.jboss.interceptor.spi.context.InterceptionChain;
+
+public class CustomInvocationContextImpl  extends InterceptorInvocationContext implements CustomInvocationContext
+{
+
+   public CustomInvocationContextImpl(InterceptionChain interceptionChain, Object target, Method targetMethod, Object timer)
+   {
+      super(interceptionChain, target, targetMethod, timer);
+   }
+
+   public CustomInvocationContextImpl(InterceptionChain interceptionChain, Object target, Method targetMethod, Object[] parameters)
+   {
+      super(interceptionChain, target, targetMethod, parameters);
+   }
+
+   public boolean isCustom()
+   {
+      // TODO Auto-generated method stub
+      return true;
+   }
+   
+}


Property changes on: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextImpl.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextTest.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextTest.java	                        (rev 0)
+++ projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextTest.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -0,0 +1,59 @@
+package org.jboss.interceptors.customInvocationContext;
+
+import java.awt.im.InputMethodRequests;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+import javassist.util.proxy.MethodHandler;
+
+import javax.interceptor.InvocationContext;
+
+import junit.framework.Assert;
+
+import org.jboss.interceptor.builder.InterceptionModelBuilder;
+import org.jboss.interceptor.proxy.DirectClassInterceptorInstantiator;
+import org.jboss.interceptor.proxy.InterceptorProxyCreator;
+import org.jboss.interceptor.proxy.InterceptorProxyCreatorImpl;
+import org.jboss.interceptor.reader.InterceptorMetadataUtils;
+import org.jboss.interceptor.reader.ReflectiveClassMetadata;
+import org.jboss.interceptor.spi.context.InterceptionChain;
+import org.jboss.interceptor.spi.context.InvocationContextFactory;
+import org.jboss.interceptor.spi.instance.InterceptorInstantiator;
+import org.jboss.interceptor.spi.metadata.ClassMetadata;
+import org.jboss.interceptor.spi.model.InterceptionModel;
+import org.junit.Test;
+
+public class CustomInvocationContextTest
+{
+   
+   @Test
+   public void testCustomInvocationContextSupported()
+   {
+      
+      CustomInterceptor.invocationCount = 0;
+      InterceptorInstantiator<ClassMetadata<?>, Object> interceptorInstantiator = new DirectClassInterceptorInstantiator();
+      InvocationContextFactory invocationContextFactory = new InvocationContextFactory()
+      {
+         
+         public InvocationContext newInvocationContext(InterceptionChain chain, Object o, Method method, Object[] args)
+         {
+            // TODO Auto-generated method stub
+            return new CustomInvocationContextImpl(chain, o, method, args);
+         }
+      };
+      
+      InterceptionModelBuilder<ClassMetadata<?>, ClassMetadata> builder = InterceptionModelBuilder.<ClassMetadata<?>,ClassMetadata>newBuilderFor(ReflectiveClassMetadata.of(Service.class), ClassMetadata.class);
+      builder.interceptAll().with(ReflectiveClassMetadata.of(CustomInterceptor.class));
+      InterceptionModel<ClassMetadata<?>, ClassMetadata> interceptionModel = builder.build();
+      InterceptorProxyCreatorImpl interceptorProxyCreator = new InterceptorProxyCreatorImpl(interceptorInstantiator, invocationContextFactory, interceptionModel);
+      
+      Service serviceInstance = interceptorProxyCreator.createProxyFromClass(ReflectiveClassMetadata.of(Service.class), new Class<?>[]{}, new Object[]{} );
+      
+      serviceInstance.invoke();
+      
+      Assert.assertEquals(1, CustomInterceptor.invocationCount);
+      Assert.assertTrue(serviceInstance.isInvoked());
+      
+   }
+
+}


Property changes on: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/CustomInvocationContextTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/Service.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/Service.java	                        (rev 0)
+++ projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/Service.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -0,0 +1,17 @@
+package org.jboss.interceptors.customInvocationContext;
+
+public class Service
+{
+
+   boolean invoked = false;
+   
+   public void invoke()
+   {
+      invoked = true;
+   }
+   
+   public boolean isInvoked()
+   {
+      return invoked;
+   }
+}


Property changes on: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/customInvocationContext/Service.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/proxy/InterceptionTestCase.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/proxy/InterceptionTestCase.java	2010-08-12 03:01:04 UTC (rev 107545)
+++ projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/proxy/InterceptionTestCase.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -464,7 +464,7 @@
       InterceptorProxyCreatorImpl ipc = new InterceptorProxyCreatorImpl(interceptionHandlerFactory, contextFactory, interceptionModelRegistry.get(targetClass));
       InterceptorMetadata classMetadata = InterceptorMetadataUtils.readMetadataForTargetClass(ReflectiveClassMetadata.of(targetClass));
       ClassMetadata<? extends T> targetClassMetadata = ReflectiveClassMetadata.of(targetClass);
-      MethodHandler methodHandler = ipc.createMethodHandler(instance, targetClassMetadata, classMetadata);
+      MethodHandler methodHandler = ipc.createMethodHandler(instance, targetClassMetadata);
       Class<? extends T> proxyClassWithHandler = InterceptionUtils.createProxyClassWithHandler(targetClassMetadata, methodHandler);
       return ipc.createProxyInstance(proxyClassWithHandler, methodHandler);
    }

Modified: projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/proxy/SubclassingInterceptionTestCase.java
===================================================================
--- projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/proxy/SubclassingInterceptionTestCase.java	2010-08-12 03:01:04 UTC (rev 107545)
+++ projects/interceptors/trunk/jboss-interceptor/src/test/java/org/jboss/interceptors/proxy/SubclassingInterceptionTestCase.java	2010-08-12 03:47:59 UTC (rev 107546)
@@ -448,7 +448,7 @@
       InterceptionModel<ClassMetadata<?>, ClassMetadata> classMetadataInterceptionModel =  interceptionModelRegistry.get(targetClass);
       invocationContextFactory = new DefaultInvocationContextFactory();
       InterceptorProxyCreatorImpl ipc = new InterceptorProxyCreatorImpl(interceptionHandlerFactory, invocationContextFactory, classMetadataInterceptionModel);
-      return ipc.createProxyFromClass(ReflectiveClassMetadata.of((Class<? extends T>) targetClass), new Class<?>[]{String.class}, args, InterceptorMetadataUtils.readMetadataForTargetClass(ReflectiveClassMetadata.of((Class<? extends T>) targetClass)));
+      return ipc.createProxyFromClass(ReflectiveClassMetadata.of((Class<? extends T>) targetClass), new Class<?>[]{String.class}, args);
    }
 
 }
\ No newline at end of file

Modified: projects/interceptors/trunk/pom.xml
===================================================================
--- projects/interceptors/trunk/pom.xml	2010-08-12 03:01:04 UTC (rev 107545)
+++ projects/interceptors/trunk/pom.xml	2010-08-12 03:47:59 UTC (rev 107546)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.jboss</groupId>
     <artifactId>jboss-parent</artifactId>
-    <version>4</version>
+    <version>5</version>
   </parent>
 
   <groupId>org.jboss.interceptor</groupId>



More information about the jboss-cvs-commits mailing list