Mercurial > hg > release > icedtea7-forest-2.6 > jdk
changeset 8959:82067c87496d
8059411, PR3162: RowSetWarning does not correctly chain warnings
Reviewed-by: darcy, smarks, mchung, lancea
Contributed-by: maxim.soloviev@oracle.com
author | kshefov |
---|---|
date | Thu, 27 Oct 2016 01:52:59 +0100 |
parents | 7b3d92674796 |
children | 8aaee9c91c63 |
files | src/share/classes/javax/sql/rowset/RowSetWarning.java |
diffstat | 1 files changed, 14 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/javax/sql/rowset/RowSetWarning.java Thu Oct 27 01:37:56 2016 +0100 +++ b/src/share/classes/javax/sql/rowset/RowSetWarning.java Thu Oct 27 01:52:59 2016 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -50,15 +50,12 @@ * The inherited methods <code>getMessage</code>, <code>getSQLState</code>, * and <code>getErrorCode</code> retrieve information contained in a * <code>RowSetWarning</code> object. + * + * @since 1.5 */ public class RowSetWarning extends SQLException { /** - * RowSetWarning object handle. - */ - private RowSetWarning rwarning; - - /** * Constructs a <code>RowSetWarning</code> object * with the given value for the reason; SQLState defaults to null, * and vendorCode defaults to 0. @@ -109,7 +106,7 @@ * @param reason a <code>String</code> giving a description of the * warning; * @param SQLState an XOPEN code identifying the warning; if a non standard - * XPOEN <i>SQLState</i> is supplied, no exception is thrown. + * XOPEN <i>SQLState</i> is supplied, no exception is thrown. * @param vendorCode a database vendor-specific warning code */ public RowSetWarning(java.lang.String reason, java.lang.String SQLState, int vendorCode) { @@ -126,7 +123,15 @@ * @see #setNextWarning */ public RowSetWarning getNextWarning() { - return rwarning; + SQLException warning = getNextException(); + if ( warning == null || warning instanceof RowSetWarning) { + return (RowSetWarning)warning; + } else { + // The chained value isn't a RowSetWarning. + // This is a programming error by whoever added it to + // the RowSetWarning chain. We throw a Java "Error". + throw new Error("RowSetWarning chain holds value that is not a RowSetWarning: "); + } } /** @@ -139,7 +144,7 @@ * @see #getNextWarning */ public void setNextWarning(RowSetWarning warning) { - rwarning = warning; + setNextException(warning); } static final long serialVersionUID = 6678332766434564774L;