You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2005/10/08 14:50:01 UTC

svn commit: r307292 - in /jakarta/commons/proper/collections/trunk: ./ data/test/ src/java/org/apache/commons/collections/buffer/ src/test/org/apache/commons/collections/buffer/

Author: scolebourne
Date: Sat Oct  8 05:49:53 2005
New Revision: 307292

URL: http://svn.apache.org/viewcvs?rev=307292&view=rev
Log:
Make PriorityBuffer Serializable
bug 36163, from Steve Phelps

Added:
    jakarta/commons/proper/collections/trunk/data/test/PriorityBuffer.emptyCollection.version3.2.obj   (with props)
    jakarta/commons/proper/collections/trunk/data/test/PriorityBuffer.fullCollection.version3.2.obj   (with props)
Modified:
    jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html
    jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/buffer/PriorityBuffer.java
    jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/buffer/TestPriorityBuffer.java

Modified: jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html?rev=307292&r1=307291&r2=307292&view=diff
==============================================================================
--- jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html (original)
+++ jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html Sat Oct  8 05:49:53 2005
@@ -71,6 +71,7 @@
 <li>BlockingBuffer - now includes stack trace if InterupttedException occurs [33700]</li>
 <li>BlockingBuffer - new methods that allow get and remove with a timeout [27691]</li>
 <li>Transformed*Map - new factory decorateTransform() that transforms any existing entries in the map [30959]</li>
+<li>PriorityBuffer - now Serializable [36163]</li>
 </ul>
 
 <center><h3>BUG FIXES</h3></center>

Added: jakarta/commons/proper/collections/trunk/data/test/PriorityBuffer.emptyCollection.version3.2.obj
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/collections/trunk/data/test/PriorityBuffer.emptyCollection.version3.2.obj?rev=307292&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/commons/proper/collections/trunk/data/test/PriorityBuffer.emptyCollection.version3.2.obj
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jakarta/commons/proper/collections/trunk/data/test/PriorityBuffer.fullCollection.version3.2.obj
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/collections/trunk/data/test/PriorityBuffer.fullCollection.version3.2.obj?rev=307292&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/commons/proper/collections/trunk/data/test/PriorityBuffer.fullCollection.version3.2.obj
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/buffer/PriorityBuffer.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/buffer/PriorityBuffer.java?rev=307292&r1=307291&r2=307292&view=diff
==============================================================================
--- jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/buffer/PriorityBuffer.java (original)
+++ jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/buffer/PriorityBuffer.java Sat Oct  8 05:49:53 2005
@@ -15,6 +15,7 @@
  */
 package org.apache.commons.collections.buffer;
 
+import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.Comparator;
 import java.util.Iterator;
@@ -57,8 +58,13 @@
  * @author Michael A. Smith
  * @author Paul Jack
  * @author Stephen Colebourne
+ * @author Steve Phelps
  */
-public class PriorityBuffer extends AbstractCollection implements Buffer {
+public class PriorityBuffer extends AbstractCollection
+        implements Buffer, Serializable {
+
+    /** Serialization lock. */
+    private static final long serialVersionUID = 6891186490470027896L;
 
     /**
      * The default capacity for the buffer.

Modified: jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/buffer/TestPriorityBuffer.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/buffer/TestPriorityBuffer.java?rev=307292&r1=307291&r2=307292&view=diff
==============================================================================
--- jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/buffer/TestPriorityBuffer.java (original)
+++ jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/buffer/TestPriorityBuffer.java Sat Oct  8 05:49:53 2005
@@ -15,10 +15,12 @@
  */
 package org.apache.commons.collections.buffer;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.Random;
 
 import junit.framework.Test;
@@ -37,6 +39,7 @@
  * @version $Revision$ $Date$
  * 
  * @author Michael A. Smith
+ * @author Steve Phelps
  */
 public class TestPriorityBuffer extends AbstractTestCollection {
 
@@ -306,7 +309,6 @@
     protected void checkOrder(PriorityBuffer h) {
         Integer lastNum = null;
         Integer num = null;
-        boolean fail = false;
         while (!h.isEmpty()) {
             num = (Integer) h.remove();
             if (h.ascendingOrder) {
@@ -336,5 +338,70 @@
         }
         return buffer.toString();
     }
-    
+
+    /**
+     * Generates 500 randomly initialized heaps of size 100
+     * and tests that after serializing and restoring them to a byte array
+     * that the following conditions hold:
+     * 
+     *  - the size of the restored heap is the same 
+     *      as the size of the orignal heap
+     *  
+     *  - all elements in the original heap are present in the restored heap
+     *  
+     *  - the heap order of the restored heap is intact as 
+     *      verified by checkOrder()
+     */
+    public void testSerialization() {
+        int iterations = 500;
+        int heapSize = 100;
+        PriorityBuffer h;
+        Random randGenerator = new Random();
+        for (int i = 0; i < iterations; i++) {
+            if (i < iterations / 2) {
+                h = new PriorityBuffer(true);
+            } else {
+                h = new PriorityBuffer(false);
+            }
+            for (int r = 0; r < heapSize; r++) {
+                h.add(new Integer(randGenerator.nextInt(heapSize)));
+            }
+            assertTrue(h.size() == heapSize);
+            PriorityBuffer h1 = serializeAndRestore(h);
+            assertTrue(h1.size() == heapSize);
+            Iterator hit = h.iterator();
+            while (hit.hasNext()) {
+                Integer n = (Integer) hit.next();
+                assertTrue(h1.contains(n));
+            }
+            checkOrder(h1);
+        }
+    }
+
+    public PriorityBuffer serializeAndRestore(PriorityBuffer h) {
+        PriorityBuffer h1 = null;
+        try {
+            byte[] objekt = writeExternalFormToBytes(h);
+            h1 = (PriorityBuffer) readExternalFormFromBytes(objekt);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail(e.toString());
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+            fail(e.toString());
+        }
+        return h1;
+    }
+
+    public String getCompatibilityVersion() {
+        return "3.2";
+    }
+
+//    public void testCreate() throws Exception {
+//        resetEmpty();
+//        writeExternalFormToDisk((java.io.Serializable) collection, "C:/commons/collections/data/test/PriorityBuffer.emptyCollection.version3.2.obj");
+//        resetFull();
+//        writeExternalFormToDisk((java.io.Serializable) collection, "C:/commons/collections/data/test/PriorityBuffer.fullCollection.version3.2.obj");
+//    }
+
 }



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