jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java
changeset 28672 9a2e5d103695
parent 28671 cb15fc6cc038
parent 28528 6b55dd30a0ba
child 28674 9c49f00a2b58
child 28759 fb96c297a819
--- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java	Thu Jan 15 11:18:14 2015 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,346 +0,0 @@
-/*
- * Copyright (c) 1997, 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
- * 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 com.sun.xml.internal.messaging.saaj.soap.impl;
-
-import java.util.Locale;
-import java.util.logging.Level;
-
-import javax.xml.namespace.QName;
-import javax.xml.soap.*;
-
-import org.w3c.dom.Element;
-
-import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
-import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
-import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-
-public abstract class FaultImpl extends ElementImpl implements SOAPFault {
-
-    /* This can also represent a fault reason element */
-    protected SOAPFaultElement faultStringElement;
-
-    /* This can also represent a fault role element */
-    protected SOAPFaultElement faultActorElement;
-
-    protected SOAPFaultElement faultCodeElement;
-
-    protected Detail detail;
-
-    protected FaultImpl(SOAPDocumentImpl ownerDoc, NameImpl name) {
-        super(ownerDoc, name);
-    }
-
-
-    protected abstract NameImpl getDetailName();
-    protected abstract NameImpl getFaultCodeName();
-    protected abstract NameImpl getFaultStringName();
-    protected abstract NameImpl getFaultActorName();
-    protected abstract DetailImpl createDetail();
-    protected abstract FaultElementImpl createSOAPFaultElement(String localName);
-    protected abstract FaultElementImpl createSOAPFaultElement(QName qname);
-    protected abstract FaultElementImpl createSOAPFaultElement(Name qname);
-    protected abstract void checkIfStandardFaultCode(String faultCode, String uri) throws SOAPException;
-    protected abstract void finallySetFaultCode(String faultcode) throws SOAPException;
-    protected abstract boolean isStandardFaultElement(String localName);
-    protected abstract QName getDefaultFaultCode();
-
-
-    protected void findFaultCodeElement() {
-        this.faultCodeElement =
-            (SOAPFaultElement) findAndConvertChildElement(getFaultCodeName());
-    }
-
-    protected void findFaultActorElement() {
-        this.faultActorElement =
-            (SOAPFaultElement) findAndConvertChildElement(getFaultActorName());
-    }
-
-    protected void findFaultStringElement() {
-        this.faultStringElement =
-            (SOAPFaultElement) findAndConvertChildElement(getFaultStringName());
-    }
-
-    public void setFaultCode(String faultCode) throws SOAPException {
-        setFaultCode(
-            NameImpl.getLocalNameFromTagName(faultCode),
-            NameImpl.getPrefixFromTagName(faultCode),
-            null);
-    }
-
-    public void setFaultCode(String faultCode, String prefix, String uri)
-        throws SOAPException {
-
-        if (prefix == null || "".equals(prefix)) {
-            if (uri != null && !"".equals(uri)) {
-                prefix = getNamespacePrefix(uri);
-                if (prefix == null || "".equals(prefix)) {
-                    prefix = "ns0";
-                }
-            }
-        }
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-
-        if (this.faultCodeElement == null)
-            this.faultCodeElement = addFaultCodeElement();
-        else
-            this.faultCodeElement.removeContents();
-
-        if (uri == null || "".equals(uri)) {
-            uri = this.faultCodeElement.getNamespaceURI(prefix);
-        }
-        if (uri == null || "".equals(uri)) {
-            if (prefix != null && !"".equals(prefix)) {
-                //cannot allow an empty URI for a non-Empty prefix
-                log.log(Level.SEVERE, "SAAJ0140.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode});
-                throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\"");
-            } else {
-                uri = "";
-            }
-        }
-        checkIfStandardFaultCode(faultCode, uri);
-        ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri);
-
-        if (prefix == null || "".equals(prefix)) {
-            finallySetFaultCode(faultCode);
-        } else {
-            finallySetFaultCode(prefix + ":" + faultCode);
-        }
-    }
-
-    public void setFaultCode(Name faultCodeQName) throws SOAPException {
-        setFaultCode(
-            faultCodeQName.getLocalName(),
-            faultCodeQName.getPrefix(),
-            faultCodeQName.getURI());
-    }
-
-    public void setFaultCode(QName faultCodeQName) throws SOAPException {
-        setFaultCode(
-            faultCodeQName.getLocalPart(),
-            faultCodeQName.getPrefix(),
-            faultCodeQName.getNamespaceURI());
-    }
-
-    protected static QName convertCodeToQName(
-        String code,
-        SOAPElement codeContainingElement) {
-
-        int prefixIndex = code.indexOf(':');
-        if (prefixIndex == -1) {
-            return new QName(code);
-        }
-
-        String prefix = code.substring(0, prefixIndex);
-        String nsName =((ElementImpl) codeContainingElement).lookupNamespaceURI(prefix);
-            //((ElementImpl) codeContainingElement).getNamespaceURI(prefix);
-        return new QName(nsName, getLocalPart(code), prefix);
-    }
-
-    protected void initializeDetail() {
-        NameImpl detailName = getDetailName();
-        detail = (Detail) findAndConvertChildElement(detailName);
-    }
-
-    public Detail getDetail() {
-        if (detail == null)
-            initializeDetail();
-        if ((detail != null) && (detail.getParentNode() == null)) {
-        // a detach node was called on it
-            detail = null;
-        }
-        return detail;
-    }
-
-    public Detail addDetail() throws SOAPException {
-        if (detail == null)
-            initializeDetail();
-        if (detail == null) {
-            detail = createDetail();
-            addNode(detail);
-            return detail;
-        } else {
-            // Log
-            throw new SOAPExceptionImpl("Error: Detail already exists");
-        }
-    }
-
-    public boolean hasDetail() {
-        return (getDetail() != null);
-    }
-
-    public abstract void setFaultActor(String faultActor) throws SOAPException;
-
-    public String getFaultActor() {
-        if (this.faultActorElement == null)
-            findFaultActorElement();
-        if (this.faultActorElement != null) {
-                return this.faultActorElement.getValue();
-        }
-        return null;
-    }
-
-    public SOAPElement setElementQName(QName newName) throws SOAPException {
-
-        log.log(
-            Level.SEVERE,
-            "SAAJ0146.impl.invalid.name.change.requested",
-            new Object[] {elementQName.getLocalPart(), newName.getLocalPart()});
-        throw new SOAPException(
-            "Cannot change name for " + elementQName.getLocalPart() + " to " + newName.getLocalPart());
-    }
-
-    protected SOAPElement convertToSoapElement(Element element) {
-        if (element instanceof SOAPFaultElement) {
-            return (SOAPElement) element;
-        } else if (element instanceof SOAPElement) {
-            SOAPElement soapElement = (SOAPElement) element;
-            if (getDetailName().equals(soapElement.getElementName())) {
-                return replaceElementWithSOAPElement(element, createDetail());
-            } else {
-                String localName =
-                    soapElement.getElementName().getLocalName();
-                if (isStandardFaultElement(localName))
-                    return replaceElementWithSOAPElement(
-                               element,
-                               createSOAPFaultElement(soapElement.getElementQName()));
-                return soapElement;
-            }
-        } else {
-            Name elementName = NameImpl.copyElementName(element);
-            ElementImpl newElement;
-            if (getDetailName().equals(elementName)) {
-                newElement = (ElementImpl) createDetail();
-            } else {
-                String localName = elementName.getLocalName();
-                if (isStandardFaultElement(localName))
-                    newElement =
-                        (ElementImpl) createSOAPFaultElement(elementName);
-                else
-                    newElement = (ElementImpl) createElement(elementName);
-            }
-            return replaceElementWithSOAPElement(element, newElement);
-        }
-    }
-
-    protected SOAPFaultElement addFaultCodeElement() throws SOAPException {
-        if (this.faultCodeElement == null)
-            findFaultCodeElement();
-        if (this.faultCodeElement == null) {
-            this.faultCodeElement =
-                addSOAPFaultElement(getFaultCodeName().getLocalName());
-            return this.faultCodeElement;
-        } else {
-            throw new SOAPExceptionImpl("Error: Faultcode already exists");
-        }
-    }
-
-    private SOAPFaultElement addFaultStringElement() throws SOAPException {
-        if (this.faultStringElement == null)
-            findFaultStringElement();
-        if (this.faultStringElement == null) {
-            this.faultStringElement =
-                addSOAPFaultElement(getFaultStringName().getLocalName());
-            return this.faultStringElement;
-        } else {
-            // Log
-            throw new SOAPExceptionImpl("Error: Faultstring already exists");
-        }
-    }
-
-    private SOAPFaultElement addFaultActorElement() throws SOAPException {
-        if (this.faultActorElement == null)
-            findFaultActorElement();
-        if (this.faultActorElement == null) {
-            this.faultActorElement =
-                addSOAPFaultElement(getFaultActorName().getLocalName());
-            return this.faultActorElement;
-        } else {
-            // Log
-            throw new SOAPExceptionImpl("Error: Faultactor already exists");
-        }
-    }
-
-    protected SOAPElement addElement(Name name) throws SOAPException {
-        if (getDetailName().equals(name)) {
-            return addDetail();
-        } else if(getFaultCodeName().equals(name)) {
-            return addFaultCodeElement();
-        } else if(getFaultStringName().equals(name)) {
-            return addFaultStringElement();
-        } else if(getFaultActorName().equals(name)) {
-            return addFaultActorElement();
-        }
-        return super.addElement(name);
-    }
-
-    protected SOAPElement addElement(QName name) throws SOAPException {
-        return addElement(NameImpl.convertToName(name));
-    }
-
-    protected FaultElementImpl addSOAPFaultElement(String localName)
-        throws SOAPException {
-
-        FaultElementImpl faultElem = createSOAPFaultElement(localName);
-        addNode(faultElem);
-        return faultElem;
-    }
-
-    /**
-     * Convert an xml:lang attribute value into a Locale object
-     */
-    protected static Locale xmlLangToLocale(String xmlLang) {
-        if (xmlLang == null) {
-            return null;
-        }
-
-        // Spec uses hyphen as separator
-        int index = xmlLang.indexOf("-");
-
-        // Accept underscore as separator as well
-        if (index == -1) {
-            index = xmlLang.indexOf("_");
-        }
-
-        if (index == -1) {
-            // No separator so assume only a language component
-            return new Locale(xmlLang, "");
-        }
-
-        String language = xmlLang.substring(0, index);
-        String country = xmlLang.substring(index + 1);
-        return new Locale(language, country);
-    }
-
-    protected static String localeToXmlLang(Locale locale) {
-        String xmlLang = locale.getLanguage();
-        String country = locale.getCountry();
-        if (!"".equals(country)) {
-            xmlLang += "-" + country;
-        }
-        return xmlLang;
-    }
-}