You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by jc...@apache.org on 2007/10/23 14:27:05 UTC
svn commit: r587475 - in /commons/proper/proxy/trunk/src:
main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
Author: jcarman
Date: Tue Oct 23 05:27:05 2007
New Revision: 587475
URL: http://svn.apache.org/viewvc?rev=587475&view=rev
Log:
PROXY-4: SerializingInterceptor
Added:
commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
Added: commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java?rev=587475&view=auto
==============================================================================
--- commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java (added)
+++ commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java Tue Oct 23 05:27:05 2007
@@ -0,0 +1,55 @@
+package org.apache.commons.proxy.interceptor;
+
+import org.apache.commons.proxy.Interceptor;
+import org.apache.commons.proxy.Invocation;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+/**
+ * An interceptor which makes a serialized copy of all parameters and return values. This
+ * is useful when testing remote services to ensure that all parameter/return types
+ * are in fact serializable/deserializable.
+ * @since 1.0
+ */
+public class SerializingInterceptor implements Interceptor
+{
+ public Object intercept(Invocation invocation) throws Throwable
+ {
+ Object[] arguments = invocation.getArguments();
+ for (int i = 0; i < arguments.length; i++)
+ {
+ arguments[i] = serializedCopy(arguments[i]);
+ }
+ return serializedCopy(invocation.proceed());
+ }
+
+ private Object serializedCopy(Object original)
+ {
+ try
+ {
+ final ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ final ObjectOutputStream oout = new ObjectOutputStream(bout);
+ oout.writeObject(original);
+ oout.close();
+ bout.close();
+ final ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
+ final ObjectInputStream oin = new ObjectInputStream(bin);
+ final Object copy = oin.readObject();
+ oin.close();
+ bin.close();
+ return copy;
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException( "Unable to make serialized copy of " + original.getClass().getName() + " object.", e );
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new RuntimeException( "Unable to make serialized copy of " + original.getClass().getName() + " object.", e );
+ }
+ }
+}
Added: commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java?rev=587475&view=auto
==============================================================================
--- commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java (added)
+++ commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java Tue Oct 23 05:27:05 2007
@@ -0,0 +1,59 @@
+package org.apache.commons.proxy.interceptor;
+
+import junit.framework.TestCase;
+import org.apache.commons.proxy.ProxyFactory;
+
+import java.io.ByteArrayOutputStream;
+
+public class TestSerializingInterceptor extends TestCase
+{
+ public void testWithSerializableParametersAndReturn()
+ {
+ final ObjectEchoImpl target = new ObjectEchoImpl();
+ ObjectEcho echo =
+ (ObjectEcho) new ProxyFactory().createInterceptorProxy(target,
+ new SerializingInterceptor(),
+ new Class[]{ObjectEcho.class});
+ final Object originalParameter = "Hello, World!";
+ final Object returnValue = echo.echoBack(originalParameter);
+ assertNotSame(originalParameter, target.parameter);
+ assertNotSame(originalParameter, returnValue);
+ assertNotSame(returnValue, target.parameter);
+ }
+
+ public void testWithInvalidParameterType()
+ {
+ try
+ {
+ final ObjectEchoImpl target = new ObjectEchoImpl();
+ ObjectEcho echo =
+ (ObjectEcho) new ProxyFactory().createInterceptorProxy(target,
+ new SerializingInterceptor(),
+ new Class[]{ObjectEcho.class});
+ final Object originalParameter = new ByteArrayOutputStream();
+ echo.echoBack(originalParameter);
+ fail("Should not be able to call method with non-serializable parameter type.");
+ }
+ catch (RuntimeException e)
+ {
+
+ }
+
+ }
+
+ public static interface ObjectEcho
+ {
+ public Object echoBack(Object object);
+ }
+
+ public static class ObjectEchoImpl implements ObjectEcho
+ {
+ private Object parameter;
+
+ public Object echoBack(Object object)
+ {
+ this.parameter = object;
+ return object;
+ }
+ }
+}
Re: [proxy] svn commit: r587475 - in /commons/proper/proxy/trunk/src: main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
Posted by Rahul Akolkar <ra...@gmail.com>.
On 10/24/07, James Carman <ja...@carmanconsulting.com> wrote:
> Rahul,
>
> Does that look better? I copied the svn props from another file.
>
<snip/>
Yes, thank you.
The one we really care about is svn:eol-style. I have "Date Author Id
Revision HeadURL" for svn:keywords, FWIW.
-Rahul
> On 10/23/07, James Carman <ja...@carmanconsulting.com> wrote:
> > Darn it, I upgraded IDEA to 7.0 when it came out and forgot to set up
> > the Copyright plugin. I'm on it...
> >
> >
> > On 10/23/07, Rahul Akolkar <ra...@gmail.com> wrote:
> > > On 10/23/07, jcarman@apache.org <jc...@apache.org> wrote:
> > > > Author: jcarman
> > > > Date: Tue Oct 23 05:27:05 2007
> > > > New Revision: 587475
> > > >
> > > > URL: http://svn.apache.org/viewvc?rev=587475&view=rev
> > > > Log:
> > > > PROXY-4: SerializingInterceptor
> > > >
> > > > Added:
> > > > commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
> > > > commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
> > > >
> > > <snip/>
> > >
> > > Missing {ASLv2, svn props}.
> > >
> > > -Rahul
> > >
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: [proxy] svn commit: r587475 - in /commons/proper/proxy/trunk/src: main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
Posted by James Carman <ja...@carmanconsulting.com>.
Rahul,
Does that look better? I copied the svn props from another file.
On 10/23/07, James Carman <ja...@carmanconsulting.com> wrote:
> Darn it, I upgraded IDEA to 7.0 when it came out and forgot to set up
> the Copyright plugin. I'm on it...
>
>
> On 10/23/07, Rahul Akolkar <ra...@gmail.com> wrote:
> > On 10/23/07, jcarman@apache.org <jc...@apache.org> wrote:
> > > Author: jcarman
> > > Date: Tue Oct 23 05:27:05 2007
> > > New Revision: 587475
> > >
> > > URL: http://svn.apache.org/viewvc?rev=587475&view=rev
> > > Log:
> > > PROXY-4: SerializingInterceptor
> > >
> > > Added:
> > > commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
> > > commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
> > >
> > <snip/>
> >
> > Missing {ASLv2, svn props}.
> >
> > -Rahul
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> > For additional commands, e-mail: dev-help@commons.apache.org
> >
> >
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: [proxy] svn commit: r587475 - in /commons/proper/proxy/trunk/src: main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
Posted by James Carman <ja...@carmanconsulting.com>.
Darn it, I upgraded IDEA to 7.0 when it came out and forgot to set up
the Copyright plugin. I'm on it...
On 10/23/07, Rahul Akolkar <ra...@gmail.com> wrote:
> On 10/23/07, jcarman@apache.org <jc...@apache.org> wrote:
> > Author: jcarman
> > Date: Tue Oct 23 05:27:05 2007
> > New Revision: 587475
> >
> > URL: http://svn.apache.org/viewvc?rev=587475&view=rev
> > Log:
> > PROXY-4: SerializingInterceptor
> >
> > Added:
> > commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
> > commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
> >
> <snip/>
>
> Missing {ASLv2, svn props}.
>
> -Rahul
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: [proxy] svn commit: r587475 - in /commons/proper/proxy/trunk/src: main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
Posted by Rahul Akolkar <ra...@gmail.com>.
On 10/23/07, jcarman@apache.org <jc...@apache.org> wrote:
> Author: jcarman
> Date: Tue Oct 23 05:27:05 2007
> New Revision: 587475
>
> URL: http://svn.apache.org/viewvc?rev=587475&view=rev
> Log:
> PROXY-4: SerializingInterceptor
>
> Added:
> commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
> commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
>
<snip/>
Missing {ASLv2, svn props}.
-Rahul
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org