svn commit: r1520882 - /commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java
Author: mbenson Date: Sun Sep 8 17:21:25 2013 New Revision: 1520882 URL: http://svn.apache.org/r1520882 Log: generics Modified: commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java Modified: commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java?rev=1520882&r1=1520881&r2=1520882&view=diff == --- commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java (original) +++ commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java Sun Sep 8 17:21:25 2013 @@ -226,11 +226,10 @@ public abstract class AbstractProxyFacto proxy.illegalArgument(); } -@SuppressWarnings("unchecked") @Test public void testInterfaceHierarchies() { -final SortedSet set = factory.createDelegatorProxy(new ConstantProvider(new TreeSet()), SortedSet.class); +final SortedSet set = factory.createDelegatorProxy(new ConstantProvider>(new TreeSet()), SortedSet.class); set.add("Hello"); }
svn commit: r1520883 - in /commons/proper/proxy/branches/version-2.0-work/core/src: main/java/org/apache/commons/proxy2/interceptor/ test/java/org/apache/commons/proxy2/interceptor/
Author: mbenson Date: Sun Sep 8 17:34:06 2013 New Revision: 1520883 URL: http://svn.apache.org/r1520883 Log: warnings Modified: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ObjectProviderInterceptor.java commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/InterceptorUtilsTest.java Modified: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ObjectProviderInterceptor.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ObjectProviderInterceptor.java?rev=1520883&r1=1520882&r2=1520883&view=diff == --- commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ObjectProviderInterceptor.java (original) +++ commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ObjectProviderInterceptor.java Sun Sep 8 17:34:06 2013 @@ -28,11 +28,13 @@ import org.apache.commons.proxy2.ObjectP */ public class ObjectProviderInterceptor implements Interceptor { + private static final long serialVersionUID = 1L; + //-- // Fields //-- -private final ObjectProvider provider; + private final ObjectProvider provider; //-- // Constructors Modified: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java?rev=1520883&r1=1520882&r2=1520883&view=diff == --- commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java (original) +++ commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java Sun Sep 8 17:34:06 2013 @@ -23,11 +23,13 @@ import org.apache.commons.proxy2.ObjectP public class ThrowingInterceptor implements Interceptor { + private static final long serialVersionUID = 1L; + //-- // Fields //-- -private final ObjectProvider provider; + private final ObjectProvider provider; //-- // Constructors Modified: commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/InterceptorUtilsTest.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/InterceptorUtilsTest.java?rev=1520883&r1=1520882&r2=1520883&view=diff == --- commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/InterceptorUtilsTest.java (original) +++ commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/InterceptorUtilsTest.java Sun Sep 8 17:34:06 2013 @@ -22,11 +22,8 @@ import org.apache.commons.proxy2.Invocat import org.apache.commons.proxy2.provider.ObjectProviderUtils; import org.apache.commons.proxy2.util.AbstractTestCase; import org.apache.commons.proxy2.util.Echo; -import org.apache.commons.proxy2.util.MockInvocation; import org.junit.Test; -import java.lang.reflect.Method; - import static org.junit.Assert.*; public class InterceptorUtilsTest extends AbstractTestCase
svn commit: r1520884 - /commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java
Author: mbenson Date: Sun Sep 8 17:34:37 2013 New Revision: 1520884 URL: http://svn.apache.org/r1520884 Log: reenable StubInterceptorBuilderTest Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java?rev=1520884&r1=1520883&r2=1520884&view=diff == --- commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java (original) +++ commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java Sun Sep 8 17:34:37 2013 @@ -18,14 +18,12 @@ package org.apache.commons.proxy2.stub; import org.apache.commons.proxy2.Interceptor; -import org.apache.commons.proxy2.ProxyFactory; -import org.apache.commons.proxy2.cglib.CglibProxyFactory; import org.apache.commons.proxy2.invoker.NullInvoker; -import org.apache.commons.proxy2.provider.ObjectProviderUtils; import org.junit.Before; import org.junit.Test; -import java.util.Arrays; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import static org.junit.Assert.*; @@ -57,43 +55,43 @@ public class StubInterceptorBuilderTest StubInterface.class); } -//@Test -//public void testWithNestedAnnotations() -//{ -//Interceptor interceptor = builder.trainFor(RetentionWrapper.class, new Trainer() -//{ -//@Override -//protected void train(RetentionWrapper trainee) -//{ -// -//when(trainee.value()).thenStub(new Trainer() -//{ -//@Override -//protected void train(Retention trainee) -//{ -// when(trainee.value()).thenReturn(RetentionPolicy.RUNTIME); -//} -//}); -//} -//}).build(); -//RetentionWrapper wrapper = proxyFactory.createInterceptorProxy(proxyFactory.createInvokerProxy(NullInvoker.INSTANCE), interceptor, RetentionWrapper.class); -//assertNotNull(wrapper.value()); -//assertEquals(RetentionPolicy.RUNTIME, wrapper.value().value()); -//} -// -//@Test -//public void testWithSimpleAnnotations() -//{ -//Interceptor interceptor = builder.trainFor(Retention.class, new Trainer() -//{ -//@Override -//protected void train(Retention trainee) -//{ -//when(trainee.value()).thenReturn(RetentionPolicy.RUNTIME); -//} -//}).build(); -//Retention wrapper = proxyFactory.createInterceptorProxy(proxyFactory.createInvokerProxy(NullInvoker.INSTANCE), interceptor, Retention.class); -//assertEquals(RetentionPolicy.RUNTIME, wrapper.value()); -//} +@Test +public void testWithNestedAnnotations() +{ +Interceptor interceptor = builder.train(new Trainer() +{ +@Override +protected void train(RetentionWrapper trainee) +{ + +when(trainee.value()).thenStub(new Trainer() +{ +@Override +protected void train(Retention trainee) +{ + when(trainee.value()).thenReturn(RetentionPolicy.RUNTIME); +} +}); +} +}).build(); +RetentionWrapper wrapper = proxyFactory.createInterceptorProxy(proxyFactory.createInvokerProxy(NullInvoker.INSTANCE), interceptor, RetentionWrapper.class); +assertNotNull(wrapper.value()); +assertEquals(RetentionPolicy.RUNTIME, wrapper.value().value()); +} + +@Test +public void testWithSimpleAnnotations() +{ +Interceptor interceptor = builder.train(new Trainer() +{ +@Override +protected void train(Retention trainee) +{ +when(trainee.value()).thenReturn(RetentionPolicy.RUNTIME); +} +}).build(); +Retention wrapper = proxyFactory.createInterceptorProxy(proxyFactory.createInvokerProxy(NullInvoker.INSTANCE), interceptor, Retention.class); +assertEquals(RetentionPolicy.RUNTIME, wrapper.value()); +} }
svn commit: r1520885 - /commons/proper/proxy/branches/version-2.0-work/pom.xml
Author: mbenson Date: Sun Sep 8 17:38:50 2013 New Revision: 1520885 URL: http://svn.apache.org/r1520885 Log: developers/contributors Modified: commons/proper/proxy/branches/version-2.0-work/pom.xml Modified: commons/proper/proxy/branches/version-2.0-work/pom.xml URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/pom.xml?rev=1520885&r1=1520884&r2=1520885&view=diff == --- commons/proper/proxy/branches/version-2.0-work/pom.xml (original) +++ commons/proper/proxy/branches/version-2.0-work/pom.xml Sun Sep 8 17:38:50 2013 @@ -84,28 +84,28 @@ Matt Benson mben...@apache.org -Claim-jumper +developer -Jörg Schaible -joerg.schai...@gmx.de +Howard M. Lewis Ship +hls...@apache.org advisor +http://www.howardlewisship.com/ -Howard M. Lewis Ship -hls...@apache.org +Jörg Schaible +joerg.schai...@gmx.de advisor -http://www.howardlewisship.com/
svn commit: r1520886 - in /commons/proper/proxy/branches/version-2.0-work: ./ asm4/ asm4/src/ asm4/src/main/ asm4/src/main/java/ asm4/src/main/java/org/ asm4/src/main/java/org/apache/ asm4/src/main/ja
Author: mbenson Date: Sun Sep 8 17:45:33 2013 New Revision: 1520886 URL: http://svn.apache.org/r1520886 Log: [PROXY-22] Provide an ASM-based ProxyFactory implementation Added: commons/proper/proxy/branches/version-2.0-work/asm4/ (with props) commons/proper/proxy/branches/version-2.0-work/asm4/pom.xml commons/proper/proxy/branches/version-2.0-work/asm4/src/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java commons/proper/proxy/branches/version-2.0-work/asm4/src/main/resources/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/resources/META-INF/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/resources/META-INF/services/ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/resources/META-INF/services/org.apache.commons.proxy2.ProxyFactory commons/proper/proxy/branches/version-2.0-work/asm4/src/test/ commons/proper/proxy/branches/version-2.0-work/asm4/src/test/java/ commons/proper/proxy/branches/version-2.0-work/asm4/src/test/java/org/ commons/proper/proxy/branches/version-2.0-work/asm4/src/test/java/org/apache/ commons/proper/proxy/branches/version-2.0-work/asm4/src/test/java/org/apache/commons/ commons/proper/proxy/branches/version-2.0-work/asm4/src/test/java/org/apache/commons/proxy2/ commons/proper/proxy/branches/version-2.0-work/asm4/src/test/java/org/apache/commons/proxy2/asm4/ commons/proper/proxy/branches/version-2.0-work/asm4/src/test/java/org/apache/commons/proxy2/asm4/TestAsm4ProxyFactory.java Modified: commons/proper/proxy/branches/version-2.0-work/pom.xml Propchange: commons/proper/proxy/branches/version-2.0-work/asm4/ -- --- svn:ignore (added) +++ svn:ignore Sun Sep 8 17:45:33 2013 @@ -0,0 +1,4 @@ +.classpath +.project +.settings +target Added: commons/proper/proxy/branches/version-2.0-work/asm4/pom.xml URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/asm4/pom.xml?rev=1520886&view=auto == --- commons/proper/proxy/branches/version-2.0-work/asm4/pom.xml (added) +++ commons/proper/proxy/branches/version-2.0-work/asm4/pom.xml Sun Sep 8 17:45:33 2013 @@ -0,0 +1,54 @@ + + + +http://maven.apache.org/POM/4.0.0"; + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd";> + +commons-proxy2-parent +org.apache.commons +2.0-SNAPSHOT + +4.0.0 + +commons-proxy2-asm4 +Commons Proxy ASM4 Proxies Module + + +${project.groupId} +commons-proxy2 +${project.version} + + +org.apache.xbean +xbean-asm4-shaded + + +${project.groupId} +commons-proxy2 +${project.version} +test-jar +test + + +junit +junit +test + + + Added: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java?rev=1520886&view=auto == --- commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java (added) +++ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Sun Sep 8 17:45:33 2013 @@ -0,0 +1,1084 @@ +/* + * 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 applicabl
svn commit: r1520887 - in /commons/proper/proxy/branches/version-2.0-work: asm4/pom.xml build-tools/pom.xml cglib/pom.xml core/pom.xml javassist/pom.xml jdk/pom.xml pom.xml stub/pom.xml test/pom.xml
Author: mbenson Date: Sun Sep 8 17:46:34 2013 New Revision: 1520887 URL: http://svn.apache.org/r1520887 Log: mimetypes Modified: commons/proper/proxy/branches/version-2.0-work/asm4/pom.xml (props changed) commons/proper/proxy/branches/version-2.0-work/build-tools/pom.xml (props changed) commons/proper/proxy/branches/version-2.0-work/cglib/pom.xml (props changed) commons/proper/proxy/branches/version-2.0-work/core/pom.xml (props changed) commons/proper/proxy/branches/version-2.0-work/javassist/pom.xml (props changed) commons/proper/proxy/branches/version-2.0-work/jdk/pom.xml (props changed) commons/proper/proxy/branches/version-2.0-work/pom.xml (props changed) commons/proper/proxy/branches/version-2.0-work/stub/pom.xml (props changed) commons/proper/proxy/branches/version-2.0-work/test/pom.xml (props changed) Propchange: commons/proper/proxy/branches/version-2.0-work/asm4/pom.xml -- svn:mime-type = text/xml Propchange: commons/proper/proxy/branches/version-2.0-work/build-tools/pom.xml -- svn:mime-type = text/xml Propchange: commons/proper/proxy/branches/version-2.0-work/cglib/pom.xml -- svn:mime-type = text/xml Propchange: commons/proper/proxy/branches/version-2.0-work/core/pom.xml -- svn:mime-type = text/xml Propchange: commons/proper/proxy/branches/version-2.0-work/javassist/pom.xml -- svn:mime-type = text/xml Propchange: commons/proper/proxy/branches/version-2.0-work/jdk/pom.xml -- svn:mime-type = text/xml Propchange: commons/proper/proxy/branches/version-2.0-work/pom.xml -- svn:mime-type = text/xml Propchange: commons/proper/proxy/branches/version-2.0-work/stub/pom.xml -- svn:mime-type = text/xml Propchange: commons/proper/proxy/branches/version-2.0-work/test/pom.xml -- svn:mime-type = text/xml
svn commit: r1520889 - /commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
Author: mbenson Date: Sun Sep 8 18:09:03 2013 New Revision: 1520889 URL: http://svn.apache.org/r1520889 Log: use numbered classnames instead of superclass-based ones Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java?rev=1520889&r1=1520888&r2=1520889&view=diff == --- commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java (original) +++ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Sun Sep 8 18:09:03 2013 @@ -45,6 +45,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantLock; public class ASM4ProxyFactory extends AbstractSubclassingProxyFactory @@ -69,6 +70,8 @@ public class ASM4ProxyFactory extends Ab private static class ProxyGenerator extends AbstractProxyClassGenerator implements Opcodes { +private static final AtomicInteger CLASS_NUMBER = new AtomicInteger(0); +private static final String CLASSNAME_PREFIX = "CommonsProxyASM4_"; private static final String HANDLER_NAME = "__handler"; private static final ReentrantLock LOCK = new ReentrantLock(); @@ -153,17 +156,7 @@ public class ASM4ProxyFactory extends Ab public static Class createProxy(final Class classToProxy, final ClassLoader cl, final Method[] methods, final Class... interfaces) { -return createProxy(classToProxy, cl, proxyName(classToProxy.getName()), methods, interfaces); -} - -private static String proxyName(final String name) -{ -final String proxy = name + "$$CommonsProxy"; -if (!proxy.startsWith("java")) -{ -return proxy; -} -return "org.apache.commons.proxy2.generated." + proxy; +return createProxy(classToProxy, cl, CLASSNAME_PREFIX + CLASS_NUMBER.incrementAndGet(), methods, interfaces); } public static byte[] generateProxy(final Class classToProxy, final String proxyName, final Method[] methods, final Class... interfaces) throws ProxyFactoryException
svn commit: r1520892 - /commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
Author: mbenson Date: Sun Sep 8 18:36:00 2013 New Revision: 1520892 URL: http://svn.apache.org/r1520892 Log: cache asm4-generated classes; do not defer to JdkProxyFactory for interface-only proxies Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java?rev=1520892&r1=1520891&r2=1520892&view=diff == --- commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java (original) +++ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Sun Sep 8 18:36:00 2013 @@ -24,6 +24,7 @@ import org.apache.commons.proxy2.ProxyUt import org.apache.commons.proxy2.exception.ProxyFactoryException; import org.apache.commons.proxy2.impl.AbstractProxyClassGenerator; import org.apache.commons.proxy2.impl.AbstractSubclassingProxyFactory; +import org.apache.commons.proxy2.impl.ProxyClassCache; import org.apache.xbean.asm4.ClassWriter; import org.apache.xbean.asm4.Label; import org.apache.xbean.asm4.MethodVisitor; @@ -36,36 +37,38 @@ import java.lang.reflect.InvocationHandl import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.lang.reflect.Proxy; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.ProtectionDomain; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantLock; public class ASM4ProxyFactory extends AbstractSubclassingProxyFactory { + private static final ProxyClassCache PROXY_CLASS_CACHE = new ProxyClassCache(new ProxyGenerator()); + @Override public T createDelegatorProxy(final ClassLoader classLoader, final ObjectProvider delegateProvider, final Class... proxyClasses) { -return ProxyGenerator.newProxyInstance(classLoader, new DelegatorInvocationHandler(delegateProvider), proxyClasses); +return createProxy(classLoader, new DelegatorInvocationHandler(delegateProvider), proxyClasses); } @Override public T createInterceptorProxy(final ClassLoader classLoader, final Object target, final Interceptor interceptor, final Class... proxyClasses) { -return ProxyGenerator.newProxyInstance(classLoader, new InterceptorInvocationHandler(target, interceptor), proxyClasses); +return createProxy(classLoader, new InterceptorInvocationHandler(target, interceptor), proxyClasses); } @Override public T createInvokerProxy(final ClassLoader classLoader, final Invoker invoker, final Class... proxyClasses) { -return ProxyGenerator.newProxyInstance(classLoader, new InvokerInvocationHandler(invoker), proxyClasses); +return createProxy(classLoader, new InvokerInvocationHandler(invoker), proxyClasses); +} + +private T createProxy(final ClassLoader classLoader, InvocationHandler invocationHandler, final Class... proxyClasses) +{ + final Class proxyClass = PROXY_CLASS_CACHE.getProxyClass(classLoader, proxyClasses); + return ProxyGenerator.constructProxy(proxyClass, invocationHandler); } private static class ProxyGenerator extends AbstractProxyClassGenerator implements Opcodes @@ -75,24 +78,46 @@ public class ASM4ProxyFactory extends Ab private static final String HANDLER_NAME = "__handler"; private static final ReentrantLock LOCK = new ReentrantLock(); -public static T newProxyInstance(final ClassLoader classLoader, final InvocationHandler handler, final Class... classes) throws ProxyFactoryException +@Override +public Class generateProxyClass(final ClassLoader classLoader, final Class... proxyClasses) { -try -{ -final Class superclass = getSuperclass(classes); -if (superclass == Object.class) -{ -@SuppressWarnings("unchecked") - final T result = (T) Proxy.newProxyInstance(classLoader, classes, handler); - return result; -} -final Class proxyClass = createProxy(superclass, classLoader, getImplementationMethods(classes), toInterfaces(classes)); -return constructProxy(proxyClass, handler); -} -catch (final Exception e) -
svn commit: r1520907 - /commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java
Author: mbenson Date: Sun Sep 8 20:03:30 2013 New Revision: 1520907 URL: http://svn.apache.org/r1520907 Log: fix Modified: commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java Modified: commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java?rev=1520907&r1=1520906&r2=1520907&view=diff == --- commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java (original) +++ commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java Sun Sep 8 20:03:30 2013 @@ -49,6 +49,11 @@ public class SuffixInterceptor implement public Object intercept( Invocation methodInvocation ) throws Throwable { -return methodInvocation.proceed() + suffix; + Object result = methodInvocation.proceed(); + if (result instanceof String) + { + result = ((String) result) + suffix; + } + return result; } }
svn commit: r1520911 - /commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
Author: mbenson Date: Sun Sep 8 20:08:55 2013 New Revision: 1520911 URL: http://svn.apache.org/r1520911 Log: get rid of unnecessary locking given cache use Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java?rev=1520911&r1=1520910&r2=1520911&view=diff == --- commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java (original) +++ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Sun Sep 8 20:08:55 2013 @@ -41,7 +41,6 @@ import java.security.AccessController; import java.security.PrivilegedAction; import java.security.ProtectionDomain; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.locks.ReentrantLock; public class ASM4ProxyFactory extends AbstractSubclassingProxyFactory { @@ -76,7 +75,6 @@ public class ASM4ProxyFactory extends Ab private static final AtomicInteger CLASS_NUMBER = new AtomicInteger(0); private static final String CLASSNAME_PREFIX = "CommonsProxyASM4_"; private static final String HANDLER_NAME = "__handler"; -private static final ReentrantLock LOCK = new ReentrantLock(); @Override public Class generateProxyClass(final ClassLoader classLoader, final Class... proxyClasses) @@ -89,25 +87,6 @@ public class ASM4ProxyFactory extends Ab try { - return classLoader.loadClass(proxyName); - } - catch (Exception e) - { - // no-op - } - - LOCK.lock(); - try - { - try - { // Try it again, another thread may have beaten this one... - return classLoader.loadClass(proxyName); - } - catch (Exception e) - { - // no-op - } - final byte[] proxyBytes = generateProxy(superclass, classFileName, implementationMethods, interfaces); return Unsafe.defineClass(classLoader, superclass, proxyName, proxyBytes); } @@ -115,9 +94,6 @@ public class ASM4ProxyFactory extends Ab { throw new ProxyFactoryException(e); } - finally { - LOCK.unlock(); - } } public static T constructProxy(final Class clazz, final java.lang.reflect.InvocationHandler handler) throws IllegalStateException
svn commit: r1520917 - /commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
Author: mbenson Date: Sun Sep 8 20:13:56 2013 New Revision: 1520917 URL: http://svn.apache.org/r1520917 Log: refactoring and scoping Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java?rev=1520917&r1=1520916&r2=1520917&view=diff == --- commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java (original) +++ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Sun Sep 8 20:13:56 2013 @@ -67,7 +67,11 @@ public class ASM4ProxyFactory extends Ab private T createProxy(final ClassLoader classLoader, InvocationHandler invocationHandler, final Class... proxyClasses) { final Class proxyClass = PROXY_CLASS_CACHE.getProxyClass(classLoader, proxyClasses); - return ProxyGenerator.constructProxy(proxyClass, invocationHandler); + final Object instance = Unsafe.allocateInstance(proxyClass); + Unsafe.setValue(ProxyGenerator.getDeclaredField(proxyClass, ProxyGenerator.HANDLER_NAME), instance, invocationHandler); + @SuppressWarnings("unchecked") + final T result = (T) instance; + return result; } private static class ProxyGenerator extends AbstractProxyClassGenerator implements Opcodes @@ -96,15 +100,6 @@ public class ASM4ProxyFactory extends Ab } } -public static T constructProxy(final Class clazz, final java.lang.reflect.InvocationHandler handler) throws IllegalStateException -{ -final Object instance = Unsafe.allocateInstance(clazz); -Unsafe.setValue(getDeclaredField(clazz, HANDLER_NAME), instance, handler); -@SuppressWarnings("unchecked") - final T result = (T) instance; - return result; -} - private static Field getDeclaredField(final Class clazz, final String fieldName) { try @@ -118,7 +113,7 @@ public class ASM4ProxyFactory extends Ab } } -public static byte[] generateProxy(final Class classToProxy, final String proxyName, final Method[] methods, final Class... interfaces) throws ProxyFactoryException +private static byte[] generateProxy(final Class classToProxy, final String proxyName, final Method[] methods, final Class... interfaces) throws ProxyFactoryException { final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); @@ -477,7 +472,7 @@ public class ASM4ProxyFactory extends Ab throw new IllegalStateException("Type: " + type.getCanonicalName() + " is not a primitive type"); } -static String getCastType(final Class returnType) +private static String getCastType(final Class returnType) { if (returnType.isPrimitive()) { @@ -576,7 +571,7 @@ public class ASM4ProxyFactory extends Ab mv.visitTypeInsn(ANEWARRAY, type.getCanonicalName().replace('.', '/')); } -static String getMethodSignatureAsString(final Class returnType, final Class[] parameterTypes) +private static String getMethodSignatureAsString(final Class returnType, final Class[] parameterTypes) { final StringBuilder builder = new StringBuilder("("); for (final Class parameterType : parameterTypes) { @@ -634,7 +629,7 @@ public class ASM4ProxyFactory extends Ab throw new IllegalStateException("Type: " + type.getCanonicalName() + " is not a primitive type"); } -public static String getAsmTypeAsString(final Class parameterType, final boolean wrap) +private static String getAsmTypeAsString(final Class parameterType, final boolean wrap) { if (parameterType.isArray()) { @@ -661,179 +656,6 @@ public class ASM4ProxyFactory extends Ab } return className.replace('.', '/'); } - -private static class Unsafe -{ -// sun.misc.Unsafe -private static final Object unsafe; -private static final Method defineClass; -private static final Method allocateInstance; -private static final Method putObject; -private static final Method objectFieldOffset; - -static -{ -final Class unsafeClass; -try { -unsafeClass = AccessController.doPrivileged(new Priv
svn commit: r1520920 - /commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
Author: mbenson Date: Sun Sep 8 20:24:29 2013 New Revision: 1520920 URL: http://svn.apache.org/r1520920 Log: no need to visit nonexistent source; proxy2 depends on Java v6 so generate classfile for that target Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Modified: commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java?rev=1520920&r1=1520919&r2=1520920&view=diff == --- commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java (original) +++ commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java Sun Sep 8 20:24:29 2013 @@ -128,8 +128,7 @@ public class ASM4ProxyFactory extends Ab interfaceNames[i] = anInterface.getName().replace('.', '/'); } -cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, proxyClassFileName, null, classFileName, interfaceNames); -cw.visitSource(classFileName + ".java", null); +cw.visit(V1_6, ACC_PUBLIC + ACC_SUPER, proxyClassFileName, null, classFileName, interfaceNames); // push InvocationHandler fields cw.visitField(ACC_FINAL + ACC_PRIVATE, HANDLER_NAME, "Ljava/lang/reflect/InvocationHandler;", null, null).visitEnd();
svn commit: r1520942 - /commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java
Author: olamy Date: Mon Sep 9 00:22:01 2013 New Revision: 1520942 URL: http://svn.apache.org/r1520942 Log: fix equals and use a better toString() Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java?rev=1520942&r1=1520941&r2=1520942&view=diff == --- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java (original) +++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java Mon Sep 9 00:22:01 2013 @@ -34,11 +34,10 @@ public class Role implements Comparable< public static final Role PERFORMANCES = new Role("performances", NANOSECOND); public static final Role FAILURES = new Role("failures", Unit.UNARY); -private String name; -private Unit unit; +private final String name; +private final Unit unit; public Role(String name, Unit unit) { -super(); if (name == null) { throw new IllegalArgumentException("A role name is required"); } @@ -71,23 +70,25 @@ public class Role implements Comparable< return name.hashCode(); } -/** - * @see java.lang.Object#equals(java.lang.Object) - */ @Override -public boolean equals(Object obj) { -if (this == obj) +public boolean equals( Object o ) +{ +if ( this == o ) +{ return true; -if (obj == null) -return false; -if (getClass() != obj.getClass()) -return false; -final Role other = (Role) obj; -if (name == null && other.name != null) { +} +if ( o == null || getClass() != o.getClass() ) +{ return false; -} else if (!name.equals(other.name)) { +} + +Role role = (Role) o; + +if ( !name.equals( role.name ) ) +{ return false; } + return true; } @@ -99,7 +100,12 @@ public class Role implements Comparable< } @Override -public String toString() { -return name; +public String toString() +{ +final StringBuilder sb = new StringBuilder( "Role{" ); +sb.append( "name='" ).append( name ).append( '\'' ); +sb.append( ", unit=" ).append( unit ); +sb.append( '}' ); +return sb.toString(); } }
svn commit: r1520949 - /commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counters/DefaultCounter.java
Author: olamy Date: Mon Sep 9 01:25:15 2013 New Revision: 1520949 URL: http://svn.apache.org/r1520949 Log: make those fields private as they are exposed via getter Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counters/DefaultCounter.java Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counters/DefaultCounter.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counters/DefaultCounter.java?rev=1520949&r1=1520948&r2=1520949&view=diff == --- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counters/DefaultCounter.java (original) +++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counters/DefaultCounter.java Mon Sep 9 01:25:15 2013 @@ -28,8 +28,8 @@ public class DefaultCounter implements C private final Key key; private final DataStore dataStore; private volatile int maxConcurrency = 0; -protected SummaryStatistics statistics; -protected Lock lock = new ReentrantLock(); +private SummaryStatistics statistics; +private Lock lock = new ReentrantLock(); public DefaultCounter(final Key key, final DataStore store) { this.key = key;