1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package javax.sql;
19
20import java.io.Serializable;
21import java.sql.SQLException;
22import java.util.EventObject;
23
24/**
25 * Sent when specific events happen on a {@link PooledConnection} object. These
26 * events are a facility to report when an application closes the pooled
27 * connection or when an error occurs in the pooled connection.
28 */
29public class ConnectionEvent extends EventObject implements Serializable {
30
31    private static final long serialVersionUID = -4843217645290030002L;
32
33    private SQLException ex;
34
35    /**
36     * Creates a connection event initialized with the supplied {@code
37     * PooledConnection} reporting that the application has closed the
38     * connection.
39     *
40     * @param theConnection
41     *            the connection for which this event is created.
42     */
43    public ConnectionEvent(PooledConnection theConnection) {
44        super(theConnection);
45    }
46
47    /**
48     * Creates a {@code ConnectionEvent} initialized with the supplied {@code
49     * PooledConnection} and with the supplied {@code SQLException} indicating
50     * that an error has occurred within the {@code PooledConnection}.
51     *
52     * @param theConnection
53     *            the connection for which this event is created.
54     * @param theException
55     *            information about the state of error that has occurred on the
56     *            application side.
57     */
58    public ConnectionEvent(PooledConnection theConnection,
59            SQLException theException) {
60        super(theConnection);
61        ex = theException;
62    }
63
64    /**
65     * Gets the {@code SQLException} which holds information about the error
66     * which occurred in the {@code PooledConnection}.
67     *
68     * @return a {@code SQLException} containing information about the error.
69     *         May be {@code null} if no error has occurred.
70     */
71    public SQLException getSQLException() {
72        return ex;
73    }
74}
75