/* * 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.axis2.wsdl.codegen.emitter.jaxws; import org.apache.axis2.AxisFault; import org.apache.axis2.description.WSDL2Constants; import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.xml.namespace.QName; import java.util.Iterator; public class JAXWS20Emitter extends JAXWSEmitter { /** * Creates the XML model for the Service Endpoint interface * * @return DOM Document */ protected Document createDOMDocumentForSEI() throws AxisFault { Document doc = getEmptyDocument(); Element rootElement = doc.createElement("javaConstruct"); Element importList = doc.createElement("importList"); rootElement.appendChild(importList); String packageName = codeGenConfiguration.getPackageName(); String targetNS = codeGenConfiguration.getTargetNamespace(); String portTypeName = (String) axisService.getParameterValue(WSDL2Constants.INTERFACE_LOCAL_NAME); portTypeName = resolveNameCollision(portTypeName, packageName, TYPE_SUFFIX); this.axisService.addParameter(JAXWS_PORT_TYPE_NAME, portTypeName); addAttribute(doc, "package", packageName, rootElement); addAttribute(doc, "targetNamespace", targetNS, rootElement); addAttribute(doc, "name", portTypeName, rootElement); Element annotationElement = AnnotationElementBuilder.buildWebServiceAnnotationElement(portTypeName, targetNS, "", doc); rootElement.appendChild(annotationElement); loadOperations(doc, rootElement, null); //attach a list of faults rootElement.appendChild(getUniqueListofFaults(doc)); doc.appendChild(rootElement); ////////////////////////////////////////////////////////// // System.out.println(DOM2Writer.nodeToString(rootElement)); //////////////////////////////////////////////////////////// return doc; } /** * Creates the XML model for the Service Endpoint interface * * @return DOM Document */ protected Document createDOMDocumentForSEIImpl() throws AxisFault { Document doc = getEmptyDocument(); Element rootElement = doc.createElement("javaConstruct"); //Element importList = doc.createElement("importList"); //rootElement.appendChild(importList); String packageName = codeGenConfiguration.getPackageName(); String targetNS = codeGenConfiguration.getTargetNamespace(); String portTypeName = (String) axisService.getParameterValue(WSDL2Constants.INTERFACE_LOCAL_NAME); portTypeName = resolveNameCollision(portTypeName, packageName, TYPE_SUFFIX); this.axisService.addParameter(JAXWS_PORT_TYPE_NAME, portTypeName); addAttribute(doc, "package", packageName, rootElement); addAttribute(doc, "targetNamespace", targetNS, rootElement); addAttribute(doc, "name", axisService.getParameter(JAXWS_PORT_TYPE_NAME).getValue() + JAXWS_IMPL_SUFFIX, rootElement); Element annotationElement = AnnotationElementBuilder.buildWebServiceAnnotationElement( packageName +"." +axisService.getParameter(JAXWS_PORT_TYPE_NAME).getValue(), doc); rootElement.appendChild(annotationElement); loadOperations(doc, rootElement, null); //attach a list of faults rootElement.appendChild(getUniqueListofFaults(doc)); doc.appendChild(rootElement); ////////////////////////////////////////////////////////// // System.out.println(DOM2Writer.nodeToString(rootElement)); //////////////////////////////////////////////////////////// return doc; } /** * Creates the XML model for the Service Class * * @return DOM Document */ protected Document createDOMDocumentForServiceClass() { Document doc = getEmptyDocument(); Element rootElement = doc.createElement("javaConstruct"); Element importList = doc.createElement("importList"); rootElement.appendChild(importList); String serviceName = axisService.getName(); String capitalizedServiceName = serviceName.toUpperCase(); String wsdlLocation = "Needs to be fixed"; String packageName = codeGenConfiguration.getPackageName(); String targetNS = codeGenConfiguration.getTargetNamespace(); serviceName = resolveNameCollision(serviceName, packageName, TYPE_SUFFIX); addAttribute(doc, "package", packageName, rootElement); addAttribute(doc, "targetNamespace", targetNS, rootElement); addAttribute(doc, "name", serviceName, rootElement); addAttribute(doc, "wsdlLocation", wsdlLocation, rootElement); addAttribute(doc, "capitalizedServiceName", capitalizedServiceName, rootElement); Element annotationElement = AnnotationElementBuilder.buildWebServiceClientAnnotationElement(serviceName, targetNS, wsdlLocation, doc); rootElement.appendChild(annotationElement); //Building portType Elements -- think of a suitable solution for (Iterator portIterator = axisService.getEndpoints().keySet().iterator(); portIterator.hasNext();) { String portName = (String) portIterator.next(); Element portElement = doc.createElement("port"); addAttribute(doc, "portName", portName, portElement); addAttribute(doc, "portTypeName", (String) this.axisService.getParameter(JAXWS_PORT_TYPE_NAME).getValue(), portElement); Element endPointAnnoElement = AnnotationElementBuilder.buildWebEndPointAnnotationElement(portName, doc); portElement.appendChild(endPointAnnoElement); rootElement.appendChild(portElement); } //attach a list of faults rootElement.appendChild(getUniqueListofFaults(doc)); doc.appendChild(rootElement); ////////////////////////////////////////////////////////// // System.out.println(DOM2Writer.nodeToString(rootElement)); //////////////////////////////////////////////////////////// return doc; } /** * Creates the XML model for a Exception Class * * @param key String * @return DOM Document */ protected Document createDOMDocumentForException(String key) { Document doc = getEmptyDocument(); Element faultElement; faultElement = doc.createElement("javaConstruct"); Element importList = doc.createElement("importList"); faultElement.appendChild(importList); String packageName = codeGenConfiguration.getPackageName(); String targetNS = codeGenConfiguration.getTargetNamespace(); addAttribute(doc, "package", packageName, faultElement); addAttribute(doc, "targetNamespace", targetNS, faultElement); String exceptionClassName = (String) faultClassNameMap.get(key); String resolvedExpClass = resolveNameCollision(exceptionClassName, packageName, EXCEPTION_SUFFIX); if (!resolvedExpClass.equals(exceptionClassName)) faultClassNameMap.put(key, resolvedExpClass); addAttribute(doc, "name", resolvedExpClass, faultElement); String typeMapping = this.mapper.getTypeMappingName((QName) faultElementQNameMap.get(key)); String shortType = extratClassName(typeMapping); addAttribute(doc, "type", (typeMapping == null) ? "" : typeMapping, faultElement); addAttribute(doc, "shortType", (shortType == null) ? "" : shortType, faultElement); Element importElement; importElement = doc.createElement("import"); addAttribute(doc, "value", typeMapping, importElement); importList.appendChild(importElement); if (mapper.getDefaultMappingName().equals(typeMapping)) { addAttribute(doc, "default", "yes", faultElement); } addAttribute(doc, "value", getParamInitializer(typeMapping), faultElement); Element annotationElement = AnnotationElementBuilder.buildWebFaultAnnotationElement(typeMapping, codeGenConfiguration.getTargetNamespace(), doc); faultElement.appendChild(annotationElement); doc.appendChild(faultElement); ////////////////////////////////////////////////////////// // System.out.println(DOM2Writer.nodeToString(faultElement)); //////////////////////////////////////////////////////////// return doc; } }