1 /*
  2  * Copyright (c) 2005, 2020, 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 /*
 27  * Created on Apr 28, 2005
 28  */
 29 package javax.sql;
 30 
 31 import java.sql.PreparedStatement;
 32 import java.sql.SQLException;
 33 import java.util.EventObject;
 34 
 35 /**
 36  * A <code>StatementEvent</code> is sent to all <code>StatementEventListener</code>s which were
 37  * registered with a <code>PooledConnection</code>. This occurs when the driver determines that a
 38  * <code>PreparedStatement</code> that is associated with the <code>PooledConnection</code> has been closed or the driver determines
 39  * is invalid.
 40  *
 41  * @since 1.6
 42  */
 43 public class StatementEvent extends EventObject {
 44 
 45         static final long serialVersionUID = -8089573731826608315L;
 46         /**
 47          * The {@code PreparedStatement} that is being closed or is invalid.
 48          */
 49         private SQLException            exception;
 50 
 51         /**
 52          * The {@code SQLException} the driver is about to throw to the application.
 53          */
 54         @SuppressWarnings("serial") // Not statically typed as Serializable
 55         private PreparedStatement       statement;
 56 
 57         /**
 58          * Constructs a <code>StatementEvent</code> with the specified <code>PooledConnection</code> and
 59          * <code>PreparedStatement</code>.  The <code>SQLException</code> contained in the event defaults to
 60          * null.
 61          *
 62          * @param con                   The <code>PooledConnection</code> that the closed or invalid
 63          * <code>PreparedStatement</code>is associated with.
 64          * @param statement             The <code>PreparedStatement</code> that is being closed or is invalid
 65          *
 66          * @throws IllegalArgumentException if <code>con</code> is null.
 67          *
 68          * @since 1.6
 69          */
 70         public StatementEvent(PooledConnection con,
 71                                                   PreparedStatement statement) {
 72 
 73                 super(con);
 74 
 75                 this.statement = statement;
 76                 this.exception = null;
 77         }
 78 
 79         /**
 80          * Constructs a <code>StatementEvent</code> with the specified <code>PooledConnection</code>,
 81          * <code>PreparedStatement</code> and <code>SQLException</code>
 82          *
 83          * @param con                   The <code>PooledConnection</code> that the closed or invalid <code>PreparedStatement</code>
 84          * is associated with.
 85          * @param statement             The <code>PreparedStatement</code> that is being closed or is invalid
 86          * @param exception             The <code>SQLException </code>the driver is about to throw to
 87          *                                              the application
 88          *
 89          * @throws IllegalArgumentException if <code>con</code> is null.
 90          *
 91          * @since 1.6
 92          */
 93         public StatementEvent(PooledConnection con,
 94                                                   PreparedStatement statement,
 95                                                   SQLException exception) {
 96 
 97                 super(con);
 98 
 99                 this.statement = statement;
100                 this.exception = exception;
101         }
102 
103         /**
104          * Returns the <code>PreparedStatement</code> that is being closed or is invalid
105          *
106          * @return      The <code>PreparedStatement</code> that is being closed or is invalid
107          *
108          * @since 1.6
109          */
110         public PreparedStatement getStatement() {
111 
112                 return this.statement;
113         }
114 
115         /**
116          * Returns the <code>SQLException</code> the driver is about to throw
117          *
118          * @return      The <code>SQLException</code> the driver is about to throw
119          *
120          * @since 1.6
121          */
122         public SQLException getSQLException() {
123 
124                 return this.exception;
125         }
126 }