You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2003/08/28 12:16:39 UTC

cvs commit: incubator-geronimo/modules/common/src/test/org/apache/geronimo/common/propertyeditor URLArrayEditorTest.java

jdillon     2003/08/28 03:16:39

  Modified:    modules/common/src/java/org/apache/geronimo/common/propertyeditor
                        PropertyEditors.java StringArrayEditor.java
  Added:       modules/common/src/java/org/apache/geronimo/common/propertyeditor
                        ArrayPropertyEditorSupport.java URLArrayEditor.java
               modules/common/src/test/org/apache/geronimo/common/propertyeditor
                        URLArrayEditorTest.java
  Log:
   o Added URLArrayEditor
   o Created support class for editing array types
  
  Revision  Changes    Path
  1.2       +2 -1      incubator-geronimo/modules/common/src/java/org/apache/geronimo/common/propertyeditor/PropertyEditors.java
  
  Index: PropertyEditors.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/common/src/java/org/apache/geronimo/common/propertyeditor/PropertyEditors.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PropertyEditors.java	28 Aug 2003 09:40:53 -0000	1.1
  +++ PropertyEditors.java	28 Aug 2003 10:16:39 -0000	1.2
  @@ -86,6 +86,7 @@
           // Have to explicity register this because it does not follow the
           // naming convention used by PropertyManagerEditor to discover editors
           registerEditor(String[].class, StringArrayEditor.class);
  +        registerEditor(java.net.URL[].class, URLArrayEditor.class);
       }
       
       /**
  
  
  
  1.2       +6 -38     incubator-geronimo/modules/common/src/java/org/apache/geronimo/common/propertyeditor/StringArrayEditor.java
  
  Index: StringArrayEditor.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/common/src/java/org/apache/geronimo/common/propertyeditor/StringArrayEditor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- StringArrayEditor.java	28 Aug 2003 09:40:53 -0000	1.1
  +++ StringArrayEditor.java	28 Aug 2003 10:16:39 -0000	1.2
  @@ -56,9 +56,7 @@
   
   package org.apache.geronimo.common.propertyeditor;
   
  -import java.util.LinkedList;
   import java.util.List;
  -import java.util.StringTokenizer;
   
   /**
    * A property editor for String[].
  @@ -66,45 +64,15 @@
    * @version $Revision$ $Date$
    */
   public class StringArrayEditor
  -    extends TextPropertyEditorSupport
  +    extends ArrayPropertyEditorSupport
   {
  -    /**
  -     * Returns a String[] by spliting up the input string where 
  -     * elements are separated by commas.
  -     *
  -     * @return a URL object
  -     *
  -     * @throws PropertyEditorException   An MalformedURLException occured.
  -     */
  -    public void setAsText(String text)
  +    protected Object convertValue(final String value) throws Exception
       {
  -        if (text == null || text.length() == 0) {
  -            setValue(null);
  -        }
  -        else {
  -            StringTokenizer stok = new StringTokenizer(text, ",");
  -            List list = new LinkedList();
  -            
  -            while (stok.hasMoreTokens()) {
  -                list.add(stok.nextToken());
  -            }
  -            
  -            setValue((String[])list.toArray(new String[list.size()]));
  -        }
  +        return value;
       }
       
  -    public String getAsText()
  +    protected Object createArray(final List list)
       {
  -        String[] strings = (String[])getValue();
  -        if (strings == null || strings.length == 0) {
  -            return null; 
  -        }
  -        
  -        StringBuffer result = new StringBuffer(strings[0]);
  -        for (int i = 1; i < strings.length; i++) {
  -            result.append(",").append(strings[i]); 
  -        }
  -        
  -        return result.toString();
  +        return list.toArray(new String[list.size()]);
       }
   }
  
  
  
  1.1                  incubator-geronimo/modules/common/src/java/org/apache/geronimo/common/propertyeditor/ArrayPropertyEditorSupport.java
  
  Index: ArrayPropertyEditorSupport.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 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 acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" 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",
   *    "Apache Geronimo", nor may "Apache" appear in their name, 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.geronimo.common.propertyeditor;
  
  import java.util.LinkedList;
  import java.util.List;
  import java.util.StringTokenizer;
  
  /**
   * Property editor support for array types.
   *
   * @version $Revision: 1.1 $ $Date: 2003/08/28 10:16:39 $
   */
  public abstract class ArrayPropertyEditorSupport
      extends TextPropertyEditorSupport
  {
      protected abstract Object convertValue(final String value) throws Exception;
      protected abstract Object createArray(final List list);
      
      public void setAsText(String text)
      {
          if (text == null || text.length() == 0) {
              setValue(null);
          }
          else {
              StringTokenizer stok = new StringTokenizer(text, ",");
              List list = new LinkedList();
              
              try {
                  while (stok.hasMoreTokens()) {
                      Object obj = convertValue(stok.nextToken());
                      list.add(obj);
                  }
              }
              catch (Exception e) {
                  throw new PropertyEditorException(e);
              }
              
              setValue(createArray(list));
          }
      }
      
      public String getAsText()
      {
          Object[] objects = (Object[])getValue();
          if (objects == null || objects.length == 0) {
              return null; 
          }
          
          StringBuffer result = new StringBuffer(String.valueOf(objects[0]));
          for (int i = 1; i < objects.length; i++) {
              result.append(",").append(objects[i]); 
          }
          
          return result.toString();
      }
  }
  
  
  
  1.1                  incubator-geronimo/modules/common/src/java/org/apache/geronimo/common/propertyeditor/URLArrayEditor.java
  
  Index: URLArrayEditor.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 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 acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" 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",
   *    "Apache Geronimo", nor may "Apache" appear in their name, 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.geronimo.common.propertyeditor;
  
  import java.util.List;
  
  import java.net.URL;
  
  import org.apache.geronimo.common.Strings;
  
  /**
   * A property editor for URL[].
   *
   * @version $Revision: 1.1 $ $Date: 2003/08/28 10:16:39 $
   */
  public class URLArrayEditor
      extends ArrayPropertyEditorSupport
  {
      protected Object convertValue(final String value) throws Exception
      {
          return Strings.toURL(value);
      }
      
      protected Object createArray(final List list)
      {
          return list.toArray(new URL[list.size()]);
      }
  }
  
  
  
  1.1                  incubator-geronimo/modules/common/src/test/org/apache/geronimo/common/propertyeditor/URLArrayEditorTest.java
  
  Index: URLArrayEditorTest.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 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 acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" 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",
   *    "Apache Geronimo", nor may "Apache" appear in their name, 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.geronimo.common.propertyeditor;
  
  import java.net.URL;
  
  import java.beans.PropertyEditor;
  
  import junit.framework.TestCase;
  
  /**
   * Unit test for {@link URLArrayEditor} class.
   *
   * @version $Revision: 1.1 $ $Date: 2003/08/28 10:16:39 $
   */
  public class URLArrayEditorTest
      extends TestCase
  {
      PropertyEditor editor;
      
      protected void setUp()
      {
          editor = PropertyEditors.findEditor(URL[].class);
      }
      
      public void testGetValue_Simple()
      {
          String input = "http://apache.org";
          
          editor.setAsText(input);
          Object output = editor.getValue();
          
          assertNotNull(output);
          assertEquals(URL[].class, output.getClass());
          
          URL[] urls = (URL[])output;
          assertEquals(1, urls.length);
          assertEquals(input, urls[0].toString());
      }
      
      public void testGetValue_2URLs()
      {
          String input = "http://apache.org, http://google.com";
          
          editor.setAsText(input);
          Object output = editor.getValue();
          
          assertNotNull(output);
          assertEquals(URL[].class, output.getClass());
          
          URL[] urls = (URL[])output;
          assertEquals(2, urls.length);
          assertEquals("http://apache.org", urls[0].toString());
          assertEquals("http://google.com", urls[1].toString());
      }
  }