From e092fccb784e8f5580f95df64a8595d96717d860 Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Mon, 21 Apr 2008 22:35:29 +0000 Subject: [PATCH] serialization testing --- .../expression/el/ELContextFactory.java | 4 ++- .../expression/ognl/OgnlExpression.java | 10 +++---- .../el/ELExpressionParserTests.java | 26 +++++++++++++++++ .../ognl/OgnlExpressionParserTests.java | 28 +++++++++++++++++++ 4 files changed, 62 insertions(+), 6 deletions(-) diff --git a/spring-binding/src/main/java/org/springframework/binding/expression/el/ELContextFactory.java b/spring-binding/src/main/java/org/springframework/binding/expression/el/ELContextFactory.java index ab554364..731cc9fa 100644 --- a/spring-binding/src/main/java/org/springframework/binding/expression/el/ELContextFactory.java +++ b/spring-binding/src/main/java/org/springframework/binding/expression/el/ELContextFactory.java @@ -15,6 +15,8 @@ */ package org.springframework.binding.expression.el; +import java.io.Serializable; + import javax.el.ELContext; import javax.el.ELResolver; @@ -28,7 +30,7 @@ import javax.el.ELResolver; * @author Keith Donald * @author Jeremy Grelle */ -public interface ELContextFactory { +public interface ELContextFactory extends Serializable { /** * Configures and returns an {@link ELContext} to be used in evaluating EL expressions on the given base target diff --git a/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.java b/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.java index 628c553a..9e561027 100644 --- a/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.java +++ b/spring-binding/src/main/java/org/springframework/binding/expression/ognl/OgnlExpression.java @@ -69,16 +69,16 @@ class OgnlExpression implements Expression { this.expressionString = expressionString; } - public int hashCode() { - return expression.hashCode(); - } - public boolean equals(Object o) { if (!(o instanceof OgnlExpression)) { return false; } OgnlExpression other = (OgnlExpression) o; - return expression.equals(other.expression); + return expressionString.equals(other.expressionString); + } + + public int hashCode() { + return expressionString.hashCode(); } public Object getValue(Object context) throws EvaluationException { diff --git a/spring-binding/src/test/java/org/springframework/binding/expression/el/ELExpressionParserTests.java b/spring-binding/src/test/java/org/springframework/binding/expression/el/ELExpressionParserTests.java index 6df8f5db..508367a8 100644 --- a/spring-binding/src/test/java/org/springframework/binding/expression/el/ELExpressionParserTests.java +++ b/spring-binding/src/test/java/org/springframework/binding/expression/el/ELExpressionParserTests.java @@ -1,5 +1,10 @@ package org.springframework.binding.expression.el; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -227,4 +232,25 @@ public class ELExpressionParserTests extends TestCase { } } + public void testSerializeExpression() throws IOException, ClassNotFoundException { + String exp = "value"; + Expression e = parser.parseExpression(exp, null); + ByteArrayOutputStream baos = new ByteArrayOutputStream(1024); + ObjectOutputStream oos = new ObjectOutputStream(baos); + byte[] bytes = null; + try { + oos.writeObject(e); + oos.flush(); + bytes = baos.toByteArray(); + } finally { + oos.close(); + } + ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes)); + try { + Expression e2 = (Expression) ois.readObject(); + assertEquals(e, e2); + } finally { + ois.close(); + } + } } diff --git a/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.java b/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.java index 7c196b18..2f6f7b3b 100644 --- a/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.java +++ b/spring-binding/src/test/java/org/springframework/binding/expression/ognl/OgnlExpressionParserTests.java @@ -15,6 +15,12 @@ */ package org.springframework.binding.expression.ognl; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + import junit.framework.TestCase; import org.springframework.binding.expression.Expression; @@ -161,4 +167,26 @@ public class OgnlExpressionParserTests extends TestCase { assertEquals(boolean.class, e.getValueType(bean)); } + public void testSerializeExpression() throws IOException, ClassNotFoundException { + String exp = "flag"; + Expression e = parser.parseExpression(exp, null); + ByteArrayOutputStream baos = new ByteArrayOutputStream(1024); + ObjectOutputStream oos = new ObjectOutputStream(baos); + byte[] bytes = null; + try { + oos.writeObject(e); + oos.flush(); + bytes = baos.toByteArray(); + } finally { + oos.close(); + } + ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes)); + try { + Expression e2 = (Expression) ois.readObject(); + assertEquals(e, e2); + } finally { + ois.close(); + } + } + } \ No newline at end of file