1 /*
   2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   3  *
   4  * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
   5  *
   6  * The contents of this file are subject to the terms of either the GNU
   7  * General Public License Version 2 only ("GPL") or the Common Development
   8  * and Distribution License("CDDL") (collectively, the "License").  You
   9  * may not use this file except in compliance with the License.  You can
  10  * obtain a copy of the License at
  11  * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
  12  * or packager/legal/LICENSE.txt.  See the License for the specific
  13  * language governing permissions and limitations under the License.
  14  *
  15  * When distributing the software, include this License Header Notice in each
  16  * file and include the License file at packager/legal/LICENSE.txt.
  17  *
  18  * GPL Classpath Exception:
  19  * Oracle designates this particular file as subject to the "Classpath"
  20  * exception as provided by Oracle in the GPL Version 2 section of the License
  21  * file that accompanied this code.
  22  *
  23  * Modifications:
  24  * If applicable, add the following below the License Header, with the fields
  25  * enclosed by brackets [] replaced by your own identifying information:
  26  * "Portions Copyright [year] [name of copyright owner]"
  27  *
  28  * Contributor(s):
  29  * If you wish your version of this file to be governed by only the CDDL or
  30  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  31  * elects to include this software in this distribution under the [CDDL or GPL
  32  * Version 2] license."  If you don't indicate a single choice of license, a
  33  * recipient has the option to distribute your version of this file under
  34  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  35  * its licensees as provided above.  However, if you add GPL Version 2 code
  36  * and therefore, elected the GPL Version 2 license, then the option applies
  37  * only if the new code is made subject to such option by the copyright
  38  * holder.
  39  */
  40 
  41 package javax.xml.validation;
  42 
  43 /**
  44  * An error class for reporting factory configuration errors.
  45  *
  46  * @version 1.0
  47  * @author Copyright (c) 2009 by Oracle Corporation. All Rights Reserved.
  48  * @since 1.6
  49  */
  50 public class FactoryConfigurationError extends Error {
  51 
  52     private static final long serialVersionUID = -2994412584589975744L;
  53     Exception nested;
  54 
  55     /**
  56      * Default constructor
  57      */
  58     public FactoryConfigurationError() {
  59     }
  60 
  61     /**
  62      * Construct an exception with a nested inner exception
  63      *
  64      * @param e the exception to nest
  65      */
  66     public FactoryConfigurationError(java.lang.Exception e) {
  67         nested = e;
  68     }
  69 
  70     /**
  71      * Construct an exception with a nested inner exception and a message
  72      *
  73      * @param e the exception to nest
  74      * @param msg the message to report
  75      */
  76     public FactoryConfigurationError(java.lang.Exception e, java.lang.String msg) {
  77         super(msg);
  78         nested = e;
  79     }
  80 
  81     /**
  82      * Construct an exception with a nested inner exception and a message
  83      *
  84      * @param msg the message to report
  85      * @param e the exception to nest
  86      */
  87     public FactoryConfigurationError(java.lang.String msg, java.lang.Exception e) {
  88         super(msg);
  89         nested = e;
  90     }
  91 
  92     /**
  93      * Construct an exception with associated message
  94      *
  95      * @param msg the message to report
  96      */
  97     public FactoryConfigurationError(java.lang.String msg) {
  98         super(msg);
  99     }
 100 
 101     /**
 102      * Return the nested exception (if any)
 103      *
 104      * @return the nested exception or null
 105      */
 106     public Exception getException() {
 107         return nested;
 108     }
 109 
 110     /**
 111      * use the exception chaining mechanism of JDK1.4
 112      */
 113     @Override
 114     public Throwable getCause() {
 115         return nested;
 116     }
 117 
 118     /**
 119      * Report the message associated with this error
 120      *
 121      * @return the string value of the message
 122      */
 123     public String getMessage() {
 124         String msg = super.getMessage();
 125         if (msg != null) {
 126             return msg;
 127         }
 128         if (nested != null) {
 129             msg = nested.getMessage();
 130             if (msg == null) {
 131                 msg = nested.getClass().toString();
 132             }
 133         }
 134         return msg;
 135     }
 136 }