Hi,

this fixes the serialization issues reported. I will go later through
the remaining stuff of javax.naming.* to fix some more serialization stuff.

2006-04-06  Wolfgang Baer  <[EMAIL PROTECTED]>

        Fixes bug #26995
        * javax/naming/directory/BasicAttribute.java,
        * javax/naming/directory/BasicAttributes.java:
        (readObject): New deserialization method.
        (writeObject): New serialization method.

Wolfgang

Index: javax/naming/directory/BasicAttribute.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/naming/directory/BasicAttribute.java,v
retrieving revision 1.5
diff -u -r1.5 BasicAttribute.java
--- javax/naming/directory/BasicAttribute.java	3 Apr 2006 21:03:49 -0000	1.5
+++ javax/naming/directory/BasicAttribute.java	6 Apr 2006 09:23:48 -0000
@@ -1,5 +1,5 @@
 /* BasicAttribute.java --
-   Copyright (C) 2000, 2001, 2004  Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2004, 2006  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -38,6 +38,9 @@
 
 package javax.naming.directory;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.NoSuchElementException;
 import java.util.Vector;
 
@@ -298,7 +301,25 @@
 
     return one.equals (two);
   }
-
+  
+  private void readObject(ObjectInputStream s)
+    throws IOException, ClassNotFoundException
+  {
+    s.defaultReadObject();
+    int size = s.readInt();
+    values = new Vector(size);
+    for (int i=0; i < size; i++)
+      values.add(s.readObject());
+  }
+
+  private void writeObject(ObjectOutputStream s) throws IOException
+  {
+    s.defaultWriteObject();
+    s.writeInt(values.size());
+    for (int i=0; i < values.size(); i++)
+      s.writeObject(values.get(i));    
+  }
+  
   // Used when enumerating this attribute.
   private class BasicAttributeEnumeration implements NamingEnumeration
   {
Index: javax/naming/directory/BasicAttributes.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/naming/directory/BasicAttributes.java,v
retrieving revision 1.6
diff -u -r1.6 BasicAttributes.java
--- javax/naming/directory/BasicAttributes.java	2 Jul 2005 20:32:45 -0000	1.6
+++ javax/naming/directory/BasicAttributes.java	6 Apr 2006 09:23:48 -0000
@@ -1,5 +1,5 @@
 /* BasicAttributes.java --
-   Copyright (C) 2000, 2001, 2004, 2005  Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2004, 2005, 2006  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -38,6 +38,9 @@
 
 package javax.naming.directory;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.NoSuchElementException;
 import java.util.Vector;
 
@@ -196,6 +199,24 @@
   // Package-private to avoid a trampoline.
   transient Vector attributes;
 
+  private void readObject(ObjectInputStream s) throws IOException,
+      ClassNotFoundException
+  {
+    s.defaultReadObject();
+    int size = s.readInt();
+    attributes = new Vector(size);    
+    for (int i = 0; i < size; i++)
+      attributes.add(s.readObject());
+  }
+
+  private void writeObject(ObjectOutputStream s) throws IOException
+  {
+    s.defaultWriteObject();
+    s.writeInt(attributes.size());
+    for (int i = 0; i < attributes.size(); i++)
+      s.writeObject(attributes.get(i));
+  }
+
   // Used when enumerating.
   private class BasicAttributesEnumeration implements NamingEnumeration
   {

Reply via email to