You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2013/10/14 12:50:29 UTC

svn commit: r1531846 - in /commons/proper/pool/trunk: ./ src/main/java/org/apache/commons/pool2/proxy/ src/test/java/org/apache/commons/pool2/proxy/

Author: markt
Date: Mon Oct 14 10:50:28 2013
New Revision: 1531846

URL: http://svn.apache.org/r1531846
Log:
Add CGLib proxy implementation and test.

Added:
    commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java   (with props)
    commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java   (with props)
    commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java   (with props)
Modified:
    commons/proper/pool/trunk/pom.xml

Modified: commons/proper/pool/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/pom.xml?rev=1531846&r1=1531845&r2=1531846&view=diff
==============================================================================
--- commons/proper/pool/trunk/pom.xml (original)
+++ commons/proper/pool/trunk/pom.xml Mon Oct 14 10:50:28 2013
@@ -120,6 +120,19 @@
       <version>4.11</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>cglib</groupId>
+      <artifactId>cglib</artifactId>
+      <version>3.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.ow2.asm</groupId>
+      <artifactId>asm-util</artifactId>
+      <version>4.0</version>
+      <scope>provided</scope>
+    </dependency>
+    
   </dependencies>
 
   <distributionManagement>

Added: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java?rev=1531846&view=auto
==============================================================================
--- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java (added)
+++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java Mon Oct 14 10:50:28 2013
@@ -0,0 +1,32 @@
+package org.apache.commons.pool2.proxy;
+
+import java.lang.reflect.Method;
+
+import org.apache.commons.pool2.UsageTracking;
+
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+
+
+public class CglibProxyHandler<T> extends BaseProxyHandler<T>
+        implements MethodInterceptor {
+
+    private final UsageTracking<T> usageTracking;
+
+    CglibProxyHandler(T pooledObject, UsageTracking<T> usageTracking) {
+        super(pooledObject);
+        this.usageTracking = usageTracking;
+    }
+
+    @Override
+    public Object intercept(Object object, Method method, Object[] args,
+            MethodProxy methodProxy) throws Throwable {
+        validateProxiedObject();
+        T pooledObject = getPooledObject();
+        if (usageTracking != null) {
+            usageTracking.use(pooledObject);
+        }
+
+        return method.invoke(pooledObject, args);
+    }
+}

Propchange: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java?rev=1531846&view=auto
==============================================================================
--- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java (added)
+++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java Mon Oct 14 10:50:28 2013
@@ -0,0 +1,57 @@
+/*
+ * 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.commons.pool2.proxy;
+
+import net.sf.cglib.proxy.Enhancer;
+import net.sf.cglib.proxy.Factory;
+
+import org.apache.commons.pool2.UsageTracking;
+
+public class CglibProxySource<T> implements ProxySource<T> {
+
+    private final Class<? extends T> superclass;
+
+    public CglibProxySource(Class<? extends T> superclass) {
+        this.superclass = superclass;
+    }
+
+
+    @Override
+    public T createProxy(T pooledObject, UsageTracking<T> usageTracking) {
+        Enhancer enhancer = new Enhancer();
+        enhancer.setSuperclass(superclass);
+
+        CglibProxyHandler<T> proxyInterceptor =
+                new CglibProxyHandler<T>(pooledObject, usageTracking);
+        enhancer.setCallback(proxyInterceptor);
+
+        @SuppressWarnings("unchecked")
+        T proxy = (T) enhancer.create();
+
+        return proxy;
+    }
+
+
+    @Override
+    public T resolveProxy(T proxy) {
+        @SuppressWarnings("unchecked")
+        BaseProxyHandler<T> proxyInterceptor =
+                (BaseProxyHandler<T>) ((Factory) proxy).getCallback(0);
+        T pooledObject = proxyInterceptor.disableProxy();
+        return pooledObject;
+    }
+}

Propchange: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java?rev=1531846&view=auto
==============================================================================
--- commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java (added)
+++ commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java Mon Oct 14 10:50:28 2013
@@ -0,0 +1,150 @@
+/*
+ * 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.commons.pool2.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.apache.commons.pool2.BasePooledObjectFactory;
+import org.apache.commons.pool2.ObjectPool;
+import org.apache.commons.pool2.PooledObjectFactory;
+import org.apache.commons.pool2.impl.AbandonedConfig;
+import org.apache.commons.pool2.impl.GenericObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestProxiedObjectPoolWithCglibProxy {
+
+    private static final String DATA1 = "data1";
+    private static final int ABANDONED_TIMEOUT_SECS = 3;
+
+    private ObjectPool<TestObject> pool;
+    private StringWriter log;
+
+    @Before
+    public void setup() {
+        log = new StringWriter();
+
+        PrintWriter pw = new PrintWriter(log);
+        AbandonedConfig abandonedConfig = new AbandonedConfig();
+        abandonedConfig.setLogAbandoned(true);
+        abandonedConfig.setRemoveAbandonedOnBorrow(true);
+        abandonedConfig.setUseUsageTracking(true);
+        abandonedConfig.setRemoveAbandonedTimeout(ABANDONED_TIMEOUT_SECS);
+        abandonedConfig.setLogWriter(pw);
+
+        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
+        config.setMaxTotal(3);
+
+        PooledObjectFactory<TestObject> factory = new TestObjectFactory();
+
+        ObjectPool<TestObject> innerPool =
+                new GenericObjectPool<TestObject>(factory, config, abandonedConfig);
+
+        ProxySource<TestObject> proxySource =
+                new CglibProxySource<TestObject>(TestObject.class);
+        pool = new ProxiedObjectPool<TestObject>(innerPool, proxySource);
+    }
+
+
+    @Test
+    public void testBorrowObject() throws Exception {
+        TestObject obj = pool.borrowObject();
+        assertNotNull(obj);
+
+        // Make sure proxied methods are working
+        obj.setData(DATA1);
+        assertEquals(DATA1, obj.getData());
+
+        pool.returnObject(obj);
+    }
+
+
+    @Test(expected=IllegalStateException.class)
+    public void testAccessAfterReturn() throws Exception {
+        TestObject obj = pool.borrowObject();
+        assertNotNull(obj);
+
+        // Make sure proxied methods are working
+        obj.setData(DATA1);
+        assertEquals(DATA1, obj.getData());
+
+        pool.returnObject(obj);
+
+        assertNotNull(obj);
+
+        obj.getData();
+    }
+
+
+    @Test
+    public void testUsageTracking() throws Exception {
+        TestObject obj = pool.borrowObject();
+        assertNotNull(obj);
+
+        // Use the object to trigger collection of last used stack trace
+        obj.setData(DATA1);
+
+        // Sleep long enough for the object to be considered abandoned
+        Thread.sleep((ABANDONED_TIMEOUT_SECS + 2) * 1000);
+
+        // Borrow another object to trigger the abandoned object processing
+        pool.borrowObject();
+
+        String logOutput = log.getBuffer().toString();
+
+        assertTrue(logOutput.contains("Pooled object created"));
+        assertTrue(logOutput.contains("The last code to use this object was"));
+    }
+
+    private static class TestObjectFactory extends
+            BasePooledObjectFactory<TestObject> {
+
+        @Override
+        public TestObject create() throws Exception {
+            return new TestObjectImpl();
+        }
+    }
+
+
+    private static interface TestObject {
+        String getData();
+        void setData(String data);
+    }
+
+
+    private static class TestObjectImpl implements TestObject {
+
+        private String data;
+
+        @Override
+        public String getData() {
+            return data;
+        }
+
+        @Override
+        public void setData(String data) {
+            this.data = data;
+        }
+    }
+}

Propchange: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java
------------------------------------------------------------------------------
    svn:eol-style = native



Re: svn commit: r1531846 - in /commons/proper/pool/trunk: ./ src/main/java/org/apache/commons/pool2/proxy/ src/test/java/org/apache/commons/pool2/proxy/

Posted by Phil Steitz <ph...@gmail.com>.
On 10/14/13 3:50 AM, markt@apache.org wrote:
> Author: markt
> Date: Mon Oct 14 10:50:28 2013
> New Revision: 1531846
>
> URL: http://svn.apache.org/r1531846
> Log:
> Add CGLib proxy implementation and test.
>
> Added:
>     commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java   (with props)
>     commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java   (with props)
>     commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java   (with props)
> Modified:
>     commons/proper/pool/trunk/pom.xml
>
> Modified: commons/proper/pool/trunk/pom.xml
> URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/pom.xml?rev=1531846&r1=1531845&r2=1531846&view=diff
> ==============================================================================
> --- commons/proper/pool/trunk/pom.xml (original)
> +++ commons/proper/pool/trunk/pom.xml Mon Oct 14 10:50:28 2013
> @@ -120,6 +120,19 @@
>        <version>4.11</version>
>        <scope>test</scope>
>      </dependency>
> +    <dependency>
> +      <groupId>cglib</groupId>
> +      <artifactId>cglib</artifactId>
> +      <version>3.0</version>
> +      <scope>provided</scope>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.ow2.asm</groupId>
> +      <artifactId>asm-util</artifactId>
> +      <version>4.0</version>
> +      <scope>provided</scope>
> +    </dependency>
> +   

 What exactly is expected to "provide" this?  Does tomcat somehow
provide it?  I guess its obvious from the code what classes depend
on it, right?  Also, this breaks the Ant build, so we either need to
drop the Ant build or fix it.  I am not asking to revert here - just
want to understand the implications.

Phil
>  
>    </dependencies>


>  
>    <distributionManagement>
>
> Added: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
> URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java?rev=1531846&view=auto
> ==============================================================================
> --- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java (added)
> +++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java Mon Oct 14 10:50:28 2013
> @@ -0,0 +1,32 @@
> +package org.apache.commons.pool2.proxy;
> +
> +import java.lang.reflect.Method;
> +
> +import org.apache.commons.pool2.UsageTracking;
> +
> +import net.sf.cglib.proxy.MethodInterceptor;
> +import net.sf.cglib.proxy.MethodProxy;
> +
> +
> +public class CglibProxyHandler<T> extends BaseProxyHandler<T>
> +        implements MethodInterceptor {
> +
> +    private final UsageTracking<T> usageTracking;
> +
> +    CglibProxyHandler(T pooledObject, UsageTracking<T> usageTracking) {
> +        super(pooledObject);
> +        this.usageTracking = usageTracking;
> +    }
> +
> +    @Override
> +    public Object intercept(Object object, Method method, Object[] args,
> +            MethodProxy methodProxy) throws Throwable {
> +        validateProxiedObject();
> +        T pooledObject = getPooledObject();
> +        if (usageTracking != null) {
> +            usageTracking.use(pooledObject);
> +        }
> +
> +        return method.invoke(pooledObject, args);
> +    }
> +}
>
> Propchange: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Added: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
> URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java?rev=1531846&view=auto
> ==============================================================================
> --- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java (added)
> +++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java Mon Oct 14 10:50:28 2013
> @@ -0,0 +1,57 @@
> +/*
> + * 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.commons.pool2.proxy;
> +
> +import net.sf.cglib.proxy.Enhancer;
> +import net.sf.cglib.proxy.Factory;
> +
> +import org.apache.commons.pool2.UsageTracking;
> +
> +public class CglibProxySource<T> implements ProxySource<T> {
> +
> +    private final Class<? extends T> superclass;
> +
> +    public CglibProxySource(Class<? extends T> superclass) {
> +        this.superclass = superclass;
> +    }
> +
> +
> +    @Override
> +    public T createProxy(T pooledObject, UsageTracking<T> usageTracking) {
> +        Enhancer enhancer = new Enhancer();
> +        enhancer.setSuperclass(superclass);
> +
> +        CglibProxyHandler<T> proxyInterceptor =
> +                new CglibProxyHandler<T>(pooledObject, usageTracking);
> +        enhancer.setCallback(proxyInterceptor);
> +
> +        @SuppressWarnings("unchecked")
> +        T proxy = (T) enhancer.create();
> +
> +        return proxy;
> +    }
> +
> +
> +    @Override
> +    public T resolveProxy(T proxy) {
> +        @SuppressWarnings("unchecked")
> +        BaseProxyHandler<T> proxyInterceptor =
> +                (BaseProxyHandler<T>) ((Factory) proxy).getCallback(0);
> +        T pooledObject = proxyInterceptor.disableProxy();
> +        return pooledObject;
> +    }
> +}
>
> Propchange: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Added: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java
> URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java?rev=1531846&view=auto
> ==============================================================================
> --- commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java (added)
> +++ commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java Mon Oct 14 10:50:28 2013
> @@ -0,0 +1,150 @@
> +/*
> + * 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.commons.pool2.proxy;
> +
> +import static org.junit.Assert.assertEquals;
> +import static org.junit.Assert.assertNotNull;
> +import static org.junit.Assert.assertTrue;
> +
> +import java.io.PrintWriter;
> +import java.io.StringWriter;
> +
> +import org.apache.commons.pool2.BasePooledObjectFactory;
> +import org.apache.commons.pool2.ObjectPool;
> +import org.apache.commons.pool2.PooledObjectFactory;
> +import org.apache.commons.pool2.impl.AbandonedConfig;
> +import org.apache.commons.pool2.impl.GenericObjectPool;
> +import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
> +
> +import org.junit.Before;
> +import org.junit.Test;
> +
> +public class TestProxiedObjectPoolWithCglibProxy {
> +
> +    private static final String DATA1 = "data1";
> +    private static final int ABANDONED_TIMEOUT_SECS = 3;
> +
> +    private ObjectPool<TestObject> pool;
> +    private StringWriter log;
> +
> +    @Before
> +    public void setup() {
> +        log = new StringWriter();
> +
> +        PrintWriter pw = new PrintWriter(log);
> +        AbandonedConfig abandonedConfig = new AbandonedConfig();
> +        abandonedConfig.setLogAbandoned(true);
> +        abandonedConfig.setRemoveAbandonedOnBorrow(true);
> +        abandonedConfig.setUseUsageTracking(true);
> +        abandonedConfig.setRemoveAbandonedTimeout(ABANDONED_TIMEOUT_SECS);
> +        abandonedConfig.setLogWriter(pw);
> +
> +        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
> +        config.setMaxTotal(3);
> +
> +        PooledObjectFactory<TestObject> factory = new TestObjectFactory();
> +
> +        ObjectPool<TestObject> innerPool =
> +                new GenericObjectPool<TestObject>(factory, config, abandonedConfig);
> +
> +        ProxySource<TestObject> proxySource =
> +                new CglibProxySource<TestObject>(TestObject.class);
> +        pool = new ProxiedObjectPool<TestObject>(innerPool, proxySource);
> +    }
> +
> +
> +    @Test
> +    public void testBorrowObject() throws Exception {
> +        TestObject obj = pool.borrowObject();
> +        assertNotNull(obj);
> +
> +        // Make sure proxied methods are working
> +        obj.setData(DATA1);
> +        assertEquals(DATA1, obj.getData());
> +
> +        pool.returnObject(obj);
> +    }
> +
> +
> +    @Test(expected=IllegalStateException.class)
> +    public void testAccessAfterReturn() throws Exception {
> +        TestObject obj = pool.borrowObject();
> +        assertNotNull(obj);
> +
> +        // Make sure proxied methods are working
> +        obj.setData(DATA1);
> +        assertEquals(DATA1, obj.getData());
> +
> +        pool.returnObject(obj);
> +
> +        assertNotNull(obj);
> +
> +        obj.getData();
> +    }
> +
> +
> +    @Test
> +    public void testUsageTracking() throws Exception {
> +        TestObject obj = pool.borrowObject();
> +        assertNotNull(obj);
> +
> +        // Use the object to trigger collection of last used stack trace
> +        obj.setData(DATA1);
> +
> +        // Sleep long enough for the object to be considered abandoned
> +        Thread.sleep((ABANDONED_TIMEOUT_SECS + 2) * 1000);
> +
> +        // Borrow another object to trigger the abandoned object processing
> +        pool.borrowObject();
> +
> +        String logOutput = log.getBuffer().toString();
> +
> +        assertTrue(logOutput.contains("Pooled object created"));
> +        assertTrue(logOutput.contains("The last code to use this object was"));
> +    }
> +
> +    private static class TestObjectFactory extends
> +            BasePooledObjectFactory<TestObject> {
> +
> +        @Override
> +        public TestObject create() throws Exception {
> +            return new TestObjectImpl();
> +        }
> +    }
> +
> +
> +    private static interface TestObject {
> +        String getData();
> +        void setData(String data);
> +    }
> +
> +
> +    private static class TestObjectImpl implements TestObject {
> +
> +        private String data;
> +
> +        @Override
> +        public String getData() {
> +            return data;
> +        }
> +
> +        @Override
> +        public void setData(String data) {
> +            this.data = data;
> +        }
> +    }
> +}
>
> Propchange: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r1531846 - in /commons/proper/pool/trunk: ./ src/main/java/org/apache/commons/pool2/proxy/ src/test/java/org/apache/commons/pool2/proxy/

Posted by Mark Thomas <ma...@apache.org>.
On 14/10/2013 17:59, sebb wrote:
>> Added: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
>> URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java?rev=1531846&view=auto
>> ==============================================================================
>> --- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java (added)
>> +++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java Mon Oct 14 10:50:28 2013
> 
> AL header ?

Yep, missing. Fixed.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r1531846 - in /commons/proper/pool/trunk: ./ src/main/java/org/apache/commons/pool2/proxy/ src/test/java/org/apache/commons/pool2/proxy/

Posted by sebb <se...@gmail.com>.
On 14 October 2013 11:50,  <ma...@apache.org> wrote:
> Author: markt
> Date: Mon Oct 14 10:50:28 2013
> New Revision: 1531846
>
> URL: http://svn.apache.org/r1531846
> Log:
> Add CGLib proxy implementation and test.
>
> Added:
>     commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java   (with props)
>     commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java   (with props)
>     commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java   (with props)
> Modified:
>     commons/proper/pool/trunk/pom.xml
>
> Modified: commons/proper/pool/trunk/pom.xml
> URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/pom.xml?rev=1531846&r1=1531845&r2=1531846&view=diff
> ==============================================================================
> --- commons/proper/pool/trunk/pom.xml (original)
> +++ commons/proper/pool/trunk/pom.xml Mon Oct 14 10:50:28 2013
> @@ -120,6 +120,19 @@
>        <version>4.11</version>
>        <scope>test</scope>
>      </dependency>
> +    <dependency>
> +      <groupId>cglib</groupId>
> +      <artifactId>cglib</artifactId>
> +      <version>3.0</version>
> +      <scope>provided</scope>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.ow2.asm</groupId>
> +      <artifactId>asm-util</artifactId>
> +      <version>4.0</version>
> +      <scope>provided</scope>
> +    </dependency>
> +
>    </dependencies>
>
>    <distributionManagement>
>
> Added: commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
> URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java?rev=1531846&view=auto
> ==============================================================================
> --- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java (added)
> +++ commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java Mon Oct 14 10:50:28 2013

AL header ?

> @@ -0,0 +1,32 @@
> +package org.apache.commons.pool2.proxy;
> +
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org