You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by jo...@apache.org on 2006/02/06 21:08:16 UTC

svn commit: r375350 - in /jakarta/commons/sandbox/id/trunk/src: java/org/apache/commons/id/ test-serialization/org.apache.commons.id.CompositeIdentifierGenerator/ test/org/apache/commons/id/

Author: joehni
Date: Mon Feb  6 12:08:13 2006
New Revision: 375350

URL: http://svn.apache.org/viewcvs?rev=375350&view=rev
Log:
Add missing minLength/maxLength implementations.
Make serializable.

Added:
    jakarta/commons/sandbox/id/trunk/src/test-serialization/org.apache.commons.id.CompositeIdentifierGenerator/
    jakarta/commons/sandbox/id/trunk/src/test-serialization/org.apache.commons.id.CompositeIdentifierGenerator/20060206.ser   (with props)
Modified:
    jakarta/commons/sandbox/id/trunk/src/java/org/apache/commons/id/CompositeIdentifierGenerator.java
    jakarta/commons/sandbox/id/trunk/src/test/org/apache/commons/id/CompositeIdentifierGeneratorTest.java

Modified: jakarta/commons/sandbox/id/trunk/src/java/org/apache/commons/id/CompositeIdentifierGenerator.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/id/trunk/src/java/org/apache/commons/id/CompositeIdentifierGenerator.java?rev=375350&r1=375349&r2=375350&view=diff
==============================================================================
--- jakarta/commons/sandbox/id/trunk/src/java/org/apache/commons/id/CompositeIdentifierGenerator.java (original)
+++ jakarta/commons/sandbox/id/trunk/src/java/org/apache/commons/id/CompositeIdentifierGenerator.java Mon Feb  6 12:08:13 2006
@@ -15,6 +15,7 @@
  */
 package org.apache.commons.id;
 
+import java.io.Serializable;
 import java.util.Collection;
 import java.util.Iterator;
 
@@ -26,8 +27,13 @@
  * @version $Revision$ $Date$
  * 
  */
-public class CompositeIdentifierGenerator extends AbstractStringIdentifierGenerator {
+public class CompositeIdentifierGenerator extends AbstractStringIdentifierGenerator implements Serializable {
 
+    /**
+     * <code>serialVersionUID</code> is the serializable UID for the binary version of the class.
+     */
+    private static final long serialVersionUID = 20060206L;
+    
     /** The identifier generators to concatenate */
     private final StringIdentifierGenerator[] identifierGenerators;
 
@@ -121,6 +127,22 @@
             buffer.append(identifierGenerators[i].nextStringIdentifier());
         }
         return buffer.toString();
+    }
+
+    public long maxLength() {
+        long length = 0;
+        for (int i = 0; i < identifierGenerators.length; i++) {
+            length += identifierGenerators[i].maxLength();
+        }
+        return length;
+    }
+
+    public long minLength() {
+        long length = 0;
+        for (int i = 0; i < identifierGenerators.length; i++) {
+            length += identifierGenerators[i].minLength();
+        }
+        return length;
     }
 
     /**

Added: jakarta/commons/sandbox/id/trunk/src/test-serialization/org.apache.commons.id.CompositeIdentifierGenerator/20060206.ser
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/id/trunk/src/test-serialization/org.apache.commons.id.CompositeIdentifierGenerator/20060206.ser?rev=375350&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jakarta/commons/sandbox/id/trunk/src/test-serialization/org.apache.commons.id.CompositeIdentifierGenerator/20060206.ser
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: jakarta/commons/sandbox/id/trunk/src/test/org/apache/commons/id/CompositeIdentifierGeneratorTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/id/trunk/src/test/org/apache/commons/id/CompositeIdentifierGeneratorTest.java?rev=375350&r1=375349&r2=375350&view=diff
==============================================================================
--- jakarta/commons/sandbox/id/trunk/src/test/org/apache/commons/id/CompositeIdentifierGeneratorTest.java (original)
+++ jakarta/commons/sandbox/id/trunk/src/test/org/apache/commons/id/CompositeIdentifierGeneratorTest.java Mon Feb  6 12:08:13 2006
@@ -15,16 +15,16 @@
  */
 package org.apache.commons.id;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
 
-import org.apache.commons.id.serial.NumericGenerator;
 import org.apache.commons.id.serial.AlphanumericGenerator;
+import org.apache.commons.id.serial.NumericGenerator;
+import org.apache.commons.id.test.AssertSerialization;
 
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
 
 /**
  * Tests the org.apache.commons.id.CompositeIdentifierGenerator class.
@@ -32,8 +32,7 @@
  * @author Commons-id team
  * @version $Id$
  */
-public class CompositeIdentifierGeneratorTest extends junit.framework.TestCase {
-
+public class CompositeIdentifierGeneratorTest extends TestCase {
 
     public void testGetInstanceArrayInput() {
         // positive test
@@ -116,14 +115,58 @@
                 generator.nextStringIdentifier());
     }
     
-    protected StringIdentifierGenerator[] makeTestArray() {
+    public void testLength() {
+        StringIdentifierGenerator[] generators = makeTestArray();
+        StringIdentifierGenerator generator =
+            CompositeIdentifierGenerator.getInstance(generators);        
+        long maxLength = 0;
+        long minLength = 0;
+        for (int i = 0; i < generators.length; i++) {
+            maxLength += generators[i].maxLength();
+            minLength += generators[i].minLength();
+        }
+        assertEquals(maxLength, generator.maxLength());
+        assertEquals(minLength, generator.minLength());
+    }
+    
+    /**
+     * {@link TestSuite} for SessionIdGenerator. Ensures serialization.
+     * 
+     * @return the TestSuite
+     */
+    public static TestSuite suite() {
+        final TestSuite suite = new TestSuite(CompositeIdentifierGeneratorTest.class);
+        suite.addTest(AssertSerialization.createSerializationTestSuite(new SerializationTestContext() {
+
+            public void verify(Object serialized, long uid) {
+                CompositeIdentifierGenerator test = (CompositeIdentifierGenerator)serialized;
+                CompositeIdentifierGenerator idGenerator = (CompositeIdentifierGenerator)createReference();
+                StringIdentifierGenerator[] testGenerators =  test.getIdentifierGenerators();
+                StringIdentifierGenerator[] generators =  idGenerator.getIdentifierGenerators();
+                assertEquals(generators.length, testGenerators.length);
+                assertSame(generators[0].getClass(), testGenerators[0].getClass());
+                assertSame(generators[1].getClass(), testGenerators[1].getClass());
+            }
+
+            public Serializable createReference() {
+                return new CompositeIdentifierGenerator(makeTestArray());
+            }
+
+            public Class getType() {
+                return CompositeIdentifierGenerator.class;
+            }
+        }));
+        return suite;
+    }
+    
+    protected static StringIdentifierGenerator[] makeTestArray() {
         StringIdentifierGenerator[] out = 
         {new NumericGenerator(false, 0), 
                 new AlphanumericGenerator(true)};
         return out;
     }
     
-    protected ArrayList makeTestCollection() {
+    protected static ArrayList makeTestCollection() {
         return new ArrayList(Arrays.asList(makeTestArray()));
     }
 }



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