View Javadoc

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 }