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

org.apache.cxf.binding.soap.SoapFault Maven / Gradle / Ivy

There is a newer version: 2.7.18
Show newest version
/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package org.apache.cxf.binding.soap;

import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;

import javax.xml.namespace.QName;

import org.apache.cxf.common.i18n.Message;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.interceptor.Fault;

public class SoapFault extends Fault {

    public static final QName ATTACHMENT_IO = new QName(Soap12.SOAP_NAMESPACE, "AttachmentIOError");

    /**
     * "The message was incorrectly formed or did not contain the appropriate
     * information in order to succeed." -- SOAP 1.2 Spec
     */ 

    /**
     * A SOAP 1.2 only fault code. 

"The message could not be processed for * reasons attributable to the processing of the message rather than to the * contents of the message itself." -- SOAP 1.2 Spec

If this message is * used in a SOAP 1.1 Fault it will most likely (depending on the * FaultHandler) be mapped to "Sender" instead. */ private QName subCode; private String role; private String node; private Map namespaces = new HashMap(); public SoapFault(Message message, Throwable throwable, QName faultCode) { super(message, throwable, faultCode); } public SoapFault(Message message, QName faultCode) { super(message, faultCode); } public SoapFault(String message, QName faultCode) { super(new Message(message, (ResourceBundle)null), faultCode); } public SoapFault(String message, ResourceBundle bundle, QName faultCode) { super(new Message(message, bundle), faultCode); } public SoapFault(String message, ResourceBundle bundle, Throwable t, QName faultCode) { super(new Message(message, bundle), t, faultCode); } public SoapFault(String message, ResourceBundle bundle, QName faultCode, Object ... params) { super(new Message(message, bundle, params), faultCode); } public SoapFault(String message, Throwable t, QName faultCode) { super(new Message(message, (ResourceBundle)null), t, faultCode); } public String getCodeString(String prefix, String defaultPrefix) { return getFaultCodeString(prefix, defaultPrefix, getFaultCode()); } public String getSubCodeString(String prefix, String defaultPrefix) { return getFaultCodeString(prefix, defaultPrefix, subCode); } private String getFaultCodeString(String prefix, String defaultPrefix, QName fCode) { String codePrefix = null; if (StringUtils.isEmpty(prefix)) { codePrefix = fCode.getPrefix(); if (StringUtils.isEmpty(codePrefix)) { codePrefix = defaultPrefix; } } else { codePrefix = prefix; } return codePrefix + ":" + fCode.getLocalPart(); } public String getReason() { return getMessage(); } /** * Returns the fault actor. * * @return the fault actor. */ public String getRole() { return role; } /** * Sets the fault actor. * * @param actor the actor. */ public void setRole(String actor) { this.role = actor; } public String getNode() { return node; } public void setNode(String n) { this.node = n; } /** * Returns the SubCode for the Fault Code. * * @return The SubCode element as detailed by the SOAP 1.2 spec. */ public QName getSubCode() { return subCode; } /** * Sets the SubCode for the Fault Code. * * @param subCode The SubCode element as detailed by the SOAP 1.2 spec. */ public void setSubCode(QName subCode) { this.subCode = subCode; } public Map getNamespaces() { return namespaces; } public void setNamespaces(Map namespaces) { this.namespaces = namespaces; } public static SoapFault createFault(Fault f, SoapVersion v) { if (f instanceof SoapFault) { //make sure the fault code is per spec //if it's one of our internal codes, map it to the proper soap code if (f.getFaultCode().getNamespaceURI().equals(Fault.FAULT_CODE_CLIENT.getNamespaceURI())) { QName fc = f.getFaultCode(); if (Fault.FAULT_CODE_CLIENT.equals(fc)) { fc = v.getSender(); } else if (Fault.FAULT_CODE_SERVER.equals(fc)) { fc = v.getReceiver(); } f.setFaultCode(fc); } return (SoapFault)f; } QName fc = f.getFaultCode(); if (Fault.FAULT_CODE_CLIENT.equals(fc)) { fc = v.getSender(); } else if (Fault.FAULT_CODE_SERVER.equals(fc)) { fc = v.getReceiver(); } SoapFault soapFault = new SoapFault(new Message(f.getMessage(), (ResourceBundle)null), f.getCause(), fc); soapFault.setDetail(f.getDetail()); return soapFault; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy