New Ticket     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #21037: commons-dbcp-JDK-1.6.diff

File commons-dbcp-JDK-1.6.diff, 61.9 KB (added by nox@…, 2 years ago)

A patch for JDK-1.6 support

  • files/patch-JDK-1.6.diff

     
     1Taken from https://issues.apache.org/jira/browse/DBCP-191 
     2 
     3Index: src/test/org/apache/commons/dbcp/TesterPreparedStatement.java 
     4=================================================================== 
     5--- src/test/org/apache/commons/dbcp/TesterPreparedStatement.java       (revision 558600) 
     6+++ src/test/org/apache/commons/dbcp/TesterPreparedStatement.java       (working copy) 
     7@@ -28,6 +28,13 @@ 
     8 import java.sql.ResultSetMetaData; 
     9 import java.sql.SQLException; 
     10 import java.util.Calendar; 
     11+/* JDBC_4_ANT_KEY_BEGIN */ 
     12+import java.io.InputStream; 
     13+import java.io.Reader; 
     14+import java.sql.NClob; 
     15+import java.sql.RowId; 
     16+import java.sql.SQLXML; 
     17+/* JDBC_4_ANT_KEY_END */ 
     18  
     19 /** 
     20  * A dummy {@link PreparedStatement}, for testing purposes. 
     21@@ -288,7 +295,79 @@ 
     22     public java.sql.ParameterMetaData getParameterMetaData() throws SQLException { 
     23         throw new SQLException("Not implemented."); 
     24     } 
     25- 
     26 /* JDBC_3_ANT_KEY_END */ 
     27+/* JDBC_4_ANT_KEY_BEGIN */ 
     28  
     29+    public void setRowId(int parameterIndex, RowId value) throws SQLException { 
     30+        throw new SQLException("Not implemented."); 
     31+    } 
     32+ 
     33+    public void setNString(int parameterIndex, String value) throws SQLException { 
     34+        throw new SQLException("Not implemented."); 
     35+    } 
     36+ 
     37+    public void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException { 
     38+        throw new SQLException("Not implemented."); 
     39+    } 
     40+ 
     41+    public void setNClob(int parameterIndex, NClob value) throws SQLException { 
     42+        throw new SQLException("Not implemented."); 
     43+    } 
     44+ 
     45+    public void setClob(int parameterIndex, Reader reader, long length) throws SQLException { 
     46+        throw new SQLException("Not implemented."); 
     47+    } 
     48+ 
     49+    public void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException { 
     50+        throw new SQLException("Not implemented."); 
     51+    } 
     52+ 
     53+    public void setNClob(int parameterIndex, Reader reader, long length) throws SQLException { 
     54+        throw new SQLException("Not implemented."); 
     55+    } 
     56+ 
     57+    public void setSQLXML(int parameterIndex, SQLXML value) throws SQLException { 
     58+        throw new SQLException("Not implemented."); 
     59+    } 
     60+ 
     61+    public void setAsciiStream(int parameterIndex, InputStream inputStream, long length) throws SQLException { 
     62+        throw new SQLException("Not implemented."); 
     63+    } 
     64+ 
     65+    public void setBinaryStream(int parameterIndex, InputStream inputStream, long length) throws SQLException { 
     66+        throw new SQLException("Not implemented."); 
     67+    } 
     68+ 
     69+    public void setCharacterStream(int parameterIndex, Reader reader, long length) throws SQLException { 
     70+        throw new SQLException("Not implemented."); 
     71+    } 
     72+ 
     73+    public void setAsciiStream(int parameterIndex, InputStream inputStream) throws SQLException { 
     74+        throw new SQLException("Not implemented."); 
     75+    } 
     76+ 
     77+    public void setBinaryStream(int parameterIndex, InputStream inputStream) throws SQLException { 
     78+        throw new SQLException("Not implemented."); 
     79+    } 
     80+ 
     81+    public void setCharacterStream(int parameterIndex, Reader reader) throws SQLException { 
     82+        throw new SQLException("Not implemented."); 
     83+    } 
     84+ 
     85+    public void setNCharacterStream(int parameterIndex, Reader reader) throws SQLException { 
     86+        throw new SQLException("Not implemented."); 
     87+    } 
     88+ 
     89+    public void setClob(int parameterIndex, Reader reader) throws SQLException { 
     90+        throw new SQLException("Not implemented."); 
     91+    } 
     92+ 
     93+    public void setBlob(int parameterIndex, InputStream inputStream) throws SQLException { 
     94+        throw new SQLException("Not implemented."); 
     95+    } 
     96+ 
     97+    public void setNClob(int parameterIndex, Reader reader) throws SQLException { 
     98+        throw new SQLException("Not implemented."); 
     99+    } 
     100+/* JDBC_4_ANT_KEY_END */ 
     101 } 
     102Index: src/test/org/apache/commons/dbcp/TesterResultSet.java 
     103=================================================================== 
     104--- src/test/org/apache/commons/dbcp/TesterResultSet.java       (revision 558600) 
     105+++ src/test/org/apache/commons/dbcp/TesterResultSet.java       (working copy) 
     106@@ -28,6 +28,13 @@ 
     107 import java.sql.SQLWarning; 
     108 import java.sql.Statement; 
     109 import java.util.Calendar; 
     110+/* JDBC_4_ANT_KEY_BEGIN */ 
     111+import java.io.InputStream; 
     112+import java.io.Reader; 
     113+import java.sql.NClob; 
     114+import java.sql.RowId; 
     115+import java.sql.SQLXML; 
     116+/* JDBC_4_ANT_KEY_END */ 
     117  
     118 /** 
     119  * A dummy {@link ResultSet}, for testing purposes. 
     120@@ -759,7 +766,207 @@ 
     121         throws SQLException { 
     122         throw new SQLException("Not implemented."); 
     123     } 
     124- 
     125 /* JDBC_3_ANT_KEY_END */ 
     126+/* JDBC_4_ANT_KEY_BEGIN */ 
     127  
     128+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     129+        throw new SQLException("Not implemented."); 
     130+    } 
     131+ 
     132+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     133+        throw new SQLException("Not implemented."); 
     134+    } 
     135+ 
     136+    public RowId getRowId(int columnIndex) throws SQLException { 
     137+        throw new SQLException("Not implemented."); 
     138+    } 
     139+ 
     140+    public RowId getRowId(String columnLabel) throws SQLException { 
     141+        throw new SQLException("Not implemented."); 
     142+    } 
     143+ 
     144+    public void updateRowId(int columnIndex, RowId value) throws SQLException { 
     145+        throw new SQLException("Not implemented."); 
     146+    } 
     147+ 
     148+    public void updateRowId(String columnLabel, RowId value) throws SQLException { 
     149+        throw new SQLException("Not implemented."); 
     150+    } 
     151+ 
     152+    public int getHoldability() throws SQLException { 
     153+        throw new SQLException("Not implemented."); 
     154+    } 
     155+ 
     156+    public boolean isClosed() throws SQLException { 
     157+        throw new SQLException("Not implemented."); 
     158+    } 
     159+ 
     160+    public void updateNString(int columnIndex, String value) throws SQLException { 
     161+        throw new SQLException("Not implemented."); 
     162+    } 
     163+ 
     164+    public void updateNString(String columnLabel, String value) throws SQLException { 
     165+        throw new SQLException("Not implemented."); 
     166+    } 
     167+ 
     168+    public void updateNClob(int columnIndex, NClob value) throws SQLException { 
     169+        throw new SQLException("Not implemented."); 
     170+    } 
     171+ 
     172+    public void updateNClob(String columnLabel, NClob value) throws SQLException { 
     173+        throw new SQLException("Not implemented."); 
     174+    } 
     175+ 
     176+    public NClob getNClob(int columnIndex) throws SQLException { 
     177+        throw new SQLException("Not implemented."); 
     178+    } 
     179+ 
     180+    public NClob getNClob(String columnLabel) throws SQLException { 
     181+        throw new SQLException("Not implemented."); 
     182+    } 
     183+ 
     184+    public SQLXML getSQLXML(int columnIndex) throws SQLException { 
     185+        throw new SQLException("Not implemented."); 
     186+    } 
     187+ 
     188+    public SQLXML getSQLXML(String columnLabel) throws SQLException { 
     189+        throw new SQLException("Not implemented."); 
     190+    } 
     191+ 
     192+    public void updateSQLXML(int columnIndex, SQLXML value) throws SQLException { 
     193+        throw new SQLException("Not implemented."); 
     194+    } 
     195+ 
     196+    public void updateSQLXML(String columnLabel, SQLXML value) throws SQLException { 
     197+        throw new SQLException("Not implemented."); 
     198+    } 
     199+ 
     200+    public String getNString(int columnIndex) throws SQLException { 
     201+        throw new SQLException("Not implemented."); 
     202+    } 
     203+ 
     204+    public String getNString(String columnLabel) throws SQLException { 
     205+        throw new SQLException("Not implemented."); 
     206+    } 
     207+ 
     208+    public Reader getNCharacterStream(int columnIndex) throws SQLException { 
     209+        throw new SQLException("Not implemented."); 
     210+    } 
     211+ 
     212+    public Reader getNCharacterStream(String columnLabel) throws SQLException { 
     213+        throw new SQLException("Not implemented."); 
     214+    } 
     215+ 
     216+    public void updateNCharacterStream(int columnIndex, Reader reader, long length) throws SQLException { 
     217+        throw new SQLException("Not implemented."); 
     218+    } 
     219+ 
     220+    public void updateNCharacterStream(String columnLabel, Reader reader, long length) throws SQLException { 
     221+        throw new SQLException("Not implemented."); 
     222+    } 
     223+ 
     224+    public void updateAsciiStream(int columnIndex, InputStream inputStream, long length) throws SQLException { 
     225+        throw new SQLException("Not implemented."); 
     226+    } 
     227+ 
     228+    public void updateBinaryStream(int columnIndex, InputStream inputStream, long length) throws SQLException { 
     229+        throw new SQLException("Not implemented."); 
     230+    } 
     231+ 
     232+    public void updateCharacterStream(int columnIndex, Reader reader, long length) throws SQLException { 
     233+        throw new SQLException("Not implemented."); 
     234+    } 
     235+ 
     236+    public void updateAsciiStream(String columnLabel, InputStream inputStream, long length) throws SQLException { 
     237+        throw new SQLException("Not implemented."); 
     238+    } 
     239+ 
     240+    public void updateBinaryStream(String columnLabel, InputStream inputStream, long length) throws SQLException { 
     241+        throw new SQLException("Not implemented."); 
     242+    } 
     243+ 
     244+    public void updateCharacterStream(String columnLabel, Reader reader, long length) throws SQLException { 
     245+        throw new SQLException("Not implemented."); 
     246+    } 
     247+ 
     248+    public void updateBlob(int columnIndex, InputStream inputStream, long length) throws SQLException { 
     249+        throw new SQLException("Not implemented."); 
     250+    } 
     251+ 
     252+    public void updateBlob(String columnLabel, InputStream inputStream, long length) throws SQLException { 
     253+        throw new SQLException("Not implemented."); 
     254+    } 
     255+ 
     256+    public void updateClob(int columnIndex, Reader reader, long length) throws SQLException { 
     257+        throw new SQLException("Not implemented."); 
     258+    } 
     259+ 
     260+    public void updateClob(String columnLabel, Reader reader, long length) throws SQLException { 
     261+        throw new SQLException("Not implemented."); 
     262+    } 
     263+ 
     264+    public void updateNClob(int columnIndex, Reader reader, long length) throws SQLException { 
     265+        throw new SQLException("Not implemented."); 
     266+    } 
     267+ 
     268+    public void updateNClob(String columnLabel, Reader reader, long length) throws SQLException { 
     269+        throw new SQLException("Not implemented."); 
     270+    } 
     271+ 
     272+    public void updateNCharacterStream(int columnIndex, Reader reader) throws SQLException { 
     273+        throw new SQLException("Not implemented."); 
     274+    } 
     275+ 
     276+    public void updateNCharacterStream(String columnLabel, Reader reader) throws SQLException { 
     277+        throw new SQLException("Not implemented."); 
     278+    } 
     279+ 
     280+    public void updateAsciiStream(int columnIndex, InputStream inputStream) throws SQLException { 
     281+        throw new SQLException("Not implemented."); 
     282+    } 
     283+ 
     284+    public void updateBinaryStream(int columnIndex, InputStream inputStream) throws SQLException { 
     285+        throw new SQLException("Not implemented."); 
     286+    } 
     287+ 
     288+    public void updateCharacterStream(int columnIndex, Reader reader) throws SQLException { 
     289+        throw new SQLException("Not implemented."); 
     290+    } 
     291+ 
     292+    public void updateAsciiStream(String columnLabel, InputStream inputStream) throws SQLException { 
     293+        throw new SQLException("Not implemented."); 
     294+    } 
     295+ 
     296+    public void updateBinaryStream(String columnLabel, InputStream inputStream) throws SQLException { 
     297+        throw new SQLException("Not implemented."); 
     298+    } 
     299+ 
     300+    public void updateCharacterStream(String columnLabel, Reader reader) throws SQLException { 
     301+        throw new SQLException("Not implemented."); 
     302+    } 
     303+ 
     304+    public void updateBlob(int columnIndex, InputStream inputStream) throws SQLException { 
     305+        throw new SQLException("Not implemented."); 
     306+    } 
     307+ 
     308+    public void updateBlob(String columnLabel, InputStream inputStream) throws SQLException { 
     309+        throw new SQLException("Not implemented."); 
     310+    } 
     311+ 
     312+    public void updateClob(int columnIndex, Reader reader) throws SQLException { 
     313+        throw new SQLException("Not implemented."); 
     314+    } 
     315+ 
     316+    public void updateClob(String columnLabel, Reader reader) throws SQLException { 
     317+        throw new SQLException("Not implemented."); 
     318+    } 
     319+ 
     320+    public void updateNClob(int columnIndex, Reader reader) throws SQLException { 
     321+        throw new SQLException("Not implemented."); 
     322+    } 
     323+ 
     324+    public void updateNClob(String columnLabel, Reader reader) throws SQLException { 
     325+        throw new SQLException("Not implemented."); 
     326+    } 
     327+/* JDBC_4_ANT_KEY_END */ 
     328 } 
     329Index: src/test/org/apache/commons/dbcp/TesterConnection.java 
     330=================================================================== 
     331--- src/test/org/apache/commons/dbcp/TesterConnection.java      (revision 558600) 
     332+++ src/test/org/apache/commons/dbcp/TesterConnection.java      (working copy) 
     333@@ -25,6 +25,16 @@ 
     334 import java.sql.SQLWarning; 
     335 import java.sql.Statement; 
     336 import java.util.Map; 
     337+/* JDBC_4_ANT_KEY_BEGIN */ 
     338+import java.sql.Array; 
     339+import java.sql.Blob; 
     340+import java.sql.Clob; 
     341+import java.sql.NClob; 
     342+import java.sql.SQLClientInfoException; 
     343+import java.sql.SQLXML; 
     344+import java.sql.Struct; 
     345+import java.util.Properties; 
     346+/* JDBC_4_ANT_KEY_END */ 
     347  
     348 /** 
     349  * A dummy {@link Connection}, for testing purposes. 
     350@@ -274,6 +284,59 @@ 
     351         throws SQLException { 
     352         return prepareStatement(sql); 
     353     } 
     354+/* JDBC_3_ANT_KEY_END */ 
     355+/* JDBC_4_ANT_KEY_BEGIN */ 
     356  
     357-/* JDBC_3_ANT_KEY_END */ 
     358+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     359+        throw new SQLException("Not implemented."); 
     360+    } 
     361+ 
     362+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     363+        throw new SQLException("Not implemented."); 
     364+    } 
     365+ 
     366+    public Array createArrayOf(String typeName, Object[] elements) throws SQLException { 
     367+        throw new SQLException("Not implemented."); 
     368+    } 
     369+ 
     370+    public Blob createBlob() throws SQLException { 
     371+        throw new SQLException("Not implemented."); 
     372+    } 
     373+ 
     374+    public Clob createClob() throws SQLException { 
     375+        throw new SQLException("Not implemented."); 
     376+    } 
     377+ 
     378+    public NClob createNClob() throws SQLException { 
     379+        throw new SQLException("Not implemented."); 
     380+    } 
     381+ 
     382+    public SQLXML createSQLXML() throws SQLException { 
     383+        throw new SQLException("Not implemented."); 
     384+    } 
     385+ 
     386+    public Struct createStruct(String typeName, Object[] attributes) throws SQLException { 
     387+        throw new SQLException("Not implemented."); 
     388+    } 
     389+ 
     390+    public boolean isValid(int timeout) throws SQLException { 
     391+        throw new SQLException("Not implemented."); 
     392+    } 
     393+ 
     394+    public void setClientInfo(String name, String value) throws SQLClientInfoException { 
     395+        throw new SQLClientInfoException(); 
     396+    } 
     397+ 
     398+    public void setClientInfo(Properties properties) throws SQLClientInfoException { 
     399+        throw new SQLClientInfoException(); 
     400+    } 
     401+ 
     402+    public Properties getClientInfo() throws SQLException { 
     403+        throw new SQLException("Not implemented."); 
     404+    } 
     405+ 
     406+    public String getClientInfo(String name) throws SQLException { 
     407+        throw new SQLException("Not implemented."); 
     408+    } 
     409+/* JDBC_4_ANT_KEY_END */ 
     410 } 
     411Index: src/test/org/apache/commons/dbcp/TesterStatement.java 
     412=================================================================== 
     413--- src/test/org/apache/commons/dbcp/TesterStatement.java       (revision 558600) 
     414+++ src/test/org/apache/commons/dbcp/TesterStatement.java       (working copy) 
     415@@ -268,5 +268,26 @@ 
     416         throw new SQLException("Not implemented."); 
     417     } 
     418 /* JDBC_3_ANT_KEY_END */ 
     419+/* JDBC_4_ANT_KEY_BEGIN */ 
     420  
     421+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     422+        throw new SQLException("Not implemented."); 
     423+    } 
     424+ 
     425+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     426+        throw new SQLException("Not implemented."); 
     427+    } 
     428+ 
     429+    public boolean isClosed() throws SQLException { 
     430+        throw new SQLException("Not implemented."); 
     431+    } 
     432+ 
     433+    public void setPoolable(boolean poolable) throws SQLException { 
     434+        throw new SQLException("Not implemented."); 
     435+    } 
     436+ 
     437+    public boolean isPoolable() throws SQLException { 
     438+        throw new SQLException("Not implemented."); 
     439+    } 
     440+/* JDBC_4_ANT_KEY_END */ 
     441 } 
     442Index: src/java/org/apache/commons/dbcp/DelegatingCallableStatement.java 
     443=================================================================== 
     444--- src/java/org/apache/commons/dbcp/DelegatingCallableStatement.java   (revision 558600) 
     445+++ src/java/org/apache/commons/dbcp/DelegatingCallableStatement.java   (working copy) 
     446@@ -32,6 +32,11 @@ 
     447 import java.io.InputStream; 
     448 import java.io.Reader; 
     449 import java.sql.SQLException; 
     450+/* JDBC_4_ANT_KEY_BEGIN */ 
     451+import java.sql.NClob; 
     452+import java.sql.RowId; 
     453+import java.sql.SQLXML; 
     454+/* JDBC_4_ANT_KEY_END */ 
     455  
     456 /** 
     457  * A base delegating implementation of {@link CallableStatement}. 
     458@@ -332,6 +337,337 @@ 
     459  
     460     public URL getURL(String parameterName) throws SQLException 
     461     { checkOpen(); try { return _stmt.getURL(parameterName); } catch (SQLException e) { handleException(e); return null; } } 
     462+/* JDBC_3_ANT_KEY_END */ 
     463+/* JDBC_4_ANT_KEY_BEGIN */ 
     464  
     465-/* JDBC_3_ANT_KEY_END */ 
     466+    public RowId getRowId(int parameterIndex) throws SQLException { 
     467+        checkOpen(); 
     468+        try { 
     469+            return _stmt.getRowId(parameterIndex); 
     470+        } 
     471+        catch (SQLException e) { 
     472+            handleException(e); 
     473+            return null; 
     474+        } 
     475+    } 
     476+ 
     477+    public RowId getRowId(String parameterName) throws SQLException { 
     478+        checkOpen(); 
     479+        try { 
     480+            return _stmt.getRowId(parameterName); 
     481+        } 
     482+        catch (SQLException e) { 
     483+            handleException(e); 
     484+            return null; 
     485+        } 
     486+    } 
     487+ 
     488+    public void setRowId(String parameterName, RowId value) throws SQLException { 
     489+        checkOpen(); 
     490+        try { 
     491+            _stmt.setRowId(parameterName, value); 
     492+        } 
     493+        catch (SQLException e) { 
     494+            handleException(e); 
     495+        } 
     496+    } 
     497+ 
     498+    public void setNString(String parameterName, String value) throws SQLException { 
     499+        checkOpen(); 
     500+        try { 
     501+            _stmt.setNString(parameterName, value); 
     502+        } 
     503+        catch (SQLException e) { 
     504+            handleException(e); 
     505+        } 
     506+    } 
     507+ 
     508+    public void setNCharacterStream(String parameterName, Reader reader, long length) throws SQLException { 
     509+        checkOpen(); 
     510+        try { 
     511+            _stmt.setNCharacterStream(parameterName, reader, length); 
     512+        } 
     513+        catch (SQLException e) { 
     514+            handleException(e); 
     515+        } 
     516+    } 
     517+ 
     518+    public void setNClob(String parameterName, NClob value) throws SQLException { 
     519+        checkOpen(); 
     520+        try { 
     521+            _stmt.setNClob(parameterName, value); 
     522+        } 
     523+        catch (SQLException e) { 
     524+            handleException(e); 
     525+        } 
     526+    } 
     527+ 
     528+    public void setClob(String parameterName, Reader reader, long length) throws SQLException { 
     529+        checkOpen(); 
     530+        try { 
     531+            _stmt.setClob(parameterName, reader, length); 
     532+        } 
     533+        catch (SQLException e) { 
     534+            handleException(e); 
     535+        } 
     536+    } 
     537+ 
     538+    public void setBlob(String parameterName, InputStream inputStream, long length) throws SQLException { 
     539+        checkOpen(); 
     540+        try { 
     541+            _stmt.setBlob(parameterName, inputStream, length); 
     542+        } 
     543+        catch (SQLException e) { 
     544+            handleException(e); 
     545+        } 
     546+    } 
     547+ 
     548+    public void setNClob(String parameterName, Reader reader, long length) throws SQLException { 
     549+        checkOpen(); 
     550+        try { 
     551+            _stmt.setNClob(parameterName, reader, length); 
     552+        } 
     553+        catch (SQLException e) { 
     554+            handleException(e); 
     555+        } 
     556+    } 
     557+ 
     558+    public NClob getNClob(int parameterIndex) throws SQLException { 
     559+        checkOpen(); 
     560+        try { 
     561+            return _stmt.getNClob(parameterIndex); 
     562+        } 
     563+        catch (SQLException e) { 
     564+            handleException(e); 
     565+            return null; 
     566+        } 
     567+    } 
     568+ 
     569+    public NClob getNClob(String parameterName) throws SQLException { 
     570+        checkOpen(); 
     571+        try { 
     572+            return _stmt.getNClob(parameterName); 
     573+        } 
     574+        catch (SQLException e) { 
     575+            handleException(e); 
     576+            return null; 
     577+        } 
     578+    } 
     579+ 
     580+    public void setSQLXML(String parameterName, SQLXML value) throws SQLException { 
     581+        checkOpen(); 
     582+        try { 
     583+            _stmt.setSQLXML(parameterName, value); 
     584+        } 
     585+        catch (SQLException e) { 
     586+            handleException(e); 
     587+        } 
     588+    } 
     589+ 
     590+    public SQLXML getSQLXML(int parameterIndex) throws SQLException { 
     591+        checkOpen(); 
     592+        try { 
     593+            return _stmt.getSQLXML(parameterIndex); 
     594+        } 
     595+        catch (SQLException e) { 
     596+            handleException(e); 
     597+            return null; 
     598+        } 
     599+    } 
     600+ 
     601+    public SQLXML getSQLXML(String parameterName) throws SQLException { 
     602+        checkOpen(); 
     603+        try { 
     604+            return _stmt.getSQLXML(parameterName); 
     605+        } 
     606+        catch (SQLException e) { 
     607+            handleException(e); 
     608+            return null; 
     609+        } 
     610+    } 
     611+ 
     612+    public String getNString(int parameterIndex) throws SQLException { 
     613+        checkOpen(); 
     614+        try { 
     615+            return _stmt.getNString(parameterIndex); 
     616+        } 
     617+        catch (SQLException e) { 
     618+            handleException(e); 
     619+            return null; 
     620+        } 
     621+    } 
     622+ 
     623+    public String getNString(String parameterName) throws SQLException { 
     624+        checkOpen(); 
     625+        try { 
     626+            return _stmt.getNString(parameterName); 
     627+        } 
     628+        catch (SQLException e) { 
     629+            handleException(e); 
     630+            return null; 
     631+        } 
     632+    } 
     633+ 
     634+    public Reader getNCharacterStream(int parameterIndex) throws SQLException { 
     635+        checkOpen(); 
     636+        try { 
     637+            return _stmt.getNCharacterStream(parameterIndex); 
     638+        } 
     639+        catch (SQLException e) { 
     640+            handleException(e); 
     641+            return null; 
     642+        } 
     643+    } 
     644+ 
     645+    public Reader getNCharacterStream(String parameterName) throws SQLException { 
     646+        checkOpen(); 
     647+        try { 
     648+            return _stmt.getNCharacterStream(parameterName); 
     649+        } 
     650+        catch (SQLException e) { 
     651+            handleException(e); 
     652+            return null; 
     653+        } 
     654+    } 
     655+ 
     656+    public Reader getCharacterStream(int parameterIndex) throws SQLException { 
     657+        checkOpen(); 
     658+        try { 
     659+            return _stmt.getCharacterStream(parameterIndex); 
     660+        } 
     661+        catch (SQLException e) { 
     662+            handleException(e); 
     663+            return null; 
     664+        } 
     665+    } 
     666+ 
     667+    public Reader getCharacterStream(String parameterName) throws SQLException { 
     668+        checkOpen(); 
     669+        try { 
     670+            return _stmt.getCharacterStream(parameterName); 
     671+        } 
     672+        catch (SQLException e) { 
     673+            handleException(e); 
     674+            return null; 
     675+        } 
     676+    } 
     677+ 
     678+    public void setBlob(String parameterName, Blob blob) throws SQLException { 
     679+        checkOpen(); 
     680+        try { 
     681+            _stmt.setBlob(parameterName, blob); 
     682+        } 
     683+        catch (SQLException e) { 
     684+            handleException(e); 
     685+        } 
     686+    } 
     687+ 
     688+    public void setClob(String parameterName, Clob clob) throws SQLException { 
     689+        checkOpen(); 
     690+        try { 
     691+            _stmt.setClob(parameterName, clob); 
     692+        } 
     693+        catch (SQLException e) { 
     694+            handleException(e); 
     695+        } 
     696+    } 
     697+ 
     698+    public void setAsciiStream(String parameterName, InputStream inputStream, long length) throws SQLException { 
     699+        checkOpen(); 
     700+        try { 
     701+            _stmt.setAsciiStream(parameterName, inputStream, length); 
     702+        } 
     703+        catch (SQLException e) { 
     704+            handleException(e); 
     705+        } 
     706+    } 
     707+ 
     708+    public void setBinaryStream(String parameterName, InputStream inputStream, long length) throws SQLException { 
     709+        checkOpen(); 
     710+        try { 
     711+            _stmt.setBinaryStream(parameterName, inputStream, length); 
     712+        } 
     713+        catch (SQLException e) { 
     714+            handleException(e); 
     715+        } 
     716+    } 
     717+ 
     718+    public void setCharacterStream(String parameterName, Reader reader, long length) throws SQLException { 
     719+        checkOpen(); 
     720+        try { 
     721+            _stmt.setCharacterStream(parameterName, reader, length); 
     722+        } 
     723+        catch (SQLException e) { 
     724+            handleException(e); 
     725+        } 
     726+    } 
     727+ 
     728+    public void setAsciiStream(String parameterName, InputStream inputStream) throws SQLException { 
     729+        checkOpen(); 
     730+        try { 
     731+            _stmt.setAsciiStream(parameterName, inputStream); 
     732+        } 
     733+        catch (SQLException e) { 
     734+            handleException(e); 
     735+        } 
     736+    } 
     737+ 
     738+    public void setBinaryStream(String parameterName, InputStream inputStream) throws SQLException { 
     739+        checkOpen(); 
     740+        try { 
     741+            _stmt.setBinaryStream(parameterName, inputStream); 
     742+        } 
     743+        catch (SQLException e) { 
     744+            handleException(e); 
     745+        } 
     746+    } 
     747+ 
     748+    public void setCharacterStream(String parameterName, Reader reader) throws SQLException { 
     749+        checkOpen(); 
     750+        try { 
     751+            _stmt.setCharacterStream(parameterName, reader); 
     752+        } 
     753+        catch (SQLException e) { 
     754+            handleException(e); 
     755+        } 
     756+    } 
     757+ 
     758+    public void setNCharacterStream(String parameterName, Reader reader) throws SQLException { 
     759+        checkOpen(); 
     760+        try { 
     761+            _stmt.setNCharacterStream(parameterName, reader); 
     762+        } 
     763+        catch (SQLException e) { 
     764+            handleException(e); 
     765+        } 
     766+    } 
     767+ 
     768+    public void setClob(String parameterName, Reader reader) throws SQLException { 
     769+        checkOpen(); 
     770+        try { 
     771+            _stmt.setClob(parameterName, reader); 
     772+        } 
     773+        catch (SQLException e) { 
     774+            handleException(e); 
     775+        }    } 
     776+ 
     777+    public void setBlob(String parameterName, InputStream inputStream) throws SQLException { 
     778+        checkOpen(); 
     779+        try { 
     780+            _stmt.setBlob(parameterName, inputStream); 
     781+        } 
     782+        catch (SQLException e) { 
     783+            handleException(e); 
     784+        }    } 
     785+ 
     786+    public void setNClob(String parameterName, Reader reader) throws SQLException { 
     787+        checkOpen(); 
     788+        try { 
     789+            _stmt.setNClob(parameterName, reader); 
     790+        } 
     791+        catch (SQLException e) { 
     792+            handleException(e); 
     793+        } 
     794+    } 
     795+/* JDBC_4_ANT_KEY_END */ 
     796 } 
     797Index: src/java/org/apache/commons/dbcp/cpdsadapter/ConnectionImpl.java 
     798=================================================================== 
     799--- src/java/org/apache/commons/dbcp/cpdsadapter/ConnectionImpl.java    (revision 558600) 
     800+++ src/java/org/apache/commons/dbcp/cpdsadapter/ConnectionImpl.java    (working copy) 
     801@@ -25,6 +25,19 @@ 
     802 import java.sql.Statement; 
     803 import java.sql.SQLWarning; 
     804 import java.sql.SQLException; 
     805+/* JDBC_4_ANT_KEY_BEGIN */ 
     806+import java.sql.Array; 
     807+import java.sql.Blob; 
     808+import java.sql.ClientInfoStatus; 
     809+import java.sql.Clob; 
     810+import java.sql.NClob; 
     811+import java.sql.SQLClientInfoException; 
     812+import java.sql.SQLXML; 
     813+import java.sql.Struct; 
     814+import java.util.Collections; 
     815+import java.util.Map; 
     816+import java.util.Properties; 
     817+/* JDBC_4_ANT_KEY_END */ 
     818  
     819 /** 
     820  * This class is the <code>Connection</code> that will be returned 
     821@@ -42,6 +55,11 @@ 
     822     private static final String CLOSED  
     823             = "Attempted to use Connection after closed() was called."; 
     824  
     825+/* JDBC_4_ANT_KEY_BEGIN */ 
     826+    private static final Map<String, ClientInfoStatus> EMPTY_FAILED_PROPERTIES = 
     827+        Collections.<String, ClientInfoStatus>emptyMap(); 
     828+/* JDBC_4_ANT_KEY_END */ 
     829+ 
     830     /** The JDBC database connection. */ 
     831     private Connection connection; 
     832  
     833@@ -453,6 +471,86 @@ 
     834         assertOpen(); 
     835         return connection.prepareStatement(sql, columnNames); 
     836     } 
     837+/* JDBC_3_ANT_KEY_END */ 
     838+/* JDBC_4_ANT_KEY_BEGIN */ 
     839  
     840-/* JDBC_3_ANT_KEY_END */ 
     841+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     842+        return connection.isWrapperFor(iface); 
     843+    } 
     844+ 
     845+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     846+        return connection.unwrap(iface); 
     847+    } 
     848+ 
     849+    public Array createArrayOf(String typeName, Object[] elements) throws SQLException { 
     850+        assertOpen(); 
     851+        return connection.createArrayOf(typeName, elements); 
     852+    } 
     853+ 
     854+    public Blob createBlob() throws SQLException { 
     855+        assertOpen(); 
     856+        return connection.createBlob(); 
     857+    } 
     858+ 
     859+    public Clob createClob() throws SQLException { 
     860+        assertOpen(); 
     861+        return connection.createClob(); 
     862+    } 
     863+ 
     864+    public NClob createNClob() throws SQLException { 
     865+        assertOpen(); 
     866+        return connection.createNClob(); 
     867+    } 
     868+ 
     869+    public SQLXML createSQLXML() throws SQLException { 
     870+        assertOpen(); 
     871+        return connection.createSQLXML(); 
     872+    } 
     873+ 
     874+    public Struct createStruct(String typeName, Object[] attributes) throws SQLException { 
     875+        assertOpen(); 
     876+        return connection.createStruct(typeName, attributes); 
     877+    } 
     878+ 
     879+    public boolean isValid(int timeout) throws SQLException { 
     880+        assertOpen(); 
     881+        return connection.isValid(timeout); 
     882+    } 
     883+ 
     884+    public void setClientInfo(String name, String value) throws SQLClientInfoException { 
     885+        try { 
     886+            assertOpen(); 
     887+            connection.setClientInfo(name, value); 
     888+        } 
     889+        catch (SQLClientInfoException e) { 
     890+            throw e; 
     891+        } 
     892+        catch (SQLException e) { 
     893+            throw new SQLClientInfoException("Connection is closed.", EMPTY_FAILED_PROPERTIES, e); 
     894+        } 
     895+    } 
     896+ 
     897+    public void setClientInfo(Properties properties) throws SQLClientInfoException { 
     898+        try { 
     899+            assertOpen(); 
     900+            connection.setClientInfo(properties); 
     901+        } 
     902+        catch (SQLClientInfoException e) { 
     903+            throw e; 
     904+        } 
     905+        catch (SQLException e) { 
     906+            throw new SQLClientInfoException("Connection is closed.", EMPTY_FAILED_PROPERTIES, e); 
     907+        } 
     908+    } 
     909+ 
     910+    public Properties getClientInfo() throws SQLException { 
     911+        assertOpen(); 
     912+        return connection.getClientInfo(); 
     913+    } 
     914+ 
     915+    public String getClientInfo(String name) throws SQLException { 
     916+        assertOpen(); 
     917+        return connection.getClientInfo(name); 
     918+    } 
     919+/* JDBC_4_ANT_KEY_END */ 
     920 } 
     921Index: src/java/org/apache/commons/dbcp/cpdsadapter/PooledConnectionImpl.java 
     922=================================================================== 
     923--- src/java/org/apache/commons/dbcp/cpdsadapter/PooledConnectionImpl.java      (revision 558600) 
     924+++ src/java/org/apache/commons/dbcp/cpdsadapter/PooledConnectionImpl.java      (working copy) 
     925@@ -26,6 +26,7 @@ 
     926 import javax.sql.ConnectionEvent; 
     927 import javax.sql.ConnectionEventListener; 
     928 import javax.sql.PooledConnection; 
     929+import javax.sql.StatementEventListener; 
     930  
     931 import org.apache.commons.dbcp.DelegatingConnection; 
     932 import org.apache.commons.dbcp.DelegatingPreparedStatement; 
     933@@ -66,6 +67,11 @@ 
     934     private Vector eventListeners; 
     935  
     936     /** 
     937+     * StatementEventListeners 
     938+     */ 
     939+    private Vector statementEventListeners; 
     940+ 
     941+    /** 
     942      * flag set to true, once close() is called. 
     943      */ 
     944     boolean isClosed; 
     945@@ -101,6 +107,12 @@ 
     946         } 
     947     } 
     948  
     949+    public void addStatementEventListener(StatementEventListener listener) { 
     950+        if (!statementEventListeners.contains(listener)) { 
     951+            statementEventListeners.add(listener); 
     952+        } 
     953+    } 
     954+ 
     955     /** 
     956      * Closes the physical connection and marks this  
     957      * <code>PooledConnection</code> so that it may not be used  
     958@@ -169,6 +181,10 @@ 
     959         eventListeners.remove(listener); 
     960     } 
     961  
     962+    public void removeStatementEventListener(StatementEventListener listener) { 
     963+        statementEventListeners.remove(listener); 
     964+    } 
     965+ 
     966     /** 
     967      * Closes the physical connection and checks that the logical connection 
     968      * was closed as well. 
     969Index: src/java/org/apache/commons/dbcp/DelegatingPreparedStatement.java 
     970=================================================================== 
     971--- src/java/org/apache/commons/dbcp/DelegatingPreparedStatement.java   (revision 558600) 
     972+++ src/java/org/apache/commons/dbcp/DelegatingPreparedStatement.java   (working copy) 
     973@@ -27,6 +27,13 @@ 
     974 import java.sql.ResultSetMetaData; 
     975 import java.sql.SQLException; 
     976 import java.util.Calendar; 
     977+/* JDBC_4_ANT_KEY_BEGIN */ 
     978+import java.io.InputStream; 
     979+import java.io.Reader; 
     980+import java.sql.NClob; 
     981+import java.sql.RowId; 
     982+import java.sql.SQLXML; 
     983+/* JDBC_4_ANT_KEY_END */ 
     984  
     985 /** 
     986  * A base delegating implementation of {@link PreparedStatement}. 
     987@@ -221,6 +228,187 @@ 
     988  
     989     public java.sql.ParameterMetaData getParameterMetaData() throws SQLException 
     990     { checkOpen(); try { return _stmt.getParameterMetaData(); } catch (SQLException e) { handleException(e); return null; } } 
     991+/* JDBC_3_ANT_KEY_END */ 
     992+/* JDBC_4_ANT_KEY_BEGIN */ 
     993  
     994-/* JDBC_3_ANT_KEY_END */ 
     995+    public void setRowId(int parameterIndex, RowId value) throws SQLException { 
     996+        checkOpen(); 
     997+        try { 
     998+            _stmt.setRowId(parameterIndex, value); 
     999+        } 
     1000+        catch (SQLException e) { 
     1001+            handleException(e); 
     1002+        } 
     1003+    } 
     1004+ 
     1005+    public void setNString(int parameterIndex, String value) throws SQLException { 
     1006+        checkOpen(); 
     1007+        try { 
     1008+            _stmt.setNString(parameterIndex, value); 
     1009+        } 
     1010+        catch (SQLException e) { 
     1011+            handleException(e); 
     1012+        } 
     1013+    } 
     1014+ 
     1015+    public void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException { 
     1016+        checkOpen(); 
     1017+        try { 
     1018+            _stmt.setNCharacterStream(parameterIndex, value, length); 
     1019+        } 
     1020+        catch (SQLException e) { 
     1021+            handleException(e); 
     1022+        } 
     1023+    } 
     1024+ 
     1025+    public void setNClob(int parameterIndex, NClob value) throws SQLException { 
     1026+        checkOpen(); 
     1027+        try { 
     1028+            _stmt.setNClob(parameterIndex, value); 
     1029+        } 
     1030+        catch (SQLException e) { 
     1031+            handleException(e); 
     1032+        } 
     1033+    } 
     1034+ 
     1035+    public void setClob(int parameterIndex, Reader reader, long length) throws SQLException { 
     1036+        checkOpen(); 
     1037+        try { 
     1038+            _stmt.setClob(parameterIndex, reader, length); 
     1039+        } 
     1040+        catch (SQLException e) { 
     1041+            handleException(e); 
     1042+        } 
     1043+    } 
     1044+ 
     1045+    public void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException { 
     1046+        checkOpen(); 
     1047+        try { 
     1048+            _stmt.setBlob(parameterIndex, inputStream, length); 
     1049+        } 
     1050+        catch (SQLException e) { 
     1051+            handleException(e); 
     1052+        } 
     1053+    } 
     1054+ 
     1055+    public void setNClob(int parameterIndex, Reader reader, long length) throws SQLException { 
     1056+        checkOpen(); 
     1057+        try { 
     1058+            _stmt.setNClob(parameterIndex, reader, length); 
     1059+        } 
     1060+        catch (SQLException e) { 
     1061+            handleException(e); 
     1062+        } 
     1063+    } 
     1064+ 
     1065+    public void setSQLXML(int parameterIndex, SQLXML value) throws SQLException { 
     1066+        checkOpen(); 
     1067+        try { 
     1068+            _stmt.setSQLXML(parameterIndex, value); 
     1069+        } 
     1070+        catch (SQLException e) { 
     1071+            handleException(e); 
     1072+        } 
     1073+    } 
     1074+ 
     1075+    public void setAsciiStream(int parameterIndex, InputStream inputStream, long length) throws SQLException { 
     1076+        checkOpen(); 
     1077+        try { 
     1078+            _stmt.setAsciiStream(parameterIndex, inputStream, length); 
     1079+        } 
     1080+        catch (SQLException e) { 
     1081+            handleException(e); 
     1082+        } 
     1083+    } 
     1084+ 
     1085+    public void setBinaryStream(int parameterIndex, InputStream inputStream, long length) throws SQLException { 
     1086+        checkOpen(); 
     1087+        try { 
     1088+            _stmt.setBinaryStream(parameterIndex, inputStream, length); 
     1089+        } 
     1090+        catch (SQLException e) { 
     1091+            handleException(e); 
     1092+        } 
     1093+    } 
     1094+ 
     1095+    public void setCharacterStream(int parameterIndex, Reader reader, long length) throws SQLException { 
     1096+        checkOpen(); 
     1097+        try { 
     1098+            _stmt.setCharacterStream(parameterIndex, reader, length); 
     1099+        } 
     1100+        catch (SQLException e) { 
     1101+            handleException(e); 
     1102+        } 
     1103+    } 
     1104+ 
     1105+    public void setAsciiStream(int parameterIndex, InputStream inputStream) throws SQLException { 
     1106+        checkOpen(); 
     1107+        try { 
     1108+            _stmt.setAsciiStream(parameterIndex, inputStream); 
     1109+        } 
     1110+        catch (SQLException e) { 
     1111+            handleException(e); 
     1112+        } 
     1113+    } 
     1114+ 
     1115+    public void setBinaryStream(int parameterIndex, InputStream inputStream) throws SQLException { 
     1116+        checkOpen(); 
     1117+        try { 
     1118+            _stmt.setBinaryStream(parameterIndex, inputStream); 
     1119+        } 
     1120+        catch (SQLException e) { 
     1121+            handleException(e); 
     1122+        } 
     1123+    } 
     1124+ 
     1125+    public void setCharacterStream(int parameterIndex, Reader reader) throws SQLException { 
     1126+        checkOpen(); 
     1127+        try { 
     1128+            _stmt.setCharacterStream(parameterIndex, reader); 
     1129+        } 
     1130+        catch (SQLException e) { 
     1131+            handleException(e); 
     1132+        } 
     1133+    } 
     1134+ 
     1135+    public void setNCharacterStream(int parameterIndex, Reader reader) throws SQLException { 
     1136+        checkOpen(); 
     1137+        try { 
     1138+            _stmt.setNCharacterStream(parameterIndex, reader); 
     1139+        } 
     1140+        catch (SQLException e) { 
     1141+            handleException(e); 
     1142+        } 
     1143+    } 
     1144+ 
     1145+    public void setClob(int parameterIndex, Reader reader) throws SQLException { 
     1146+        checkOpen(); 
     1147+        try { 
     1148+            _stmt.setClob(parameterIndex, reader); 
     1149+        } 
     1150+        catch (SQLException e) { 
     1151+            handleException(e); 
     1152+        } 
     1153+    } 
     1154+ 
     1155+    public void setBlob(int parameterIndex, InputStream inputStream) throws SQLException { 
     1156+        checkOpen(); 
     1157+        try { 
     1158+            _stmt.setBlob(parameterIndex, inputStream); 
     1159+        } 
     1160+        catch (SQLException e) { 
     1161+            handleException(e); 
     1162+        } 
     1163+    } 
     1164+ 
     1165+    public void setNClob(int parameterIndex, Reader reader) throws SQLException { 
     1166+        checkOpen(); 
     1167+        try { 
     1168+            _stmt.setNClob(parameterIndex, reader); 
     1169+        } 
     1170+        catch (SQLException e) { 
     1171+            handleException(e); 
     1172+        } 
     1173+    } 
     1174+/* JDBC_4_ANT_KEY_END */ 
     1175 } 
     1176Index: src/java/org/apache/commons/dbcp/DelegatingResultSet.java 
     1177=================================================================== 
     1178--- src/java/org/apache/commons/dbcp/DelegatingResultSet.java   (revision 558600) 
     1179+++ src/java/org/apache/commons/dbcp/DelegatingResultSet.java   (working copy) 
     1180@@ -34,6 +34,11 @@ 
     1181 import java.sql.Clob; 
     1182 import java.sql.Array; 
     1183 import java.util.Calendar; 
     1184+/* JDBC_4_ANT_KEY_BEGIN */ 
     1185+import java.sql.NClob; 
     1186+import java.sql.RowId; 
     1187+import java.sql.SQLXML; 
     1188+/* JDBC_4_ANT_KEY_END */ 
     1189  
     1190 /** 
     1191  * A base delegating implementation of {@link ResultSet}. 
     1192@@ -585,6 +590,459 @@ 
     1193  
     1194     public void updateArray(String columnName, java.sql.Array x) throws SQLException 
     1195     { try { _res.updateArray(columnName, x); } catch (SQLException e) { handleException(e); } } 
     1196+/* JDBC_3_ANT_KEY_END */ 
     1197+/* JDBC_4_ANT_KEY_BEGIN */ 
     1198  
     1199-/* JDBC_3_ANT_KEY_END */ 
     1200+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     1201+        return _res.isWrapperFor(iface); 
     1202+    } 
     1203+ 
     1204+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     1205+        return _res.unwrap(iface); 
     1206+    } 
     1207+ 
     1208+    public RowId getRowId(int columnIndex) throws SQLException { 
     1209+        try { 
     1210+            return _res.getRowId(columnIndex); 
     1211+        } 
     1212+        catch (SQLException e) { 
     1213+            handleException(e); 
     1214+            return null; 
     1215+        } 
     1216+    } 
     1217+ 
     1218+    public RowId getRowId(String columnLabel) throws SQLException { 
     1219+        try { 
     1220+            return _res.getRowId(columnLabel); 
     1221+        } 
     1222+        catch (SQLException e) { 
     1223+            handleException(e); 
     1224+            return null; 
     1225+        } 
     1226+    } 
     1227+ 
     1228+    public void updateRowId(int columnIndex, RowId value) throws SQLException { 
     1229+        try { 
     1230+            _res.updateRowId(columnIndex, value); 
     1231+        } 
     1232+        catch (SQLException e) { 
     1233+            handleException(e); 
     1234+        } 
     1235+    } 
     1236+ 
     1237+    public void updateRowId(String columnLabel, RowId value) throws SQLException { 
     1238+        try { 
     1239+            _res.updateRowId(columnLabel, value); 
     1240+        } 
     1241+        catch (SQLException e) { 
     1242+            handleException(e); 
     1243+        } 
     1244+    } 
     1245+ 
     1246+    public int getHoldability() throws SQLException { 
     1247+        try { 
     1248+            return _res.getHoldability(); 
     1249+        } 
     1250+        catch (SQLException e) { 
     1251+            handleException(e); 
     1252+            return 0; 
     1253+        } 
     1254+    } 
     1255+ 
     1256+    public boolean isClosed() throws SQLException { 
     1257+        try { 
     1258+            return _res.isClosed(); 
     1259+        } 
     1260+        catch (SQLException e) { 
     1261+            handleException(e); 
     1262+            return false; 
     1263+        } 
     1264+    } 
     1265+ 
     1266+    public void updateNString(int columnIndex, String value) throws SQLException { 
     1267+        try { 
     1268+            _res.updateNString(columnIndex, value); 
     1269+        } 
     1270+        catch (SQLException e) { 
     1271+            handleException(e); 
     1272+        } 
     1273+    } 
     1274+ 
     1275+    public void updateNString(String columnLabel, String value) throws SQLException { 
     1276+        try { 
     1277+            _res.updateNString(columnLabel, value); 
     1278+        } 
     1279+        catch (SQLException e) { 
     1280+            handleException(e); 
     1281+        } 
     1282+    } 
     1283+ 
     1284+    public void updateNClob(int columnIndex, NClob value) throws SQLException { 
     1285+        try { 
     1286+            _res.updateNClob(columnIndex, value); 
     1287+        } 
     1288+        catch (SQLException e) { 
     1289+            handleException(e); 
     1290+        } 
     1291+    } 
     1292+ 
     1293+    public void updateNClob(String columnLabel, NClob value) throws SQLException { 
     1294+        try { 
     1295+            _res.updateNClob(columnLabel, value); 
     1296+        } 
     1297+        catch (SQLException e) { 
     1298+            handleException(e); 
     1299+        } 
     1300+    } 
     1301+ 
     1302+    public NClob getNClob(int columnIndex) throws SQLException { 
     1303+        try { 
     1304+            return _res.getNClob(columnIndex); 
     1305+        } 
     1306+        catch (SQLException e) { 
     1307+            handleException(e); 
     1308+            return null; 
     1309+        } 
     1310+    } 
     1311+ 
     1312+    public NClob getNClob(String columnLabel) throws SQLException { 
     1313+        try { 
     1314+            return _res.getNClob(columnLabel); 
     1315+        } 
     1316+        catch (SQLException e) { 
     1317+            handleException(e); 
     1318+            return null; 
     1319+        } 
     1320+    } 
     1321+ 
     1322+    public SQLXML getSQLXML(int columnIndex) throws SQLException { 
     1323+        try { 
     1324+            return _res.getSQLXML(columnIndex); 
     1325+        } 
     1326+        catch (SQLException e) { 
     1327+            handleException(e); 
     1328+            return null; 
     1329+        } 
     1330+    } 
     1331+ 
     1332+    public SQLXML getSQLXML(String columnLabel) throws SQLException { 
     1333+        try { 
     1334+            return _res.getSQLXML(columnLabel); 
     1335+        } 
     1336+        catch (SQLException e) { 
     1337+            handleException(e); 
     1338+            return null; 
     1339+        } 
     1340+    } 
     1341+ 
     1342+    public void updateSQLXML(int columnIndex, SQLXML value) throws SQLException { 
     1343+        try { 
     1344+            _res.updateSQLXML(columnIndex, value); 
     1345+        } 
     1346+        catch (SQLException e) { 
     1347+            handleException(e); 
     1348+        } 
     1349+    } 
     1350+ 
     1351+    public void updateSQLXML(String columnLabel, SQLXML value) throws SQLException { 
     1352+        try { 
     1353+            _res.updateSQLXML(columnLabel, value); 
     1354+        } 
     1355+        catch (SQLException e) { 
     1356+            handleException(e); 
     1357+        } 
     1358+    } 
     1359+ 
     1360+    public String getNString(int columnIndex) throws SQLException { 
     1361+        try { 
     1362+            return _res.getNString(columnIndex); 
     1363+        } 
     1364+        catch (SQLException e) { 
     1365+            handleException(e); 
     1366+            return null; 
     1367+        } 
     1368+    } 
     1369+ 
     1370+    public String getNString(String columnLabel) throws SQLException { 
     1371+        try { 
     1372+            return _res.getNString(columnLabel); 
     1373+        } 
     1374+        catch (SQLException e) { 
     1375+            handleException(e); 
     1376+            return null; 
     1377+        } 
     1378+    } 
     1379+ 
     1380+    public Reader getNCharacterStream(int columnIndex) throws SQLException { 
     1381+        try { 
     1382+            return _res.getNCharacterStream(columnIndex); 
     1383+        } 
     1384+        catch (SQLException e) { 
     1385+            handleException(e); 
     1386+            return null; 
     1387+        } 
     1388+    } 
     1389+ 
     1390+    public Reader getNCharacterStream(String columnLabel) throws SQLException { 
     1391+        try { 
     1392+            return _res.getNCharacterStream(columnLabel); 
     1393+        } 
     1394+        catch (SQLException e) { 
     1395+            handleException(e); 
     1396+            return null; 
     1397+        } 
     1398+    } 
     1399+ 
     1400+    public void updateNCharacterStream(int columnIndex, Reader reader, long length) throws SQLException { 
     1401+        try { 
     1402+            _res.updateNCharacterStream(columnIndex, reader, length); 
     1403+        } 
     1404+        catch (SQLException e) { 
     1405+            handleException(e); 
     1406+        } 
     1407+    } 
     1408+ 
     1409+    public void updateNCharacterStream(String columnLabel, Reader reader, long length) throws SQLException { 
     1410+        try { 
     1411+            _res.updateNCharacterStream(columnLabel, reader, length); 
     1412+        } 
     1413+        catch (SQLException e) { 
     1414+            handleException(e); 
     1415+        } 
     1416+    } 
     1417+ 
     1418+    public void updateAsciiStream(int columnIndex, InputStream inputStream, long length) throws SQLException { 
     1419+        try { 
     1420+            _res.updateAsciiStream(columnIndex, inputStream, length); 
     1421+        } 
     1422+        catch (SQLException e) { 
     1423+            handleException(e); 
     1424+        } 
     1425+    } 
     1426+ 
     1427+    public void updateBinaryStream(int columnIndex, InputStream inputStream, long length) throws SQLException { 
     1428+        try { 
     1429+            _res.updateBinaryStream(columnIndex, inputStream, length); 
     1430+        } 
     1431+        catch (SQLException e) { 
     1432+            handleException(e); 
     1433+        } 
     1434+    } 
     1435+ 
     1436+    public void updateCharacterStream(int columnIndex, Reader reader, long length) throws SQLException { 
     1437+        try { 
     1438+            _res.updateCharacterStream(columnIndex, reader, length); 
     1439+        } 
     1440+        catch (SQLException e) { 
     1441+            handleException(e); 
     1442+        } 
     1443+    } 
     1444+ 
     1445+    public void updateAsciiStream(String columnLabel, InputStream inputStream, long length) throws SQLException { 
     1446+        try { 
     1447+            _res.updateAsciiStream(columnLabel, inputStream, length); 
     1448+        } 
     1449+        catch (SQLException e) { 
     1450+            handleException(e); 
     1451+        } 
     1452+    } 
     1453+ 
     1454+    public void updateBinaryStream(String columnLabel, InputStream inputStream, long length) throws SQLException { 
     1455+        try { 
     1456+            _res.updateBinaryStream(columnLabel, inputStream, length); 
     1457+        } 
     1458+        catch (SQLException e) { 
     1459+            handleException(e); 
     1460+        } 
     1461+    } 
     1462+ 
     1463+    public void updateCharacterStream(String columnLabel, Reader reader, long length) throws SQLException { 
     1464+        try { 
     1465+            _res.updateCharacterStream(columnLabel, reader, length); 
     1466+        } 
     1467+        catch (SQLException e) { 
     1468+            handleException(e); 
     1469+        } 
     1470+    } 
     1471+ 
     1472+    public void updateBlob(int columnIndex, InputStream inputStream, long length) throws SQLException { 
     1473+        try { 
     1474+            _res.updateBlob(columnIndex, inputStream, length); 
     1475+        } 
     1476+        catch (SQLException e) { 
     1477+            handleException(e); 
     1478+        } 
     1479+    } 
     1480+ 
     1481+    public void updateBlob(String columnLabel, InputStream inputStream, long length) throws SQLException { 
     1482+        try { 
     1483+            _res.updateBlob(columnLabel, inputStream, length); 
     1484+        } 
     1485+        catch (SQLException e) { 
     1486+            handleException(e); 
     1487+        } 
     1488+    } 
     1489+ 
     1490+    public void updateClob(int columnIndex, Reader reader, long length) throws SQLException { 
     1491+        try { 
     1492+            _res.updateClob(columnIndex, reader, length); 
     1493+        } 
     1494+        catch (SQLException e) { 
     1495+            handleException(e); 
     1496+        } 
     1497+    } 
     1498+ 
     1499+    public void updateClob(String columnLabel, Reader reader, long length) throws SQLException { 
     1500+        try { 
     1501+            _res.updateClob(columnLabel, reader, length); 
     1502+        } 
     1503+        catch (SQLException e) { 
     1504+            handleException(e); 
     1505+        } 
     1506+    } 
     1507+ 
     1508+    public void updateNClob(int columnIndex, Reader reader, long length) throws SQLException { 
     1509+        try { 
     1510+            _res.updateNClob(columnIndex, reader, length); 
     1511+        } 
     1512+        catch (SQLException e) { 
     1513+            handleException(e); 
     1514+        } 
     1515+    } 
     1516+ 
     1517+    public void updateNClob(String columnLabel, Reader reader, long length) throws SQLException { 
     1518+        try { 
     1519+            _res.updateNClob(columnLabel, reader, length); 
     1520+        } 
     1521+        catch (SQLException e) { 
     1522+            handleException(e); 
     1523+        } 
     1524+    } 
     1525+ 
     1526+    public void updateNCharacterStream(int columnIndex, Reader reader) throws SQLException { 
     1527+        try { 
     1528+            _res.updateNCharacterStream(columnIndex, reader); 
     1529+        } 
     1530+        catch (SQLException e) { 
     1531+            handleException(e); 
     1532+        } 
     1533+    } 
     1534+ 
     1535+    public void updateNCharacterStream(String columnLabel, Reader reader) throws SQLException { 
     1536+        try { 
     1537+            _res.updateNCharacterStream(columnLabel, reader); 
     1538+        } 
     1539+        catch (SQLException e) { 
     1540+            handleException(e); 
     1541+        } 
     1542+    } 
     1543+ 
     1544+    public void updateAsciiStream(int columnIndex, InputStream inputStream) throws SQLException { 
     1545+        try { 
     1546+            _res.updateAsciiStream(columnIndex, inputStream); 
     1547+        } 
     1548+        catch (SQLException e) { 
     1549+            handleException(e); 
     1550+        } 
     1551+    } 
     1552+ 
     1553+    public void updateBinaryStream(int columnIndex, InputStream inputStream) throws SQLException { 
     1554+        try { 
     1555+            _res.updateBinaryStream(columnIndex, inputStream); 
     1556+        } 
     1557+        catch (SQLException e) { 
     1558+            handleException(e); 
     1559+        } 
     1560+    } 
     1561+ 
     1562+    public void updateCharacterStream(int columnIndex, Reader reader) throws SQLException { 
     1563+        try { 
     1564+            _res.updateCharacterStream(columnIndex, reader); 
     1565+        } 
     1566+        catch (SQLException e) { 
     1567+            handleException(e); 
     1568+        } 
     1569+    } 
     1570+ 
     1571+    public void updateAsciiStream(String columnLabel, InputStream inputStream) throws SQLException { 
     1572+        try { 
     1573+            _res.updateAsciiStream(columnLabel, inputStream); 
     1574+        } 
     1575+        catch (SQLException e) { 
     1576+            handleException(e); 
     1577+        } 
     1578+    } 
     1579+ 
     1580+    public void updateBinaryStream(String columnLabel, InputStream inputStream) throws SQLException { 
     1581+        try { 
     1582+            _res.updateBinaryStream(columnLabel, inputStream); 
     1583+        } 
     1584+        catch (SQLException e) { 
     1585+            handleException(e); 
     1586+        } 
     1587+    } 
     1588+ 
     1589+    public void updateCharacterStream(String columnLabel, Reader reader) throws SQLException { 
     1590+        try { 
     1591+            _res.updateCharacterStream(columnLabel, reader); 
     1592+        } 
     1593+        catch (SQLException e) { 
     1594+            handleException(e); 
     1595+        } 
     1596+    } 
     1597+ 
     1598+    public void updateBlob(int columnIndex, InputStream inputStream) throws SQLException { 
     1599+        try { 
     1600+            _res.updateBlob(columnIndex, inputStream); 
     1601+        } 
     1602+        catch (SQLException e) { 
     1603+            handleException(e); 
     1604+        } 
     1605+    } 
     1606+ 
     1607+    public void updateBlob(String columnLabel, InputStream inputStream) throws SQLException { 
     1608+        try { 
     1609+            _res.updateBlob(columnLabel, inputStream); 
     1610+        } 
     1611+        catch (SQLException e) { 
     1612+            handleException(e); 
     1613+        } 
     1614+    } 
     1615+ 
     1616+    public void updateClob(int columnIndex, Reader reader) throws SQLException { 
     1617+        try { 
     1618+            _res.updateClob(columnIndex, reader); 
     1619+        } 
     1620+        catch (SQLException e) { 
     1621+            handleException(e); 
     1622+        } 
     1623+    } 
     1624+ 
     1625+    public void updateClob(String columnLabel, Reader reader) throws SQLException { 
     1626+        try { 
     1627+            _res.updateClob(columnLabel, reader); 
     1628+        } 
     1629+        catch (SQLException e) { 
     1630+            handleException(e); 
     1631+        } 
     1632+    } 
     1633+ 
     1634+    public void updateNClob(int columnIndex, Reader reader) throws SQLException { 
     1635+        try { 
     1636+            _res.updateNClob(columnIndex, reader); 
     1637+        } 
     1638+        catch (SQLException e) { 
     1639+            handleException(e); 
     1640+        } 
     1641+    } 
     1642+ 
     1643+    public void updateNClob(String columnLabel, Reader reader) throws SQLException { 
     1644+        try { 
     1645+            _res.updateNClob(columnLabel, reader); 
     1646+        } 
     1647+        catch (SQLException e) { 
     1648+            handleException(e); 
     1649+        } 
     1650+    } 
     1651+/* JDBC_4_ANT_KEY_END */ 
     1652 } 
     1653Index: src/java/org/apache/commons/dbcp/PoolingDataSource.java 
     1654=================================================================== 
     1655--- src/java/org/apache/commons/dbcp/PoolingDataSource.java     (revision 558600) 
     1656+++ src/java/org/apache/commons/dbcp/PoolingDataSource.java     (working copy) 
     1657@@ -84,6 +84,14 @@ 
     1658     public void setAccessToUnderlyingConnectionAllowed(boolean allow) { 
     1659         this.accessToUnderlyingConnectionAllowed = allow; 
     1660     } 
     1661+ 
     1662+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     1663+        return false; 
     1664+    } 
     1665+ 
     1666+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     1667+        throw new SQLException("PoolingDataSource is not a wrapper."); 
     1668+    } 
     1669      
     1670     //--- DataSource methods ----------------------------------------- 
     1671  
     1672Index: src/java/org/apache/commons/dbcp/DelegatingConnection.java 
     1673=================================================================== 
     1674--- src/java/org/apache/commons/dbcp/DelegatingConnection.java  (revision 558600) 
     1675+++ src/java/org/apache/commons/dbcp/DelegatingConnection.java  (working copy) 
     1676@@ -26,6 +26,19 @@ 
     1677 import java.sql.Statement; 
     1678 import java.util.List; 
     1679 import java.util.Map; 
     1680+/* JDBC_4_ANT_KEY_BEGIN */ 
     1681+import java.sql.Array; 
     1682+import java.sql.Blob; 
     1683+import java.sql.ClientInfoStatus; 
     1684+import java.sql.Clob; 
     1685+import java.sql.NClob; 
     1686+import java.sql.SQLClientInfoException; 
     1687+import java.sql.SQLXML; 
     1688+import java.sql.Struct; 
     1689+import java.util.Collections; 
     1690+import java.util.Map; 
     1691+import java.util.Properties; 
     1692+/* JDBC_4_ANT_KEY_END */ 
     1693  
     1694 /** 
     1695  * A base delegating implementation of {@link Connection}. 
     1696@@ -50,6 +63,10 @@ 
     1697  */ 
     1698 public class DelegatingConnection extends AbandonedTrace 
     1699         implements Connection { 
     1700+/* JDBC_4_ANT_KEY_BEGIN */ 
     1701+    private static final Map<String, ClientInfoStatus> EMPTY_FAILED_PROPERTIES = 
     1702+        Collections.<String, ClientInfoStatus>emptyMap(); 
     1703+/* JDBC_4_ANT_KEY_END */ 
     1704     /** My delegate {@link Connection}. */ 
     1705     protected Connection _conn = null; 
     1706  
     1707@@ -495,4 +512,139 @@ 
     1708         } 
     1709     } 
     1710 /* JDBC_3_ANT_KEY_END */ 
     1711+/* JDBC_4_ANT_KEY_BEGIN */ 
     1712+ 
     1713+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     1714+        return _conn.isWrapperFor(iface); 
     1715+    } 
     1716+ 
     1717+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     1718+        return _conn.unwrap(iface); 
     1719+    } 
     1720+ 
     1721+    public Array createArrayOf(String typeName, Object[] elements) throws SQLException { 
     1722+        checkOpen(); 
     1723+        try { 
     1724+            return _conn.createArrayOf(typeName, elements); 
     1725+        } 
     1726+        catch (SQLException e) { 
     1727+            handleException(e); 
     1728+            return null; 
     1729+        } 
     1730+    } 
     1731+ 
     1732+    public Blob createBlob() throws SQLException { 
     1733+        checkOpen(); 
     1734+        try { 
     1735+            return _conn.createBlob(); 
     1736+        } 
     1737+        catch (SQLException e) { 
     1738+            handleException(e); 
     1739+            return null; 
     1740+        } 
     1741+    } 
     1742+ 
     1743+    public Clob createClob() throws SQLException { 
     1744+        checkOpen(); 
     1745+        try { 
     1746+            return _conn.createClob(); 
     1747+        } 
     1748+        catch (SQLException e) { 
     1749+            handleException(e); 
     1750+            return null; 
     1751+        } 
     1752+    } 
     1753+ 
     1754+    public NClob createNClob() throws SQLException { 
     1755+        checkOpen(); 
     1756+        try { 
     1757+            return _conn.createNClob(); 
     1758+        } 
     1759+        catch (SQLException e) { 
     1760+            handleException(e); 
     1761+            return null; 
     1762+        } 
     1763+    } 
     1764+ 
     1765+    public SQLXML createSQLXML() throws SQLException { 
     1766+        checkOpen(); 
     1767+        try { 
     1768+            return _conn.createSQLXML(); 
     1769+        } 
     1770+        catch (SQLException e) { 
     1771+            handleException(e); 
     1772+            return null; 
     1773+        } 
     1774+    } 
     1775+ 
     1776+    public Struct createStruct(String typeName, Object[] attributes) throws SQLException { 
     1777+        checkOpen(); 
     1778+        try { 
     1779+            return _conn.createStruct(typeName, attributes); 
     1780+        } 
     1781+        catch (SQLException e) { 
     1782+            handleException(e); 
     1783+            return null; 
     1784+        } 
     1785+    } 
     1786+ 
     1787+    public boolean isValid(int timeout) throws SQLException { 
     1788+        checkOpen(); 
     1789+        try { 
     1790+            return _conn.isValid(timeout); 
     1791+        } 
     1792+        catch (SQLException e) { 
     1793+            handleException(e); 
     1794+            return false; 
     1795+        } 
     1796+    } 
     1797+ 
     1798+    public void setClientInfo(String name, String value) throws SQLClientInfoException { 
     1799+        try { 
     1800+            checkOpen(); 
     1801+            _conn.setClientInfo(name, value); 
     1802+        } 
     1803+        catch (SQLClientInfoException e) { 
     1804+            throw e; 
     1805+        } 
     1806+        catch (SQLException e) { 
     1807+            throw new SQLClientInfoException("Connection is closed.", EMPTY_FAILED_PROPERTIES, e); 
     1808+        } 
     1809+    } 
     1810+ 
     1811+    public void setClientInfo(Properties properties) throws SQLClientInfoException { 
     1812+        try { 
     1813+            checkOpen(); 
     1814+            _conn.setClientInfo(properties); 
     1815+        } 
     1816+        catch (SQLClientInfoException e) { 
     1817+            throw e; 
     1818+        } 
     1819+        catch (SQLException e) { 
     1820+            throw new SQLClientInfoException("Connection is closed.", EMPTY_FAILED_PROPERTIES, e); 
     1821+        } 
     1822+    } 
     1823+ 
     1824+    public Properties getClientInfo() throws SQLException { 
     1825+        checkOpen(); 
     1826+        try { 
     1827+            return _conn.getClientInfo(); 
     1828+        } 
     1829+        catch (SQLException e) { 
     1830+            handleException(e); 
     1831+            return null; 
     1832+        } 
     1833+    } 
     1834+ 
     1835+    public String getClientInfo(String name) throws SQLException { 
     1836+        checkOpen(); 
     1837+        try { 
     1838+            return _conn.getClientInfo(name); 
     1839+        } 
     1840+        catch (SQLException e) { 
     1841+            handleException(e); 
     1842+            return null; 
     1843+        } 
     1844+    } 
     1845+/* JDBC_4_ANT_KEY_END */ 
     1846 } 
     1847Index: src/java/org/apache/commons/dbcp/DelegatingStatement.java 
     1848=================================================================== 
     1849--- src/java/org/apache/commons/dbcp/DelegatingStatement.java   (revision 558600) 
     1850+++ src/java/org/apache/commons/dbcp/DelegatingStatement.java   (working copy) 
     1851@@ -128,10 +128,6 @@ 
     1852  
     1853     protected boolean _closed = false; 
     1854  
     1855-    protected boolean isClosed() { 
     1856-        return _closed; 
     1857-    } 
     1858- 
     1859     protected void checkOpen() throws SQLException { 
     1860         if(isClosed()) { 
     1861             throw new SQLException 
     1862@@ -346,4 +342,39 @@ 
     1863     { checkOpen(); try { return _stmt.getResultSetHoldability(); } catch (SQLException e) { handleException(e); return 0; } } 
     1864  
     1865 /* JDBC_3_ANT_KEY_END */ 
     1866+/* JDBC_4_ANT_KEY_BEGIN */ 
     1867+ 
     1868+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     1869+        return _conn.isWrapperFor(iface); 
     1870+    } 
     1871+ 
     1872+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     1873+        return _conn.unwrap(iface); 
     1874+    } 
     1875+ 
     1876+    public boolean isClosed() throws SQLException { 
     1877+        return _closed; 
     1878+    } 
     1879+ 
     1880+    public void setPoolable(boolean poolable) throws SQLException { 
     1881+        checkOpen(); 
     1882+        try { 
     1883+            _stmt.setPoolable(poolable); 
     1884+        } 
     1885+        catch (SQLException e) { 
     1886+            handleException(e); 
     1887+        } 
     1888+    } 
     1889+ 
     1890+    public boolean isPoolable() throws SQLException { 
     1891+        checkOpen(); 
     1892+        try { 
     1893+            return _stmt.isPoolable(); 
     1894+        } 
     1895+        catch (SQLException e) { 
     1896+            handleException(e); 
     1897+            return false; 
     1898+        } 
     1899+    } 
     1900+/* JDBC_4_ANT_KEY_END */ 
     1901 } 
     1902Index: src/java/org/apache/commons/dbcp/BasicDataSource.java 
     1903=================================================================== 
     1904--- src/java/org/apache/commons/dbcp/BasicDataSource.java       (revision 558600) 
     1905+++ src/java/org/apache/commons/dbcp/BasicDataSource.java       (working copy) 
     1906@@ -1115,7 +1115,14 @@ 
     1907         } 
     1908     } 
     1909  
     1910+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     1911+        return false; 
     1912+    } 
     1913  
     1914+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     1915+        throw new SQLException("BasicDataSource is not a wrapper."); 
     1916+    } 
     1917+ 
     1918     // ------------------------------------------------------ Protected Methods 
     1919  
     1920  
     1921Index: src/java/org/apache/commons/dbcp/datasources/InstanceKeyDataSource.java 
     1922=================================================================== 
     1923--- src/java/org/apache/commons/dbcp/datasources/InstanceKeyDataSource.java     (revision 558600) 
     1924+++ src/java/org/apache/commons/dbcp/datasources/InstanceKeyDataSource.java     (working copy) 
     1925@@ -154,6 +154,14 @@ 
     1926      */ 
     1927     public abstract void close() throws Exception; 
     1928  
     1929+    public boolean isWrapperFor(Class<?> iface) throws SQLException { 
     1930+        return false; 
     1931+    } 
     1932+ 
     1933+    public <T> T unwrap(Class<T> iface) throws SQLException { 
     1934+        throw new SQLException("InstanceKeyDataSource is not a wrapper."); 
     1935+    } 
     1936+ 
     1937     // ------------------------------------------------------------------- 
     1938     // Properties 
     1939  
     1940Index: project.properties 
     1941=================================================================== 
     1942--- project.properties  (revision 558600) 
     1943+++ project.properties  (working copy) 
     1944@@ -30,8 +30,8 @@ 
     1945 maven.xdoc.developmentProcessUrl=http://jakarta.apache.org/commons/charter.html 
     1946  
     1947 # JDK level 
     1948-maven.compile.source=1.3 
     1949-maven.compile.target=1.3 
     1950+maven.compile.source=1.6 
     1951+maven.compile.target=1.6 
     1952  
     1953 # Merge in a file containing just Built-By attribute 
     1954 maven.jar.manifest=${basedir}/manifestMods.txt 
  • Portfile

     
    4343        file attributes ${destroot}${prefix}/share/doc/${name} -permissions goa+r 
    4444} 
    4545 
     46platform darwin 10 { 
     47        build.args-append -Djavac.source=5 
     48        patchfiles-append patch-JDK-1.6.diff 
     49} 
     50 
    4651livecheck.check regex 
    4752livecheck.url   http://commons.apache.org/downloads/download_dbcp.cgi 
    4853livecheck.regex "${name}-(\\d+\\.\\d+(\\.\\d+)?)-src.tar.gz"