diff -r 4ebc2e2fb97c -r 71c04702a3d5 src/java.sql/share/classes/java/sql/SQLClientInfoException.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.sql/share/classes/java/sql/SQLClientInfoException.java Tue Sep 12 19:03:39 2017 +0200
@@ -0,0 +1,310 @@
+/*
+ * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package java.sql;
+
+import java.util.Map;
+
+/**
+ * The subclass of {@link SQLException} is thrown when one or more client info properties
+ * could not be set on a Connection
. In addition to the information provided
+ * by SQLException
, a SQLClientInfoException
provides a list of client info
+ * properties that were not set.
+ *
+ * Some databases do not allow multiple client info properties to be set
+ * atomically. For those databases, it is possible that some of the client
+ * info properties had been set even though the Connection.setClientInfo
+ * method threw an exception. An application can use the getFailedProperties
+ * method to retrieve a list of client info properties that were not set. The
+ * properties are identified by passing a
+ * Map<String,ClientInfoStatus>
to
+ * the appropriate SQLClientInfoException
constructor.
+ *
+ * @see ClientInfoStatus
+ * @see Connection#setClientInfo
+ * @since 1.6
+ */
+public class SQLClientInfoException extends SQLException {
+
+
+
+
+ private Map failedProperties;
+
+ /**
+ * Constructs a SQLClientInfoException
Object.
+ * The reason
,
+ * SQLState
, and failedProperties list are initialized to
+ * null
and the vendor code is initialized to 0.
+ * The cause
is not initialized, and may subsequently be
+ * initialized by a call to the
+ * {@link Throwable#initCause(java.lang.Throwable)} method.
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException() {
+
+ this.failedProperties = null;
+ }
+
+ /**
+ * Constructs a SQLClientInfoException
object initialized with a
+ * given failedProperties
.
+ * The reason
and SQLState
are initialized
+ * to null
and the vendor code is initialized to 0.
+ *
+ * The cause
is not initialized, and may subsequently be
+ * initialized by a call to the
+ * {@link Throwable#initCause(java.lang.Throwable)} method.
+ *
+ * @param failedProperties A Map containing the property values that could not
+ * be set. The keys in the Map
+ * contain the names of the client info
+ * properties that could not be set and
+ * the values contain one of the reason codes
+ * defined in ClientInfoStatus
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException(Map failedProperties) {
+
+ this.failedProperties = failedProperties;
+ }
+
+ /**
+ * Constructs a SQLClientInfoException
object initialized with
+ * a given cause
and failedProperties
.
+ *
+ * The reason
is initialized to null
if
+ * cause==null
or to cause.toString()
if
+ * cause!=null
and the vendor code is initialized to 0.
+ *
+ * @param failedProperties A Map containing the property values that could not
+ * be set. The keys in the Map
+ * contain the names of the client info
+ * properties that could not be set and
+ * the values contain one of the reason codes
+ * defined in ClientInfoStatus
+ * @param cause the (which is saved for later retrieval by the getCause()
method); may be null indicating
+ * the cause is non-existent or unknown.
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException(Map failedProperties,
+ Throwable cause) {
+
+ super(cause != null?cause.toString():null);
+ initCause(cause);
+ this.failedProperties = failedProperties;
+ }
+
+ /**
+ * Constructs a SQLClientInfoException
object initialized with a
+ * given reason
and failedProperties
.
+ * The SQLState
is initialized
+ * to null
and the vendor code is initialized to 0.
+ *
+ * The cause
is not initialized, and may subsequently be
+ * initialized by a call to the
+ * {@link Throwable#initCause(java.lang.Throwable)} method.
+ *
+ * @param reason a description of the exception
+ * @param failedProperties A Map containing the property values that could not
+ * be set. The keys in the Map
+ * contain the names of the client info
+ * properties that could not be set and
+ * the values contain one of the reason codes
+ * defined in ClientInfoStatus
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException(String reason,
+ Map failedProperties) {
+
+ super(reason);
+ this.failedProperties = failedProperties;
+ }
+
+ /**
+ * Constructs a SQLClientInfoException
object initialized with a
+ * given reason
, cause
and
+ * failedProperties
.
+ * The SQLState
is initialized
+ * to null
and the vendor code is initialized to 0.
+ *
+ * @param reason a description of the exception
+ * @param failedProperties A Map containing the property values that could not
+ * be set. The keys in the Map
+ * contain the names of the client info
+ * properties that could not be set and
+ * the values contain one of the reason codes
+ * defined in ClientInfoStatus
+ * @param cause the underlying reason for this SQLException
(which is saved for later retrieval by the getCause()
method); may be null indicating
+ * the cause is non-existent or unknown.
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException(String reason,
+ Map failedProperties,
+ Throwable cause) {
+
+ super(reason);
+ initCause(cause);
+ this.failedProperties = failedProperties;
+ }
+
+ /**
+ * Constructs a SQLClientInfoException
object initialized with a
+ * given reason
, SQLState
and
+ * failedProperties
.
+ * The cause
is not initialized, and may subsequently be
+ * initialized by a call to the
+ * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code
+ * is initialized to 0.
+ *
+ * @param reason a description of the exception
+ * @param SQLState an XOPEN or SQL:2003 code identifying the exception
+ * @param failedProperties A Map containing the property values that could not
+ * be set. The keys in the Map
+ * contain the names of the client info
+ * properties that could not be set and
+ * the values contain one of the reason codes
+ * defined in ClientInfoStatus
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException(String reason,
+ String SQLState,
+ Map failedProperties) {
+
+ super(reason, SQLState);
+ this.failedProperties = failedProperties;
+ }
+
+ /**
+ * Constructs a SQLClientInfoException
object initialized with a
+ * given reason
, SQLState
, cause
+ * and failedProperties
. The vendor code is initialized to 0.
+ *
+ * @param reason a description of the exception
+ * @param SQLState an XOPEN or SQL:2003 code identifying the exception
+ * @param failedProperties A Map containing the property values that could not
+ * be set. The keys in the Map
+ * contain the names of the client info
+ * properties that could not be set and
+ * the values contain one of the reason codes
+ * defined in ClientInfoStatus
+ * @param cause the underlying reason for this SQLException
(which is saved for later retrieval by the getCause()
method); may be null indicating
+ * the cause is non-existent or unknown.
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException(String reason,
+ String SQLState,
+ Map failedProperties,
+ Throwable cause) {
+
+ super(reason, SQLState);
+ initCause(cause);
+ this.failedProperties = failedProperties;
+ }
+
+ /**
+ * Constructs a SQLClientInfoException
object initialized with a
+ * given reason
, SQLState
,
+ * vendorCode
and failedProperties
.
+ * The cause
is not initialized, and may subsequently be
+ * initialized by a call to the
+ * {@link Throwable#initCause(java.lang.Throwable)} method.
+ *
+ * @param reason a description of the exception
+ * @param SQLState an XOPEN or SQL:2003 code identifying the exception
+ * @param vendorCode a database vendor-specific exception code
+ * @param failedProperties A Map containing the property values that could not
+ * be set. The keys in the Map
+ * contain the names of the client info
+ * properties that could not be set and
+ * the values contain one of the reason codes
+ * defined in ClientInfoStatus
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException(String reason,
+ String SQLState,
+ int vendorCode,
+ Map failedProperties) {
+
+ super(reason, SQLState, vendorCode);
+ this.failedProperties = failedProperties;
+ }
+
+ /**
+ * Constructs a SQLClientInfoException
object initialized with a
+ * given reason
, SQLState
,
+ * cause
, vendorCode
and
+ * failedProperties
.
+ *
+ * @param reason a description of the exception
+ * @param SQLState an XOPEN or SQL:2003 code identifying the exception
+ * @param vendorCode a database vendor-specific exception code
+ * @param failedProperties A Map containing the property values that could not
+ * be set. The keys in the Map
+ * contain the names of the client info
+ * properties that could not be set and
+ * the values contain one of the reason codes
+ * defined in ClientInfoStatus
+ * @param cause the underlying reason for this SQLException
(which is saved for later retrieval by the getCause()
method); may be null indicating
+ * the cause is non-existent or unknown.
+ *
+ * @since 1.6
+ */
+ public SQLClientInfoException(String reason,
+ String SQLState,
+ int vendorCode,
+ Map failedProperties,
+ Throwable cause) {
+
+ super(reason, SQLState, vendorCode);
+ initCause(cause);
+ this.failedProperties = failedProperties;
+ }
+
+ /**
+ * Returns the list of client info properties that could not be set. The
+ * keys in the Map contain the names of the client info
+ * properties that could not be set and the values contain one of the
+ * reason codes defined in ClientInfoStatus
+ *
+ * @return Map list containing the client info properties that could
+ * not be set
+ *
+ * @since 1.6
+ */
+ public Map getFailedProperties() {
+
+ return this.failedProperties;
+ }
+
+ private static final long serialVersionUID = -4319604256824655880L;
+}