You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2005/10/13 00:35:10 UTC

svn commit: r315065 - in /jakarta/tapestry/trunk/framework/src: java/org/apache/tapestry/record/ java/org/apache/tapestry/util/io/ test/org/apache/tapestry/record/

Author: hlship
Date: Wed Oct 12 15:35:04 2005
New Revision: 315065

URL: http://svn.apache.org/viewcvs?rev=315065&view=rev
Log:
TAPESTRY-650: ClassNotFoundException thrown when deserializing an object from a client persistent property

Modified:
    jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/record/ClientPropertyPersistenceStrategy.java
    jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/io/ResolvingObjectInputStream.java
    jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/record/TestClientPropertyPersistenceStrategy.java

Modified: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/record/ClientPropertyPersistenceStrategy.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/record/ClientPropertyPersistenceStrategy.java?rev=315065&r1=315064&r2=315065&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/record/ClientPropertyPersistenceStrategy.java (original)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/record/ClientPropertyPersistenceStrategy.java Wed Oct 12 15:35:04 2005
@@ -44,23 +44,12 @@
      */
     private final Map _data = new HashMap();
 
-    private final PersistentPropertyDataEncoder _encoder;
+    private PersistentPropertyDataEncoder _encoder;
 
     private WebRequest _request;
 
     private ClientPropertyPersistenceScope _scope;
 
-    public ClientPropertyPersistenceStrategy()
-    {
-        this(new PersistentPropertyDataEncoderImpl());
-    }
-
-    // Alternate constructor used for testing
-    ClientPropertyPersistenceStrategy(PersistentPropertyDataEncoder encoder)
-    {
-        _encoder = encoder;
-    }
-
     /**
      * Initializer for this service, invoked every time a service instance is created. This
      * initializer pulls out of the request and query parameters whose prefix is "client:" and
@@ -118,7 +107,8 @@
         _data.remove(pageName);
     }
 
-    public void addParametersForPersistentProperties(ServiceEncoding encoding, IRequestCycle cycle, boolean post)
+    public void addParametersForPersistentProperties(ServiceEncoding encoding, IRequestCycle cycle,
+            boolean post)
     {
         Defense.notNull(encoding, "encoding");
         Defense.notNull(cycle, "cycle");
@@ -154,5 +144,10 @@
     public void setScope(ClientPropertyPersistenceScope scope)
     {
         _scope = scope;
+    }
+
+    public void setEncoder(PersistentPropertyDataEncoder encoder)
+    {
+        _encoder = encoder;
     }
 }

Modified: jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/io/ResolvingObjectInputStream.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/io/ResolvingObjectInputStream.java?rev=315065&r1=315064&r2=315065&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/io/ResolvingObjectInputStream.java (original)
+++ jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/util/io/ResolvingObjectInputStream.java Wed Oct 12 15:35:04 2005
@@ -20,6 +20,7 @@
 import java.io.ObjectStreamClass;
 
 import org.apache.hivemind.ClassResolver;
+import org.apache.hivemind.util.Defense;
 
 /**
  * Specialized subclass of {@link java.io.ObjectInputStream}that knows how to resolve classes with
@@ -37,6 +38,8 @@
     public ResolvingObjectInputStream(ClassResolver resolver, InputStream input) throws IOException
     {
         super(input);
+
+        Defense.notNull(resolver, "resolver");
 
         _resolver = resolver;
     }

Modified: jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/record/TestClientPropertyPersistenceStrategy.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/record/TestClientPropertyPersistenceStrategy.java?rev=315065&r1=315064&r2=315065&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/record/TestClientPropertyPersistenceStrategy.java (original)
+++ jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/record/TestClientPropertyPersistenceStrategy.java Wed Oct 12 15:35:04 2005
@@ -67,9 +67,10 @@
 
         replayControls();
 
-        ClientPropertyPersistenceStrategy strategy = new ClientPropertyPersistenceStrategy(encoder);
+        ClientPropertyPersistenceStrategy strategy = new ClientPropertyPersistenceStrategy();
         strategy.setRequest(request);
         strategy.setScope(scope);
+        strategy.setEncoder(encoder);
 
         strategy.initializeService();
 
@@ -90,6 +91,7 @@
         PropertyChange pc = new PropertyChangeImpl("foo", "bar", "baz");
 
         ClientPropertyPersistenceStrategy strategy = new ClientPropertyPersistenceStrategy();
+        strategy.setEncoder(newEncoder());
 
         strategy.store("MyPage", "foo", "bar", "baz");
 
@@ -122,6 +124,7 @@
         ClientPropertyPersistenceStrategy strategy = new ClientPropertyPersistenceStrategy();
         strategy.setRequest(request);
         strategy.setScope(new AppClientPropertyPersistenceScope());
+        strategy.setEncoder(newEncoder());
 
         strategy.initializeService();
 
@@ -130,6 +133,14 @@
         verifyControls();
     }
 
+    private PersistentPropertyDataEncoder newEncoder()
+    {
+        PersistentPropertyDataEncoderImpl encoder = new PersistentPropertyDataEncoderImpl();
+        encoder.setClassResolver(getClassResolver());
+
+        return encoder;
+    }
+
     public void testPageScope()
     {
         MockControl requestc = newControl(WebRequest.class);
@@ -172,6 +183,7 @@
         ClientPropertyPersistenceStrategy strategy = new ClientPropertyPersistenceStrategy();
         strategy.setRequest(request);
         strategy.setScope(new PageClientPropertyPersistenceScope());
+        strategy.setEncoder(newEncoder());
 
         strategy.initializeService();
 



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