You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ps...@apache.org on 2003/12/30 23:48:30 UTC

cvs commit: jakarta-commons-sandbox/uid/src/test/org/apache/commons/uid CustomIdentifierGeneratorFactory.java IdentifierGeneratorFactoryTest.java IdentifierUtilsTest.java

psteitz     2003/12/30 14:48:30

  Modified:    uid/src/test/org/apache/commons/uid IdentifierUtilsTest.java
  Added:       uid/src/test/org/apache/commons/uid
                        CustomIdentifierGeneratorFactory.java
                        IdentifierGeneratorFactoryTest.java
  Log:
  Added factory discovery tests.
  
  Revision  Changes    Path
  1.2       +1 -2      jakarta-commons-sandbox/uid/src/test/org/apache/commons/uid/IdentifierUtilsTest.java
  
  Index: IdentifierUtilsTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/uid/src/test/org/apache/commons/uid/IdentifierUtilsTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IdentifierUtilsTest.java	30 Dec 2003 07:29:18 -0000	1.1
  +++ IdentifierUtilsTest.java	30 Dec 2003 22:48:30 -0000	1.2
  @@ -354,7 +354,6 @@
           assertEquals("0", b.substring(9)); //Different from [lang], factory is independent
           assertEquals("1", c.substring(9)); // "" "" 
       }
  -
       //--------------------------------------------------------------------------
   
   }
  
  
  
  1.1                  jakarta-commons-sandbox/uid/src/test/org/apache/commons/uid/CustomIdentifierGeneratorFactory.java
  
  Index: CustomIdentifierGeneratorFactory.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-commons-sandbox/uid/src/test/org/apache/commons/uid/CustomIdentifierGeneratorFactory.java,v 1.1 2003/12/30 22:48:30 psteitz Exp $
   * ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowledgement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgement may appear in the software itself,
   *    if and wherever such third-party acknowledgements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.commons.uid;
  
  import org.apache.commons.uid.serial.LongGenerator;
  
  /**
   * <p>A custom IdentifierGeneratorFactory used by {@link IdentifierGeneratorFactoryTest}.</p>
   *
   * <p>Extends {@link DefaultIdentifierGeneratorFactory}, overriding the default 
   * LongIdentifierGenerator method to return a generator that starts at 100 instead of 1.</p>
   *
   * @author Commons-Uid team
   * @version $id$
   */
  public class CustomIdentifierGeneratorFactory extends DefaultIdentifierGeneratorFactory {
      
      /** Creates a new instance of CustomIdentifierGeneratorFactory */
      public CustomIdentifierGeneratorFactory() {
          super();
      }
      
      /**
       * <p>Gets a new {@link LongIdentifierGenerator} that generates
       * a sequence of Long objects increasing in value.</p>
       *
       * <p>The sequence will wrap when the maximum <code>long</code> value is
       * reached and return negative numbers. It will start from 100.</p>
       *
       * @return a new LongIdentifier with wrapping behavior
       */
      public LongIdentifierGenerator longGenerator() {
          return new LongGenerator(true, 100L);
      }
      
  }
  
  
  
  1.1                  jakarta-commons-sandbox/uid/src/test/org/apache/commons/uid/IdentifierGeneratorFactoryTest.java
  
  Index: IdentifierGeneratorFactoryTest.java
  ===================================================================
  /*
   *===================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowledgement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgement may appear in the software itself,
   *    if and wherever such third-party acknowledgements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.commons.uid;
  
  import junit.framework.Test;
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  import junit.textui.TestRunner;
  
  /**
   * Unit tests for {@link IdentifierGeneratorFactory}.
   *  
   * @version $Revision: 1.1 $ $Date: 2003/12/30 22:48:30 $
   * @author Commons-Uid team
   */
  public class IdentifierGeneratorFactoryTest extends TestCase {
          
      public IdentifierGeneratorFactoryTest(String name) {
          super(name);
      }
  
      public static void main(String[] args) {
          TestRunner.run(suite());
      }
   
      public static Test suite() {
      	TestSuite suite = new TestSuite(IdentifierGeneratorFactoryTest.class);
      	suite.setName("IdentifierGeneratorFactory Tests");
          return suite;
      }
      
      //-------------------------------------------------------------------------
      
      protected void setUp() throws Exception {
          super.setUp();
      }
      
      /**
       * Test disovery for custom factories based on system property
       */
      public void testDiscovery() throws Exception {
          
          // Override System property with Custom factory class name
          System.setProperty(IdentifierGeneratorFactory.class.getName(), 
              "org.apache.commons.uid.CustomIdentifierGeneratorFactory");
          
          // Custom factory creates default LongGenerator that starts with 100 instead of 1.
          IdentifierGeneratorFactory factory = IdentifierGeneratorFactory.newInstance();
          LongIdentifierGenerator longGenerator = factory.longGenerator();
          assertEquals(new Long(100), longGenerator.nextLongIdentifier());
          
          // Now reset back to default -- should start with 1 now.
          System.setProperty(IdentifierGeneratorFactory.class.getName(), 
              "org.apache.commons.uid.DefaultIdentifierGeneratorFactory");
          factory = IdentifierGeneratorFactory.newInstance();
          longGenerator = factory.longGenerator();
          assertEquals(new Long(0), longGenerator.nextLongIdentifier());
          
          // Now blow things up with a bad class def, factory will (quietly) be null
          System.setProperty(IdentifierGeneratorFactory.class.getName(), 
              "BadClassName");
          factory = IdentifierGeneratorFactory.newInstance();
          assertNull(factory);
          
          // Better fix now, so later tests don't blow up
          System.setProperty(IdentifierGeneratorFactory.class.getName(), 
              "org.apache.commons.uid.DefaultIdentifierGeneratorFactory");   
      }        
  }
  
  
  

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