[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