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