no need to commit into 1.4.14 branch. the release has already been cut. if we have to recut it we would do it from 1.4.x branch.
-igor On Wed, Nov 24, 2010 at 10:27 AM, <pe...@apache.org> wrote: > Author: pedro > Date: Wed Nov 24 18:27:33 2010 > New Revision: 1038752 > > URL: http://svn.apache.org/viewvc?rev=1038752&view=rev > Log: > Porting the fix for WicketObjectOutputStream from the trunk to be released on > the Wicket 1.4.14 > Issue: WICKET-3136 > > Modified: > > wicket/branches/wicket-1.4.14/wicket/src/main/java/org/apache/wicket/util/io/WicketObjectOutputStream.java > > wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/resource/DummyPage.java > > wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/util/io/WicketOutputStreamTest.java > > Modified: > wicket/branches/wicket-1.4.14/wicket/src/main/java/org/apache/wicket/util/io/WicketObjectOutputStream.java > URL: > http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.14/wicket/src/main/java/org/apache/wicket/util/io/WicketObjectOutputStream.java?rev=1038752&r1=1038751&r2=1038752&view=diff > ============================================================================== > --- > wicket/branches/wicket-1.4.14/wicket/src/main/java/org/apache/wicket/util/io/WicketObjectOutputStream.java > (original) > +++ > wicket/branches/wicket-1.4.14/wicket/src/main/java/org/apache/wicket/util/io/WicketObjectOutputStream.java > Wed Nov 24 18:27:33 2010 > @@ -28,11 +28,18 @@ import java.util.HashMap; > import java.util.Iterator; > import java.util.Map; > import java.util.Map.Entry; > +import java.util.Stack; > > +import org.apache.wicket.protocol.http.WebApplication; > import org.apache.wicket.util.lang.Generics; > > > /** > + * The Wicket ObjectOutputStream to enable back-button support for the > reloading mechanism, be sure > + * to put <tt>Objects.setObjectStreamFactory(new > WicketObjectStreamFactory());</tt> in your > + * application's {...@link WebApplication#init()} method. > + * > + * @see org.apache.wicket.protocol.http.ReloadingWicketFilter > * @author jcompagner > */ > public final class WicketObjectOutputStream extends ObjectOutputStream > @@ -445,7 +452,7 @@ public final class WicketObjectOutputStr > private final HandleArrayListStack<Object> defaultWrite = new > HandleArrayListStack<Object>(); > private final DataOutputStream out; > > - private ClassStreamHandler classHandler; > + private final Stack<ClassStreamHandler> classHandlerStack = new > Stack<ClassStreamHandler>(); > > private PutField curPut; > > @@ -470,7 +477,7 @@ public final class WicketObjectOutputStr > �...@override > public void close() throws IOException > { > - classHandler = null; > + classHandlerStack.clear(); > curObject = null; > curPut = null; > handledObjects.clear(); > @@ -487,7 +494,7 @@ public final class WicketObjectOutputStr > if (!defaultWrite.contains(curObject)) > { > defaultWrite.add(curObject); > - classHandler.writeFields(this, curObject); > + classHandlerStack.peek().writeFields(this, curObject); > } > } > > @@ -790,7 +797,7 @@ public final class WicketObjectOutputStr > else > { > Class<?> realClz = cls; > - classHandler = > ClassStreamHandler.lookup(realClz); > + ClassStreamHandler classHandler = > ClassStreamHandler.lookup(realClz); > > Object object = > classHandler.writeReplace(obj); > if (object != null) > @@ -815,6 +822,7 @@ public final class WicketObjectOutputStr > curObject = obj; > try > { > + > classHandlerStack.push(classHandler); > if > (!classHandler.invokeWriteMethod(this, obj)) > { > > classHandler.writeFields(this, obj); > @@ -849,6 +857,7 @@ public final class WicketObjectOutputStr > } > finally > { > + > classHandlerStack.pop(); > curObject = oldObject; > curPut = old; > } > > Modified: > wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/resource/DummyPage.java > URL: > http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/resource/DummyPage.java?rev=1038752&r1=1038751&r2=1038752&view=diff > ============================================================================== > --- > wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/resource/DummyPage.java > (original) > +++ > wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/resource/DummyPage.java > Wed Nov 24 18:27:33 2010 > @@ -16,6 +16,7 @@ > */ > package org.apache.wicket.resource; > > +import org.apache.wicket.IPageMap; > import org.apache.wicket.markup.html.WebPage; > > /** > @@ -36,4 +37,10 @@ public class DummyPage extends WebPage > super(); > } > > + > + public DummyPage(IPageMap pageMap) > + { > + super(pageMap); > + } > + > } > > Modified: > wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/util/io/WicketOutputStreamTest.java > URL: > http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/util/io/WicketOutputStreamTest.java?rev=1038752&r1=1038751&r2=1038752&view=diff > ============================================================================== > --- > wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/util/io/WicketOutputStreamTest.java > (original) > +++ > wicket/branches/wicket-1.4.14/wicket/src/test/java/org/apache/wicket/util/io/WicketOutputStreamTest.java > Wed Nov 24 18:27:33 2010 > @@ -17,6 +17,7 @@ > package org.apache.wicket.util.io; > > import java.io.ByteArrayInputStream; > +import java.io.IOException; > import java.math.BigInteger; > import java.util.GregorianCalendar; > import java.util.Locale; > @@ -24,10 +25,12 @@ import java.util.Locale; > import junit.framework.Assert; > > import org.apache.wicket.Page; > +import org.apache.wicket.PageMap; > import org.apache.wicket.RequestCycle; > import org.apache.wicket.WicketTestCase; > import org.apache.wicket.protocol.http.HttpSessionStore; > import org.apache.wicket.protocol.http.WebApplication; > +import org.apache.wicket.resource.DummyPage; > import org.apache.wicket.session.ISessionStore; > > /** > @@ -139,6 +142,17 @@ public class WicketOutputStreamTest exte > RequestCycle.get().detach(); > } > > + public void testPageWithPageMapSerialization() throws IOException, > ClassNotFoundException > + { > + DummyPage dummyPage = new DummyPage(PageMap.forName("test")); > + woos.writeObject(dummyPage); > + ByteArrayInputStream bais = new > ByteArrayInputStream(baos.toByteArray()); > + > + WicketObjectInputStream wois = new > WicketObjectInputStream(bais); > + DummyPage dummyPage2 = (DummyPage)wois.readObject(); > + > + Assert.assertEquals(dummyPage.getClass(), > dummyPage2.getClass()); > + } > > // public void testStringsEqualsAfterSerialization() throws Exception > // { > > >