Author: ivaynberg
Date: Mon Mar 24 23:40:33 2008
New Revision: 640716

URL: http://svn.apache.org/viewvc?rev=640716&view=rev
Log:
WICKET-1445: Bug in PageSerialization

Modified:
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java?rev=640716&r1=640715&r2=640716&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
 Mon Mar 24 23:40:33 2008
@@ -104,7 +104,7 @@
                private final HashMap replacedComponents;
 
                private ReplaceObjectInputStream(InputStream in, HashMap 
replacedComponents,
-                               ClassLoader classloader) throws IOException
+                       ClassLoader classloader) throws IOException
                {
                        super(in);
                        this.replacedComponents = replacedComponents;
@@ -116,7 +116,7 @@
                // bundle, i.e.
                // The classes can be resolved by OSGI classresolver 
implementation
                protected Class resolveClass(ObjectStreamClass desc) throws 
IOException,
-                               ClassNotFoundException
+                       ClassNotFoundException
                {
                        String className = desc.getName();
 
@@ -127,8 +127,7 @@
                        catch (ClassNotFoundException ex1)
                        {
                                // ignore this exception.
-                               log
-                                               .debug("Class not found by 
using objects own classloader, trying the IClassResolver");
+                               log.debug("Class not found by using objects own 
classloader, trying the IClassResolver");
                        }
 
                        Application application = Application.get();
@@ -170,7 +169,7 @@
                private final HashMap replacedComponents;
 
                private ReplaceObjectOutputStream(OutputStream out, HashMap 
replacedComponents)
-                               throws IOException
+                       throws IOException
                {
                        super(out);
                        this.replacedComponents = replacedComponents;
@@ -399,12 +398,12 @@
                catch (ClassNotFoundException e)
                {
                        throw new RuntimeException("Could not deserialize 
object using `" +
-                                       
objectStreamFactory.getClass().getName() + "` object factory", e);
+                               objectStreamFactory.getClass().getName() + "` 
object factory", e);
                }
                catch (IOException e)
                {
                        throw new RuntimeException("Could not deserialize 
object using `" +
-                                       
objectStreamFactory.getClass().getName() + "` object factory", e);
+                               objectStreamFactory.getClass().getName() + "` 
object factory", e);
                }
        }
 
@@ -431,8 +430,8 @@
                                final HashMap replacedObjects = new HashMap();
                                ObjectOutputStream oos = new 
ReplaceObjectOutputStream(out, replacedObjects);
                                oos.writeObject(object);
-                               ObjectInputStream ois = new 
ReplaceObjectInputStream(new ByteArrayInputStream(out
-                                               .toByteArray()), 
replacedObjects, object.getClass().getClassLoader());
+                               ObjectInputStream ois = new 
ReplaceObjectInputStream(new ByteArrayInputStream(
+                                       out.toByteArray()), replacedObjects, 
object.getClass().getClassLoader());
                                return ois.readObject();
                        }
                        catch (ClassNotFoundException e)
@@ -468,32 +467,30 @@
                                final ByteArrayOutputStream out = new 
ByteArrayOutputStream(256);
                                ObjectOutputStream oos = new 
ObjectOutputStream(out);
                                oos.writeObject(object);
-                               ObjectInputStream ois = new 
ObjectInputStream(new ByteArrayInputStream(out
-                                               .toByteArray()))
+                               ObjectInputStream ois = new 
ObjectInputStream(new ByteArrayInputStream(
+                                       out.toByteArray()))
                                {
                                        // This override is required to resolve 
classes inside in different bundle, i.e.
                                        // The classes can be resolved by OSGI 
classresolver implementation
                                        protected Class 
resolveClass(ObjectStreamClass desc) throws IOException,
-                                                       ClassNotFoundException
+                                               ClassNotFoundException
                                        {
                                                String className = 
desc.getName();
 
                                                try
                                                {
                                                        return 
Class.forName(className, true, object.getClass()
-                                                                       
.getClassLoader());
+                                                               
.getClassLoader());
                                                }
                                                catch (ClassNotFoundException 
ex1)
                                                {
                                                        // ignore this 
exception.
-                                                       log
-                                                                       
.debug("Class not found by using objects own classloader, trying the 
IClassResolver");
+                                                       log.debug("Class not 
found by using objects own classloader, trying the IClassResolver");
                                                }
 
 
                                                Application application = 
Application.get();
-                                               IApplicationSettings 
applicationSettings = application
-                                                               
.getApplicationSettings();
+                                               IApplicationSettings 
applicationSettings = application.getApplicationSettings();
                                                IClassResolver classResolver = 
applicationSettings.getClassResolver();
 
                                                Class candidate = null;
@@ -560,7 +557,7 @@
                else
                {
                        int t1 = getNumericType(v1), t2 = getNumericType(v2), 
type = getNumericType(t1, t2,
-                                       true);
+                               true);
 
                        switch (type)
                        {
@@ -576,7 +573,7 @@
                                        if ((t1 == NONNUMERIC) && (t2 == 
NONNUMERIC))
                                        {
                                                if ((v1 instanceof Comparable) 
&&
-                                                               
v1.getClass().isAssignableFrom(v2.getClass()))
+                                                       
v1.getClass().isAssignableFrom(v2.getClass()))
                                                {
                                                        result = 
((Comparable)v1).compareTo(v2);
                                                        break;
@@ -584,7 +581,7 @@
                                                else
                                                {
                                                        throw new 
IllegalArgumentException("invalid comparison: " +
-                                                                       
v1.getClass().getName() + " and " + v2.getClass().getName());
+                                                               
v1.getClass().getName() + " and " + v2.getClass().getName());
                                                }
                                        }
                                        // else fall through
@@ -931,7 +928,7 @@
                        if ((object1 != null) && object1.getClass().isArray())
                        {
                                if ((object2 != null) && 
object2.getClass().isArray() &&
-                                               (object2.getClass() == 
object1.getClass()))
+                                       (object2.getClass() == 
object1.getClass()))
                                {
                                        result = (Array.getLength(object1) == 
Array.getLength(object2));
                                        if (result)
@@ -948,7 +945,7 @@
                                // Check for converted equivalence first, then 
equals()
                                // equivalence
                                result = (object1 != null) && (object2 != null) 
&&
-                                               
((compareWithConversion(object1, object2) == 0) || object1.equals(object2));
+                                       ((compareWithConversion(object1, 
object2) == 0) || object1.equals(object2));
                        }
                }
                return result;
@@ -1080,12 +1077,18 @@
                try
                {
                        final ByteArrayOutputStream out = new 
ByteArrayOutputStream();
+                       ObjectOutputStream oos = null;
                        try
                        {
-                               
objectStreamFactory.newObjectOutputStream(out).writeObject(object);
+                               oos = 
objectStreamFactory.newObjectOutputStream(out);
+                               oos.writeObject(object);
                        }
                        finally
                        {
+                               if (oos != null)
+                               {
+                                       oos.close();
+                               }
                                out.close();
                        }
                        return out.toByteArray();
@@ -1093,7 +1096,7 @@
                catch (Exception e)
                {
                        log.error("Error serializing object " + 
object.getClass() + " [object=" + object + "]",
-                                       e);
+                               e);
                }
                return null;
        }


Reply via email to