All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ow2.easywsdl.schema.api.XmlException Maven / Gradle / Ivy

There is a newer version: 2.8.0
Show newest version
/**
 * easySchema - easyWSDL toolbox Platform.
 * Copyright (c) 2008,  eBM Websourcing
 * All rights reserved.
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the University of California, Berkeley nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.ow2.easywsdl.schema.api;

/**
 * 
 * @author Nicolas Salatge - eBM WebSourcing
 * 
 */
public class XmlException extends Exception {
    public static final long serialVersionUID = 1;

    public static final String INVALID_Schema = "INVALID_Schema";

    public static final String PARSER_ERROR = "PARSER_ERROR";

    public static final String OTHER_ERROR = "OTHER_ERROR";

    public static final String CONFIGURATION_ERROR = "CONFIGURATION_ERROR";

    public static final String UNBOUND_PREFIX = "UNBOUND_PREFIX";

    public static final String NO_PREFIX_SPECIFIED = "NO_PREFIX_SPECIFIED";

    private String faultCode = null;

    private Throwable targetThrowable = null;

    private String location = null;

    public XmlException(final String faultCode, final String msg, final Throwable t) {
        super(msg, t);
        this.setFaultCode(faultCode);
    }

    public XmlException(final String msg, final Throwable t) {
        super(msg, t);
    }

    public XmlException(final Throwable t) {
        super(t);
    }

    public XmlException(final String msg) {
        super(msg);
    }

    public XmlException(final String faultCode, final String msg) {
        this(faultCode, msg, null);
    }

    public void setFaultCode(final String faultCode) {
        this.faultCode = faultCode;
    }

    public String getFaultCode() {
        return this.faultCode;
    }

    public void setTargetException(final Throwable targetThrowable) {
        this.targetThrowable = targetThrowable;
    }

    public Throwable getTargetException() {
        if (this.targetThrowable == null) {
            return this.getCause();
        } else {
            return this.targetThrowable;
        }
    }

    /**
     * Set the location using an XPath expression. Used for error messages.
     * 
     * @param location
     *            an XPath expression describing the location where the
     *            exception occurred.
     */
    public void setLocation(final String location) {
        this.location = location;
    }

    /**
     * Get the location, if one was set. Should be an XPath expression which is
     * used for error messages.
     */
    public String getLocation() {
        return this.location;
    }

    @Override
    public String getMessage() {
    	if(!super.getMessage().contains("SchemaException")) {
	        final StringBuffer strBuf = new StringBuffer();
	
	        strBuf.append("SchemaException");
	
	        if (this.location != null) {
	            try {
	                strBuf.append(" (at " + this.location + ")");
	            } catch (final IllegalArgumentException e) {
	            }
	        }
	
	        if (this.faultCode != null) {
	            strBuf.append(": faultCode=" + this.faultCode);
	        }
	
	        final String thisMsg = super.getMessage();
	        String targetMsg = null;
	        String targetName = null;
	        if (this.getTargetException() != null) {
	            targetMsg = this.getTargetException().getMessage();
	            targetName = this.getTargetException().getClass().getName();
	        }
	
	        if ((thisMsg != null) && ((targetMsg == null) || !thisMsg.equals(targetMsg))) {
	            strBuf.append(": " + thisMsg);
	        }
	
	        if (targetName != null) {
	            strBuf.append(": " + targetName);
	        }
	
	        if (targetMsg != null) {
	            strBuf.append(": " + targetMsg);
	        }
	
	        return strBuf.toString();
    	} else {
    		return super.getMessage();
    	}
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy