You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2011/11/08 14:24:44 UTC

svn commit: r1199234 - in /db/derby/code/trunk: ./ java/testing/org/apache/derbyTesting/functionTests/tests/lang/ java/testing/org/apache/derbyTesting/junit/

Author: rhillegas
Date: Tue Nov  8 13:24:43 2011
New Revision: 1199234

URL: http://svn.apache.org/viewvc?rev=1199234&view=rev
Log:
DERBY-5496: Compile the JUnit infrastructure package against the small device classpath, rather than the jdk 1.4 classpath.

Modified:
    db/derby/code/trunk/build.xml
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UnaryArithmeticParameterTest.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/J2EEDataSource.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JAXPFinder.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/RuntimeStatisticsParser.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XATestUtil.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XML.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/build.xml

Modified: db/derby/code/trunk/build.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/build.xml?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/build.xml (original)
+++ db/derby/code/trunk/build.xml Tue Nov  8 13:24:43 2011
@@ -345,6 +345,7 @@
 
     <echo message="${checkEvent} compilerPropsAlreadySet = ${compilerPropsAlreadySet}"/>
     <echo message="${checkEvent} compilerLevel16 = ${compilerLevel16}"/>
+    <echo message="${checkEvent} compile.classpath = ${compile.classpath}"/>
     <echo message="${checkEvent} jsr169compile.classpath = ${jsr169compile.classpath}"/>
     <echo message="${checkEvent} j14lib = ${j14lib}"/>
     <echo message="${checkEvent} java14compile.classpath = ${java14compile.classpath}"/>

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UnaryArithmeticParameterTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UnaryArithmeticParameterTest.java?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UnaryArithmeticParameterTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UnaryArithmeticParameterTest.java Tue Nov  8 13:24:43 2011
@@ -1,6 +1,6 @@
 /*
 
-Derby - Class org.apache.derbyTesting.functionTests.tests.lang.unaryArithmeticParameterTest
+Derby - Class org.apache.derbyTesting.functionTests.tests.lang.UnaryArithmeticParameterTest
 
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
@@ -81,9 +81,9 @@ public class UnaryArithmeticParameterTes
 	}
 	/**
 	 * Test using parameters with unary minus and unary plus
-	 * @throws SQLException
+	 * @throws Exception
 	 */
-		public void testParametersForUnaryMinusAndPlus() throws SQLException {
+		public void testParametersForUnaryMinusAndPlus() throws Exception {
 			PreparedStatement ps = prepareStatement("insert into t1 values(?,+?,-?,?)");
 			ps.setInt(1,3);
 			ps.setInt(2,3);
@@ -126,9 +126,9 @@ public class UnaryArithmeticParameterTes
 			}
 		/**
 		 * Tests ABS function with Unary plus and Unary minus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testABSWithUnaryMinusAndPlus() throws SQLException {
+		public void testABSWithUnaryMinusAndPlus() throws Exception {
 			Statement s = createStatement();
 			s.execute("CREATE FUNCTION ABS_FUNCT(P1 INT) RETURNS INT CALLED ON NULL INPUT EXTERNAL NAME 'java.lang.Math.abs' LANGUAGE JAVA PARAMETER STYLE JAVA");
 			PreparedStatement ps = prepareStatement("select * from t1 where -? = abs_funct(+?)");
@@ -145,9 +145,9 @@ public class UnaryArithmeticParameterTes
 		}	
 		/**
 		 * Tests MAX function with Unary plus and Unary minus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testMAXWithUnaryMinusAndPlus() throws SQLException{
+		public void testMAXWithUnaryMinusAndPlus() throws Exception{
 			Statement s = createStatement();
 			s.execute("CREATE FUNCTION MAX_CNI(P1 INT, P2 INT) RETURNS INT CALLED ON NULL INPUT EXTERNAL NAME 'java.lang.Math.max' LANGUAGE JAVA PARAMETER STYLE JAVA");
 			PreparedStatement ps = prepareStatement("select * from t1 where -? = max_cni(-5,-1)");
@@ -180,9 +180,9 @@ public class UnaryArithmeticParameterTes
 			}
 		/**
 		 * Tests BETWEEN with unary minus and unary plus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testBETWEENWithUnaryMinusAndPlus() throws SQLException{
+		public void testBETWEENWithUnaryMinusAndPlus() throws Exception{
 			PreparedStatement ps = prepareStatement("select * from t1 where c11 between -? and +?");
 			ps.setInt(1,-1);
 			ps.setInt(2,1);
@@ -194,9 +194,9 @@ public class UnaryArithmeticParameterTes
 		}
 		/**
 		 * Tests NOT IN with unary minus and unary plus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testNOTINWithUnaryMinusAndPlus() throws SQLException{
+		public void testNOTINWithUnaryMinusAndPlus() throws Exception{
 			PreparedStatement ps = prepareStatement("select * from t1 where +? not in (-?, +?, 2, ?)");
 			ps.setInt(1,-11);
 			ps.setInt(2,1);
@@ -218,9 +218,9 @@ public class UnaryArithmeticParameterTes
 		}
 		/**
 		 * Tests operators with Unary plus and unary Minus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testOperatorsWithUnaryMinusAndPlus() throws SQLException{
+		public void testOperatorsWithUnaryMinusAndPlus() throws Exception{
 			PreparedStatement ps = prepareStatement("select * from t1 where +? < c12");
 			ps.setInt(1,0);
 			int[] expectedTypes=new int[]{Types.SMALLINT};
@@ -251,9 +251,9 @@ public class UnaryArithmeticParameterTes
 		}
 		/**
 		 * Tests Casting with unary plus and unary minus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testCastWithUnaryMinusAndPlus()throws SQLException{
+		public void testCastWithUnaryMinusAndPlus()throws Exception{
 			PreparedStatement ps = prepareStatement("select cast(-? as smallint), cast(+? as int) from t1");
 			ps.setInt(1,2);
 			ps.setInt(2,2);
@@ -265,9 +265,9 @@ public class UnaryArithmeticParameterTes
 		}
 		/**
 		 * Tests NullIf with unary minus and unary plus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testNullIfWithUnaryMinusAndPlus() throws SQLException{
+		public void testNullIfWithUnaryMinusAndPlus() throws Exception{
 			PreparedStatement ps = prepareStatement("select nullif(-?,c11) from t1");
 			ps.setInt(1,22);
 			int[] expectedTypes= new int[]{Types.INTEGER};
@@ -278,9 +278,9 @@ public class UnaryArithmeticParameterTes
 		}
 		/**
 		 * Tests SQRT with unary minus and unary plus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testSQRTWithUnaryMinusAndPlus() throws SQLException{
+		public void testSQRTWithUnaryMinusAndPlus() throws Exception{
 			PreparedStatement ps = prepareStatement("select sqrt(-?) from t1");
 			ps.setInt(1,-64);
 			int[] expectedTypes= new int[]{Types.DOUBLE};
@@ -291,9 +291,9 @@ public class UnaryArithmeticParameterTes
 		}
 		/**
 		 * Tests "select case when -?=c11 then -? else c12 end from t1"
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testSelectWithUnaryMinusAndPlus() throws SQLException{
+		public void testSelectWithUnaryMinusAndPlus() throws Exception{
 			PreparedStatement ps =prepareStatement("select case when -?=c11 then -? else c12 end from t1");
 			ps.setInt(1,1);
 			ps.setInt(2,22);
@@ -305,9 +305,9 @@ public class UnaryArithmeticParameterTes
 		}
 		/**
 		 * Negative tests for unary minus and unary plus
-		 * @throws SQLException
+		 * @throws Exception
 		 */
-		public void testExpectedErrors() throws SQLException{
+		public void testExpectedErrors() throws Exception{
 			assertCompileError("42X34","select * from t1 where c11 = any (select -? from t2)");
 			
 			// -?/+? at the beginning and/ at the end of where clause

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/J2EEDataSource.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/J2EEDataSource.java?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/J2EEDataSource.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/J2EEDataSource.java Tue Nov  8 13:24:43 2011
@@ -1,6 +1,6 @@
 /*
  *
- * Derby - Class org.apache.derbyTesting.junit.JDBCDataSource
+ * Derby - Class org.apache.derbyTesting.junit.J2EEDataSource
  *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JAXPFinder.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JAXPFinder.java?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JAXPFinder.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JAXPFinder.java Tue Nov  8 13:24:43 2011
@@ -1,6 +1,6 @@
 /*
  *
- * Derby - Class org.apache.derbyTesting.functionTests.util.JAXPFinder
+ * Derby - Class org.apache.derbyTesting.junit.JAXPFinder
  *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java Tue Nov  8 13:24:43 2011
@@ -20,6 +20,7 @@
 package org.apache.derbyTesting.junit;
 
 import java.io.IOException;
+import java.lang.reflect.Method;
 import java.sql.*;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -44,34 +45,25 @@ public class JDBC {
      */
     public static class GeneratedId {
         public boolean equals(Object o) {
-            // unless JSR169, use String.matches...
-            if (JDBC.vmSupportsJDBC3()) 
+            String tmpstr = (String)o;
+            boolean b = true;
+            if (!(o instanceof String))
+                b = false;
+            if (!(tmpstr.startsWith("SQL")))
+                b = false;
+            if (tmpstr.length() != 18)
+                b = false;
+            for (int i=3 ; i<18 ; i++)
             {
-                return o instanceof String &&
-                ((String) o).matches("SQL[0-9]{15}");
-            }
-            else
-            {
-                String tmpstr = (String)o;
-                boolean b = true;
-                if (!(o instanceof String))
-                    b = false;
-                if (!(tmpstr.startsWith("SQL")))
-                    b = false;
-                if (tmpstr.length() != 18)
-                    b = false;
-                for (int i=3 ; i<18 ; i++)
+                if (Character.isDigit(tmpstr.charAt(i)))
+                    continue;
+                else
                 {
-                    if (Character.isDigit(tmpstr.charAt(i)))
-                        continue;
-                    else
-                    {
-                        b = false;
-                        break;
-                    }
+                    b = false;
+                    break;
                 }
-            return b;
             }
+            return b;
         }
         public String toString() {
             return "xxxxGENERATED-IDxxxx";
@@ -781,18 +773,28 @@ public class JDBC {
      * @param expectedTypes Array of expected parameter types.
      */
     public static void assertParameterTypes (PreparedStatement ps,
-	        int[] expectedTypes) throws SQLException
+	        int[] expectedTypes) throws Exception
 	    {
-		ParameterMetaData pmd = ps.getParameterMetaData();
-	        int actualParams = pmd.getParameterCount();
+            if ( vmSupportsJSR169() )
+            {
+                Assert.fail( "The assertParameterTypes() method only works on platforms which support ParameterMetaData." );
+            }
+
+            Object pmd = ps.getClass().getMethod( "getParameterMetaData", null ).invoke(  ps, null );
+            int actualParams = ((Integer) pmd.getClass().getMethod( "getParameterCount", null ).invoke( pmd, null )).intValue();
 
 	        Assert.assertEquals("Unexpected parameter count:",
-	                expectedTypes.length, pmd.getParameterCount());
+	                expectedTypes.length, actualParams );
+
+            Method  getParameterType = pmd.getClass().getMethod( "getParameterType", new Class[] { Integer.TYPE } );
 
 	        for (int i = 0; i < actualParams; i++)
 	        {
-	            Assert.assertEquals("Types do not match for parameter " + (i+1),
-	                    expectedTypes[i], pmd.getParameterType(i+1));
+	            Assert.assertEquals
+                    ("Types do not match for parameter " + (i+1),
+                     expectedTypes[i],
+                     ((Integer) getParameterType.invoke( pmd, new Object[] { new Integer( i + 1 ) } )).intValue()
+                     );
 	        }
 	    }
     

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/RuntimeStatisticsParser.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/RuntimeStatisticsParser.java?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/RuntimeStatisticsParser.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/RuntimeStatisticsParser.java Tue Nov  8 13:24:43 2011
@@ -417,17 +417,8 @@ public class RuntimeStatisticsParser {
         if (startStartIndex >= 0 && endStartIndex >= 0)
         {
             String positionLines = statistics.substring(startStartIndex, endStartIndex);
-            if (JDBC.vmSupportsJSR169())
-            {
-                // do something else then split.
-                String [] startPositionLines = Utilities.split(positionLines, '\n');
-                return startPositionLines;
-            }
-            else
-            {
-                String [] startPositionLines = positionLines.split("\n");
-                return startPositionLines;
-            }
+            
+            return Utilities.split(positionLines, '\n');
         }
         else 
             return null;
@@ -445,17 +436,8 @@ public class RuntimeStatisticsParser {
         if (startStopIndex >= 0 && endStopIndex >= 0)
         {
             String positionLines = statistics.substring(startStopIndex, endStopIndex);
-            if (JDBC.vmSupportsJSR169())
-            {
-                // do something else then split.
-                String [] stopPositionLines = Utilities.split(positionLines, '\n');
-                return stopPositionLines;
-            }
-            else
-            {
-                String [] stopPositionLines = positionLines.split("\n");
-                return stopPositionLines;
-            }
+            
+            return Utilities.split(positionLines, '\n');
         }
         else 
             return null;

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XATestUtil.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XATestUtil.java?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XATestUtil.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XATestUtil.java Tue Nov  8 13:24:43 2011
@@ -1,6 +1,6 @@
 /*
 
-   Derby - Class org.apache.derby.impl.services.bytecode.CodeChunk
+   Derby - Class org.apache.derbyTesting.junit.XATestUtil
 
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XML.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XML.java?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XML.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/XML.java Tue Nov  8 13:24:43 2011
@@ -340,6 +340,15 @@ public class XML {
         if (!classpathHasJAXP())
             return null;
 
-        return JAXPFinder.getJAXPParserLocation();
+        try {
+            Class   jaxpFinderClass = Class.forName( "org.apache.derbyTesting.junit.JAXPFinder" );
+            Method  locatorMethod = jaxpFinderClass.getDeclaredMethod( "getJAXPParserLocation", null );
+
+            return (String) locatorMethod.invoke(  null, null );
+        }
+        catch (Exception e)
+        {
+            throw new UnsupportedOperationException( e.getClass().getName() + ": " + e.getMessage() );
+        }
     }
 }

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/build.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/build.xml?rev=1199234&r1=1199233&r2=1199234&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/build.xml (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/build.xml Tue Nov  8 13:24:43 2011
@@ -48,6 +48,9 @@
   <property file="${user.home}/properties/derbytesting.properties"/>
   <property file="${ant.home}/properties/derbytesting.properties"/>
 
+  <!-- Classes which must be compiled against JDK 1.4 or higher -->
+  <property name="junit.14.classes" value="${derby.testing.junit.dir}/JAXPFinder.java,${derby.testing.junit.dir}/ConnectionPoolDataSourceConnector.java,${derby.testing.junit.dir}/J2EEDataSource.java,${derby.testing.junit.dir}/DriverManagerConnector.java,${derby.testing.junit.dir}/XADataSourceConnector.java,${derby.testing.junit.dir}/XATestUtil.java,${derby.testing.junit.dir}/BigDecimalHandler.java"/>
+
   <!-- Release and Version info -->
   <property file="${properties.dir}/release.properties"/>
 
@@ -55,10 +58,7 @@
  
   <target name="junitcomponents" 
           description="Build Derby JUnit test components">
-    <!-- We only compile junit/JAXPFinder.java against JDK 1.4   -->
-    <!-- because it relies on a JAXP class that is part of 1.4   -->
-    <!-- but it is not part of 1.3.                              -->
-    <!-- This needs to be revisited. The second javac invocation fails against the jsr169 classpath -->
+    <!-- Here we compile the classes which WILL run on small device platforms -->
     <javac
       source="1.4"
       target="1.4"
@@ -69,15 +69,17 @@
       deprecation="${deprecation}"
       optimize="${optimize}"
       proceed="${proceed}"
-      verbose="${verbose}"
+      verbose="${verbose}" 
       srcdir="${derby.testing.src.dir}"
+      includes="${derby.testing.junit.dir}/**/*.java"
+      excludes="${junit.14.classes}"
       destdir="${out.dir}">
       <classpath>
-        <pathelement path="${java14compile.classpath}"/>
+        <pathelement path="${compile.classpath}"/>
         <pathelement path="${junit}"/>
       </classpath>
-	  <include name="${derby.testing.junit.dir}/JAXPFinder.java"/>
     </javac>
+    <!-- Here we compile the classes which will NOT run on small device platforms -->
     <javac
       source="1.4"
       target="1.4"
@@ -88,15 +90,14 @@
       deprecation="${deprecation}"
       optimize="${optimize}"
       proceed="${proceed}"
-      verbose="${verbose}" 
+      verbose="${verbose}"
       srcdir="${derby.testing.src.dir}"
+	  includes="${junit.14.classes}"
       destdir="${out.dir}">
       <classpath>
         <pathelement path="${java14compile.classpath}"/>
         <pathelement path="${junit}"/>
       </classpath>
-      <include name="${derby.testing.junit.dir}/**/*.java"/>
-      <exclude name="${derby.testing.junit.dir}/JAXPFinder.java"/>
     </javac>
   </target>