View Javadoc
1   /*
2    * $Source$
3    * $Revision$
4    *
5    * Copyright (C) 2008 Tim Pizey
6    *
7    * Part of Melati (http://melati.org), a framework for the rapid
8    * development of clean, maintainable web applications.
9    *
10   * Melati is free software; Permission is granted to copy, distribute
11   * and/or modify this software under the terms either:
12   *
13   * a) the GNU General Public License as published by the Free Software
14   *    Foundation; either version 2 of the License, or (at your option)
15   *    any later version,
16   *
17   *    or
18   *
19   * b) any version of the Melati Software License, as published
20   *    at http://melati.org
21   *
22   * You should have received a copy of the GNU General Public License and
23   * the Melati Software License along with this program;
24   * if not, write to the Free Software Foundation, Inc.,
25   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA to obtain the
26   * GNU General Public License and visit http://melati.org to obtain the
27   * Melati Software License.
28   *
29   * Feel free to contact the Developers of Melati (http://melati.org),
30   * if you would like to work out a different arrangement than the options
31   * outlined here.  It is our intention to allow Melati to be used by as
32   * wide an audience as possible.
33   *
34   * This program is distributed in the hope that it will be useful,
35   * but WITHOUT ANY WARRANTY; without even the implied warranty of
36   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
37   * GNU General Public License for more details.
38   *
39   * Contact details for copyright holder:
40   *
41   *     Tim Pizey <timp At paneris.org>
42   *     http://paneris.org/~timp
43   */
44  
45  package org.melati.poem.dbms.test.sql;
46  
47  import java.io.InputStream;
48  import java.io.Reader;
49  import java.math.BigDecimal;
50  import java.net.URL;
51  import java.sql.Array;
52  import java.sql.Blob;
53  import java.sql.CallableStatement;
54  import java.sql.Clob;
55  import java.sql.Connection;
56  import java.sql.Date;
57  import java.sql.ParameterMetaData;
58  import java.sql.Ref;
59  import java.sql.ResultSet;
60  import java.sql.ResultSetMetaData;
61  import java.sql.SQLException;
62  import java.sql.SQLWarning;
63  import java.sql.Time;
64  import java.sql.Timestamp;
65  import java.util.Calendar;
66  import java.util.Map;
67  
68  /**
69   * The JDBC3 members of a {@link CallableStatement}, decorated to throw an SQLException on command.
70   * 
71   * @author timp
72   * @since  5 Feb 2008
73   *
74   */
75  public abstract class ThrowingCallableStatementJdbc3 
76      extends Thrower 
77      implements CallableStatement {
78  
79    CallableStatement it = null;
80    
81    public Array getArray(int i) throws SQLException {
82      if (shouldThrow(this.getClass().getInterfaces()[0], "getArray"))
83        throw new SQLException("CallableStatement bombed");
84      return new ThrowingArray(it.getArray(i));
85    }
86  
87    public Array getArray(String parameterName) throws SQLException {
88      if (shouldThrow(this.getClass().getInterfaces()[0], "getArray"))
89        throw new SQLException("CallableStatement bombed");
90      return new ThrowingArray(it.getArray(parameterName));
91    }
92  
93    public BigDecimal getBigDecimal(int parameterIndex) throws SQLException {
94      if (shouldThrow(this.getClass().getInterfaces()[0], "getBigDecimal"))
95        throw new SQLException("CallableStatement bombed");
96      return it.getBigDecimal(parameterIndex);
97    }
98  
99    public BigDecimal getBigDecimal(String parameterName) throws SQLException {
100     if (shouldThrow(this.getClass().getInterfaces()[0], "getBigDecimal"))
101       throw new SQLException("CallableStatement bombed");
102     return it.getBigDecimal(parameterName);
103   }
104 
105   @SuppressWarnings("deprecation")
106   public BigDecimal getBigDecimal(int parameterIndex, int scale)
107           throws SQLException {
108     if (shouldThrow(this.getClass().getInterfaces()[0], "getBigDecimal"))
109       throw new SQLException("CallableStatement bombed");
110     return it.getBigDecimal(parameterIndex, scale);
111   }
112 
113   public Blob getBlob(int i) throws SQLException {
114     if (shouldThrow(this.getClass().getInterfaces()[0], "getBlob"))
115       throw new SQLException("CallableStatement bombed");
116     return new ThrowingBlob(it.getBlob(i));
117   }
118 
119   public Blob getBlob(String parameterName) throws SQLException {
120     if (shouldThrow(this.getClass().getInterfaces()[0], "getBlob"))
121       throw new SQLException("CallableStatement bombed");
122     return new ThrowingBlob(it.getBlob(parameterName));
123   }
124 
125   public boolean getBoolean(int parameterIndex) throws SQLException {
126     if (shouldThrow(this.getClass().getInterfaces()[0], "getBoolean"))
127       throw new SQLException("CallableStatement bombed");
128     return it.getBoolean(parameterIndex);
129   }
130 
131   public boolean getBoolean(String parameterName) throws SQLException {
132     if (shouldThrow(this.getClass().getInterfaces()[0], "getBoolean"))
133       throw new SQLException("CallableStatement bombed");
134     return it.getBoolean(parameterName);
135   }
136 
137   public byte getByte(int parameterIndex) throws SQLException {
138     if (shouldThrow(this.getClass().getInterfaces()[0], "getByte"))
139       throw new SQLException("CallableStatement bombed");
140     return it.getByte(parameterIndex);
141   }
142 
143   public byte getByte(String parameterName) throws SQLException {
144     if (shouldThrow(this.getClass().getInterfaces()[0], "getByte"))
145       throw new SQLException("CallableStatement bombed");
146     return it.getByte(parameterName);
147   }
148 
149   public byte[] getBytes(int parameterIndex) throws SQLException {
150     if (shouldThrow(this.getClass().getInterfaces()[0], "getBytes"))
151       throw new SQLException("CallableStatement bombed");
152     return it.getBytes(parameterIndex);
153   }
154 
155   public byte[] getBytes(String parameterName) throws SQLException {
156     if (shouldThrow(this.getClass().getInterfaces()[0], "getBytes"))
157       throw new SQLException("CallableStatement bombed");
158     return it.getBytes(parameterName);
159   }
160 
161   public Clob getClob(int i) throws SQLException {
162     if (shouldThrow(this.getClass().getInterfaces()[0], "getClob"))
163       throw new SQLException("CallableStatement bombed");
164     return new ThrowingClob(it.getClob(i));
165   }
166 
167   public Clob getClob(String parameterName) throws SQLException {
168     if (shouldThrow(this.getClass().getInterfaces()[0], "getClob"))
169       throw new SQLException("CallableStatement bombed");
170     return new ThrowingClob(it.getClob(parameterName));
171   }
172 
173   public Date getDate(int parameterIndex) throws SQLException {
174     if (shouldThrow(this.getClass().getInterfaces()[0], "getDate"))
175       throw new SQLException("CallableStatement bombed");
176     return it.getDate(parameterIndex);
177   }
178 
179   public Date getDate(String parameterName) throws SQLException {
180     if (shouldThrow(this.getClass().getInterfaces()[0], "getDate"))
181       throw new SQLException("CallableStatement bombed");
182     return it.getDate(parameterName);
183   }
184 
185   public Date getDate(int parameterIndex, Calendar cal) throws SQLException {
186     if (shouldThrow(this.getClass().getInterfaces()[0], "getDate"))
187       throw new SQLException("CallableStatement bombed");
188     return it.getDate(parameterIndex, cal);
189   }
190 
191   public Date getDate(String parameterName, Calendar cal) throws SQLException {
192     if (shouldThrow(this.getClass().getInterfaces()[0], "getDate"))
193       throw new SQLException("CallableStatement bombed");
194     return it.getDate(parameterName, cal);
195   }
196 
197   public double getDouble(int parameterIndex) throws SQLException {
198     if (shouldThrow(this.getClass().getInterfaces()[0], "getDouble"))
199       throw new SQLException("CallableStatement bombed");
200     return it.getDouble(parameterIndex);
201   }
202 
203   public double getDouble(String parameterName) throws SQLException {
204     if (shouldThrow(this.getClass().getInterfaces()[0], "getDouble"))
205       throw new SQLException("CallableStatement bombed");
206     return it.getDouble(parameterName);
207   }
208 
209   public float getFloat(int parameterIndex) throws SQLException {
210     if (shouldThrow(this.getClass().getInterfaces()[0], "getFloat"))
211       throw new SQLException("CallableStatement bombed");
212     return it.getFloat(parameterIndex);
213   }
214 
215   public float getFloat(String parameterName) throws SQLException {
216     if (shouldThrow(this.getClass().getInterfaces()[0], "getFloat"))
217       throw new SQLException("CallableStatement bombed");
218     return it.getFloat(parameterName);
219   }
220 
221   public int getInt(int parameterIndex) throws SQLException {
222     if (shouldThrow(this.getClass().getInterfaces()[0], "getInt"))
223       throw new SQLException("CallableStatement bombed");
224     return it.getInt(parameterIndex);
225   }
226 
227   public int getInt(String parameterName) throws SQLException {
228     if (shouldThrow(this.getClass().getInterfaces()[0], "getInt"))
229       throw new SQLException("CallableStatement bombed");
230     return it.getInt(parameterName);
231   }
232 
233   public long getLong(int parameterIndex) throws SQLException {
234     if (shouldThrow(this.getClass().getInterfaces()[0], "getLong"))
235       throw new SQLException("CallableStatement bombed");
236     return it.getLong(parameterIndex);
237   }
238 
239   public long getLong(String parameterName) throws SQLException {
240     if (shouldThrow(this.getClass().getInterfaces()[0], "getLong"))
241       throw new SQLException("CallableStatement bombed");
242     return it.getLong(parameterName);
243   }
244 
245   public Object getObject(int parameterIndex) throws SQLException {
246     if (shouldThrow(this.getClass().getInterfaces()[0], "getObject"))
247       throw new SQLException("CallableStatement bombed");
248     return it.getObject(parameterIndex);
249   }
250 
251   public Object getObject(String parameterName) throws SQLException {
252     if (shouldThrow(this.getClass().getInterfaces()[0], "getObject"))
253       throw new SQLException("CallableStatement bombed");
254     return it.getObject(parameterName);
255   }
256 
257   public Object getObject(int arg0, Map<String, Class<?>> arg1) throws SQLException {
258     if (shouldThrow(this.getClass().getInterfaces()[0], "getObject"))
259       throw new SQLException("CallableStatement bombed");
260     return it.getObject(arg0, arg1);
261   }
262 
263   public Object getObject(String arg0, Map<String, Class<?>> arg1) throws SQLException {
264     if (shouldThrow(this.getClass().getInterfaces()[0], "getObject"))
265       throw new SQLException("CallableStatement bombed");
266     return it.getObject(arg0, arg1);
267   }
268 
269   public Ref getRef(int i) throws SQLException {
270     if (shouldThrow(this.getClass().getInterfaces()[0], "getRef"))
271       throw new SQLException("CallableStatement bombed");
272     return new ThrowingRef(it.getRef(i));
273   }
274 
275   public Ref getRef(String parameterName) throws SQLException {
276     if (shouldThrow(this.getClass().getInterfaces()[0], "getRef"))
277       throw new SQLException("CallableStatement bombed");
278     return new ThrowingRef(it.getRef(parameterName));
279   }
280 
281   public short getShort(int parameterIndex) throws SQLException {
282     if (shouldThrow(this.getClass().getInterfaces()[0], "getShort"))
283       throw new SQLException("CallableStatement bombed");
284     return it.getShort(parameterIndex);
285   }
286 
287   public short getShort(String parameterName) throws SQLException {
288     if (shouldThrow(this.getClass().getInterfaces()[0], "getShort"))
289       throw new SQLException("CallableStatement bombed");
290     return it.getShort(parameterName);
291   }
292 
293   public String getString(int parameterIndex) throws SQLException {
294     if (shouldThrow(this.getClass().getInterfaces()[0], "getString"))
295       throw new SQLException("CallableStatement bombed");
296     return it.getString(parameterIndex);
297   }
298 
299   public String getString(String parameterName) throws SQLException {
300     if (shouldThrow(this.getClass().getInterfaces()[0], "getString"))
301       throw new SQLException("CallableStatement bombed");
302     return it.getString(parameterName);
303   }
304 
305   public Time getTime(int parameterIndex) throws SQLException {
306     if (shouldThrow(this.getClass().getInterfaces()[0], "getTime"))
307       throw new SQLException("CallableStatement bombed");
308     return it.getTime(parameterIndex);
309   }
310 
311   public Time getTime(String parameterName) throws SQLException {
312     if (shouldThrow(this.getClass().getInterfaces()[0], "getTime"))
313       throw new SQLException("CallableStatement bombed");
314     return it.getTime(parameterName);
315   }
316 
317   public Time getTime(int parameterIndex, Calendar cal) throws SQLException {
318     if (shouldThrow(this.getClass().getInterfaces()[0], "getTime"))
319       throw new SQLException("CallableStatement bombed");
320     return it.getTime(parameterIndex, cal);
321   }
322 
323   public Time getTime(String parameterName, Calendar cal) throws SQLException {
324     if (shouldThrow(this.getClass().getInterfaces()[0], "getTime"))
325       throw new SQLException("CallableStatement bombed");
326     return it.getTime(parameterName, cal);
327   }
328 
329   public Timestamp getTimestamp(int parameterIndex) throws SQLException {
330     if (shouldThrow(this.getClass().getInterfaces()[0], "getTimestamp"))
331       throw new SQLException("CallableStatement bombed");
332     return it.getTimestamp(parameterIndex);
333   }
334 
335   public Timestamp getTimestamp(String parameterName) throws SQLException {
336     if (shouldThrow(this.getClass().getInterfaces()[0], "getTimestamp"))
337       throw new SQLException("CallableStatement bombed");
338     return it.getTimestamp(parameterName);
339   }
340 
341   public Timestamp getTimestamp(int parameterIndex, Calendar cal)
342           throws SQLException {
343     if (shouldThrow(this.getClass().getInterfaces()[0], "getTimestamp"))
344       throw new SQLException("CallableStatement bombed");
345     return it.getTimestamp(parameterIndex, cal);
346   }
347 
348   public Timestamp getTimestamp(String parameterName, Calendar cal)
349           throws SQLException {
350     if (shouldThrow(this.getClass().getInterfaces()[0], "getTimestamp"))
351       throw new SQLException("CallableStatement bombed");
352     return it.getTimestamp(parameterName, cal);
353   }
354 
355   public URL getURL(int parameterIndex) throws SQLException {
356     if (shouldThrow(this.getClass().getInterfaces()[0], "getURL"))
357       throw new SQLException("CallableStatement bombed");
358     return it.getURL(parameterIndex);
359     
360   }
361   public URL getURL(String parameterName) throws SQLException {
362     if (shouldThrow(this.getClass().getInterfaces()[0], "getURL"))
363       throw new SQLException("CallableStatement bombed");
364     return it.getURL(parameterName);    
365   }
366   public void registerOutParameter(int parameterIndex, int sqlType, int scale) throws SQLException {
367     if (shouldThrow(this.getClass().getInterfaces()[0], "registerOutParameter"))
368       throw new SQLException("CallableStatement bombed");
369     it.registerOutParameter(parameterIndex, sqlType, scale);
370     
371   }
372   public void registerOutParameter(int paramIndex, int sqlType, String typeName) throws SQLException {
373     if (shouldThrow(this.getClass().getInterfaces()[0], "registerOutParameter"))
374       throw new SQLException("CallableStatement bombed");
375     it.registerOutParameter(paramIndex, sqlType, typeName);
376     
377   }
378   public void registerOutParameter(int parameterIndex, int sqlType) throws SQLException {
379     if (shouldThrow(this.getClass().getInterfaces()[0], "registerOutParameter"))
380       throw new SQLException("CallableStatement bombed");
381     it.registerOutParameter(parameterIndex, sqlType);
382     
383   }
384   public void registerOutParameter(String parameterName, int sqlType, int scale) throws SQLException {
385     if (shouldThrow(this.getClass().getInterfaces()[0], "registerOutParameter"))
386       throw new SQLException("CallableStatement bombed");
387     it.registerOutParameter(parameterName, sqlType, scale);
388     
389   }
390   public void registerOutParameter(String parameterName, int sqlType, String typeName) throws SQLException {
391     if (shouldThrow(this.getClass().getInterfaces()[0], "registerOutParameter"))
392       throw new SQLException("CallableStatement bombed");
393     it.registerOutParameter(parameterName, sqlType, typeName);
394     
395   }
396   public void registerOutParameter(String parameterName, int sqlType) throws SQLException {
397     if (shouldThrow(this.getClass().getInterfaces()[0], "registerOutParameter"))
398       throw new SQLException("CallableStatement bombed");
399     it.registerOutParameter(parameterName, sqlType);
400     
401   }
402   public void setAsciiStream(String parameterName, InputStream x, int length) throws SQLException {
403     if (shouldThrow(this.getClass().getInterfaces()[0], "setAsciiStream"))
404       throw new SQLException("CallableStatement bombed");
405     it.setAsciiStream(parameterName, x, length);
406     
407   }
408   public void setBigDecimal(String parameterName, BigDecimal x) throws SQLException {
409     if (shouldThrow(this.getClass().getInterfaces()[0], "setBigDecimal"))
410       throw new SQLException("CallableStatement bombed");
411     it.setBigDecimal(parameterName, x);
412     
413   }
414   public void setBinaryStream(String parameterName, InputStream x, int length) throws SQLException {
415     if (shouldThrow(this.getClass().getInterfaces()[0], "setBinaryStream"))
416       throw new SQLException("CallableStatement bombed");
417     it.setBinaryStream(parameterName, x, length);
418   }
419   public void setBoolean(String parameterName, boolean x) throws SQLException {
420     if (shouldThrow(this.getClass().getInterfaces()[0], "setBoolean"))
421       throw new SQLException("CallableStatement bombed");
422     it.setBoolean(parameterName, x);
423     
424   }
425   public void setByte(String parameterName, byte x) throws SQLException {
426     if (shouldThrow(this.getClass().getInterfaces()[0], "setByte"))
427       throw new SQLException("CallableStatement bombed");
428     it.setByte(parameterName, x);
429   }
430   public void setBytes(String parameterName, byte[] x) throws SQLException {
431     if (shouldThrow(this.getClass().getInterfaces()[0], "setBytes"))
432       throw new SQLException("CallableStatement bombed");
433     it.setBytes(parameterName, x);
434   }
435   public void setCharacterStream(String parameterName, Reader reader, int length) throws SQLException {
436     if (shouldThrow(this.getClass().getInterfaces()[0], "setCharacterStream"))
437       throw new SQLException("CallableStatement bombed");
438     it.setCharacterStream(parameterName, reader, length);
439   }
440   public void setDate(String parameterName, Date x, Calendar cal) throws SQLException {
441     if (shouldThrow(this.getClass().getInterfaces()[0], "setDate"))
442       throw new SQLException("CallableStatement bombed");
443     it.setDate(parameterName, x, cal);
444   }
445   public void setDate(String parameterName, Date x) throws SQLException {
446     if (shouldThrow(this.getClass().getInterfaces()[0], "setDate"))
447       throw new SQLException("CallableStatement bombed");
448     it.setDate(parameterName, x);
449     
450   }
451   public void setDouble(String parameterName, double x) throws SQLException {
452     if (shouldThrow(this.getClass().getInterfaces()[0], "setDouble"))
453       throw new SQLException("CallableStatement bombed");
454     it.setDouble(parameterName, x);
455   }
456   public void setFloat(String parameterName, float x) throws SQLException {
457     if (shouldThrow(this.getClass().getInterfaces()[0], "setFloat"))
458       throw new SQLException("CallableStatement bombed");
459     it.setFloat(parameterName, x);
460   }
461   public void setInt(String parameterName, int x) throws SQLException {
462     if (shouldThrow(this.getClass().getInterfaces()[0], "setInt"))
463       throw new SQLException("CallableStatement bombed");
464     it.setInt(parameterName, x);
465   }
466   public void setLong(String parameterName, long x) throws SQLException {
467     if (shouldThrow(this.getClass().getInterfaces()[0], "setLong"))
468       throw new SQLException("CallableStatement bombed");
469     it.setLong(parameterName, x);
470   }
471   public void setNull(String parameterName, int sqlType, String typeName) throws SQLException {
472     if (shouldThrow(this.getClass().getInterfaces()[0], "setNull"))
473       throw new SQLException("CallableStatement bombed");
474     it.setNull(parameterName, sqlType, typeName);
475   }
476   public void setNull(String parameterName, int sqlType) throws SQLException {
477     if (shouldThrow(this.getClass().getInterfaces()[0], "setNull"))
478       throw new SQLException("CallableStatement bombed");
479     it.setNull(parameterName, sqlType);
480   }
481   public void setObject(String parameterName, Object x, int targetSqlType, int scale) throws SQLException {
482     if (shouldThrow(this.getClass().getInterfaces()[0], "setObject"))
483       throw new SQLException("CallableStatement bombed");
484     it.setObject(parameterName, x, targetSqlType, scale);
485   }
486   public void setObject(String parameterName, Object x, int targetSqlType) throws SQLException {
487     if (shouldThrow(this.getClass().getInterfaces()[0], "setObject"))
488       throw new SQLException("CallableStatement bombed");
489     it.setObject(parameterName, x, targetSqlType);
490   }
491   public void setObject(String parameterName, Object x) throws SQLException {
492     if (shouldThrow(this.getClass().getInterfaces()[0], "setObject"))
493       throw new SQLException("CallableStatement bombed");
494     it.setObject(parameterName, x);
495   }
496   public void setShort(String parameterName, short x) throws SQLException {
497     if (shouldThrow(this.getClass().getInterfaces()[0], "setShort"))
498       throw new SQLException("CallableStatement bombed");
499     it.setShort(parameterName, x);
500   }
501   public void setString(String parameterName, String x) throws SQLException {
502     if (shouldThrow(this.getClass().getInterfaces()[0], "setString"))
503       throw new SQLException("CallableStatement bombed");
504     it.setString(parameterName, x);
505   }
506   public void setTime(String parameterName, Time x, Calendar cal) throws SQLException {
507     if (shouldThrow(this.getClass().getInterfaces()[0], "setTime"))
508       throw new SQLException("CallableStatement bombed");
509     it.setTime(parameterName, x, cal);
510     
511   }
512   public void setTime(String parameterName, Time x) throws SQLException {
513     if (shouldThrow(this.getClass().getInterfaces()[0], "setTime"))
514       throw new SQLException("CallableStatement bombed");
515     it.setTime(parameterName, x);
516   }
517   public void setTimestamp(String parameterName, Timestamp x, Calendar cal) throws SQLException {
518     if (shouldThrow(this.getClass().getInterfaces()[0], "setTimestamp"))
519       throw new SQLException("CallableStatement bombed");
520     it.setTimestamp(parameterName, x, cal);
521     
522   }
523   public void setTimestamp(String parameterName, Timestamp x) throws SQLException {
524     if (shouldThrow(this.getClass().getInterfaces()[0], "setTimestamp"))
525       throw new SQLException("CallableStatement bombed");
526     it.setTimestamp(parameterName, x);
527   }
528   public void setURL(String parameterName, URL val) throws SQLException {
529     if (shouldThrow(this.getClass().getInterfaces()[0], "setURL"))
530       throw new SQLException("CallableStatement bombed");
531     it.setURL(parameterName, val);
532   }
533   public boolean wasNull() throws SQLException {
534     if (shouldThrow(this.getClass().getInterfaces()[0], "wasNull"))
535       throw new SQLException("CallableStatement bombed");
536     return it.wasNull();
537   }
538   public void addBatch() throws SQLException {
539     if (shouldThrow(this.getClass().getInterfaces()[0], "addBatch"))
540       throw new SQLException("CallableStatement bombed");
541     it.addBatch();
542   }
543   public void clearParameters() throws SQLException {
544     if (shouldThrow(this.getClass().getInterfaces()[0], "clearParameters"))
545       throw new SQLException("CallableStatement bombed");
546     it.clearParameters();
547   }
548   public boolean execute() throws SQLException {
549     if (shouldThrow(this.getClass().getInterfaces()[0], "execute"))
550       throw new SQLException("CallableStatement bombed");
551     return it.execute();
552   }
553   public ResultSet executeQuery() throws SQLException {
554     if (shouldThrow(this.getClass().getInterfaces()[0], "executeQuery"))
555       throw new SQLException("CallableStatement bombed");
556     return it.executeQuery();
557   }
558   public int executeUpdate() throws SQLException {
559     if (shouldThrow(this.getClass().getInterfaces()[0], "executeUpdate"))
560       throw new SQLException("CallableStatement bombed");
561     return it.executeUpdate();
562   }
563   public ResultSetMetaData getMetaData() throws SQLException {
564     if (shouldThrow(this.getClass().getInterfaces()[0], "getMetaData"))
565       throw new SQLException("CallableStatement bombed");
566     return it.getMetaData();
567   }
568   public ParameterMetaData getParameterMetaData() throws SQLException {
569     if (shouldThrow(this.getClass().getInterfaces()[0], "getParameterMetaData"))
570       throw new SQLException("CallableStatement bombed");
571     return new ThrowingParameterMetaData(it.getParameterMetaData());
572   }
573   public void setArray(int i, Array x) throws SQLException {
574     if (shouldThrow(this.getClass().getInterfaces()[0], "setArray"))
575       throw new SQLException("CallableStatement bombed");
576     it.setArray(i, x);
577   }
578   public void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException {
579     if (shouldThrow(this.getClass().getInterfaces()[0], "setAsciiStream"))
580       throw new SQLException("CallableStatement bombed");
581     it.setAsciiStream(parameterIndex, x, length);
582   }
583   public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException {
584     if (shouldThrow(this.getClass().getInterfaces()[0], "setBigDecimal"))
585       throw new SQLException("CallableStatement bombed");
586     it.setBigDecimal(parameterIndex, x);
587   }
588   public void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException {
589     if (shouldThrow(this.getClass().getInterfaces()[0], "setBinaryStream"))
590       throw new SQLException("CallableStatement bombed");
591     it.setBinaryStream(parameterIndex, x, length);
592   }
593   public void setBlob(int i, Blob x) throws SQLException {
594     if (shouldThrow(this.getClass().getInterfaces()[0], "setBlob"))
595       throw new SQLException("CallableStatement bombed");
596     it.setBlob(i, x);
597   }
598   public void setBoolean(int parameterIndex, boolean x) throws SQLException {
599     if (shouldThrow(this.getClass().getInterfaces()[0], "setBoolean"))
600       throw new SQLException("CallableStatement bombed");
601     it.setBoolean(parameterIndex, x);
602   }
603   public void setByte(int parameterIndex, byte x) throws SQLException {
604     if (shouldThrow(this.getClass().getInterfaces()[0], "setByte"))
605       throw new SQLException("CallableStatement bombed");
606     it.setByte(parameterIndex, x);
607   }
608   public void setBytes(int parameterIndex, byte[] x) throws SQLException {
609     if (shouldThrow(this.getClass().getInterfaces()[0], "setBytes"))
610       throw new SQLException("CallableStatement bombed");
611     it.setBytes(parameterIndex, x);
612   }
613   public void setCharacterStream(int parameterIndex, Reader reader, int length) throws SQLException {
614     if (shouldThrow(this.getClass().getInterfaces()[0], "setCharacterStream"))
615       throw new SQLException("CallableStatement bombed");
616     it.setCharacterStream(parameterIndex, reader, length);
617   }
618   public void setClob(int i, Clob x) throws SQLException {
619     if (shouldThrow(this.getClass().getInterfaces()[0], "setClob"))
620       throw new SQLException("CallableStatement bombed");
621     it.setClob(i, x);
622   }
623   public void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException {
624     if (shouldThrow(this.getClass().getInterfaces()[0], "setDate"))
625       throw new SQLException("CallableStatement bombed");
626     it.setDate(parameterIndex, x, cal);
627     
628   }
629   public void setDate(int parameterIndex, Date x) throws SQLException {
630     if (shouldThrow(this.getClass().getInterfaces()[0], "setDate"))
631       throw new SQLException("CallableStatement bombed");
632     it.setDate(parameterIndex, x);
633   }
634   public void setDouble(int parameterIndex, double x) throws SQLException {
635     if (shouldThrow(this.getClass().getInterfaces()[0], "setDouble"))
636       throw new SQLException("CallableStatement bombed");
637     it.setDouble(parameterIndex, x);
638   }
639   public void setFloat(int parameterIndex, float x) throws SQLException {
640     if (shouldThrow(this.getClass().getInterfaces()[0], "setFloat"))
641       throw new SQLException("CallableStatement bombed");
642     it.setFloat(parameterIndex, x);
643   }
644   public void setInt(int parameterIndex, int x) throws SQLException {
645     if (shouldThrow(this.getClass().getInterfaces()[0], "setInt"))
646       throw new SQLException("CallableStatement bombed");
647     it.setInt(parameterIndex, x);
648   }
649   public void setLong(int parameterIndex, long x) throws SQLException {
650     if (shouldThrow(this.getClass().getInterfaces()[0], "setLong"))
651       throw new SQLException("CallableStatement bombed");
652     it.setLong(parameterIndex, x);
653   }
654   public void setNull(int paramIndex, int sqlType, String typeName) throws SQLException {
655     if (shouldThrow(this.getClass().getInterfaces()[0], "setNull"))
656       throw new SQLException("CallableStatement bombed");
657     it.setNull(paramIndex, sqlType, typeName);
658   }
659   public void setNull(int parameterIndex, int sqlType) throws SQLException {
660     if (shouldThrow(this.getClass().getInterfaces()[0], "setNull"))
661       throw new SQLException("CallableStatement bombed");
662     it.setNull(parameterIndex, sqlType);
663   }
664   public void setObject(int parameterIndex, Object x, int targetSqlType, int scale) throws SQLException {
665     if (shouldThrow(this.getClass().getInterfaces()[0], "setObject"))
666       throw new SQLException("CallableStatement bombed");
667     it.setObject(parameterIndex, x, targetSqlType, scale);
668   }
669   public void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException {
670     if (shouldThrow(this.getClass().getInterfaces()[0], "setObject"))
671       throw new SQLException("CallableStatement bombed");
672     it.setObject(parameterIndex, x, targetSqlType);
673   }
674   public void setObject(int parameterIndex, Object x) throws SQLException {
675     if (shouldThrow(this.getClass().getInterfaces()[0], "setObject"))
676       throw new SQLException("CallableStatement bombed");
677     it.setObject(parameterIndex, x);
678     
679   }
680   public void setRef(int i, Ref x) throws SQLException {
681     if (shouldThrow(this.getClass().getInterfaces()[0], "setRef"))
682       throw new SQLException("CallableStatement bombed");
683     it.setRef(i, x);
684   }
685   public void setShort(int parameterIndex, short x) throws SQLException {
686     if (shouldThrow(this.getClass().getInterfaces()[0], "setShort"))
687       throw new SQLException("CallableStatement bombed");
688     it.setShort(parameterIndex, x);
689   }
690   public void setString(int parameterIndex, String x) throws SQLException {
691     if (shouldThrow(this.getClass().getInterfaces()[0], "setString"))
692       throw new SQLException("CallableStatement bombed");
693     it.setString(parameterIndex, x);
694   }
695   public void setTime(int parameterIndex, Time x, Calendar cal) throws SQLException {
696     if (shouldThrow(this.getClass().getInterfaces()[0], "setTime"))
697       throw new SQLException("CallableStatement bombed");
698     it.setTime(parameterIndex, x, cal);
699   }
700   public void setTime(int parameterIndex, Time x) throws SQLException {
701     if (shouldThrow(this.getClass().getInterfaces()[0], "setTime"))
702       throw new SQLException("CallableStatement bombed");
703     it.setTime(parameterIndex, x);
704   }
705   public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws SQLException {
706     if (shouldThrow(this.getClass().getInterfaces()[0], "setTimestamp"))
707       throw new SQLException("CallableStatement bombed");
708     it.setTimestamp(parameterIndex, x, cal);
709   }
710   public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException {
711     if (shouldThrow(this.getClass().getInterfaces()[0], "setTimestamp"))
712       throw new SQLException("CallableStatement bombed");
713     it.setTimestamp(parameterIndex, x);
714   }
715   @SuppressWarnings("deprecation")
716   public void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException {
717     if (shouldThrow(this.getClass().getInterfaces()[0], "setUnicodeStream"))
718       throw new SQLException("CallableStatement bombed");
719     it.setUnicodeStream(parameterIndex, x, length);
720   }
721   public void setURL(int parameterIndex, URL x) throws SQLException {
722     if (shouldThrow(this.getClass().getInterfaces()[0], "setURL"))
723       throw new SQLException("CallableStatement bombed");
724     it.setURL(parameterIndex, x);
725   }
726   public void addBatch(String sql) throws SQLException {
727     if (shouldThrow(this.getClass().getInterfaces()[0], "addBatch"))
728       throw new SQLException("CallableStatement bombed");
729     it.addBatch(sql);
730   }
731   public void cancel() throws SQLException {
732     if (shouldThrow(this.getClass().getInterfaces()[0], "cancel"))
733       throw new SQLException("CallableStatement bombed");
734     it.cancel();
735   }
736   public void clearBatch() throws SQLException {
737     if (shouldThrow(this.getClass().getInterfaces()[0], "clearBatch"))
738       throw new SQLException("CallableStatement bombed");
739     it.clearBatch();
740   }
741   public void clearWarnings() throws SQLException {
742     if (shouldThrow(this.getClass().getInterfaces()[0], "clearWarnings"))
743       throw new SQLException("CallableStatement bombed");
744     it.clearWarnings();
745   }
746   public void close() throws SQLException {
747     if (shouldThrow(this.getClass().getInterfaces()[0], "close"))
748       throw new SQLException("CallableStatement bombed");
749     it.close();
750   }
751   public boolean execute(String sql, int autoGeneratedKeys) throws SQLException {
752     if (shouldThrow(this.getClass().getInterfaces()[0], "execute"))
753       throw new SQLException("CallableStatement bombed");
754     return it.execute(sql, autoGeneratedKeys);
755   }
756   public boolean execute(String sql, int[] columnIndexes) throws SQLException {
757     if (shouldThrow(this.getClass().getInterfaces()[0], "execute"))
758       throw new SQLException("CallableStatement bombed");
759     return it.execute(sql, columnIndexes);
760   }
761   public boolean execute(String sql, String[] columnNames) throws SQLException {
762     if (shouldThrow(this.getClass().getInterfaces()[0], "execute"))
763       throw new SQLException("CallableStatement bombed");
764     return it.execute(sql, columnNames);
765   }
766   public boolean execute(String sql) throws SQLException {
767     if (shouldThrow(this.getClass().getInterfaces()[0], "execute"))
768       throw new SQLException("CallableStatement bombed");
769     return it.execute(sql);
770   }
771   public int[] executeBatch() throws SQLException {
772     if (shouldThrow(this.getClass().getInterfaces()[0], "executeBatch"))
773       throw new SQLException("CallableStatement bombed");
774     return it.executeBatch();
775   }
776   public ResultSet executeQuery(String sql) throws SQLException {
777     if (shouldThrow(this.getClass().getInterfaces()[0], "executeQuery"))
778       throw new SQLException("CallableStatement bombed");
779     return new ThrowingResultSet(it.executeQuery(sql));
780   }
781   public int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException {
782     if (shouldThrow(this.getClass().getInterfaces()[0], "executeUpdate"))
783       throw new SQLException("CallableStatement bombed");
784     return it.executeUpdate(sql, autoGeneratedKeys);
785   }
786   public int executeUpdate(String sql, int[] columnIndexes) throws SQLException {
787     if (shouldThrow(this.getClass().getInterfaces()[0], "executeUpdate"))
788       throw new SQLException("CallableStatement bombed");
789     return it.executeUpdate(sql, columnIndexes);
790   }
791   public int executeUpdate(String sql, String[] columnNames) throws SQLException {
792     if (shouldThrow(this.getClass().getInterfaces()[0], "executeUpdate"))
793       throw new SQLException("CallableStatement bombed");
794     return it.executeUpdate(sql, columnNames);
795   }
796   public int executeUpdate(String sql) throws SQLException {
797     if (shouldThrow(this.getClass().getInterfaces()[0], "executeUpdate"))
798       throw new SQLException("CallableStatement bombed");
799     return it.executeUpdate(sql);
800   }
801 
802   public Connection getConnection() throws SQLException {
803     if (shouldThrow(this.getClass().getInterfaces()[0], "getConnection"))
804       throw new SQLException("CallableStatement bombed");
805     return new ThrowingConnection(it.getConnection());
806   }
807   public int getFetchDirection() throws SQLException {
808     if (shouldThrow(this.getClass().getInterfaces()[0], "getFetchDirection"))
809       throw new SQLException("CallableStatement bombed");
810     return it.getFetchDirection();
811   }
812   public int getFetchSize() throws SQLException {
813     if (shouldThrow(this.getClass().getInterfaces()[0], "getFetchSize"))
814       throw new SQLException("CallableStatement bombed");
815     return it.getFetchSize();
816   }
817   public ResultSet getGeneratedKeys() throws SQLException {
818     if (shouldThrow(this.getClass().getInterfaces()[0], "getGeneratedKeys"))
819       throw new SQLException("CallableStatement bombed");
820     return new ThrowingResultSet(it.getGeneratedKeys());
821   }
822   public int getMaxFieldSize() throws SQLException {
823     if (shouldThrow(this.getClass().getInterfaces()[0], "getMaxFieldSize"))
824       throw new SQLException("CallableStatement bombed");
825     return it.getMaxFieldSize();
826   }
827   public int getMaxRows() throws SQLException {
828     if (shouldThrow(this.getClass().getInterfaces()[0], "getMaxRows"))
829       throw new SQLException("CallableStatement bombed");
830     return it.getMaxRows();
831   }
832   public boolean getMoreResults() throws SQLException {
833     if (shouldThrow(this.getClass().getInterfaces()[0], "getMoreResults"))
834       throw new SQLException("CallableStatement bombed");
835     return it.getMoreResults();
836   }
837   public boolean getMoreResults(int current) throws SQLException {
838     if (shouldThrow(this.getClass().getInterfaces()[0], "getMoreResults"))
839       throw new SQLException("CallableStatement bombed");
840     return it.getMoreResults(current);
841   }
842   public int getQueryTimeout() throws SQLException {
843     if (shouldThrow(this.getClass().getInterfaces()[0], "getQueryTimeout"))
844       throw new SQLException("CallableStatement bombed");
845     return it.getQueryTimeout();
846   }
847   public ResultSet getResultSet() throws SQLException {
848     if (shouldThrow(this.getClass().getInterfaces()[0], "getResultSet"))
849       throw new SQLException("CallableStatement bombed");
850     return new ThrowingResultSet(it.getResultSet());
851   }
852   public int getResultSetConcurrency() throws SQLException {
853     if (shouldThrow(this.getClass().getInterfaces()[0], "getResultSetConcurrency"))
854       throw new SQLException("CallableStatement bombed");
855     return it.getResultSetConcurrency();
856   }
857   public int getResultSetHoldability() throws SQLException {
858     if (shouldThrow(this.getClass().getInterfaces()[0], "getResultSetHoldability"))
859       throw new SQLException("CallableStatement bombed");
860     return it.getResultSetHoldability();
861   }
862   public int getResultSetType() throws SQLException {
863     if (shouldThrow(this.getClass().getInterfaces()[0], "getResultSetType"))
864       throw new SQLException("CallableStatement bombed");
865     return it.getResultSetType();
866   }
867   public int getUpdateCount() throws SQLException {
868     if (shouldThrow(this.getClass().getInterfaces()[0], "getUpdateCount"))
869       throw new SQLException("CallableStatement bombed");
870     return it.getUpdateCount();
871   }
872   public SQLWarning getWarnings() throws SQLException {
873     if (shouldThrow(this.getClass().getInterfaces()[0], "getWarnings"))
874       throw new SQLException("CallableStatement bombed");
875     return it.getWarnings();
876   }
877   public void setCursorName(String name) throws SQLException {
878     if (shouldThrow(this.getClass().getInterfaces()[0], "setCursorName"))
879       throw new SQLException("CallableStatement bombed");
880     it.setCursorName(name);
881   }
882   public void setEscapeProcessing(boolean enable) throws SQLException {
883     if (shouldThrow(this.getClass().getInterfaces()[0], "setEscapeProcessing"))
884       throw new SQLException("CallableStatement bombed");
885     it.setEscapeProcessing(enable);
886   }
887   public void setFetchDirection(int direction) throws SQLException {
888     if (shouldThrow(this.getClass().getInterfaces()[0], "setFetchDirection"))
889       throw new SQLException("CallableStatement bombed");
890     it.setFetchDirection(direction);
891     
892   }
893   public void setFetchSize(int rows) throws SQLException {
894     if (shouldThrow(this.getClass().getInterfaces()[0], "setFetchSize"))
895       throw new SQLException("CallableStatement bombed");
896     it.setFetchSize(rows);
897   }
898   public void setMaxFieldSize(int max) throws SQLException {
899     if (shouldThrow(this.getClass().getInterfaces()[0], "setMaxFieldSize"))
900       throw new SQLException("CallableStatement bombed");
901     it.setMaxFieldSize(max);
902   }
903   public void setMaxRows(int max) throws SQLException {
904     if (shouldThrow(this.getClass().getInterfaces()[0], "setMaxRows"))
905       throw new SQLException("CallableStatement bombed");
906     it.setMaxRows(max);
907   }
908   public void setQueryTimeout(int seconds) throws SQLException {
909     if (shouldThrow(this.getClass().getInterfaces()[0], "setQueryTimeout"))
910       throw new SQLException("CallableStatement bombed");
911     it.setQueryTimeout(seconds);
912   }
913 }