📄 faultinfo.java
字号:
/* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed 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.axis.wsdl.symbolTable;import org.apache.axis.constants.Use;import org.apache.axis.utils.Messages;import javax.wsdl.Fault;import javax.wsdl.Message;import javax.wsdl.Part;import javax.wsdl.extensions.soap.SOAPHeaderFault;import javax.xml.namespace.QName;import java.io.IOException;import java.util.Map;/** * Fault information object. This should probably really be FaultEntry and * it should be a subclass of SymTabEntry, but faults aren't first-class * objects in WSDL, so I'm not sure what the FaultEntry should contain and * how it should be constructed, so for now leave it as a simple object. */public class FaultInfo { /** Field message */ private Message message; /** Field xmlType */ private QName xmlType; /** Field use */ private Use use; /** Field qName */ private QName qName; /** Field name */ private String name; /** * This constructor creates FaultInfo for a binding fault. * <p/> * If the part of the fault is a type, then the QName is * derived from the element name and the provided namespace * (this namespace SHOULD come from the binding). * <p/> * If the part of the fault is an element, then the QName is * the QName of the element, and the given namespace is ignored. * * @param fault * @param use * @param namespace * @param symbolTable */ public FaultInfo(Fault fault, Use use, String namespace, SymbolTable symbolTable) { this.message = fault.getMessage(); this.xmlType = getFaultType(symbolTable, getFaultPart()); this.use = (use != null) ? use : Use.LITERAL; this.name = fault.getName(); Part part = getFaultPart(); if (part == null) { this.qName = null; } else if (part.getTypeName() != null) { this.qName = new QName(namespace, part.getName()); } else { this.qName = part.getElementName(); } } // ctor /** * This constructor creates FaultInfo for a soap:headerFault. * * @param fault * @param symbolTable * @throws IOException */ public FaultInfo(SOAPHeaderFault fault, SymbolTable symbolTable) throws IOException { MessageEntry mEntry = symbolTable.getMessageEntry(fault.getMessage()); if (mEntry == null) { throw new IOException( Messages.getMessage("noMsg", fault.getMessage().toString())); } this.message = mEntry.getMessage(); Part part = message.getPart(fault.getPart()); this.xmlType = getFaultType(symbolTable, part); this.use = Use.getUse(fault.getUse()); if (part == null) { this.qName = null; } else if (part.getTypeName() != null) { this.qName = new QName(fault.getNamespaceURI(), part.getName()); } else { this.qName = part.getElementName(); } this.name = qName.getLocalPart(); } // ctor /** * Constructor FaultInfo * * @param faultMessage * @param faultPart * @param faultUse * @param faultNamespaceURI * @param symbolTable * @throws IOException */ public FaultInfo( QName faultMessage, String faultPart, String faultUse, String faultNamespaceURI, SymbolTable symbolTable) throws IOException { MessageEntry mEntry = symbolTable.getMessageEntry(faultMessage); if (mEntry == null) { throw new IOException(Messages.getMessage("noMsg", faultMessage.toString())); } this.message = mEntry.getMessage(); Part part = message.getPart(faultPart); this.xmlType = getFaultType(symbolTable, part); this.use = Use.getUse(faultUse); if (part == null) { this.qName = null; } else if (part.getTypeName() != null) { this.qName = new QName(faultNamespaceURI, part.getName()); } else { this.qName = part.getElementName(); } this.name = qName.getLocalPart(); } // ctor /** * Method getMessage * * @return */ public Message getMessage() { return message; } // getMessage /** * Method getXMLType * * @return */ public QName getXMLType() { return xmlType; } // getXMLType /** * Method getUse * * @return */ public Use getUse() { return use; } // getUse /** * Return the QName of a fault. This method may return null if no parts * are in the fault message. * <p/> * If the part of the fault is a type, then the QName is * derived from the element name and the provided namespace * (this namespace SHOULD come from the binding). * <p/> * If the part of the fault is an element, then the QName is * the QName of the element, and the given namespace is ignored. * * @return */ public QName getQName() { return qName; } // getQName /** * Return the name of the fault. * This is the name= attribute from a portType fault * or the localname of a header fault. * * @return */ public String getName() { return name; } // getName /** * It is assumed at this point that the fault message has only * 0 or 1 parts. If 0, return null. If 1, return it. * * @return */ private Part getFaultPart() { // get the name of the part Map parts = message.getParts(); // If no parts, skip it if (parts.size() == 0) { return null; } else { return (Part) parts.values().iterator().next(); } } /** * Get the XML type (QName) for a Fault - look in the (single) fault * part for type="" or element="" - if type, return the QName. If * element, return the reference type for the element. * * @param part the Fault to dig into * @param st the SymbolTable we're using * @return the XML type of the Fault's part, or null */ private QName getFaultType(SymbolTable st, Part part) { if (part != null) { if (part.getTypeName() != null) { return part.getTypeName(); } // Literal, so get the element's type TypeEntry entry = st.getElement(part.getElementName()); if ((entry != null) && (entry.getRefType() != null)) { return entry.getRefType().getQName(); } } return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -