1 /* 2 * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javax.sql.rowset; 27 28 import java.sql.SQLException; 29 30 /** 31 * An extension of <code>SQLException</code> that provides information 32 * about database warnings set on <code>RowSet</code> objects. 33 * Warnings are silently chained to the object whose method call 34 * caused it to be reported. 35 * This class complements the <code>SQLWarning</code> class. 36 * <P> 37 * Rowset warnings may be retrieved from <code>JdbcRowSet</code>, 38 * <code>CachedRowSet</code>™, 39 * <code>WebRowSet</code>, <code>FilteredRowSet</code>, or <code>JoinRowSet</code> 40 * implementations. To retrieve the first warning reported on any 41 * <code>RowSet</code> 42 * implementation, use the method <code>getRowSetWarnings</code> defined 43 * in the <code>JdbcRowSet</code> interface or the <code>CachedRowSet</code> 44 * interface. To retrieve a warning chained to the first warning, use the 45 * <code>RowSetWarning</code> method 46 * <code>getNextWarning</code>. To retrieve subsequent warnings, call 47 * <code>getNextWarning</code> on each <code>RowSetWarning</code> object that is 48 * returned. 49 * <P> 50 * The inherited methods <code>getMessage</code>, <code>getSQLState</code>, 51 * and <code>getErrorCode</code> retrieve information contained in a 52 * <code>RowSetWarning</code> object. 53 * 54 * @since 1.5 55 */ 56 public class RowSetWarning extends SQLException { 57 58 /** 59 * Constructs a <code>RowSetWarning</code> object 60 * with the given value for the reason; SQLState defaults to null, 61 * and vendorCode defaults to 0. 62 * 63 * @param reason a <code>String</code> object giving a description 64 * of the warning; if the <code>String</code> is <code>null</code>, 65 * this constructor behaves like the default (zero parameter) 66 * <code>RowSetWarning</code> constructor 67 */ 68 public RowSetWarning(String reason) { 69 super(reason); 70 } 71 72 /** 73 * Constructs a default <code>RowSetWarning</code> object. The reason 74 * defaults to <code>null</code>, SQLState defaults to null and vendorCode 75 * defaults to 0. 76 */ 77 public RowSetWarning() { 78 super(); 79 } 80 81 /** 82 * Constructs a <code>RowSetWarning</code> object initialized with the 83 * given values for the reason and SQLState. The vendor code defaults to 0. 84 * 85 * If the <code>reason</code> or <code>SQLState</code> parameters are <code>null</code>, 86 * this constructor behaves like the default (zero parameter) 87 * <code>RowSetWarning</code> constructor. 88 * 89 * @param reason a <code>String</code> giving a description of the 90 * warning; 91 * @param SQLState an XOPEN code identifying the warning; if a non standard 92 * XOPEN <i>SQLState</i> is supplied, no exception is thrown. 93 */ 94 public RowSetWarning(java.lang.String reason, java.lang.String SQLState) { 95 super(reason, SQLState); 96 } 97 98 /** 99 * Constructs a fully specified <code>RowSetWarning</code> object initialized 100 * with the given values for the reason, SQLState and vendorCode. 101 * 102 * If the <code>reason</code>, or the <code>SQLState</code> 103 * parameters are <code>null</code>, this constructor behaves like the default 104 * (zero parameter) <code>RowSetWarning</code> constructor. 105 * 106 * @param reason a <code>String</code> giving a description of the 107 * warning; 108 * @param SQLState an XOPEN code identifying the warning; if a non standard 109 * XOPEN <i>SQLState</i> is supplied, no exception is thrown. 110 * @param vendorCode a database vendor-specific warning code 111 */ 112 public RowSetWarning(java.lang.String reason, java.lang.String SQLState, int vendorCode) { 113 super(reason, SQLState, vendorCode); 114 } 115 116 /** 117 * Retrieves the warning chained to this <code>RowSetWarning</code> 118 * object. 119 * 120 * @return the <code>RowSetWarning</code> object chained to this one; if no 121 * <code>RowSetWarning</code> object is chained to this one, 122 * <code>null</code> is returned (default value) 123 * @see #setNextWarning 124 */ 125 public RowSetWarning getNextWarning() { 126 SQLException warning = getNextException(); 127 if ( warning == null || warning instanceof RowSetWarning) { 128 return (RowSetWarning)warning; 129 } else { 130 // The chained value isn't a RowSetWarning. 131 // This is a programming error by whoever added it to 132 // the RowSetWarning chain. We throw a Java "Error". 133 throw new Error("RowSetWarning chain holds value that is not a RowSetWarning: "); 134 } 135 } 136 137 /** 138 * Sets <i>warning</i> as the next warning, that is, the warning chained 139 * to this <code>RowSetWarning</code> object. 140 * 141 * @param warning the <code>RowSetWarning</code> object to be set as the 142 * next warning; if the <code>RowSetWarning</code> is null, this 143 * represents the finish point in the warning chain 144 * @see #getNextWarning 145 */ 146 public void setNextWarning(RowSetWarning warning) { 147 setNextException(warning); 148 } 149 150 static final long serialVersionUID = 6678332766434564774L; 151 }