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 2006/06/01 00:40:32 UTC

svn commit: r410694 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests: suites/jdbc40.runall tests/jdbc4/UnsupportedVetter.java

Author: rhillegas
Date: Wed May 31 15:40:31 2006
New Revision: 410694

URL: http://svn.apache.org/viewvc?rev=410694&view=rev
Log:
DERBY-1253: Check in bug1253_wireIn.diff. This wires the UnsupportedVetter test into the jdbc4 suite.

Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbc40.runall
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/UnsupportedVetter.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbc40.runall
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbc40.runall?rev=410694&r1=410693&r2=410694&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbc40.runall (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/jdbc40.runall Wed May 31 15:40:31 2006
@@ -15,11 +15,12 @@
 jdbc4/ConnectionTest.junit
 jdbc4/DataSourceTest.junit
 jdbc4/ParameterMetaDataWrapperTest.junit
+jdbc4/PreparedStatementTest.junit
 jdbc4/ResultSetMetaDataTest.junit
 jdbc4/ResultSetTest.junit
 jdbc4/RowIdNotImplementedTest.junit
 jdbc4/StatementEventsTest.junit
 jdbc4/StatementTest.junit
+jdbc4/UnsupportedVetter.junit
 jdbc4/VerifySignatures.junit
 jdbc4/XA40Test.junit
-jdbc4/PreparedStatementTest.junit

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/UnsupportedVetter.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/UnsupportedVetter.java?rev=410694&r1=410693&r2=410694&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/UnsupportedVetter.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/UnsupportedVetter.java Wed May 31 15:40:31 2006
@@ -35,7 +35,12 @@
 import org.apache.derbyTesting.functionTests.util.TestDataSourceFactory;
 
 /**
- * JUnit test which checks that only expected methods throw SQLFeatureNotSupporteException.
+ * JUnit test which checks that only expected methods throw
+ * SQLFeatureNotSupporteException. As currently compiled, this class
+ * does not object to a handful of mandatory LOB-supporting methods which Derby
+ * does not implement. You can expose these methods by setting
+ * the STRICT_ENFORCEMENT constant to true.
+ *
  */
 public class UnsupportedVetter	extends BaseJDBCTestCase
 {
@@ -46,6 +51,8 @@
 	/////////////////////////////////////////////////////////////
 
 	public	static	final	String	SQL_PACKAGE_NAME = "java.sql";
+
+	private	static	final	boolean	STRICT_ENFORCEMENT = false;
 	
 	/////////////////////////////////////////////////////////////
 	//
@@ -108,6 +115,20 @@
 			    java.sql.CallableStatement.class,
 				new MD[]
 				{
+					//
+					// THE FOLLOWING METHODS ARE MANDATORY ACCORDING TO THE
+					// JDBC SPEC. HOWEVER, DERBY DOES NOT IMPLEMENT THEM IN ONE
+					// OR THE OTHER OF OUR CLIENTS.
+					//
+					new FD( "getBlob", new Class[] { int.class } ),
+					new FD( "getClob", new Class[] { int.class } ),
+					
+
+					//
+					// According to the JDBC4 spec and javadoc, the following
+					// methods are optional and do not have to be implemented.
+					//
+					
 					new MD( "getArray", new Class[] { int.class } ),
 					new MD( "getArray", new Class[] { String.class } ),
 					new MD( "getBigDecimal", new Class[] { String.class } ),
@@ -200,6 +221,22 @@
 				java.sql.ResultSet.class,
 				new MD[]
 				{
+					//
+					// THE FOLLOWING METHODS ARE MANDATORY ACCORDING TO THE
+					// JDBC SPEC. HOWEVER, DERBY DOES NOT IMPLEMENT THEM IN ONE
+					// OR THE OTHER OF OUR CLIENTS.
+					//
+					new FD( "updateBlob", new Class[] { int.class, Blob.class } ),
+					new FD( "updateBlob", new Class[] { String.class, Blob.class } ),
+					new FD( "updateClob", new Class[] { int.class, Clob.class } ),
+					new FD( "updateClob", new Class[] { String.class, Clob.class } ),
+					
+
+					//
+					// According to the JDBC4 spec and javadoc, the following
+					// methods are optional and do not have to be implemented.
+					//
+					
 				    new MD( "getNCharacterStream", new Class[] { int.class } ),
 						new MD( "getNCharacterStream", new Class[] { String.class } ),
 						new MD( "getNString", new Class[] { int.class } ),
@@ -239,29 +276,40 @@
 			// If you support a datatype, then you have to implement
 			// all of its methods.
 			//
-			//		    new Exclusions
-			//		    (
-			//				java.sql.Blob.class,
-			//				new MD[]
-			//				{
-			//				    new MD( "getBinaryStream", new Class[] { long.class, long.class } ),
-			//						new MD( "setBinaryStream", new Class[] { long.class } ),
-			//						new MD( "setBytes", new Class[] { long.class, byte[].class } ),
-			//						new MD( "setBytes", new Class[] { long.class, byte[].class, int.class, int.class } ),
-			//						new MD( "truncate", new Class[] { long.class } )
-			//						} ),
-			//		    new Exclusions
-			//		    (
-			//				java.sql.Clob.class,
-			//				new MD[]
-			//				{
-			//				    new MD( "getCharacterStream", new Class[] { long.class, long.class } ),
-			//						new MD( "setAsciiStream", new Class[] { long.class } ),
-			//						new MD( "setCharacterStream", new Class[] { long.class } ),
-			//						new MD( "setString", new Class[] { long.class, String.class } ),
-			//						new MD( "setString", new Class[] { long.class, String.class, int.class, int.class } ),
-			//						new MD( "truncate", new Class[] { long.class } )
-			//						} )
+
+			new Exclusions
+			(
+			 //
+			 // THE FOLLOWING METHODS ARE MANDATORY ACCORDING TO THE
+			 // JDBC SPEC. HOWEVER, DERBY DOES NOT IMPLEMENT THEM IN ONE
+			 // OR THE OTHER OF OUR CLIENTS.
+			 //
+			    java.sql.Blob.class,
+				new MD[]
+				{
+					new FD( "getBinaryStream", new Class[] { long.class, long.class } ),
+					new FD( "setBinaryStream", new Class[] { long.class } ),
+					new FD( "setBytes", new Class[] { long.class, byte[].class } ),
+					new FD( "setBytes", new Class[] { long.class, byte[].class, int.class, int.class } ),
+					new FD( "truncate", new Class[] { long.class } )
+				} ),
+			new Exclusions
+			(
+			 //
+			 // THE FOLLOWING METHODS ARE MANDATORY ACCORDING TO THE
+			 // JDBC SPEC. HOWEVER, DERBY DOES NOT IMPLEMENT THEM IN ONE
+			 // OR THE OTHER OF OUR CLIENTS.
+			 //
+			    java.sql.Clob.class,
+				new MD[]
+				{
+					new FD( "getCharacterStream", new Class[] { long.class, long.class } ),
+					new FD( "setAsciiStream", new Class[] { long.class } ),
+					new FD( "setCharacterStream", new Class[] { long.class } ),
+					new FD( "setString", new Class[] { long.class, String.class } ),
+					new FD( "setString", new Class[] { long.class, String.class, int.class, int.class } ),
+					new FD( "truncate", new Class[] { long.class } )
+				} )
 		};
 
 	//
@@ -491,6 +539,13 @@
 			{
 				MD		md = mds[ j ];
 
+				//
+				// If we are strictly enforcing the JDBC standard,
+				// then expose the mandatory methods which we know Derby
+				// doesn't implement.
+				//
+				if ( STRICT_ENFORCEMENT && !md.isOptional()  ) { continue; }
+
 				Method	method = iface.getMethod( md.getMethodName(), md.getArgTypes() );
 
 				if ( method == null ) { fail( "Unknown method: " + md.getMethodName() ); }
@@ -785,11 +840,12 @@
 
 	/**
 	 * <p>
-	 * Method descriptor. We abbreviate the name of this class to make
+	 * Method descriptor for optional methods which Derby does not have
+	 * to implement. We abbreviate the name of this class to make
 	 * arrays of these declarations compact and readable.
 	 * </p>
 	 */
-	public	static	final	class	MD
+	public	static	class	MD
 	{
 		private	String	_methodName;
 		private	Class[]	_argTypes;
@@ -806,6 +862,28 @@
 
 		/** Get the types of the method's arguments */
 		public	Class[]	getArgTypes() { return _argTypes; }
+
+		/** Return whether this method is optional */
+		public	boolean	isOptional() { return true; }
+	}
+
+	/**
+	 * <p>
+	 * Method descriptor for mandatory methods which we know Derby does not
+	 * implement. We abbreviate the name of this class to make
+	 * arrays of these declarations compact and readable.
+	 * </p>
+	 */
+	public	static	final	class	FD	extends	MD
+	{
+		private	String	_methodName;
+		private	Class[]	_argTypes;
+
+		/** Construct from methodName and argument types. */
+		public	FD( String methodName, Class[] argTypes ) { super( methodName, argTypes ); }
+
+		/** Return whether this method is optional */
+		public	boolean	isOptional() { return false; }
 	}
 
 	/**