Remove JOCL and associated references.
authorMark Thomas <markt@apache.org>
Fri, 6 May 2011 08:52:17 +0000 (08:52 +0000)
committerMark Thomas <markt@apache.org>
Fri, 6 May 2011 08:52:17 +0000 (08:52 +0000)
Remove references that differentiate between manual and jocl configuration

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/dbcp/trunk@1100136 13f79535-47bb-0310-9956-ffa450edef68

17 files changed:
doc/BasicDataSourceExample.java
doc/JOCLPoolingDriverExample.java [deleted file]
doc/PoolingDataSourceExample.java [moved from doc/ManualPoolingDataSourceExample.java with 94% similarity]
doc/PoolingDriverExample.java [moved from doc/ManualPoolingDriverExample.java with 95% similarity]
doc/README.txt
doc/poolingDriverExample.jocl.sample [deleted file]
doc/test.jocl [deleted file]
src/java/org/apache/commons/dbcp2/PoolingDriver.java
src/java/org/apache/commons/dbcp2/package.html
src/java/org/apache/commons/jocl2/ConstructorUtil.java [deleted file]
src/java/org/apache/commons/jocl2/JOCLContentHandler.java [deleted file]
src/java/org/apache/commons/jocl2/package.html [deleted file]
src/test/org/apache/commons/dbcp2/TestJOCLed.java [deleted file]
src/test/org/apache/commons/dbcp2/TestPoolingDriver.java [moved from src/test/org/apache/commons/dbcp2/TestManual.java with 97% similarity]
src/test/org/apache/commons/jocl2/TestAll.java [deleted file]
src/test/org/apache/commons/jocl2/TestJOCLContentHandler.java [deleted file]
src/test/testpool.jocl [deleted file]

index 62e32be..7fe2f43 100644 (file)
@@ -31,8 +31,6 @@ import org.apache.commons.dbcp2.BasicDataSource;
 
 //
 // Here's a simple example of how to use the BasicDataSource.
-// In this example, we'll construct the BasicDataSource manually,
-// but you could also configure it using an external conifguration file.
 //
 
 //
@@ -63,7 +61,7 @@ import org.apache.commons.dbcp2.BasicDataSource;
 // For example:
 //  java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver \
 //       -classpath commons-pool-1.5.6.jar:commons-dbcp-1.4.jar:j2ee.jar:oracle-jdbc.jar:. \
-//       ManualPoolingDataSourceExample
+//       PoolingDataSourceExample
 //       "jdbc:oracle:thin:scott/tiger@myhost:1521:mysid"
 //       "SELECT * FROM DUAL"
 //
diff --git a/doc/JOCLPoolingDriverExample.java b/doc/JOCLPoolingDriverExample.java
deleted file mode 100644 (file)
index b1e1ef0..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.sql.DriverManager;
-import java.sql.Connection;
-import java.sql.Statement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-
-//
-// Here's a simple example of how to use the PoolingDriver.
-// In this example, we'll construct the PoolingDriver implicitly
-// using the JOCL configuration mechanism.
-//
-// Note that there is absolutely nothing DBCP specific about
-// this code, it's just straight JDBC.  You can simply
-// switch connection strings to use the "native" drivers
-// directly.
-//
-
-//
-// To compile this example, you'll need nothing but the JDK
-// in your classpath.
-//
-// To run this example, you'll want:
-//  * commons-pool-1.5.6.jar
-//  * commons-dbcp-1.3.jar (JDK 1.4-1.5) or commons-dbcp-1.4.jar (JDK 1.6+)
-//  * the classes for your (underlying) JDBC driver
-//  * sax2.jar (the SAX 2 API)
-//  * a SAX2 friendly XML parser (jaxp.jar and parser.jar,
-//    for example)
-//  * the JOCL configuration for your database connection pool
-//    (poolingDriverExample.jocl, for example)
-// in your classpath.
-//
-// Invoke the class using two arguments:
-//  * the connect string for the JDBC driver (see below)
-//  * the query you'd like to execute
-// You'll also want to ensure your both your underlying JDBC
-// driver and the org.apache.commons.dbcp2.PoolingDriver
-// are registered.  You can use the "jdbc.drivers"
-// property to do this.  Note that jdbc.drivers is colon
-// seperated list, on all platforms.
-//
-// Depending upon your XML parser, you may need to register
-// the "default" SAX driver, using the "org.xml.sax.driver"
-// property.
-//
-// For example, to invoke this class with an Oracle driver only
-// (no pooling):
-//
-//  java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver \
-//       -classpath oracle-jdbc.jar:. \
-//       JOCLPoolingDriverExample \
-//       "jdbc:oracle:thin:scott/tiger@myhost:1521:mysid" \
-//       "SELECT * FROM DUAL"
-//
-// For pooling:
-//
-//  java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver:org.apache.commons.dbcp2.PoolingDriver \
-//       -classpath commons-pool-1.5.6.jar:commons-dbcp-1.4.jar:oracle-jdbc.jar:jaxp.jar:parser.jar:sax2.jar:. \
-//       JOCLPoolingDriverExample \
-//       "jdbc:apache:commons:dbcp:/poolingDriverExample" \
-//       "SELECT * FROM DUAL"
-//
-// The last token in DBCP connect string (when suffixed with ".jocl")
-// is the resource the PoolingDriver reads as the JOCL configuration.
-// See Class.getResource for details on resource loading.
-//
-public class JOCLPoolingDriverExample {
-
-    public static void main(String[] args) {
-        //
-        // Just plain-old JDBC.
-        //
-
-        Connection conn = null;
-        Statement stmt = null;
-        ResultSet rset = null;
-
-        try {
-            System.out.println("Creating connection.");
-            conn = DriverManager.getConnection(args[0]);
-            System.out.println("Creating statement.");
-            stmt = conn.createStatement();
-            System.out.println("Executing statement.");
-            rset = stmt.executeQuery(args[1]);
-            System.out.println("Results:");
-            int numcols = rset.getMetaData().getColumnCount();
-            while(rset.next()) {
-                for(int i=1;i<=numcols;i++) {
-                    System.out.print("\t" + rset.getString(i));
-                }
-                System.out.println("");
-            }
-        } catch(SQLException e) {
-            e.printStackTrace();
-        } finally {
-            try { if (rset != null) rset.close(); } catch(Exception e) { }
-            try { if (stmt != null) stmt.close(); } catch(Exception e) { }
-            try { if (conn != null) conn.close(); } catch(Exception e) { }
-        }
-    }
-}
similarity index 94%
rename from doc/ManualPoolingDataSourceExample.java
rename to doc/PoolingDataSourceExample.java
index b665b23..32c969f 100644 (file)
@@ -36,10 +36,6 @@ import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
 
 //
 // Here's a simple example of how to use the PoolingDataSource.
-// In this example, we'll construct the PoolingDataSource manually,
-// just to show how the pieces fit together, but you could also
-// configure it using an external configuration file in
-// JOCL format (and eventually Digester).
 //
 
 //
@@ -72,11 +68,11 @@ import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
 // For example:
 //  java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver \
 //       -classpath commons-pool-1.5.6.jar:commons-dbcp-1.4.jar:j2ee.jar:oracle-jdbc.jar:. \
-//       ManualPoolingDataSourceExample \
+//       PoolingDataSourceExample \
 //       "jdbc:oracle:thin:scott/tiger@myhost:1521:mysid" \
 //       "SELECT * FROM DUAL"
 //
-public class ManualPoolingDataSourceExample {
+public class PoolingDataSourceExample {
 
     public static void main(String[] args) {
         //
similarity index 95%
rename from doc/ManualPoolingDriverExample.java
rename to doc/PoolingDriverExample.java
index d61734f..ff2efde 100644 (file)
@@ -36,10 +36,6 @@ import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
 
 //
 // Here's a simple example of how to use the PoolingDriver.
-// In this example, we'll construct the PoolingDriver manually,
-// just to show how the pieces fit together, but you could also
-// configure it using an external conifguration file in
-// JOCL format (and eventually Digester).
 //
 
 //
@@ -65,11 +61,11 @@ import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
 // For example:
 //  java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver \
 //       -classpath commons-pool-1.5.6.jar:commons-dbcp-1.4.jar:oracle-jdbc.jar:. \
-//       ManualPoolingDriverExample \
+//       PoolingDriverExample \
 //       "jdbc:oracle:thin:scott/tiger@myhost:1521:mysid" \
 //       "SELECT * FROM DUAL"
 //
-public class ManualPoolingDriverExample {
+public class PoolingDriverExample {
 
     public static void main(String[] args) {
         //
index c2d08d4..51b2fd5 100644 (file)
@@ -18,33 +18,22 @@ example, the my.sql.Driver is loaded with the following statement:
 
 ===================================================================================
 
-ManualPoolingDriverExample.java
+PoolingDriverExample.java
 
  Provides a simple example of how to use the DBCP package with a
manually configured PoolingDriver.
+ PoolingDriver.
 
  Look at the comments with that file for instructions on how to
  build and run it.
 
-ManualPoolingDataSource.java
+PoolingDataSource.java
 
  Provides a simple example of how to use the DBCP package with a
manually configured PoolingDataSource.
+ PoolingDataSource.
 
  Look at the comments with that file for instructions on how to
  build and run it.
 
-JOCLPoolingDriverExample.java
-poolingDriverExample.jocl.sample
-
- Provides an example JOCL configuration and JDBC client that
- shows how to use the DBCP PoolingDriver with an external
- configuration. (JOCL will be replaced by Digester when it
- is available in jakarta-commons.)
-
- Look at the comments with those files for instructions on how to
- build and run it.
-
 See also the JavaDoc documentation (use "ant doc" to generate it),
 especially the package documentation for org.apache.commons.dbcp
 for an overview of how it all works.
diff --git a/doc/poolingDriverExample.jocl.sample b/doc/poolingDriverExample.jocl.sample
deleted file mode 100644 (file)
index 783d85b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-<!--
- Sample JOCL configuration file for JOCLPoolingDriverExample.java.
-
- It's not pretty, but it works.  It will be replaced by Digester-based
- configuration as soon as it's available.
-
- See the JavaDocs for org.apache.commons.jocl.JOCLContentHandler for
- documentation on JOCL in general. The gist of it is an that it provides
- an XML description of a constructor to be invoked.
-
- See the JavaDocs for PoolableConnectionFactory et al for details
- on the object we are constructing. The inline comments may help as well.
-
- To use this with the JOCLPoolingDriverExample, make a copy of this
- file called it "poolingDriverExample.jocl", set the connection string below
- (search for "CHANGE ME"), and make sure the poolingDriverExample.jocl file
- is available in your classpath. (See JOCLPoolingDriverExample.java.)
--->
-
-<!--
-   The PoolingDriver expects PoolableConnectionFactory to be the root of the JOCL document.
- -->
-<object class="org.apache.commons.dbcp.PoolableConnectionFactory" xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
-   <!--
-      The first argument to PoolableConnectionFactory is a ConnectionFactory.
-      We'll use a DriverManagerConnectionFactory, passing in the appropriate
-      connect string for the underlying driver.
-    -->
-   <object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
-      <string value="jdbc:oracle:thin:scott/tiger@myhost:1521:mysid"/> <!-- CHANGE ME TO THE CONNECT STRING FOR YOUR DRIVER -->
-      <object class="java.util.Properties" null="true"/>
-   </object>
-   <!--
-      The next argument is the pool to use.  We'll use a StackObjectPool,
-      although any implementation of ObjectPool should suffice.
-    -->
-   <object class="org.apache.commons.pool.impl.StackObjectPool"/>
-   <!--
-      The next argument is the KeyedObjectPoolFactory to use to create pools
-      for storing PreparedStatements.  This functionality is optional, we'll
-      just use null.
-    -->
-   <object class="org.apache.commons.pool.KeyedObjectPoolFactory" null="true"/>
-   <!--
-      The next argument is the query to use to validate that a Connection is
-      still up and running.  It should return at least one row.
-      This functionality is optional. We'll just set it to null.
-    -->
-   <string null="true"/>
-   <!-- The default "read only" value for Connections. -->
-   <boolean value="false"/>
-   <!-- The default "auto commit" value for Connections. -->
-   <boolean value="true"/>
-</object>
diff --git a/doc/test.jocl b/doc/test.jocl
deleted file mode 100644 (file)
index 6c9bab2..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-<object class="org.apache.commons.dbcp.PoolableConnectionFactory" xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
-   <object class="org.apache.commons.dbcp.DriverConnectionFactory">
-      <object class="org.apache.commons.dbcp.TesterDriver"/>
-      <string value="jdbc:apache:commons:testdriver"/>
-      <object class="java.util.Properties" null="true"/>
-   </object>
-   <object class="org.apache.commons.pool.impl.GenericObjectPool">
-      <object class="org.apache.commons.pool.PoolableObjectFactory" null="true"/>
-      <int value="10"/>
-      <byte value="1"/>
-      <long value="2000"/>
-      <int value="10"/>
-      <boolean value="true"/>
-      <boolean value="true"/>
-      <long value="10000"/>
-      <int value="5"/>
-      <long value="5000"/>
-      <boolean value="true"/>
-   </object>
-   <object class="org.apache.commons.pool.impl.GenericKeyedObjectPoolFactory">
-      <object class="org.apache.commons.pool.KeyedPoolableObjectFactory" null="true"/>
-      <int value="10"/>
-      <byte value="1"/>
-      <long value="2000"/>
-      <int value="10"/>
-      <boolean value="true"/>
-      <boolean value="true"/>
-      <long value="10000"/>
-      <int value="5"/>
-      <long value="5000"/>
-      <boolean value="true"/>
-   </object>
-   <string value="SELECT COUNT(*) FROM DUAL"/>
-   <boolean value="false"/>
-   <boolean value="true"/>
-</object>
index c9149c1..fcf2479 100644 (file)
@@ -35,7 +35,6 @@ import java.util.NoSuchElementException;
 import java.util.Properties;
 import java.util.Set;
 
-import org.apache.commons.jocl2.JOCLContentHandler;
 import org.apache.commons.pool2.ObjectPool;
 import org.xml.sax.SAXException;
 
@@ -104,38 +103,8 @@ public class PoolingDriver implements Driver {
     
     public synchronized ObjectPool getConnectionPool(String name) throws SQLException {
         ObjectPool pool = (ObjectPool)(_pools.get(name));
-        if(null == pool) {
-            InputStream in = this.getClass().getResourceAsStream(String.valueOf(name) + ".jocl");
-            if (in == null) {
-                in = Thread.currentThread().getContextClassLoader(
-                        ).getResourceAsStream(String.valueOf(name) + ".jocl");
-            }
-            if(null != in) {
-                JOCLContentHandler jocl = null;
-                try {
-                    jocl = JOCLContentHandler.parse(in);
-                }
-                catch (SAXException e) {
-                    throw (SQLException) new SQLException("Could not parse configuration file").initCause(e);
-                }
-                catch (IOException e) {
-                    throw (SQLException) new SQLException("Could not load configuration file").initCause(e);
-                }
-                if(jocl.getType(0).equals(String.class)) {
-                    pool = getPool((String)(jocl.getValue(0)));
-                    if(null != pool) {
-                        registerPool(name,pool);
-                    }
-                } else {
-                    pool = ((PoolableConnectionFactory)(jocl.getValue(0))).getPool();
-                    if(null != pool) {
-                        registerPool(name,pool);
-                    }
-                }
-            }
-            else {
-                throw new SQLException("Configuration file not found");
-            }
+        if (null == pool) {
+            throw new SQLException("Pool not registered.");
         }
         return pool;
     }
index 3499d8b..7b2422e 100644 (file)
@@ -132,69 +132,6 @@ driver.registerPool("example",connectionPool);</pre>
          like you normally would:
 <pre>Connection conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:example");</pre>
       </p>
-      <p>
-         Q: Sounds complicated, is there an easier way?
-      </p><p>
-         A: If you're using the {@link org.apache.commons.dbcp.PoolingDriver}, you
-         don't need to do this configuration in code.  Instead, you can provide
-         a JOCL document that describes the connection pool,
-         and let the {@link org.apache.commons.dbcp.PoolingDriver} discover it at
-         runtime.
-      </p><p>
-         Specifically, if the {@link org.apache.commons.dbcp.PoolingDriver} is asked for
-         a {@link java.sql.Connection} from a pool that has not yet been registered,
-         it will look for a named resource from which to read the pool's configuration,
-         and create that pool.
-      </p><p>
-         For example, suppose you create a pool named "<tt>/eg</tt>" from a JOCL
-         document.  The "connect string" for this pool will be
-         "<tt>jdbc:apache:commons:dbcp:/eg</tt>".  To do this, you'll need a create
-         a <i>resource</i> (just a file in your classpath) containing a JOCL description
-         of the pool.  Specifically, this JOCL document should define a
-         {@link org.apache.commons.dbcp.PoolableConnectionFactory} from which the
-         pool will be obtained.  For example:
-<pre>&lt;object class="org.apache.commons.dbcp.PoolableConnectionFactory" xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl"&gt;
-   &lt;!-- the first argument is the ConnectionFactory --&gt;
-   &lt;object class="org.apache.commons.dbcp.DriverManagerConnectionFactory"&gt;
-      &lt;string value="jdbc:some:connect:string"/&gt;
-      &lt;object class="java.util.Properties" null="true"/&gt;
-   &lt;/object&gt;
-   &lt;!-- the next argument is the ObjectPool --&gt;
-   &lt;object class="org.apache.commons.pool.impl.GenericObjectPool"&gt;
-      &lt;object class="org.apache.commons.pool.PoolableObjectFactory" null="true"/&gt;
-      &lt;int value="10"/&gt; &lt;!-- max active --&gt;
-      &lt;byte value="1"/&gt; &lt;!-- when exhausted action, 0 = fail, 1 = block, 2 = grow --&gt;
-      &lt;long value="2000"/&gt; &lt;!-- max wait --&gt;
-      &lt;int value="10"/&gt; &lt;!-- max idle --&gt;
-      &lt;boolean value="false"/&gt; &lt;!-- test on borrow --&gt;
-      &lt;boolean value="false"/&gt; &lt;!-- test on return --&gt;
-      &lt;long value="10000"/&gt; &lt;!-- time between eviction runs --&gt;
-      &lt;int value="5"/&gt; &lt;!-- number of connections to test per eviction run --&gt;
-      &lt;long value="5000"/&gt; &lt;!-- min evictable idle time --&gt;
-      &lt;boolean value="true"/&gt; &lt;!-- test while idle --&gt;
-   &lt;/object&gt;
-   &lt;!-- the next argument is the KeyedObjectPoolFactory --&gt;
-   &lt;object class="org.apache.commons.pool.impl.StackKeyedObjectPoolFactory"&gt;
-      &lt;int value="5"/&gt; &lt;!-- max idle --&gt;
-   &lt;/object&gt;
-   &lt;string value="SELECT COUNT(*) FROM DUAL"/&gt; &lt;!-- validation query --&gt;
-   &lt;boolean value="false"/&gt; &lt;!-- default read only --&gt;
-   &lt;boolean value="true"/&gt; &lt;!-- default auto commit --&gt;
-&lt;/object&gt;</pre>
-      </p><p>
-         Simply save that file somewhere in your classpath as <tt>eg.jocl</tt>,
-         and the {@link org.apache.commons.dbcp.PoolingDriver} will find it
-         automatically.  You need only register the {@link org.apache.commons.dbcp.PoolingDriver}
-         (for example, using the <tt>jdbc.drivers</tt> property), and use the
-         the {@link java.sql.DriverManager} to create your {@link java.sql.Connection}s,
-         like you normally would:
-<pre>Connection conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:/eg");</pre>
-      </p><p>
-         (Note that without the leading slash, the pool must be located at
-         <tt>org/apache/commons/dbcp/PoolingDriver/eg.jocl</tt> within your classpath.
-         See {@link java.lang.Class#getResource} for details.)
-      </p>
-
    </body>
 </html>
 
diff --git a/src/java/org/apache/commons/jocl2/ConstructorUtil.java b/src/java/org/apache/commons/jocl2/ConstructorUtil.java
deleted file mode 100644 (file)
index b91b0b8..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jocl2;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-/**
- * Miscellaneous {@link Constructor} related utility functions.
- *
- * @author Rodney Waldhoff
- * @version $Revision$ $Date$
- */
-public class ConstructorUtil {
-    /**
-     * Returns a {@link Constructor} for the given method signature, or <tt>null</tt>
-     * if no such <tt>Constructor</tt> can be found.
-     *
-     * @param type     the (non-<tt>null</tt>) type of {@link Object} the returned {@link Constructor} should create
-     * @param argTypes a non-<tt>null</tt> array of types describing the parameters to the {@link Constructor}.
-     * @return a {@link Constructor} for the given method signature, or <tt>null</tt>
-     *         if no such <tt>Constructor</tt> can be found.
-     * @see #invokeConstructor
-     */
-    public static Constructor getConstructor(Class type, Class[] argTypes) {
-        if(null == type || null == argTypes) {
-            throw new NullPointerException();
-        }
-        Constructor ctor = null;
-        try {
-            ctor = type.getConstructor(argTypes);
-        } catch(Exception e) {
-            ctor = null;
-        }
-        if(null == ctor) {
-            // no directly declared matching constructor,
-            // look for something that will work
-            // XXX this should really be more careful to
-            //     adhere to the jls mechanism for late binding
-            Constructor[] ctors = type.getConstructors();
-            for(int i=0;i<ctors.length;i++) {
-                Class[] paramtypes = ctors[i].getParameterTypes();
-                if(paramtypes.length == argTypes.length) {
-                    boolean canuse = true;
-                    for(int j=0;j<paramtypes.length;j++) {
-                        if(paramtypes[j].isAssignableFrom(argTypes[j])) {
-                            continue;
-                        } else {
-                            canuse = false;
-                            break;
-                        }
-                    }
-                    if(canuse == true) {
-                        ctor = ctors[i];
-                        break;
-                    }
-                }
-            }
-        }
-        return ctor;
-    }
-
-    /**
-     * Creates a new instance of the specified <tt><i>type</i></tt>
-     * using a {@link Constructor} described by the given parameter types
-     * and values.
-     *
-     * @param type      the type of {@link Object} to be created
-     * @param argTypes  a non-<tt>null</tt> array of types describing the parameters to the {@link Constructor}.
-     * @param argValues a non-<tt>null</tt> array containing the values of the parameters to the {@link Constructor}.
-     * @return a new instance of the specified <tt><i>type</i></tt>
-     *         using a {@link Constructor} described by the given parameter types
-     *         and values.
-     * @exception InstantiationException
-     * @exception IllegalAccessException
-     * @exception InvocationTargetException
-     */
-    public static Object invokeConstructor(Class type, Class[] argTypes, Object[] argValues) throws InstantiationException, IllegalAccessException, InvocationTargetException {
-        return ConstructorUtil.getConstructor(type,argTypes).newInstance(argValues);
-    }
-}
-
-
diff --git a/src/java/org/apache/commons/jocl2/JOCLContentHandler.java b/src/java/org/apache/commons/jocl2/JOCLContentHandler.java
deleted file mode 100644 (file)
index d93d0ee..0000000
+++ /dev/null
@@ -1,802 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jocl2;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
-import java.lang.reflect.InvocationTargetException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-import java.util.ArrayList;
-
-// to do:
-//  + add support for strings as CDATA (makes multiline strings easier, for example)
-//  ? some kind of support for invoking methods?
-
-/**
- * A {@link org.xml.sax.ContentHandler}
- * for the Java Object Configuration Language.
- * <p>
- * JOCL provides an XML syntax for constructing arbitrary Java
- * {@link java.lang.Object} instances.  It does not define a full
- * XML document type (there's no root element), but rather an
- * XML fragment describing the {@link java.lang.Object <tt>Object</tt>s} to be
- * constructed.
- * <p>
- * In a JOCL fragment, one may define a series of objects using
- * the <tt>object</tt> element.  A trivial example is:
- * <pre> &lt;object class="java.util.Date"/&gt;</pre>
- * which constructs an instance of <tt>java.util.Date</tt>
- * using the no-argument constructor.
- * <p>
- * After a "root-level" <tt>&lt;object&gt;</tt> element has been processed
- * (that is, once {@link #endElement(java.lang.String,java.lang.String,java.lang.String)}
- * has been invoked by the {@link XMLReader}), it will be appended to a list of <tt>Object</tt>s
- * maintained by the <tt>JOCLContentHandler</tt>.
- * <p>
- * (See {@link #size},
- * {@link #clear},
- * {@link #clear(int)},
- * {@link #getType(int)},
- * {@link #getValue(int)},
- * {@link #getTypeArray},
- * and
- * {@link #getValueArray}.)
- * <p>
- * You can list multiple <tt>object</tt> elements in a fragment.  For example,
- * after processing the JOCL fragment:
- * <pre> &lt;object class="java.util.Date"/&gt;
- * &lt;object class="java.util.Date"/&gt;</pre>
- * The {@link #getTypeArray} method
- * will return an array composed
- * of two instances of <tt>java.util.Date</tt>.  The sequence of
- * {@link java.lang.Object <tt>Object</tt>s} in the array
- * will correspond to the sequence of <tt>&lt;object&gt;</tt> elements in the JOCL fragment.
- * <p>
- * As we've seen, when used with no child-elements, the <tt>&lt;object&gt;</tt>
- * tag will cause the no-argument constructor of the specified class to be invoked.
- * It is also possible to nest <tt>&lt;object&gt;</tt> tags to provide arguments
- * for the constructor.
- * For example, the fragment:
- * <pre> &lt;object class="mypackage.Foo"&gt;
- *   &lt;object class="mypackage.Bar"/&gt;
- * &lt;/object&gt;</pre>
- * will add an instance of <tt>mypackage.Foo</tt> to the object list, constructed via
- * <tt>new mypackage.Foo(new mypackage.Bar())</tt>.
- * <p>
- * There is a special syntax available creating primitive values and arguments,
- * as well as for constructing {@link java.lang.String <tt>String</tt>}s. Some examples:
- * <p>
- * <pre> &lt;byte value="3"/&gt;
- * &lt;boolean value="false"/&gt;
- * &lt;char value="c"/&gt;
- * &lt;double value="3.14159"/&gt;
- * &lt;float value="3.14"/&gt;
- * &lt;int value="17"/&gt;
- * &lt;long value="1700000"/&gt;
- * &lt;short value="1"/&gt;
- * &lt;string value="The quick brown fox..."/&gt;</pre>
- * <p>
- * When invoked at the "root" level (that is, with no <tt>&lt;object&gt;</tt> parent),
- * this will cause the corresponding "object wrapper" to be added to the list of
- * {@link java.lang.Object <tt>Object</tt>}s.  The {@link #getType type} for these
- * objects will reflect the proper primitive type, however.  When invoked with an
- * <tt>&lt;object&gt;</tt> parent, these will be treated as primitive arguments to the
- * specified {@link java.lang.Object <tt>Object</tt>}'s constructor.  For example, while:
- * <p>
- * <pre> &lt;int value="5"/&gt;
- * &lt;int value="26"/&gt;
- * &lt;int value="100"/&gt;</pre>
- * <p>
- * results in three {@link java.lang.Integer} instances being added to the
- * list of values, with types corresponding to {@link java.lang.Integer}, the fragment:
- * <p>
- * <pre> &lt;int value="5"/&gt;
- * &lt;int value="26"/&gt;
- * &lt;int value="100"/&gt;</pre>
- * <p>
- * results in three {@link java.lang.Integer} instances being added to the
- * list of values, with types corresponding to {@link java.lang.Integer#TYPE}.
- * <p>
- * Hence if you want to invoke the <tt>mypackage.Foo(java.lang.Integer,java.lang.Integer,java.lang.Integer)</tt>
- * constructor, use:
- * <pre> &lt;object class="mypackage.Foo"/&gt;
- *   &lt;object class="java.lang.Integer"&gt;&lt;int value="5"/&gt;&lt;/object&gt;
- *   &lt;object class="java.lang.Integer"&gt;&lt;int value="26"/&gt;&lt;/object&gt;
- *   &lt;object class="java.lang.Integer"&gt;&lt;int value="100"/&gt;&lt;/object&gt;
- * &lt;/object&gt;</pre>
- * <p>
- * If you want to invoke the <tt>mypackage.Foo(int,int,int)</tt>
- * constructor, use:
- * <pre> &lt;object class="mypackage.Foo"/&gt;
- *   &lt;int value="5"/&gt;
- *   &lt;int value="26"/&gt;
- *   &lt;int value="100"/&gt;
- * &lt;/object&gt;</pre>
- * <p>
- * If you'd like to creat a <tt>null</tt> object, use:
- * <pre> &lt;object class="mypackage.Bar" null="true"/&gt;</pre>
- * <p>
- * Here's a simple but complete example:
- * <pre> &lt;?xml version="1.0"?&gt;
- * &lt;arbitrary-root xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl"&gt;
- *   &lt;string value="Hello World!"/&gt;
- *   &lt;string/&gt;
- *   &lt;boolean/&gt;
- *   &lt;boolean value="true"/&gt;
- *   &lt;byte value="1"/&gt;
- *   &lt;short value="1"/&gt;
- *   &lt;int value="1"/&gt;
- *   &lt;long value="1"/&gt;
- *   &lt;float value="1.0"/&gt;
- *   &lt;double value="1.0"/&gt;
- *   &lt;object class="java.util.Date"/&gt;
- *   &lt;object class="java.util.Date"&gt;
- *    &lt;int value="1"/&gt;
- *    &lt;int value="1"/&gt;
- *    &lt;int value="1"/&gt;
- *   &lt;/object&gt;
- * &lt;/arbitrary-root&gt;</pre>
- * <p>
- * Formally, a DTD for the JOCL grammar is as follows:
- * <p>
- * <pre>
- * &lt;!ELEMENT object (object|array|collection|list|byte|boolean|char|double|float|int|long|short|string)*&gt;
- * &lt;!ATTLIST object
- *   class CDATA #REQUIRED
- *   null (true|false) "false"&gt;
- *
- * &lt;!ELEMENT byte EMPTY&gt;
- * &lt;!ATTLIST byte value CDATA #REQUIRED&gt;
- *
- * &lt;!ELEMENT boolean EMPTY&gt;
- * &lt;!ATTLIST boolean value (true|false) #REQUIRED&gt;
- *
- * &lt;!ELEMENT char EMPTY&gt;
- * &lt;!ATTLIST char value CDATA #REQUIRED&gt;
- *
- * &lt;!ELEMENT double EMPTY&gt;
- * &lt;!ATTLIST double value CDATA #REQUIRED&gt;
- *
- * &lt;!ELEMENT float EMPTY&gt;
- * &lt;!ATTLIST float value CDATA #REQUIRED&gt;
- *
- * &lt;!ELEMENT int EMPTY&gt;
- * &lt;!ATTLIST int value CDATA #REQUIRED&gt;
- *
- * &lt;!ELEMENT long EMPTY&gt;
- * &lt;!ATTLIST long value CDATA #REQUIRED&gt;
- *
- * &lt;!ELEMENT short EMPTY&gt;
- * &lt;!ATTLIST short value CDATA #REQUIRED&gt;
- *
- * &lt;!ELEMENT string EMPTY&gt;
- * &lt;!ATTLIST string value CDATA #REQUIRED&gt;
- * </pre>
- * <p>
- * This class can also be used as a base class for {@link org.xml.sax.ContentHandler}s
- * that include JOCL as part of their grammar.  Simply extend this class, and override the
- * {@link #startElement},
- * {@link #characters},
- * and {@link #endElement} methods to handle
- * your tags, and invoke the method of the parent class (i.e., <tt>super.<i>XXX</i></tt> for
- * elements and data that you don't handle.
- * <p>
- * A number of static methods are available for simply reading a list of objects from
- * a {@link InputStream}, {@link Reader} or {@link InputSource}.
- * <p>
- * <b>Note that this class is not synchronized.</b>
- * <p>
- * @author Rodney Waldhoff
- * @version $Revision$ $Date$
- */
-public class JOCLContentHandler extends DefaultHandler {
-
-    //--- Static Methods ---------------------------------------------
-    /**
-     * A simple tester method.  Reads a JOCL document from standard in
-     * and prints a list of the objects created to standard out.
-     * (Use the <tt>org.xml.sax.driver</tt> system property to specify
-     * an {@link XMLReader}.
-     */
-    public static void main(String[] args) throws Exception {
-        JOCLContentHandler jocl = JOCLContentHandler.parse(System.in,null);
-        for(int i=0;i<jocl.size();i++) {
-            System.out.println("<" + jocl.getType(i) + ">\t" + jocl.getValue(i));
-        }
-    }
-
-    /**
-     * Parses a JOCL document from the specified file, using the
-     * {@link XMLReader} specified by the <tt>org.xml.sax.driver</tt>
-     * property.
-     * The returned {@link JOCLContentHandler} will contain the
-     * list of objects described by the file.
-     * @param f a {@link File} containing the JOCL document
-     * @return a {@link JOCLContentHandler} containing the list of objects described by the JOCL document
-     */
-    public static JOCLContentHandler parse(File f) throws SAXException, FileNotFoundException, IOException {
-        return JOCLContentHandler.parse(new FileInputStream(f),null);
-    }
-
-    /**
-     * Parses a JOCL document from the specified {@link Reader}, using the
-     * {@link XMLReader} specified by the <tt>org.xml.sax.driver</tt>
-     * property.
-     * The returned {@link JOCLContentHandler} will contain the
-     * list of objects described by the file.
-     * @param in a {@link Reader} containing the JOCL document
-     * @return a {@link JOCLContentHandler} containing the list of objects described by the JOCL document
-     */
-    public static JOCLContentHandler parse(Reader in) throws SAXException, IOException {
-        return JOCLContentHandler.parse(new InputSource(in),null);
-    }
-
-    /**
-     * Parses a JOCL document from the specified {@link InputStream}, using the
-     * {@link XMLReader} specified by the <tt>org.xml.sax.driver</tt>
-     * property.
-     * The returned {@link JOCLContentHandler} will contain the
-     * list of objects described by the file.
-     * @param in a {@link InputStream} containing the JOCL document
-     * @return a {@link JOCLContentHandler} containing the list of objects described by the JOCL document
-     */
-    public static JOCLContentHandler parse(InputStream in) throws SAXException, IOException {
-        return JOCLContentHandler.parse(new InputSource(in),null);
-    }
-
-    /**
-     * Parses a JOCL document from the specified {@link InputSource}, using thethe
-     * {@link XMLReader} specified by the <tt>org.xml.sax.driver</tt>
-     * property.
-     * The returned {@link JOCLContentHandler} will contain the
-     * list of objects described by the file.
-     * @param in a {@link InputSource} containing the JOCL document
-     * @return a {@link JOCLContentHandler} containing the list of objects described by the JOCL document
-     */
-    public static JOCLContentHandler parse(InputSource in) throws SAXException, IOException {
-        return JOCLContentHandler.parse(in,null);
-    }
-
-    /**
-     * Parses a JOCL document from the specified file, using the
-     * {@link XMLReader} specified by the <tt>org.xml.sax.driver</tt>
-     * property.
-     * The returned {@link JOCLContentHandler} will contain the
-     * list of objects described by the file.
-     * @param f a {@link File} containing the JOCL document
-     * @param reader the {@link XMLReader} to use to parse the file
-     * @return a {@link JOCLContentHandler} containing the list of objects described by the JOCL document
-     */
-    public static JOCLContentHandler parse(File f, XMLReader reader) throws SAXException, FileNotFoundException, IOException {
-        return JOCLContentHandler.parse(new FileInputStream(f),reader);
-    }
-
-    /**
-     * Parses a JOCL document from the specified {@link Reader}, using the specified
-     * {@link XMLReader}.
-     * The returned {@link JOCLContentHandler} will contain the
-     * list of objects described by the file.
-     * @param in a {@link Reader} containing the JOCL document
-     * @param reader the {@link XMLReader} to use to parse the document
-     * @return a {@link JOCLContentHandler} containing the list of objects described by the JOCL document
-     */
-    public static JOCLContentHandler parse(Reader in, XMLReader reader) throws SAXException, IOException {
-        return JOCLContentHandler.parse(new InputSource(in),reader);
-    }
-
-    /**
-     * Parses a JOCL document from the specified {@link InputStream}, using the specified
-     * {@link XMLReader}.
-     * The returned {@link JOCLContentHandler} will contain the
-     * list of objects described by the file.
-     * @param in a {@link InputStream} containing the JOCL document
-     * @param reader the {@link XMLReader} to use to parse the document
-     * @return a {@link JOCLContentHandler} containing the list of objects described by the JOCL document
-     */
-    public static JOCLContentHandler parse(InputStream in, XMLReader reader) throws SAXException, IOException {
-        return JOCLContentHandler.parse(new InputSource(in),reader);
-    }
-
-    /**
-     * Parses a JOCL document from the specified {@link InputSource}, using the
-     * specified {@link XMLReader}.
-     * The returned {@link JOCLContentHandler} will contain the
-     * list of objects described by the file.
-     * @param in a {@link InputSource} containing the JOCL document
-     * @param reader the {@link XMLReader} to use to parse the document
-     * @return a {@link JOCLContentHandler} containing the list of objects described by the JOCL document
-     */
-    public static JOCLContentHandler parse(InputSource in, XMLReader reader) throws SAXException, IOException {
-        JOCLContentHandler jocl = new JOCLContentHandler();
-        if(null == reader) {
-            reader = XMLReaderFactory.createXMLReader();
-        }
-        reader.setContentHandler(jocl);
-        reader.parse(in);
-        return jocl;
-    }
-
-    //--- Construtors ------------------------------------------------
-
-    /**
-     * Equivalent to {@link #JOCLContentHandler(boolean,boolean,boolean,boolean) JOCLContentHandler(true,true,true,true)}.
-     */
-    public JOCLContentHandler() {
-        this(true,true,true,true);
-    }
-
-    /**
-     * Construct a JOCLContentHandler.
-     * @param emptyEltNS when <tt>true</tt> I should assume any element with an empty namespace is within the JOCL namespace
-     * @param joclEltPrefix when <tt>true</tt> I should assume any element who's prefix is <tt>jocl:</tt> and who's namespace is empty is within the JOCL namespace
-     * @param emptyAttrNS when <tt>true</tt> I should assume any attribute with an empty namespace is within the JOCL namespace
-     * @param joclAttrPrefix when <tt>true</tt> I should assume any attribute who's prefix is <tt>jocl:</tt> and who's namespace is empty is within the JOCL namespace
-     */
-    public JOCLContentHandler(boolean emptyEltNS, boolean joclEltPrefix, boolean emptyAttrNS, boolean joclAttrPrefix) {
-        _acceptEmptyNamespaceForElements = emptyEltNS;
-        _acceptJoclPrefixForElements = joclEltPrefix;
-        _acceptEmptyNamespaceForAttributes = emptyAttrNS;
-        _acceptJoclPrefixForAttributes = joclAttrPrefix;
-    }
-
-    //--- Public Methods - Accessing Objects -------------------------
-
-    /**
-     * Returns the number of values and types in my list.
-     * @return the number of values and types in my list.
-     */
-    public int size() {
-        return _typeList.size();
-    }
-
-    /**
-     * Clears all the values and types in my list.
-     */
-    public void clear() {
-        _typeList = new ArrayList();
-        _valueList = new ArrayList();
-    }
-
-    /**
-     * Removes the value/type pair at the specified index.
-     */
-    public void clear(int i) {
-        _typeList.remove(i);
-        _valueList.remove(i);
-    }
-
-    /**
-     * Returns the type of the object at the specified index.
-     */
-    public Class getType(int i) {
-        return(Class)(_typeList.get(i));
-    }
-
-    /**
-     * Returns the value of the object at the specified index.
-     */
-    public Object getValue(int i) {
-        return _valueList.get(i);
-    }
-
-    /**
-     * Returns a shallow copy of my list of values.
-     */
-    public Object[] getValueArray() {
-        return _valueList.toArray();
-    }
-
-    /**
-     * Returns a shallow copy of my list of types.
-     */
-    public Object[] getTypeArray() {
-        return _typeList.toArray();
-    }
-
-    //--- Public Methods - DocumentHandler ---------------------------
-
-    @Override
-    public void startElement(String uri, String localName, String qname, Attributes attr) throws SAXException {
-        try {
-            if(isJoclNamespace(uri,localName,qname)) {
-                if(ELT_OBJECT.equals(localName)) {
-                    String cname = getAttributeValue(ATT_CLASS,attr);
-                    String isnullstr = getAttributeValue(ATT_ISNULL,attr,"false");
-                    boolean isnull = ("true".equalsIgnoreCase(isnullstr) || "yes".equalsIgnoreCase(isnullstr));
-                    _cur = new ConstructorDetails(cname,_cur,isnull);
-                } else if(ELT_ARRAY.equals(localName)) {
-                    _cur = new ConstructorDetails(Object[].class,_cur,false,true);
-                } else if(ELT_COLLECTION.equals(localName)) {
-                    _cur = new ConstructorDetails(Collection.class,_cur,false,true);
-                } else if(ELT_LIST.equals(localName)) {
-                    _cur = new ConstructorDetails(List.class,_cur,false,true);
-                } else if(ELT_BOOLEAN.equals(localName)) {
-                    String valstr = getAttributeValue(ATT_VALUE,attr,"false");
-                    boolean val = ("true".equalsIgnoreCase(valstr) || "yes".equalsIgnoreCase(valstr));
-                    addObject(Boolean.TYPE,Boolean.valueOf(val));
-                } else if(ELT_BYTE.equals(localName)) {
-                    byte val = Byte.parseByte(getAttributeValue(ATT_VALUE,attr,"0"));
-                    addObject(Byte.TYPE,new Byte(val));
-                } else if(ELT_CHAR.equals(localName)) {
-                    char val = '\u0000';
-                    String valstr = getAttributeValue(ATT_VALUE,attr);
-                    if(null == valstr) {
-                        val = '\u0000';
-                    } else if(valstr.length() > 1) {
-                        throw new SAXException("if present, char value must be exactly one character long");
-                    } else if(valstr.length()==1) {
-                        val = valstr.charAt(0);
-                    } else if(valstr.length()==0) {
-                        throw new SAXException("if present, char value must be exactly one character long");
-                    }
-                    addObject(Character.TYPE,new Character(val));
-                } else if(ELT_DOUBLE.equals(localName)) {
-                    double val = Double.parseDouble(getAttributeValue(ATT_VALUE,attr,"0"));
-                    addObject(Double.TYPE,new Double(val));
-                } else if(ELT_FLOAT.equals(localName)) {
-                    float val = Float.parseFloat(getAttributeValue(ATT_VALUE,attr,"0"));
-                    addObject(Float.TYPE,new Float(val));
-                } else if(ELT_INT.equals(localName)) {
-                    int val = Integer.parseInt(getAttributeValue(ATT_VALUE,attr,"0"));
-                    addObject(Integer.TYPE,new Integer(val));
-                } else if(ELT_LONG.equals(localName)) {
-                    long val = Long.parseLong(getAttributeValue(ATT_VALUE,attr,"0"));
-                    addObject(Long.TYPE,new Long(val));
-                } else if(ELT_SHORT.equals(localName)) {
-                    short val = Short.parseShort(getAttributeValue(ATT_VALUE,attr,"0"));
-                    addObject(Short.TYPE,new Short(val));
-                } else if(ELT_STRING.equals(localName)) {
-                    String val = getAttributeValue(ATT_VALUE,attr);
-                    addObject("".getClass(),val);
-                } else {
-                    // unrecognized JOCL element warning?
-                }
-            }
-        } catch(NumberFormatException e) {
-            throw new SAXException(e);
-        } catch(ClassNotFoundException e) {
-            throw new SAXException(e);
-        }
-    }
-
-    @Override
-    public void endElement(String uri, String localName, String qname) throws SAXException {
-        try {
-            if(isJoclNamespace(uri,localName,qname)) {
-                if(ELT_OBJECT.equals(localName) || ELT_ARRAY.equals(localName)
-                    || ELT_COLLECTION.equals(localName) || ELT_LIST.equals(localName)) {
-                    ConstructorDetails temp = _cur;
-                    _cur = _cur.getParent();
-                    if(null == _cur) {
-                        _typeList.add(temp.getType());
-                        _valueList.add(temp.createObject());
-                    } else {
-                        _cur.addArgument(temp.getType(),temp.createObject());
-                    }
-                } 
-                /* 
-                else if(ELT_BOOLEAN.equals(localName)) {
-                    // nothing to do here
-                } else if(ELT_BYTE.equals(localName)) {
-                    // nothing to do here
-                } else if(ELT_CHAR.equals(localName)) {
-                    // nothing to do here
-                } else if(ELT_DOUBLE.equals(localName)) {
-                    // nothing to do here
-                } else if(ELT_FLOAT.equals(localName)) {
-                    // nothing to do here
-                } else if(ELT_INT.equals(localName)) {
-                    // nothing to do here
-                } else if(ELT_LONG.equals(localName)) {
-                    // nothing to do here
-                } else if(ELT_SHORT.equals(localName)) {
-                    // nothing to do here
-                } else if(ELT_STRING.equals(localName)) {
-                    // nothing to do here
-                } else {
-                    // unrecognized JOCL element warning?
-                }
-                */
-            }
-        } catch(Exception e) {
-            throw new SAXException(e);
-        }
-    }
-
-    @Override
-    public void setDocumentLocator(Locator locator) {
-        _locator = locator;
-    }
-
-    //--- Protected Methods ------------------------------------------
-
-    /**
-     * Returns <tt>true</tt> if the given attributes define an
-     * element within the JOCL namespace (according to my current
-     * configuration.)
-     *
-     * @see #_acceptEmptyNamespaceForElements
-     * @see #_acceptJoclPrefixForElements
-     */
-    protected boolean isJoclNamespace(String uri, String localname, String qname) {
-        if(JOCL_NAMESPACE_URI.equals(uri)) {
-            return true;
-        } else if(_acceptEmptyNamespaceForElements && (null == uri || "".equals(uri))) {
-            return true;
-        } else if(_acceptJoclPrefixForElements && (null == uri || "".equals(uri)) && qname.startsWith(JOCL_PREFIX)) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Equivalent to {@link #getAttributeValue(java.lang.String,org.xml.sax.Attributes,java.lang.String) <tt>getAttributeValue(localname,attr,null)</tt>}.
-     */
-    protected String getAttributeValue(String localname, Attributes attr) {
-        return getAttributeValue(localname,attr,null);
-    }
-
-    /**
-     * Returns the value of attribute with the given
-     * <tt><i>localname</i></tt> within the JOCL
-     * namespace from the given set of {@link Attributes}.
-     * If no such attribute can be found, returns
-     * <tt><i>implied</i></tt>.
-     *
-     * @param localname the unqualified name of the attribute to look for
-     * @param attr      the Attributes in which to find the value
-     * @param implied   the default value for the attribute
-     * @return the value of attribute with the given
-     *         <tt><i>localname</i></tt> within the JOCL
-     *         namespace from the given set of {@link Attributes}.
-     *         If no such attribute can be found, returns
-     *         <tt><i>implied</i></tt>.
-     */
-    protected String getAttributeValue(String localname, Attributes attr, String implied) {
-        String val = attr.getValue(JOCL_NAMESPACE_URI,localname);
-        if(null == val && _acceptEmptyNamespaceForAttributes) {
-            val = attr.getValue("",localname);
-        }
-        if(null == val && _acceptJoclPrefixForAttributes) {
-            val = attr.getValue("",JOCL_PREFIX + localname);
-        }
-        return(null == val ? implied : val);
-    }
-
-    /**
-     * Add the specified object either to my type/value list, or
-     * as an argument to the object I'm currently constructing.
-     */
-    protected void addObject(Class type, Object val) {
-        if(null == _cur) {
-            _typeList.add(type);
-            _valueList.add(val);
-        } else {
-            _cur.addArgument(type,val);
-        }
-    }
-
-    //--- Protected Attributes ---------------------------------------
-
-    /**
-     * The JOCL namespace URI, <tt>http://apache.org/xml/xmlns/jakarta/commons/jocl</tt>.
-     */
-    public static final String JOCL_NAMESPACE_URI = "http://apache.org/xml/xmlns/jakarta/commons/jocl";
-
-    /**
-     * The default JOCL prefix, <tt>jocl:</tt>.
-     */
-    public static final String JOCL_PREFIX = "jocl:";
-
-    /**
-     * A list of the types ({@link Class}es) already created via the parse.
-     */
-    protected ArrayList _typeList = new ArrayList();
-
-    /**
-     * A list of the values ({@link Object}s) already created via the parse.
-     */
-    protected ArrayList _valueList = new ArrayList();
-
-    /**
-     * The object I'm currently working on.
-     */
-    protected ConstructorDetails _cur = null;
-
-    /**
-     * When <tt>true</tt>, I will treat elements with an
-     * empty namespace URI as part of the JOCL namespace.
-     *
-     * @see #JOCL_NAMESPACE_URI
-     */
-    protected boolean _acceptEmptyNamespaceForElements = true;
-
-    /**
-     * When <tt>true</tt>, I will treat elements with the
-     * {@link #JOCL_PREFIX} but no namespace URI as being
-     * mapped to the jocl namespace.
-     *
-     * @see #JOCL_PREFIX
-     * @see #JOCL_NAMESPACE_URI
-     */
-    protected boolean _acceptJoclPrefixForElements = true;
-
-    /**
-     * When <tt>true</tt>, I will treat attributes with an
-     * empty namespace URI as part of the JOCL namespace.
-     *
-     * @see #JOCL_NAMESPACE_URI
-     */
-    protected boolean _acceptEmptyNamespaceForAttributes = true;
-
-    /**
-     * When <tt>true</tt>, I will treat attributes with the
-     * {@link #JOCL_PREFIX} but no namespace URI as being
-     * mapped to the jocl namespace.
-     *
-     * @see #JOCL_PREFIX
-     * @see #JOCL_NAMESPACE_URI
-     */
-    protected boolean _acceptJoclPrefixForAttributes = true;
-
-    /** My {@link Locator}. */
-    protected Locator _locator = null;
-
-    /** The name of the "object" element. */
-    protected static final String ELT_OBJECT  = "object";
-
-    /** The name of the "array" element.
-     * @since 1.2.2
-     */
-    protected static final String ELT_ARRAY  = "array";
-
-    /** The name of the "collection" element.
-     * @since 1.2.2
-     */
-    protected static final String ELT_COLLECTION  = "collection";
-
-    /** The name of the "list" element.
-     * @since 1.2.2
-     */
-    protected static final String ELT_LIST = "list";
-
-    /** The name of the "object" element's "class" attribute. */
-    protected static final String ATT_CLASS   = "class";
-
-    /** The name of the "object" element's "isnull" attribute. */
-    protected static final String ATT_ISNULL  = "null";
-
-    /** The name of the "boolean" element. */
-    protected static final String ELT_BOOLEAN = "boolean";
-
-    /** The name of the "byte" element. */
-    protected static final String ELT_BYTE    = "byte";
-
-    /** The name of the "char" element. */
-    protected static final String ELT_CHAR    = "char";
-
-    /** The name of the "double" element. */
-    protected static final String ELT_DOUBLE  = "double";
-
-    /** The name of the "float" element. */
-    protected static final String ELT_FLOAT   = "float";
-
-    /** The name of the "int" element. */
-    protected static final String ELT_INT     = "int";
-
-    /** The name of the "long" element. */
-    protected static final String ELT_LONG    = "long";
-
-    /** The name of the "short" element. */
-    protected static final String ELT_SHORT   = "short";
-
-    /** The name of the "string" element. */
-    protected static final String ELT_STRING  = "string";
-
-    /** The name of the "value" attribute. */
-    protected static final String ATT_VALUE   = "value";
-
-    static class ConstructorDetails {
-        private ConstructorDetails _parent = null;
-        private Class _type = null;
-        private ArrayList _argTypes = null;
-        private ArrayList _argValues = null;
-        private boolean _isnull = false;
-        private boolean _isgroup = false;
-
-        public ConstructorDetails(String classname, ConstructorDetails parent) throws ClassNotFoundException {
-            this(Class.forName(classname),parent,false,false);
-        }
-
-        public ConstructorDetails(String classname, ConstructorDetails parent, boolean isnull) throws ClassNotFoundException {
-            this(Class.forName(classname),parent,isnull,false);
-        }
-
-        /**
-         * @since 1.3
-         */
-        public ConstructorDetails(String classname, ConstructorDetails parent, boolean isnull, boolean isgroup) throws ClassNotFoundException {
-            this(Class.forName(classname),parent,isnull,isgroup);
-        }
-
-        /**
-         * @since 1.3
-         */
-        public ConstructorDetails(Class type, ConstructorDetails parent, boolean isnull, boolean isgroup) {
-            _parent = parent;
-            _type = type;
-            _argTypes = new ArrayList();
-            _argValues = new ArrayList();
-            _isnull = isnull;
-            _isgroup = isgroup;
-        }
-
-        public void addArgument(Object value) {
-            addArgument(value.getClass(),value);
-        }
-
-        public void addArgument(Class type, Object val) {
-            if(_isnull) {
-                throw new NullPointerException("can't add arguments to null instances");
-            }
-            _argTypes.add(type);
-            _argValues.add(val);
-        }
-
-        public Class getType() {
-            return _type;
-        }
-
-        public ConstructorDetails getParent() {
-            return _parent;
-        }
-
-        public Object createObject() throws InstantiationException, IllegalAccessException, InvocationTargetException {
-            if(_isnull) {
-                return null;
-            } else if( _isgroup ) {
-                if (_type.equals(Object[].class)) {
-                    return _argValues.toArray();
-                } else if (_type.equals(Collection.class) || _type.equals(List.class)) {
-                    return _argValues;
-                } else {
-                    throw new IllegalStateException("implementation error: unhandled _type:" + _type);
-                }
-            } else {
-                Class k = getType();
-                Class[] argtypes = (Class[])_argTypes.toArray(new Class[0]);
-                Object[] argvals = _argValues.toArray();
-                return ConstructorUtil.invokeConstructor(k,argtypes,argvals);
-            }
-        }
-    }
-
-}
diff --git a/src/java/org/apache/commons/jocl2/package.html b/src/java/org/apache/commons/jocl2/package.html
deleted file mode 100644 (file)
index 44f1c62..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<!-- $Id$ -->
-<html>
-<head>
-<title>Package Documentation for org.apache.commons.jocl</title>
-</head>
-<body>
-<p>
-Java Object Configuration Language, an XML application for describing Java Objects
-to be instantiated.  See {@link org.apache.commons.jocl.JOCLContentHandler}.
-</p>
-</body>
-</html>
diff --git a/src/test/org/apache/commons/dbcp2/TestJOCLed.java b/src/test/org/apache/commons/dbcp2/TestJOCLed.java
deleted file mode 100644 (file)
index 389bcad..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.dbcp2;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author Rodney Waldhoff
- * @version $Revision$ $Date$
- */
-public class TestJOCLed extends TestConnectionPool {
-    public TestJOCLed(String testName) {
-        super(testName);
-        if (Float.parseFloat(System.getProperty("java.specification.version")) < 
-                1.6f) {
-            if(null == System.getProperty("org.xml.sax.driver")) {
-                System.setProperty("org.xml.sax.driver","org.apache.xerces.parsers.SAXParser");
-            }
-        }
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestJOCLed.class);
-    }
-    
-    @Override
-    protected Connection getConnection() throws Exception {
-        return DriverManager.getConnection("jdbc:apache:commons:dbcp:/testpool");
-    }
-
-    private PoolingDriver driver = null;
-    
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        driver = new PoolingDriver();
-        PoolingDriver.setAccessToUnderlyingConnectionAllowed(true);
-    }
-
-    @Override
-    public void tearDown() throws Exception {
-        driver.closePool("testpool");
-        DriverManager.deregisterDriver(driver);
-        super.tearDown();
-    }
-
-}
@@ -33,19 +33,18 @@ import org.apache.commons.pool2.impl.GenericKeyedObjectPoolFactory;
 import org.apache.commons.pool2.impl.GenericObjectPool;
 
 /**
- * Tests for a "manually configured", {@link GenericObjectPool}
- * based {@link PoolingDriver}.
+ * Tests for a  {@link GenericObjectPool} based {@link PoolingDriver}.
  * @author Rodney Waldhoff
  * @author Sean C. Sullivan
  * @version $Revision$ $Date$
  */
-public class TestManual extends TestConnectionPool {
-    public TestManual(String testName) {
+public class TestPoolingDriver extends TestConnectionPool {
+    public TestPoolingDriver(String testName) {
         super(testName);
     }
 
     public static Test suite() {
-        return new TestSuite(TestManual.class);
+        return new TestSuite(TestPoolingDriver.class);
     }
 
     @Override
diff --git a/src/test/org/apache/commons/jocl2/TestAll.java b/src/test/org/apache/commons/jocl2/TestAll.java
deleted file mode 100644 (file)
index 3bf77e9..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jocl2;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-
-/**
- * @version $Revision$ $Date$
- */
-public class TestAll extends TestCase {
-    public TestAll(String testName) {
-        super(testName);
-    }
-
-    public static Test suite() {
-        TestSuite suite = new TestSuite();
-        suite.addTest(TestJOCLContentHandler.suite());
-        return suite;
-    }
-
-    public static void main(String args[]) {
-        String[] testCaseName = { TestAll.class.getName() };
-        junit.textui.TestRunner.main(testCaseName);
-    }
-}
diff --git a/src/test/org/apache/commons/jocl2/TestJOCLContentHandler.java b/src/test/org/apache/commons/jocl2/TestJOCLContentHandler.java
deleted file mode 100644 (file)
index 2ab4c14..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.jocl2;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.xml.sax.helpers.AttributesImpl;
-import org.xml.sax.SAXException;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.io.InputStream;
-import java.io.IOException;
-
-/**
- * @version $Revision$ $Date$
- */
-public class TestJOCLContentHandler extends TestCase {
-    public TestJOCLContentHandler(String testName) {
-        super(testName);
-        if (Float.parseFloat(System.getProperty("java.specification.version")) < 
-                1.6f) {
-            if(null == System.getProperty("org.xml.sax.driver")) {
-                System.setProperty("org.xml.sax.driver","org.apache.xerces.parsers.SAXParser");
-            }
-        }
-    }
-
-    public static Test suite() {
-        return new TestSuite(TestJOCLContentHandler.class);
-    }
-
-    public static void main(String args[]) {
-        String[] testCaseName = { TestJOCLContentHandler.class.getName() };
-        junit.textui.TestRunner.main(testCaseName);
-    }
-
-    private JOCLContentHandler jocl = null;
-
-    @Override
-    public void setUp() {
-        jocl = new JOCLContentHandler();
-    }
-
-    public void testPrimitives() throws Exception {
-        jocl.startDocument();
-        jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","jocl","jocl",new AttributesImpl());
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","true");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","boolean","boolean",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","boolean","boolean");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","1");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","byte","byte",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","byte","byte");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","c");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","char","char",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","char","char");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","2.0");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","double","double",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","double","double");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","3.0");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","float","float",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","float","float");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","5");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","int","int",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","int","int");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","7");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","11");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","short","short",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","short","short");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","All your base are belong to us.");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","string","string",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","string","string");
-        }
-        jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","jocl","jocl");
-        jocl.endDocument();
-
-        assertEquals(Boolean.TYPE,jocl.getType(0));
-        assertEquals(Byte.TYPE,jocl.getType(1));
-        assertEquals(Character.TYPE,jocl.getType(2));
-        assertEquals(Double.TYPE,jocl.getType(3));
-        assertEquals(Float.TYPE,jocl.getType(4));
-        assertEquals(Integer.TYPE,jocl.getType(5));
-        assertEquals(Long.TYPE,jocl.getType(6));
-        assertEquals(Short.TYPE,jocl.getType(7));
-        assertEquals(String.class,jocl.getType(8));
-
-        assertEquals(Boolean.TRUE,jocl.getValue(0));
-        assertEquals(new Byte("1"),jocl.getValue(1));
-        assertEquals(new Character('c'),jocl.getValue(2));
-        assertEquals(new Double("2.0"),jocl.getValue(3));
-        assertEquals(new Float("3.0"),jocl.getValue(4));
-        assertEquals(new Integer("5"),jocl.getValue(5));
-        assertEquals(new Long("7"),jocl.getValue(6));
-        assertEquals(new Short("11"),jocl.getValue(7));
-        assertEquals("All your base are belong to us.",jocl.getValue(8));
-    }
-
-    public void testObject() throws Exception {
-        jocl.startDocument();
-        jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","jocl","jocl",new AttributesImpl());
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","null","null","CDATA","true");
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","class","class","CDATA","java.lang.String");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","class","class","CDATA","java.util.Date");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","class","class","CDATA","java.util.Date");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object",attr);
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","345");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long");
-        }
-        jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object");
-
-        // test array of 2 longs
-        {
-            AttributesImpl attr = new AttributesImpl();
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","array","array",attr);
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","12");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","34");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long");
-        }
-        jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object");
-
-        // test collection of 2 Strings, one null
-        {
-            AttributesImpl attr = new AttributesImpl();
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","collection","collection",attr);
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","null","null","CDATA","true");
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","class","class","CDATA","java.lang.String");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","String #1");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","string","string",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","string","string");
-        }
-        jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object");
-
-        // test list of 1 Date, one Long
-        {
-            AttributesImpl attr = new AttributesImpl();
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","list","list",attr);
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","class","class","CDATA","java.util.Date");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object");
-        }
-        {
-            AttributesImpl attr = new AttributesImpl();
-            attr.addAttribute("http://apache.org/xml/xmlns/jakarta/commons/jocl","value","value","CDATA","12");
-            jocl.startElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long",attr);
-            jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","long","long");
-        }
-        jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","object","object");
-
-        jocl.endElement("http://apache.org/xml/xmlns/jakarta/commons/jocl","jocl","jocl");
-        jocl.endDocument();
-
-        assertEquals(String.class,jocl.getType(0));
-        assertEquals(java.util.Date.class,jocl.getType(1));
-        assertEquals(java.util.Date.class,jocl.getType(2));
-        assertTrue(jocl.getType(3).isArray());
-        assertEquals(Collection.class,jocl.getType(4));
-        assertEquals(List.class,jocl.getType(5));
-
-        assertTrue(null == jocl.getValue(0));
-        assertTrue(null != jocl.getValue(1));
-        assertEquals(new java.util.Date(345L),jocl.getValue(2));
-
-        Object[] objects = (Object[])jocl.getValue(3);
-        assertEquals(new Long(12L), objects[0]);
-        assertEquals(new Long(34L), objects[1]);
-
-        Iterator iterator = ((Collection)jocl.getValue(4)).iterator();
-        assertNull(iterator.next());
-        assertEquals("String #1", iterator.next());
-
-        List list = (List) jocl.getValue(5);
-        assertEquals(java.util.Date.class,list.get(0).getClass());
-        assertEquals(new Long(12L),list.get(1));
-    }
-
-    public void testParse()
-        throws IOException, SAXException
-    {
-        InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("testpool.jocl");
-        JOCLContentHandler.parse(stream);
-    }
-}
diff --git a/src/test/testpool.jocl b/src/test/testpool.jocl
deleted file mode 100644 (file)
index 265efb9..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-<object class="org.apache.commons.dbcp2.PoolableConnectionFactory" xmlns="http://apache.org/xml/xmlns/jakarta/commons/jocl">
-   <object class="org.apache.commons.dbcp2.DriverConnectionFactory">
-      <object class="org.apache.commons.dbcp2.TesterDriver"/>
-      <string value="jdbc:apache:commons:testdriver"/>
-      <object class="java.util.Properties" null="true"/>
-   </object>
-   <object class="org.apache.commons.pool2.impl.GenericObjectPool">
-      <object class="org.apache.commons.pool2.PoolableObjectFactory" null="true"/>
-      <int value="10"/>
-      <byte value="1"/>
-      <long value="2000"/>
-      <int value="10"/>
-      <boolean value="true"/>
-      <boolean value="true"/>
-      <long value="10000"/>
-      <int value="5"/>
-      <long value="5000"/>
-      <boolean value="true"/>
-   </object>
-   <object class="org.apache.commons.pool2.impl.GenericKeyedObjectPoolFactory">
-      <object class="org.apache.commons.pool2.KeyedPoolableObjectFactory" null="true"/>
-      <int value="5"/>
-      <byte value="1"/>
-      <long value="2000"/>
-      <int value="5"/>
-      <boolean value="true"/>
-      <boolean value="true"/>
-      <long value="10000"/>
-      <int value="5"/>
-      <long value="5000"/>
-      <boolean value="true"/>
-   </object>
-   <string value="SELECT COUNT(*) FROM DUAL"/>
-   <collection>
-     <string value="ALTER SESSION SET NLS_COMP=ANSI"/>
-     <string value="ALTER SESSION SET NLS_SORT=BINARY"/>
-   </collection>
-   <boolean value="false"/>
-   <boolean value="true"/>
-</object>