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 22:37:48 UTC

svn commit: r587650 - 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 13:37:48 2007
New Revision: 587650

URL: http://svn.apache.org/viewvc?rev=587650&view=rev
Log:
PROXY-4: SerializingInterceptor

Modified:
    commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java   (contents, props changed)
    commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java   (contents, props changed)

Modified: 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=587650&r1=587649&r2=587650&view=diff
==============================================================================
--- commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java (original)
+++ commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java Tue Oct 23 13:37:48 2007
@@ -1,55 +1,72 @@
-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 );
-        }
-    }
-}
+/*
+ * 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.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 );
+        }
+    }
+}

Propchange: commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/interceptor/SerializingInterceptor.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: 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=587650&r1=587649&r2=587650&view=diff
==============================================================================
--- commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java (original)
+++ commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java Tue Oct 23 13:37:48 2007
@@ -1,59 +1,76 @@
-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;
-        }
-    }
-}
+/*
+ * 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.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;
+        }
+    }
+}

Propchange: commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/proxy/trunk/src/test/java/org/apache/commons/proxy/interceptor/TestSerializingInterceptor.java
------------------------------------------------------------------------------
    svn:keywords = Id