1 /*
2 * $Source: /usr/cvsroot/melati/throwing-jdbc/src/main/java/org/melati/poem/dbms/test/sql/ThrowingBlobJdbc3.java,v $
3 * $Revision: 1.4 $
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.OutputStream;
49 import java.sql.Blob;
50 import java.sql.SQLException;
51
52 /**
53 * The JDBC3 members of a {@link Blob}, decorated to throw an SQLException on command.
54 *
55 * @author timp
56 * @since 5 Feb 2008
57 *
58 */
59 public abstract class ThrowingBlobJdbc3
60 extends Thrower
61 implements Blob {
62
63 Blob it = null;
64
65 /**
66 * {@inheritDoc}
67 * @see java.sql.Blob#getBinaryStream()
68 */
69 public InputStream getBinaryStream() throws SQLException {
70 if (shouldThrow(this.getClass().getInterfaces()[0], "getBinaryStream"))
71 throw new SQLException("Blob bombed");
72 return it.getBinaryStream();
73 }
74
75 /**
76 * {@inheritDoc}
77 * @see java.sql.Blob#getBytes(long, int)
78 */
79 public byte[] getBytes(long pos, int length) throws SQLException {
80 if (shouldThrow(this.getClass().getInterfaces()[0], "getBytes"))
81 throw new SQLException("Blob bombed");
82 return it.getBytes(pos, length);
83 }
84
85 /**
86 * {@inheritDoc}
87 * @see java.sql.Blob#length()
88 */
89 public long length() throws SQLException {
90 if (shouldThrow(this.getClass().getInterfaces()[0], "length"))
91 throw new SQLException("Blob bombed");
92 return it.length();
93 }
94
95 /**
96 * {@inheritDoc}
97 * @see java.sql.Blob#position(byte[], long)
98 */
99 public long position(byte[] pattern, long start) throws SQLException {
100 if (shouldThrow(this.getClass().getInterfaces()[0], "position"))
101 throw new SQLException("Blob bombed");
102 return it.position(pattern, start);
103 }
104
105 /**
106 * {@inheritDoc}
107 * @see java.sql.Blob#position(java.sql.Blob, long)
108 */
109 public long position(Blob pattern, long start) throws SQLException {
110 if (shouldThrow(this.getClass().getInterfaces()[0], "position"))
111 throw new SQLException("Blob bombed");
112 return it.position(pattern, start);
113 }
114
115 /**
116 * {@inheritDoc}
117 * @see java.sql.Blob#setBinaryStream(long)
118 */
119 public OutputStream setBinaryStream(long pos) throws SQLException {
120 if (shouldThrow(this.getClass().getInterfaces()[0], "setBinaryStream"))
121 throw new SQLException("Blob bombed");
122 return it.setBinaryStream(pos);
123 }
124
125 /**
126 * {@inheritDoc}
127 * @see java.sql.Blob#setBytes(long, byte[])
128 */
129 public int setBytes(long pos, byte[] bytes) throws SQLException {
130 if (shouldThrow(this.getClass().getInterfaces()[0], "setBytes"))
131 throw new SQLException("Blob bombed");
132 return it.setBytes(pos, bytes);
133 }
134
135 /**
136 * {@inheritDoc}
137 * @see java.sql.Blob#setBytes(long, byte[], int, int)
138 */
139 public int setBytes(long pos, byte[] bytes, int offset, int len)
140 throws SQLException {
141 if (shouldThrow(this.getClass().getInterfaces()[0], "setBytes"))
142 throw new SQLException("Blob bombed");
143 return it.setBytes(pos, bytes, offset, len);
144 }
145
146 /**
147 * {@inheritDoc}
148 * @see java.sql.Blob#truncate(long)
149 */
150 public void truncate(long len) throws SQLException {
151 if (shouldThrow(this.getClass().getInterfaces()[0], "truncate"))
152 throw new SQLException("Blob bombed");
153 it.truncate(len);
154 }
155
156 }