[jboss-svn-commits] JBoss Common SVN: r2908 - in common-core/tags: 2.2.8.GA and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 26 12:40:24 EDT 2008
Author: dimitris at jboss.org
Date: 2008-08-26 12:40:24 -0400 (Tue, 26 Aug 2008)
New Revision: 2908
Added:
common-core/tags/2.2.8.GA/
common-core/tags/2.2.8.GA/pom.xml
common-core/tags/2.2.8.GA/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java
Removed:
common-core/tags/2.2.8.GA/pom.xml
common-core/tags/2.2.8.GA/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java
Log:
[maven-release-plugin] copy for tag 2.2.8.GA
Copied: common-core/tags/2.2.8.GA (from rev 2905, common-core/trunk)
Deleted: common-core/tags/2.2.8.GA/pom.xml
===================================================================
--- common-core/trunk/pom.xml 2008-08-26 14:20:11 UTC (rev 2905)
+++ common-core/tags/2.2.8.GA/pom.xml 2008-08-26 16:40:24 UTC (rev 2908)
@@ -1,92 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-parent</artifactId>
- <version>3</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-common-core</artifactId>
- <version>2.2.8-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>JBoss Common Classes</name>
- <url>http://www.jboss.org</url>
- <description>JBoss Common Core Utility classes</description>
- <scm>
- <connection>scm:svn:https://svn.jboss.org/repos/common/common-core/tags/2.2.6.GA</connection>
- </scm>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-release-plugin</artifactId>
- <configuration>
- <!-- The tagBase property is needed during the release process so that the maven release plugin
- will create the release tag in the appropriate location. -->
- <tagBase>https://svn.jboss.org/repos/common/common-core/tags</tagBase>
- </configuration>
- </plugin>
- <plugin>
- <groupId>jboss.maven-plugins</groupId>
- <artifactId>jboss-deploy-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- <repositories>
- <repository>
- <id>repository.jboss.org</id>
- <name>JBoss Repository</name>
- <layout>default</layout>
- <url>http://repository.jboss.org/maven2/</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>snapshots.jboss.org</id>
- <name>JBoss Snapshot Repository</name>
- <layout>default</layout>
- <url>http://snapshots.jboss.org/maven2/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <dependencies>
-
- <dependency>
- <groupId>apache-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- <version>2.0.2</version>
- <scope>compile</scope>
- <optional>true</optional> <!-- org.jboss.net.protocol.http.DavURLLister -->
- </dependency>
-
- <dependency>
- <groupId>apache-slide</groupId>
- <artifactId>webdavlib</artifactId>
- <version>2.0</version>
- <scope>compile</scope>
- <optional>true</optional> <!-- org.jboss.net.protocol.http.DavURLLister -->
- </dependency>
-
- <dependency>
- <groupId>org.jboss.logging</groupId>
- <artifactId>jboss-logging-spi</artifactId>
- <version>2.0.5.GA</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.4</version>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-
-</project>
\ No newline at end of file
Copied: common-core/tags/2.2.8.GA/pom.xml (from rev 2907, common-core/trunk/pom.xml)
===================================================================
--- common-core/tags/2.2.8.GA/pom.xml (rev 0)
+++ common-core/tags/2.2.8.GA/pom.xml 2008-08-26 16:40:24 UTC (rev 2908)
@@ -0,0 +1,92 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-parent</artifactId>
+ <version>3</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-common-core</artifactId>
+ <version>2.2.8.GA</version>
+ <packaging>jar</packaging>
+ <name>JBoss Common Classes</name>
+ <url>http://www.jboss.org</url>
+ <description>JBoss Common Core Utility classes</description>
+ <scm>
+ <connection>scm:svn:https://svn.jboss.org/repos/common/common-core/tags/2.2.8.GA</connection>
+ </scm>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-release-plugin</artifactId>
+ <configuration>
+ <!-- The tagBase property is needed during the release process so that the maven release plugin
+ will create the release tag in the appropriate location. -->
+ <tagBase>https://svn.jboss.org/repos/common/common-core/tags</tagBase>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>jboss.maven-plugins</groupId>
+ <artifactId>jboss-deploy-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ <repositories>
+ <repository>
+ <id>repository.jboss.org</id>
+ <name>JBoss Repository</name>
+ <layout>default</layout>
+ <url>http://repository.jboss.org/maven2/</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>snapshots.jboss.org</id>
+ <name>JBoss Snapshot Repository</name>
+ <layout>default</layout>
+ <url>http://snapshots.jboss.org/maven2/</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>apache-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>2.0.2</version>
+ <scope>compile</scope>
+ <optional>true</optional> <!-- org.jboss.net.protocol.http.DavURLLister -->
+ </dependency>
+
+ <dependency>
+ <groupId>apache-slide</groupId>
+ <artifactId>webdavlib</artifactId>
+ <version>2.0</version>
+ <scope>compile</scope>
+ <optional>true</optional> <!-- org.jboss.net.protocol.http.DavURLLister -->
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-spi</artifactId>
+ <version>2.0.5.GA</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+</project>
\ No newline at end of file
Deleted: common-core/tags/2.2.8.GA/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java
===================================================================
--- common-core/trunk/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java 2008-08-26 14:20:11 UTC (rev 2905)
+++ common-core/tags/2.2.8.GA/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java 2008-08-26 16:40:24 UTC (rev 2908)
@@ -1,504 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.util.test.propertyeditor;
-
-import java.beans.PropertyEditor;
-import java.beans.PropertyEditorManager;
-import java.io.File;
-import java.net.InetAddress;
-import java.net.URI;
-import java.net.URL;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Locale;
-import java.util.Properties;
-import java.util.TimeZone;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
-
-import junit.framework.TestCase;
-
-import org.jboss.logging.Logger;
-import org.jboss.util.Strings;
-import org.jboss.util.propertyeditor.DateEditor;
-import org.jboss.util.propertyeditor.DocumentEditor;
-import org.jboss.util.propertyeditor.ElementEditor;
-import org.jboss.util.propertyeditor.PropertyEditors;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * Unit tests for the custom JBoss property editors
- *
- * @see org.jboss.util.propertyeditor.PropertyEditors
- *
- * @author Scott.Stark at jboss.org
- * @author Dimitris.Andreadis at jboss.org
- * @version $Revision: 43534 $
- */
- at SuppressWarnings("unchecked")
-public class PropertyEditorsUnitTestCase extends TestCase
-{
- private static Logger log = Logger.getLogger(PropertyEditorsUnitTestCase.class);
- Calendar calendar = Calendar.getInstance();
-
- /** Augment the PropertyEditorManager search path to incorporate the JBoss
- specific editors. This simply references the PropertyEditors.class to
- invoke its static initialization block.
- */
- static
- {
- PropertyEditors.init();
- String[] paths = PropertyEditorManager.getEditorSearchPath();
- log.info(Arrays.asList(paths));
- }
-
- static class StringArrayComparator implements Comparator
- {
- public int compare(Object o1, Object o2)
- {
- String[] a1 = (String[]) o1;
- String[] a2 = (String[]) o2;
- int compare = a1.length - a2.length;
- for(int n = 0; n < a1.length; n ++)
- compare += a1[n].compareTo(a2[n]);
- return compare;
- }
- }
- static class ClassArrayComparator implements Comparator
- {
- public int compare(Object o1, Object o2)
- {
- Class<?>[] a1 = (Class[]) o1;
- Class<?>[] a2 = (Class[]) o2;
- int compare = a1.length - a2.length;
- for(int n = 0; n < a1.length; n ++)
- {
- int hash1 = a1[n].hashCode();
- int hash2 = a2[n].hashCode();
- compare += hash1 - hash2;
- }
- return compare;
- }
- }
- static class IntArrayComparator implements Comparator
- {
- public int compare(Object o1, Object o2)
- {
- int[] a1 = (int[]) o1;
- int[] a2 = (int[]) o2;
- int compare = a1.length - a2.length;
- for(int n = 0; n < a1.length; n ++)
- compare += a1[n] - a2[n];
- return compare;
- }
- }
- static class NumberComparator implements Comparator<Number>
- {
- public int compare(Number o1, Number o2)
- {
- return o1.intValue() - o2.intValue();
- }
- }
- static class ToStringComparator implements Comparator
- {
- public int compare(Object o1, Object o2)
- {
- String s1 = o1.toString();
- String s2 = o2.toString();
- return s1.compareTo(s2);
- }
- }
-
- public PropertyEditorsUnitTestCase(String name)
- {
- super(name);
- }
-
- public void testEditorSearchPath()
- throws Exception
- {
- log.debug("+++ testEditorSearchPath");
- String[] searchPath = PropertyEditorManager.getEditorSearchPath();
- boolean foundJBossPath = false;
- for(int p = 0; p < searchPath.length; p ++)
- {
- String path = searchPath[p];
- log.debug("path["+p+"]="+path);
- foundJBossPath |= path.equals("org.jboss.util.propertyeditor");
- }
- assertTrue("Found org.jboss.util.propertyeditor in search path", foundJBossPath);
- }
-
- /** The mechanism for mapping java.lang.* variants of the primative types
- misses editors for java.lang.Boolean and java.lang.Integer. Here we test
- the java.lang.* variants we expect editors for.
- * @throws Exception
- **/
- public void testJavaLangEditors()
- throws Exception
- {
- log.debug("+++ testJavaLangEditors");
- // The supported java.lang.* types
- Class[] types = {
- Boolean.class,
- Byte.class,
- Short.class,
- Integer.class,
- Long.class,
- Float.class,
- Double.class,
- Byte.class,
- Character.class,
- };
- // The input string data for each type
- String[][] inputData = {
- {"true", "false", "TRUE", "FALSE", "tRuE", "FaLsE", null},
- {"1", "-1", "0", "0x1A"},
- {"1", "-1", "0", "0xA0"},
- {"1", "-1", "0", "0xA0"},
- {"1", "-1", "0", "1000"},
- {"1", "-1", "0", "1000.1"},
- {"1", "-1", "0", "1000.1"},
- {"0x1", "-#1", "0"},
- {"A", "a", "Z", "z"},
- };
- // The expected java.lang.* instance for each inputData value
- Object[][] expectedData = {
- {Boolean.TRUE, Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, null},
- {Byte.valueOf("1"), Byte.valueOf("-1"), Byte.valueOf("0"), Byte.decode("0x1A")},
- {Short.valueOf("1"), Short.valueOf("-1"), Short.valueOf("0"), Short.decode("0xA0")},
- {Integer.valueOf("1"), Integer.valueOf("-1"), Integer.valueOf("0"), Integer.decode("0xA0")},
- {Long.valueOf("1"), Long.valueOf("-1"), Long.valueOf("0"), Long.valueOf("1000")},
- {Float.valueOf("1"), Float.valueOf("-1"), Float.valueOf("0"), Float.valueOf("1000.1")},
- {Double.valueOf("1"), Double.valueOf("-1"), Double.valueOf("0"), Double.valueOf("1000.1")},
- {Byte.valueOf("1"), Byte.valueOf("-1"), Byte.valueOf("0")},
- {new Character('A'), new Character('a'), new Character('Z'), new Character('z')},
- };
- // The expected string output from getAsText()
- String[][] expectedStringData = {
- {"true", "false", "true", "false", "true", "false", "null"},
- {"1", "-1", "0", "26"},
- {"1", "-1", "0", "160"},
- {"1", "-1", "0", "160"},
- {"1", "-1", "0", "1000"},
- {"1.0", "-1.0", "0.0", "1000.1"},
- {"1.0", "-1.0", "0.0", "1000.1"},
- {"1", "-1", "0"},
- {"A", "a", "Z", "z"},
- };
- Comparator[] comparators = new Comparator[types.length];
-
- doTests(types, inputData, expectedData, expectedStringData, comparators);
- }
-
- /** Test custom JBoss property editors.
- * @throws Exception
- */
- public void testJBossEditors()
- throws Exception
- {
- log.debug("+++ testJBossEditors");
- Class[] types = {
- java.io.File.class,
- java.net.URL.class,
- java.net.URI.class,
- java.lang.String.class,
- java.lang.Class.class,
- InetAddress.class,
- String[].class,
- Class[].class,
- int[].class,
- Date.class,
- java.util.Properties.class,
- Locale.class,
- AtomicInteger.class,
- AtomicLong.class,
- AtomicBoolean.class,
- };
- // The input string data for each type
- String[][] inputData = {
- // java.io.File.class
- {"/tmp/test1", "/tmp/subdir/../test2"},
- // java.net.URL.class
- {"http://www.jboss.org", "file:/path with space/tst.xml"},
- // java.net.URI.class
- {"http://www.jboss.org", "file:/path with space/tst.xml"},
- // java.lang.String.class
- {"JBoss, Home of Professional Open Source"},
- // java.lang.Class.class
- {"java.util.Arrays"},
- // InetAddress.class, localhost must be defined for this to work
- {"127.0.0.1", "localhost"},
- // String[].class
- {"1,2,3", "a,b,c", "", "#,%,\\,,.,_$,\\,v"},
- // Class[].class
- {"java.lang.Integer,java.lang.Float"},
- // int[].class
- {"0,#123,-123"},
- // Date.class
- {"Jan 4, 2005", "Tue Jan 4 23:38:21 PST 2005", "Tue, 04 Jan 2005 23:38:48 -0800"},
- // java.util.Properties.class
- {"prop1=value1\nprop2=value2\nprop3=value3\nprop32=${prop3}\nprop4=${user.home}\nprop5=${some.win32.path}"},
- {Locale.getDefault().toString(), "ja_JP"},
- {"-1", "0", "1"},
- {"-1", "0", "1"},
- {"true", "false"},
- };
- // The expected instance for each inputData value
- calendar.set(2005, 0, 4, 0, 0, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- Date date1 = calendar.getTime();
- calendar.setTimeZone(TimeZone.getTimeZone("PST"));
- calendar.set(2005, 0, 4, 23, 38, 21);
- Date date2 = calendar.getTime();
- calendar.set(2005, 0, 4, 23, 38, 48);
- Date date3 = calendar.getTime();
- Properties props = new Properties();
- props.setProperty("prop1", "value1");
- props.setProperty("prop2", "value2");
- props.setProperty("prop3", "value3");
- props.setProperty("prop32", "value3");
- props.setProperty("prop4", System.getProperty("user.home"));
- System.setProperty("some.win32.path", "C:\\disk1\\root\\");
- props.setProperty("prop5", "C:\\disk1\\root\\");
-
- Object[][] expectedData = {
- {new File("/tmp/test1").getCanonicalFile(), new File("/tmp/test2").getCanonicalFile()},
- {new URL("http://www.jboss.org"), Strings.toURL("file:/path with space/tst.xml")},
- {new URI("http://www.jboss.org"), Strings.toURI("file:/path with space/tst.xml")},
- {new String("JBoss, Home of Professional Open Source")},
- {java.util.Arrays.class},
- {InetAddress.getByName("127.0.0.1"), InetAddress.getByName("localhost")},
- {new String[]{"1", "2", "3"}, new String[] {"a", "b", "c"},
- new String[]{}, new String[]{"#","%",",",".","_$", ",v"}},
- {new Class[]{Integer.class, Float.class}},
- {new int[]{0, 0x123, -123}},
- {date1, date2, date3},
- {props},
- {Locale.getDefault(), Locale.JAPAN},
- {new AtomicInteger(-1), new AtomicInteger(0), new AtomicInteger(1)},
- {new AtomicLong(-1), new AtomicLong(0), new AtomicLong(1)},
- {new AtomicBoolean(true), new AtomicBoolean(false)},
- };
- // The expected string output from getAsText()
- String[][] expectedStringData = {
- // java.io.File.class
- {"/tmp/test1", "/tmp/subdir/../test2"},
- // java.net.URL.class
- {"http://www.jboss.org", "file:/path with space/tst.xml"},
- // java.net.URI.class
- {"http://www.jboss.org", "file:/path with space/tst.xml"},
- // java.lang.String.class
- {"JBoss, Home of Professional Open Source"},
- // java.lang.Class.class
- {"java.util.Arrays"},
- // InetAddress.class, localhost must be defined for this to work
- {"127.0.0.1", "localhost"},
- // String[].class
- {"1,2,3", "a,b,c", "", "#,%,\\,,.,_$,,v"},
- // Class[].class
- {"java.lang.Integer,java.lang.Float"},
- // int[].class
- {"0,291,-123"},
- // Date.class
- {"Jan 4, 2005", "Tue Jan 4 23:38:21 PST 2005", "Tue, 04 Jan 2005 23:38:48 -0800"},
- // java.util.Properties.class
- {props.toString()},
- {Locale.getDefault().toString(), Locale.JAPAN.toString()},
- {"-1", "0", "1"},
- {"-1", "0", "1"},
- {"true", "false"},
- };
- // The Comparator for non-trival types
- Comparator[] comparators = {
- null, // File
- null, // URL
- null, // URI
- null, // String
- null, // Class
- null, // InetAddress
- new StringArrayComparator(), // String[]
- new ClassArrayComparator(), // Class[]
- new IntArrayComparator(), // int[]
- null, // Date
- null, // Properties
- null, // Locale
- new NumberComparator(),
- new NumberComparator(),
- new ToStringComparator(),
- };
-
- doTests(types, inputData, expectedData, expectedStringData, comparators);
- }
-
- public void testDateEditor() throws Exception
- {
- log.debug("+++ testDateEditor");
-
- Locale locale = Locale.getDefault();
-
- try
- {
- // Use the default locale
- log.debug("Current Locale: " + Locale.getDefault());
-
- // An important date
- String text = "Fri, 25 Jun 1971 00:30:00 +0200";
- DateFormat format = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
- Date date = format.parse(text);
-
- PropertyEditor editor = new DateEditor();
- editor.setAsText(text);
- log.debug("setAsText('" + text + "') --> getValue() = '" + editor.getValue() + "'");
- assertTrue("Compare date1: " + date + ", date2: " + editor.getValue(),
- date.compareTo((Date)editor.getValue()) == 0);
-
- editor.setValue(date);
- log.debug("setValue('" + date + "') --> getAsText() - '" + editor.getAsText() + "'");
- Date date2 = format.parse(editor.getAsText());
- assertTrue("Compare date1: " + date + ", date2: " + date2, date.compareTo(date2) == 0);
-
- // Try in French
- Locale.setDefault(Locale.FRENCH);
- log.debug("Current Locale: " + Locale.getDefault());
- DateEditor.initialize();
-
- // An important date
- text = "ven., 25 juin 1971 00:30:00 +0200";
- format = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
- date = format.parse(text);
-
- editor = new DateEditor();
- editor.setAsText(text);
- log.debug("setAsText('" + text + "') --> getValue() = '" + editor.getValue() + "'");
- assertTrue("Compare date1: " + date + ", date2: " + editor.getValue(), date.compareTo((Date)editor.getValue()) == 0);
-
- editor.setValue(date);
- log.debug("setValue('" + date + "') --> getAsText() = '" + editor.getAsText() + "'");
- date2 = format.parse(editor.getAsText());
- assertTrue("Compare date1: " + date + ", date2: " + date2, date.compareTo(date2) == 0);
- }
- finally
- {
- // reset locale
- Locale.setDefault(locale);
- DateEditor.initialize();
- }
- }
-
- /**
- * Tests the DOM Document and Element editors.
- */
- public void testDocumentElementEditors()
- {
- log.debug("+++ testDocumentElementEditors");
- DocumentEditor de = new DocumentEditor();
- // Comments can appear outside of a document
- String s = "<!-- header comment --><doc name='whatever'/><!-- footer comment -->";
- log.debug("setAsText '" + s + "'");
- de.setAsText(s);
- log.debug("Parsed XML document:");
- log((Node)de.getValue(), " ");
- log.debug("getAsText '" + de.getAsText() + "'");
- assertTrue("Document :\n" + de.getAsText(), de.getAsText().trim().endsWith(s));
- assertTrue(de.getValue() instanceof org.w3c.dom.Document);
- // Test whitespace preservation
- s = "<element>\n\n<e2/> testing\n\n</element>";
- de.setAsText(s);
- assertTrue("Document :\n" + de.getAsText() + "\nvs\n" + s, de.getAsText().trim().endsWith(s));
-
- ElementEditor ee = new ElementEditor();
- s = "<element>text</element>";
- ee.setAsText(s);
- assertEquals(s, ee.getAsText());
- assertTrue(ee.getValue() instanceof org.w3c.dom.Element);
- }
-
- private void doTests(Class[] types, String[][] inputData, Object[][] expectedData,
- String[][] expectedStringData, Comparator[] comparators)
- {
- for(int t = 0; t < types.length; t ++)
- {
- Class type = types[t];
- log.debug("Checking property editor for: "+type);
- PropertyEditor editor = PropertyEditorManager.findEditor(type);
- assertTrue("Found property editor for: "+type, editor != null);
- log.debug("Found property editor for: "+type+", editor="+editor.getClass().getName());
- assertEquals(editor+" input length", inputData[t].length, expectedData[t].length);
- for(int i = 0; i < inputData[t].length; i ++)
- {
- String input = inputData[t][i];
- editor.setAsText(input);
- Object expected = expectedData[t][i];
- Object output = editor.getValue();
- Comparator c = comparators[t];
- boolean equals = false;
- if (c == null)
- {
- equals = output != null ? output.equals(expected) : expected == null;
- }
- else
- {
- equals = c.compare(output, expected) == 0;
- }
- if( equals == false )
- System.err.println(output+" != "+input);
- assertTrue("Transform("+editor+") of "+input+" equals "+expected+", output="+output, equals);
-
- String expectedStringOutput = expectedStringData[t][i];
- String stringOutput = editor.getAsText();
- log.debug("setAsText '" + logString(input) + "'");
- log.debug("getAsText '" + logString(stringOutput) + "'");
- if( type != Properties.class )
- {
- // We can't meaningfully compare the PropertiesEditor string output
- String msg = "PropertyEditor: " + editor.getClass().getName() + ", getAsText() == expectedStringOutput '";
- assertEquals(msg, expectedStringOutput, stringOutput);
- }
- }
- }
- }
-
- /**
- * Log a Node hierarchy
- */
- private void log(Node node, String indent)
- {
- String name = node.getNodeName();
- String value = node.getNodeValue();
- log.debug(indent + "Name=" + name + ", Value=" + value);
- NodeList list = node.getChildNodes();
- for (int i = 0; i < list.getLength(); i++)
- log(list.item(i), indent + indent);
- }
-
- private static String logString(String s)
- {
- return s != null ? s : "<null>";
- }
-}
Copied: common-core/tags/2.2.8.GA/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java (from rev 2906, common-core/trunk/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java)
===================================================================
--- common-core/tags/2.2.8.GA/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java (rev 0)
+++ common-core/tags/2.2.8.GA/src/test/java/org/jboss/test/util/test/propertyeditor/PropertyEditorsUnitTestCase.java 2008-08-26 16:40:24 UTC (rev 2908)
@@ -0,0 +1,504 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.util.test.propertyeditor;
+
+import java.beans.PropertyEditor;
+import java.beans.PropertyEditorManager;
+import java.io.File;
+import java.net.InetAddress;
+import java.net.URI;
+import java.net.URL;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.TimeZone;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+
+import junit.framework.TestCase;
+
+import org.jboss.logging.Logger;
+import org.jboss.util.Strings;
+import org.jboss.util.propertyeditor.DateEditor;
+import org.jboss.util.propertyeditor.DocumentEditor;
+import org.jboss.util.propertyeditor.ElementEditor;
+import org.jboss.util.propertyeditor.PropertyEditors;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Unit tests for the custom JBoss property editors
+ *
+ * @see org.jboss.util.propertyeditor.PropertyEditors
+ *
+ * @author Scott.Stark at jboss.org
+ * @author Dimitris.Andreadis at jboss.org
+ * @version $Revision: 43534 $
+ */
+ at SuppressWarnings("unchecked")
+public class PropertyEditorsUnitTestCase extends TestCase
+{
+ private static Logger log = Logger.getLogger(PropertyEditorsUnitTestCase.class);
+ Calendar calendar = Calendar.getInstance();
+
+ /** Augment the PropertyEditorManager search path to incorporate the JBoss
+ specific editors. This simply references the PropertyEditors.class to
+ invoke its static initialization block.
+ */
+ static
+ {
+ PropertyEditors.init();
+ String[] paths = PropertyEditorManager.getEditorSearchPath();
+ log.info(Arrays.asList(paths));
+ }
+
+ static class StringArrayComparator implements Comparator
+ {
+ public int compare(Object o1, Object o2)
+ {
+ String[] a1 = (String[]) o1;
+ String[] a2 = (String[]) o2;
+ int compare = a1.length - a2.length;
+ for(int n = 0; n < a1.length; n ++)
+ compare += a1[n].compareTo(a2[n]);
+ return compare;
+ }
+ }
+ static class ClassArrayComparator implements Comparator
+ {
+ public int compare(Object o1, Object o2)
+ {
+ Class<?>[] a1 = (Class[]) o1;
+ Class<?>[] a2 = (Class[]) o2;
+ int compare = a1.length - a2.length;
+ for(int n = 0; n < a1.length; n ++)
+ {
+ int hash1 = a1[n].hashCode();
+ int hash2 = a2[n].hashCode();
+ compare += hash1 - hash2;
+ }
+ return compare;
+ }
+ }
+ static class IntArrayComparator implements Comparator
+ {
+ public int compare(Object o1, Object o2)
+ {
+ int[] a1 = (int[]) o1;
+ int[] a2 = (int[]) o2;
+ int compare = a1.length - a2.length;
+ for(int n = 0; n < a1.length; n ++)
+ compare += a1[n] - a2[n];
+ return compare;
+ }
+ }
+ static class NumberComparator implements Comparator<Number>
+ {
+ public int compare(Number o1, Number o2)
+ {
+ return o1.intValue() - o2.intValue();
+ }
+ }
+ static class ToStringComparator implements Comparator
+ {
+ public int compare(Object o1, Object o2)
+ {
+ String s1 = o1.toString();
+ String s2 = o2.toString();
+ return s1.compareTo(s2);
+ }
+ }
+
+ public PropertyEditorsUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testEditorSearchPath()
+ throws Exception
+ {
+ log.debug("+++ testEditorSearchPath");
+ String[] searchPath = PropertyEditorManager.getEditorSearchPath();
+ boolean foundJBossPath = false;
+ for(int p = 0; p < searchPath.length; p ++)
+ {
+ String path = searchPath[p];
+ log.debug("path["+p+"]="+path);
+ foundJBossPath |= path.equals("org.jboss.util.propertyeditor");
+ }
+ assertTrue("Found org.jboss.util.propertyeditor in search path", foundJBossPath);
+ }
+
+ /** The mechanism for mapping java.lang.* variants of the primative types
+ misses editors for java.lang.Boolean and java.lang.Integer. Here we test
+ the java.lang.* variants we expect editors for.
+ * @throws Exception
+ **/
+ public void testJavaLangEditors()
+ throws Exception
+ {
+ log.debug("+++ testJavaLangEditors");
+ // The supported java.lang.* types
+ Class[] types = {
+ Boolean.class,
+ Byte.class,
+ Short.class,
+ Integer.class,
+ Long.class,
+ Float.class,
+ Double.class,
+ Byte.class,
+ Character.class,
+ };
+ // The input string data for each type
+ String[][] inputData = {
+ {"true", "false", "TRUE", "FALSE", "tRuE", "FaLsE", null},
+ {"1", "-1", "0", "0x1A"},
+ {"1", "-1", "0", "0xA0"},
+ {"1", "-1", "0", "0xA0"},
+ {"1", "-1", "0", "1000"},
+ {"1", "-1", "0", "1000.1"},
+ {"1", "-1", "0", "1000.1"},
+ {"0x1", "-#1", "0"},
+ {"A", "a", "Z", "z"},
+ };
+ // The expected java.lang.* instance for each inputData value
+ Object[][] expectedData = {
+ {Boolean.TRUE, Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, null},
+ {Byte.valueOf("1"), Byte.valueOf("-1"), Byte.valueOf("0"), Byte.decode("0x1A")},
+ {Short.valueOf("1"), Short.valueOf("-1"), Short.valueOf("0"), Short.decode("0xA0")},
+ {Integer.valueOf("1"), Integer.valueOf("-1"), Integer.valueOf("0"), Integer.decode("0xA0")},
+ {Long.valueOf("1"), Long.valueOf("-1"), Long.valueOf("0"), Long.valueOf("1000")},
+ {Float.valueOf("1"), Float.valueOf("-1"), Float.valueOf("0"), Float.valueOf("1000.1")},
+ {Double.valueOf("1"), Double.valueOf("-1"), Double.valueOf("0"), Double.valueOf("1000.1")},
+ {Byte.valueOf("1"), Byte.valueOf("-1"), Byte.valueOf("0")},
+ {new Character('A'), new Character('a'), new Character('Z'), new Character('z')},
+ };
+ // The expected string output from getAsText()
+ String[][] expectedStringData = {
+ {"true", "false", "true", "false", "true", "false", "null"},
+ {"1", "-1", "0", "26"},
+ {"1", "-1", "0", "160"},
+ {"1", "-1", "0", "160"},
+ {"1", "-1", "0", "1000"},
+ {"1.0", "-1.0", "0.0", "1000.1"},
+ {"1.0", "-1.0", "0.0", "1000.1"},
+ {"1", "-1", "0"},
+ {"A", "a", "Z", "z"},
+ };
+ Comparator[] comparators = new Comparator[types.length];
+
+ doTests(types, inputData, expectedData, expectedStringData, comparators);
+ }
+
+ /** Test custom JBoss property editors.
+ * @throws Exception
+ */
+ public void testJBossEditors()
+ throws Exception
+ {
+ log.debug("+++ testJBossEditors");
+ Class[] types = {
+ java.io.File.class,
+ java.net.URL.class,
+ java.net.URI.class,
+ java.lang.String.class,
+ java.lang.Class.class,
+ InetAddress.class,
+ String[].class,
+ Class[].class,
+ int[].class,
+ Date.class,
+ java.util.Properties.class,
+ Locale.class,
+ AtomicInteger.class,
+ AtomicLong.class,
+ AtomicBoolean.class,
+ };
+ // The input string data for each type
+ String[][] inputData = {
+ // java.io.File.class
+ {"/tmp/test1", "/tmp/subdir/../test2"},
+ // java.net.URL.class
+ {"http://www.jboss.org", "file:/path with space/tst.xml"},
+ // java.net.URI.class
+ {"http://www.jboss.org", "file:/path with space/tst.xml"},
+ // java.lang.String.class
+ {"JBoss, Home of Professional Open Source"},
+ // java.lang.Class.class
+ {"java.util.Arrays"},
+ // InetAddress.class, localhost must be defined for this to work
+ {"127.0.0.1", "localhost"},
+ // String[].class
+ {"1,2,3", "a,b,c", "", "#,%,\\,,.,_$,\\,v"},
+ // Class[].class
+ {"java.lang.Integer,java.lang.Float"},
+ // int[].class
+ {"0,#123,-123"},
+ // Date.class
+ {"Jan 4, 2005", "Tue Jan 4 23:38:21 PST 2005", "Tue, 04 Jan 2005 23:38:48 -0800"},
+ // java.util.Properties.class
+ {"prop1=value1\nprop2=value2\nprop3=value3\nprop32=${prop3}\nprop4=${user.home}\nprop5=${some.win32.path}"},
+ {Locale.getDefault().toString(), "ja_JP"},
+ {"-1", "0", "1"},
+ {"-1", "0", "1"},
+ {"true", "false"},
+ };
+ // The expected instance for each inputData value
+ calendar.set(2005, 0, 4, 0, 0, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ Date date1 = calendar.getTime();
+ calendar.setTimeZone(TimeZone.getTimeZone("PST"));
+ calendar.set(2005, 0, 4, 23, 38, 21);
+ Date date2 = calendar.getTime();
+ calendar.set(2005, 0, 4, 23, 38, 48);
+ Date date3 = calendar.getTime();
+ Properties props = new Properties();
+ props.setProperty("prop1", "value1");
+ props.setProperty("prop2", "value2");
+ props.setProperty("prop3", "value3");
+ props.setProperty("prop32", "value3");
+ props.setProperty("prop4", System.getProperty("user.home"));
+ System.setProperty("some.win32.path", "C:\\disk1\\root\\");
+ props.setProperty("prop5", "C:\\disk1\\root\\");
+
+ Object[][] expectedData = {
+ {new File("/tmp/test1").getCanonicalFile(), new File("/tmp/test2").getCanonicalFile()},
+ {new URL("http://www.jboss.org"), new File("/path with space/tst.xml").getCanonicalFile().toURI().toURL()},
+ {new URI("http://www.jboss.org"), new File("/path with space/tst.xml").getCanonicalFile().toURI()},
+ {new String("JBoss, Home of Professional Open Source")},
+ {java.util.Arrays.class},
+ {InetAddress.getByName("127.0.0.1"), InetAddress.getByName("localhost")},
+ {new String[]{"1", "2", "3"}, new String[] {"a", "b", "c"},
+ new String[]{}, new String[]{"#","%",",",".","_$", ",v"}},
+ {new Class[]{Integer.class, Float.class}},
+ {new int[]{0, 0x123, -123}},
+ {date1, date2, date3},
+ {props},
+ {Locale.getDefault(), Locale.JAPAN},
+ {new AtomicInteger(-1), new AtomicInteger(0), new AtomicInteger(1)},
+ {new AtomicLong(-1), new AtomicLong(0), new AtomicLong(1)},
+ {new AtomicBoolean(true), new AtomicBoolean(false)},
+ };
+ // The expected string output from getAsText()
+ String[][] expectedStringData = {
+ // java.io.File.class
+ {"/tmp/test1", "/tmp/subdir/../test2"},
+ // java.net.URL.class
+ {"http://www.jboss.org", "file:/path with space/tst.xml"},
+ // java.net.URI.class
+ {"http://www.jboss.org", "file:/path with space/tst.xml"},
+ // java.lang.String.class
+ {"JBoss, Home of Professional Open Source"},
+ // java.lang.Class.class
+ {"java.util.Arrays"},
+ // InetAddress.class, localhost must be defined for this to work
+ {"127.0.0.1", "localhost"},
+ // String[].class
+ {"1,2,3", "a,b,c", "", "#,%,\\,,.,_$,,v"},
+ // Class[].class
+ {"java.lang.Integer,java.lang.Float"},
+ // int[].class
+ {"0,291,-123"},
+ // Date.class
+ {"Jan 4, 2005", "Tue Jan 4 23:38:21 PST 2005", "Tue, 04 Jan 2005 23:38:48 -0800"},
+ // java.util.Properties.class
+ {props.toString()},
+ {Locale.getDefault().toString(), Locale.JAPAN.toString()},
+ {"-1", "0", "1"},
+ {"-1", "0", "1"},
+ {"true", "false"},
+ };
+ // The Comparator for non-trival types
+ Comparator[] comparators = {
+ null, // File
+ null, // URL
+ null, // URI
+ null, // String
+ null, // Class
+ null, // InetAddress
+ new StringArrayComparator(), // String[]
+ new ClassArrayComparator(), // Class[]
+ new IntArrayComparator(), // int[]
+ null, // Date
+ null, // Properties
+ null, // Locale
+ new NumberComparator(),
+ new NumberComparator(),
+ new ToStringComparator(),
+ };
+
+ doTests(types, inputData, expectedData, expectedStringData, comparators);
+ }
+
+ public void testDateEditor() throws Exception
+ {
+ log.debug("+++ testDateEditor");
+
+ Locale locale = Locale.getDefault();
+
+ try
+ {
+ // Use the default locale
+ log.debug("Current Locale: " + Locale.getDefault());
+
+ // An important date
+ String text = "Fri, 25 Jun 1971 00:30:00 +0200";
+ DateFormat format = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
+ Date date = format.parse(text);
+
+ PropertyEditor editor = new DateEditor();
+ editor.setAsText(text);
+ log.debug("setAsText('" + text + "') --> getValue() = '" + editor.getValue() + "'");
+ assertTrue("Compare date1: " + date + ", date2: " + editor.getValue(),
+ date.compareTo((Date)editor.getValue()) == 0);
+
+ editor.setValue(date);
+ log.debug("setValue('" + date + "') --> getAsText() - '" + editor.getAsText() + "'");
+ Date date2 = format.parse(editor.getAsText());
+ assertTrue("Compare date1: " + date + ", date2: " + date2, date.compareTo(date2) == 0);
+
+ // Try in French
+ Locale.setDefault(Locale.FRENCH);
+ log.debug("Current Locale: " + Locale.getDefault());
+ DateEditor.initialize();
+
+ // An important date
+ text = "ven., 25 juin 1971 00:30:00 +0200";
+ format = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
+ date = format.parse(text);
+
+ editor = new DateEditor();
+ editor.setAsText(text);
+ log.debug("setAsText('" + text + "') --> getValue() = '" + editor.getValue() + "'");
+ assertTrue("Compare date1: " + date + ", date2: " + editor.getValue(), date.compareTo((Date)editor.getValue()) == 0);
+
+ editor.setValue(date);
+ log.debug("setValue('" + date + "') --> getAsText() = '" + editor.getAsText() + "'");
+ date2 = format.parse(editor.getAsText());
+ assertTrue("Compare date1: " + date + ", date2: " + date2, date.compareTo(date2) == 0);
+ }
+ finally
+ {
+ // reset locale
+ Locale.setDefault(locale);
+ DateEditor.initialize();
+ }
+ }
+
+ /**
+ * Tests the DOM Document and Element editors.
+ */
+ public void testDocumentElementEditors()
+ {
+ log.debug("+++ testDocumentElementEditors");
+ DocumentEditor de = new DocumentEditor();
+ // Comments can appear outside of a document
+ String s = "<!-- header comment --><doc name='whatever'/><!-- footer comment -->";
+ log.debug("setAsText '" + s + "'");
+ de.setAsText(s);
+ log.debug("Parsed XML document:");
+ log((Node)de.getValue(), " ");
+ log.debug("getAsText '" + de.getAsText() + "'");
+ assertTrue("Document :\n" + de.getAsText(), de.getAsText().trim().endsWith(s));
+ assertTrue(de.getValue() instanceof org.w3c.dom.Document);
+ // Test whitespace preservation
+ s = "<element>\n\n<e2/> testing\n\n</element>";
+ de.setAsText(s);
+ assertTrue("Document :\n" + de.getAsText() + "\nvs\n" + s, de.getAsText().trim().endsWith(s));
+
+ ElementEditor ee = new ElementEditor();
+ s = "<element>text</element>";
+ ee.setAsText(s);
+ assertEquals(s, ee.getAsText());
+ assertTrue(ee.getValue() instanceof org.w3c.dom.Element);
+ }
+
+ private void doTests(Class[] types, String[][] inputData, Object[][] expectedData,
+ String[][] expectedStringData, Comparator[] comparators)
+ {
+ for(int t = 0; t < types.length; t ++)
+ {
+ Class type = types[t];
+ log.debug("Checking property editor for: "+type);
+ PropertyEditor editor = PropertyEditorManager.findEditor(type);
+ assertTrue("Found property editor for: "+type, editor != null);
+ log.debug("Found property editor for: "+type+", editor="+editor.getClass().getName());
+ assertEquals(editor+" input length", inputData[t].length, expectedData[t].length);
+ for(int i = 0; i < inputData[t].length; i ++)
+ {
+ String input = inputData[t][i];
+ editor.setAsText(input);
+ Object expected = expectedData[t][i];
+ Object output = editor.getValue();
+ Comparator c = comparators[t];
+ boolean equals = false;
+ if (c == null)
+ {
+ equals = output != null ? output.equals(expected) : expected == null;
+ }
+ else
+ {
+ equals = c.compare(output, expected) == 0;
+ }
+ if( equals == false )
+ System.err.println(output+" != "+input);
+ assertTrue("Transform("+editor+") of "+input+" equals "+expected+", output="+output, equals);
+
+ String expectedStringOutput = expectedStringData[t][i];
+ String stringOutput = editor.getAsText();
+ log.debug("setAsText '" + logString(input) + "'");
+ log.debug("getAsText '" + logString(stringOutput) + "'");
+ if( type != Properties.class )
+ {
+ // We can't meaningfully compare the PropertiesEditor string output
+ String msg = "PropertyEditor: " + editor.getClass().getName() + ", getAsText() == expectedStringOutput '";
+ assertEquals(msg, expectedStringOutput, stringOutput);
+ }
+ }
+ }
+ }
+
+ /**
+ * Log a Node hierarchy
+ */
+ private void log(Node node, String indent)
+ {
+ String name = node.getNodeName();
+ String value = node.getNodeValue();
+ log.debug(indent + "Name=" + name + ", Value=" + value);
+ NodeList list = node.getChildNodes();
+ for (int i = 0; i < list.getLength(); i++)
+ log(list.item(i), indent + indent);
+ }
+
+ private static String logString(String s)
+ {
+ return s != null ? s : "<null>";
+ }
+}
More information about the jboss-svn-commits
mailing list