/* * 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.deployment.wsdd; import org.apache.axis.description.OperationDesc; import org.apache.axis.description.ParameterDesc; import org.apache.axis.encoding.SerializationContext; import org.apache.axis.utils.JavaUtils; import org.apache.axis.utils.XMLUtils; import org.w3c.dom.Element; import org.xml.sax.helpers.AttributesImpl; import javax.xml.namespace.QName; import java.io.IOException; public class WSDDParameter extends WSDDElement { OperationDesc parent; ParameterDesc parameter = new ParameterDesc(); public WSDDParameter(Element e, OperationDesc parent) throws WSDDException { super(e); this.parent = parent; // Get the parameter's name. If a qname is specified, use that, // otherwise also look for a "name" attribute. (name specifies // an unqualified name) String nameStr = e.getAttribute(ATTR_QNAME); if (nameStr != null && !nameStr.equals("")) { parameter.setQName(XMLUtils.getQNameFromString(nameStr, e)); } else { nameStr = e.getAttribute(ATTR_NAME); if (nameStr != null && !nameStr.equals("")) { parameter.setQName(new QName(null, nameStr)); } } String modeStr = e.getAttribute(ATTR_MODE); if (modeStr != null && !modeStr.equals("")) { parameter.setMode(ParameterDesc.modeFromString(modeStr)); } String inHStr = e.getAttribute(ATTR_INHEADER); if (inHStr != null) { parameter.setInHeader(JavaUtils.isTrueExplicitly(inHStr)); } String outHStr = e.getAttribute(ATTR_OUTHEADER); if (outHStr != null) { parameter.setOutHeader(JavaUtils.isTrueExplicitly(outHStr)); } String typeStr = e.getAttribute(ATTR_TYPE); if (typeStr != null && !typeStr.equals("")) { parameter.setTypeQName(XMLUtils.getQNameFromString(typeStr, e)); } String itemQNameStr = e.getAttribute(ATTR_ITEMQNAME); if (itemQNameStr != null && !itemQNameStr.equals("")) { parameter.setItemQName(XMLUtils.getQNameFromString(itemQNameStr, e)); } String itemTypeStr = e.getAttribute(ATTR_ITEMTYPE); if (itemTypeStr != null && !itemTypeStr.equals("")) { parameter.setItemType(XMLUtils.getQNameFromString(itemTypeStr, e)); } Element docElem = getChildElement(e, ELEM_WSDD_DOC); if (docElem != null) { WSDDDocumentation documentation = new WSDDDocumentation(docElem); parameter.setDocumentation(documentation.getValue()); } } public WSDDParameter() { } public WSDDParameter(ParameterDesc parameter) { this.parameter = parameter; } /** * Write this element out to a SerializationContext */ public void writeToContext(SerializationContext context) throws IOException { AttributesImpl attrs = new AttributesImpl(); QName qname = parameter.getQName(); if (qname != null) { if (qname.getNamespaceURI() != null && !qname.getNamespaceURI().equals("")) { attrs.addAttribute("", ATTR_QNAME, ATTR_QNAME, "CDATA", context.qName2String(parameter.getQName())); } else { attrs.addAttribute("", ATTR_NAME, ATTR_NAME, "CDATA", parameter.getQName().getLocalPart()); } } // Write the mode attribute, but only if it's not the default (IN) byte mode = parameter.getMode(); if (mode != ParameterDesc.IN) { String modeStr = ParameterDesc.getModeAsString(mode); attrs.addAttribute("", ATTR_MODE, ATTR_MODE, "CDATA", modeStr); } if (parameter.isInHeader()) { attrs.addAttribute("", ATTR_INHEADER, ATTR_INHEADER, "CDATA", "true"); } if (parameter.isOutHeader()) { attrs.addAttribute("", ATTR_OUTHEADER, ATTR_OUTHEADER, "CDATA", "true"); } QName typeQName = parameter.getTypeQName(); if (typeQName != null) { attrs.addAttribute("", ATTR_TYPE, ATTR_TYPE, "CDATA", context.qName2String(typeQName)); } QName itemQName = parameter.getItemQName(); if (itemQName != null) { attrs.addAttribute("", ATTR_ITEMQNAME, ATTR_ITEMQNAME, "CDATA", context.qName2String(itemQName)); } QName itemType = parameter.getItemType(); if (itemType != null) { attrs.addAttribute("", ATTR_ITEMTYPE, ATTR_ITEMTYPE, "CDATA", context.qName2String(itemType)); } context.startElement(getElementName(), attrs); if (parameter.getDocumentation() != null) { WSDDDocumentation documentation = new WSDDDocumentation(parameter.getDocumentation()); documentation.writeToContext(context); } context.endElement(); } public ParameterDesc getParameter() { return parameter; } public void setParameter(ParameterDesc parameter) { this.parameter = parameter; } /** * Return the element name of a particular subclass. */ protected QName getElementName() { return WSDDConstants.QNAME_PARAM; } }