You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by am...@apache.org on 2007/08/22 12:36:04 UTC
svn commit: r568546 - in
/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl:
codegen/extension/JAXWSWapperExtension.java
template/java/JaxwsServiceEndpointInterfaceImplTemplate.xsl
template/java/JaxwsServiceXMLTemplate.xsl
Author: amilas
Date: Wed Aug 22 03:36:03 2007
New Revision: 568546
URL: http://svn.apache.org/viewvc?rev=568546&view=rev
Log:
add new files for previous jaxws codegen
Added:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JAXWSWapperExtension.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceEndpointInterfaceImplTemplate.xsl
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceXMLTemplate.xsl
Added: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JAXWSWapperExtension.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JAXWSWapperExtension.java?rev=568546&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JAXWSWapperExtension.java (added)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/JAXWSWapperExtension.java Wed Aug 22 03:36:03 2007
@@ -0,0 +1,340 @@
+/*
+ * Copyright 2004,2005 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.axis2.wsdl.codegen.extension;
+
+import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
+import org.apache.axis2.wsdl.codegen.CodeGenerationException;
+import org.apache.axis2.wsdl.WSDLUtil;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.util.Constants;
+import org.apache.axis2.wsdl.util.MessagePartInformationHolder;
+import org.apache.axis2.wsdl.i18n.CodegenMessages;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisMessage;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.AxisFault;
+import org.apache.ws.commons.schema.*;
+
+import javax.xml.namespace.QName;
+import java.util.List;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.ArrayList;
+
+public class JAXWSWapperExtension extends AbstractCodeGenerationExtension {
+ private CodeGenConfiguration codeGenConfiguration;
+
+ public void engage(CodeGenConfiguration configuration) throws CodeGenerationException {
+ this.codeGenConfiguration = configuration;
+ if (!codeGenConfiguration.isParametersWrapped() && codeGenConfiguration.getOutputLanguage().equals("jax-ws")) {
+
+ //walk the schema and find the top level elements
+ List services = configuration.getAxisServices();
+ AxisService axisService;
+
+ for (Iterator servicesIter = services.iterator(); servicesIter.hasNext();) {
+ axisService = (AxisService) servicesIter.next();
+ for (Iterator operations = axisService.getOperations();
+ operations.hasNext();) {
+ AxisOperation op = (AxisOperation) operations.next();
+ boolean wrappable = true;
+ //get the input parameter details to unwrap the requests
+ if (WSDLUtil.isInputPresentForMEP(op.getMessageExchangePattern())) {
+
+ AxisMessage message = op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ XmlSchemaElement schemaElement = message.getSchemaElement();
+ String opName = ((AxisOperation) message.getParent()).getName().getLocalPart();
+ if(!schemaElement.getName().equals(opName))
+ return;
+ wrappable = walkSchema(op.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE),
+ WSDLConstants.INPUT_PART_QNAME_SUFFIX);
+ }
+ //get the out put parameter details as well to unwrap the responses
+ if (WSDLUtil.isOutputPresentForMEP(op.getMessageExchangePattern()) && wrappable) {
+ walkSchema(op.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE),
+ WSDLConstants.OUTPUT_PART_QNAME_SUFFIX);
+ }
+ }
+ }
+ }
+ }
+
+ public boolean walkSchema(AxisMessage message, String qnameSuffix) throws CodeGenerationException {
+ //nothing to unwrap
+ if (message.getSchemaElement() == null) {
+ return false;
+ }
+
+ List partNameList = new LinkedList();
+
+ XmlSchemaElement schemaElement = message.getSchemaElement();
+// String opName = ((AxisOperation) message.getParent()).getName().getLocalPart();
+// if(!schemaElement.getName().equals(opName))
+// return false;
+
+ XmlSchemaType schemaType = schemaElement.getSchemaType();
+ QName schemaTypeQname = schemaElement.getSchemaTypeName();
+
+ if (schemaType == null) {
+ if (schemaTypeQname != null) {
+ // find the schema type from all the schemas
+ // now we need to get the schema of the extension type from the parent schema. For that let's first retrieve
+ // the parent schema
+ AxisService axisService = (AxisService) message.getParent().getParent();
+ ArrayList schemasList = axisService.getSchema();
+
+ XmlSchema schema = null;
+ for (Iterator iter = schemasList.iterator(); iter.hasNext();) {
+ schema = (XmlSchema) iter.next();
+ schemaType = getSchemaType(schema, schemaTypeQname);
+ if (schemaType != null) {
+ break;
+ }
+ }
+ }
+ }
+
+ if (schemaType instanceof XmlSchemaComplexType) {
+ if(!handleAllCasesOfComplexTypes(schemaType,
+ message,
+ partNameList,
+ qnameSuffix)){
+ return false;
+ }
+ } else {
+ return false;
+ }
+
+// else if ((schemaType instanceof XmlSchemaSimpleType) ||
+// ((schemaTypeQname != null) && (schemaTypeQname.equals(new QName("http://www.w3.org/2001/XMLSchema", "anyType"))))) {
+// QName opName = ((AxisOperation) message.getParent()).getName();
+// partNameList.add(WSDLUtil.getPartQName(opName.getLocalPart(),
+// qnameSuffix,
+// schemaElement.getQName().getLocalPart()));
+// } else if (schemaType == null) {
+// throw new CodeGenerationException("Can not determine the schema type for the "
+// + schemaElement.getName());
+// } else {
+// //we've no idea how to unwrap a non complexType!!!!!!
+// throw new CodeGenerationException(
+// CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+// schemaType.getName(), "complexType"));
+// }
+
+
+ try {
+ //set in the axis message that the unwrapping was success
+ message.addParameter(getParameter(
+ Constants.UNWRAPPED_KEY,
+ Boolean.TRUE));
+
+ // attach the opName and the parts name list into the
+ // axis message by using the holder
+ MessagePartInformationHolder infoHolder = new MessagePartInformationHolder();
+ infoHolder.setOperationName(((AxisOperation) message.getParent()).getName());
+ infoHolder.setPartsList(partNameList);
+
+ //attach it to the parameters
+ message.addParameter(
+ getParameter(Constants.UNWRAPPED_DETAILS,
+ infoHolder));
+
+ } catch (AxisFault axisFault) {
+ throw new CodeGenerationException(axisFault);
+ }
+ return true;
+ }
+
+ /**
+ * Generate a parametes object
+ *
+ * @param key
+ * @param value
+ */
+ private Parameter getParameter(String key, Object value) {
+ Parameter myParameter = new Parameter();
+ myParameter.setName(key);
+ myParameter.setValue(value);
+ return myParameter;
+ }
+
+ private XmlSchemaType getSchemaType(XmlSchema schema, QName typeName) {
+ XmlSchemaType xmlSchemaType = null;
+ if (schema != null) {
+ xmlSchemaType = schema.getTypeByName(typeName);
+ if (xmlSchemaType == null) {
+ // try to find in an import or an include
+ XmlSchemaObjectCollection includes = schema.getIncludes();
+ if (includes != null) {
+ Iterator includesIter = includes.getIterator();
+ Object object = null;
+ while (includesIter.hasNext()) {
+ object = includesIter.next();
+ if (object instanceof XmlSchemaImport) {
+ XmlSchema schema1 = ((XmlSchemaImport) object).getSchema();
+ xmlSchemaType = getSchemaType(schema1, typeName);
+ }
+ if (object instanceof XmlSchemaInclude) {
+ XmlSchema schema1 = ((XmlSchemaInclude) object).getSchema();
+ xmlSchemaType = getSchemaType(schema1, typeName);
+ }
+ if (xmlSchemaType != null) {
+ break;
+ }
+ }
+ }
+ }
+ }
+ return xmlSchemaType;
+ }
+
+ private boolean handleAllCasesOfComplexTypes(XmlSchemaType schemaType,
+ AxisMessage message,
+ List partNameList,
+ String qnameSuffix) throws CodeGenerationException {
+ // if a complex type name exits for a element then
+ // we keep that complex type to support unwrapping
+ if (schemaType instanceof XmlSchemaComplexType) {
+ XmlSchemaComplexType cmplxType = (XmlSchemaComplexType) schemaType;
+
+ XmlSchemaObjectCollection xmlObjectCollection = cmplxType.getAttributes();
+ if (xmlObjectCollection.getCount() != 0)
+ return false;
+
+ if (cmplxType.getContentModel() == null) {
+ if (cmplxType.getParticle() != null) {
+ return processXMLSchemaSequence(cmplxType.getParticle(), message, partNameList,
+ qnameSuffix);
+ }
+ } else {
+ // now lets handle case with extensions
+ return processComplexContentModel(cmplxType, message, partNameList, qnameSuffix);
+ }
+ // handle attributes here
+ // processAttributes(cmplxType, message, partNameList, qnameSuffix);
+
+ }
+ return false;
+ }
+
+ private boolean processComplexContentModel(XmlSchemaComplexType cmplxType,
+ AxisMessage message,
+ List partNameList,
+ String qnameSuffix) throws CodeGenerationException {
+ //TODO implement this method
+ return false;
+ }
+
+ private boolean processXMLSchemaSequence(XmlSchemaParticle schemaParticle,
+ AxisMessage message,
+ List partNameList,
+ String qnameSuffix) throws CodeGenerationException {
+ if (schemaParticle instanceof XmlSchemaSequence) {
+ // get the name of the operation name and namespace,
+ // part name and hang them somewhere ? The ideal place
+ // would be the property bag in the codegen config!
+ QName opName = ((AxisOperation) message.getParent()).getName();
+
+ XmlSchemaSequence sequence = (XmlSchemaSequence) schemaParticle;
+ XmlSchemaObjectCollection items = sequence.getItems();
+
+ // if this is an empty sequence, return
+ if (items.getCount() == 0) {
+/*be carefull */
+ return true;
+ }
+ for (Iterator i = items.getIterator(); i.hasNext();) {
+ Object item = i.next();
+ // get each and every element in the sequence and
+ // traverse through them
+ if (item instanceof XmlSchemaElement) {
+ //add the element name to the part name list
+ XmlSchemaElement xmlSchemaElement = (XmlSchemaElement) item;
+// if(xmlSchemaElement.isNillable()){
+// return false;
+// }
+ XmlSchemaType schemaType = xmlSchemaElement.getSchemaType();
+ String partName = null;
+ if (xmlSchemaElement.getRefName() != null) {
+ partName = xmlSchemaElement.getRefName().getLocalPart();
+ } else {
+ partName = xmlSchemaElement.getName();
+ }
+
+ // part names are not unique across messages. Hence
+ // we need some way of making the part name a unique
+ // one (due to the fact that the type mapper
+ // is a global list of types).
+ // The seemingly best way to do that is to
+ // specify a namespace for the part QName reference which
+ // is stored in the list. This part qname is
+ // temporary and should not be used with it's
+ // namespace URI (which happened to be the operation name)
+ // with _input attached to it
+
+ partNameList.add(
+ WSDLUtil.getPartQName(opName.getLocalPart(),
+ qnameSuffix,
+ partName));
+
+ // if the particle contains anything other than
+ // a XMLSchemaElement then we are not in a position
+ // to unwrap it
+// }
+// else if (item instanceof XmlSchemaAny) {
+//
+// // if this is an instance of xs:any, then there is no part name for it. Using ANY_ELEMENT_FIELD_NAME
+// // for it for now
+//
+// //we have to handle both maxoccurs 1 and maxoccurs > 1 situation
+// XmlSchemaAny xmlSchemaAny = (XmlSchemaAny) item;
+//
+// partNameList.add(
+// WSDLUtil.getPartQName(opName.getLocalPart(),
+// qnameSuffix,
+// Constants.ANY_ELEMENT_FIELD_NAME));
+ } else {
+// throw new CodeGenerationException(
+// CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+// "unknown type", "Element"));
+ return false;
+ }
+ }
+ return true;
+ //we do not know how to deal with other particles
+ //such as xs:all or xs:choice. Usually occurs when
+ //passed with the user built WSDL where the style
+ //is document.
+// } else if (schemaParticle instanceof XmlSchemaChoice) {
+// throw new CodeGenerationException(
+// CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+// "choice", "sequence"));
+//
+// } else if (schemaParticle instanceof XmlSchemaAll) {
+// throw new CodeGenerationException(
+// CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+// "all", "sequence"));
+ } else {
+// throw new CodeGenerationException(
+// CodegenMessages.getMessage("extension.unsupportedSchemaFormat",
+// "unknown", "sequence"));
+ return false;
+ }
+ }
+
+
+}
\ No newline at end of file
Added: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceEndpointInterfaceImplTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceEndpointInterfaceImplTemplate.xsl?rev=568546&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceEndpointInterfaceImplTemplate.xsl (added)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceEndpointInterfaceImplTemplate.xsl Wed Aug 22 03:36:03 2007
@@ -0,0 +1,108 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="text"/>
+ <xsl:variable name="targetNs" select="/javaConstruct/@targetNamespace"/>
+ <xsl:template match="javaConstruct">package <xsl:value-of select="@package"/>;
+
+/**
+ * <xsl:value-of select="@name"/>.java
+ *
+ * This class was auto-generated from WSDL.
+ * Apache Axis2 version: #axisVersion# #today#
+ */
+<xsl:for-each select="annotation">
+ <xsl:variable name="annoparamcount" select="count(param)"/>
+@<xsl:value-of select="@name"/>(<xsl:for-each select="param">
+ <xsl:choose>
+ <xsl:when test="$annoparamcount = position()">
+ <xsl:value-of select="@type"/>
+ <xsl:text> = </xsl:text>"<xsl:value-of select="@value"/>"</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@type"/>
+ <xsl:text> = </xsl:text>"<xsl:value-of select="@value"/>",<xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>)</xsl:for-each>
+public class <xsl:value-of select="@name"/> {
+<xsl:apply-templates/>
+}
+ </xsl:template>
+
+ <xsl:template match="method">
+ <xsl:variable name="outparamcount" select="count(output/param)"/>
+ <xsl:variable name="parameterstyle" select="@parameterstyle"/>
+ <xsl:variable name="useholder" select="@useholder"/>
+ <xsl:variable name="style" select="@style"/>
+ <xsl:variable name="inputWrappedCount" select="count(input/param/param)"/>
+ <xsl:variable name="inparamcount" select="count(input/param)"/>
+ /**<xsl:choose><xsl:when test="$inputWrappedCount > 0"><xsl:for-each select="input/param/param">
+ * @param <xsl:value-of select="@name"/></xsl:for-each><xsl:if test="$outparamcount != 0">
+ * @return <xsl:value-of select="output/param/@shorttype"/></xsl:if><xsl:for-each select="fault/param[@type!='']">
+ * @throws <xsl:value-of select="@name"/></xsl:for-each></xsl:when><xsl:otherwise><xsl:for-each select="input/param">
+ * @param <xsl:value-of select="@name"/></xsl:for-each><xsl:if test="$outparamcount != 0">
+ * @return <xsl:value-of select="output/param/@shorttype"/></xsl:if><xsl:for-each select="fault/param[@type!='']">
+ * @throws <xsl:value-of select="@name"/></xsl:for-each></xsl:otherwise> </xsl:choose>
+ */
+ public <xsl:choose>
+ <xsl:when test="$outparamcount = 0">void </xsl:when>
+ <xsl:when test="$useholder = 'true'">void </xsl:when>
+ <xsl:otherwise><xsl:value-of select="output/param/@type"/><xsl:text> </xsl:text></xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="@name"/>(<xsl:choose>
+ <xsl:when test="$useholder = 'true'">
+ <xsl:for-each select="input/param">
+ @javax.jws.WebParam(name = "<xsl:value-of select="@name"/>", targetNamespace = "<xsl:value-of select="$targetNs"/>", mode = javax.jws.WebParam.Mode.INOUT<xsl:choose>
+ <xsl:when test="$parameterstyle = 'BARE'">, partName = "<xsl:value-of select="@partname"/>"</xsl:when></xsl:choose>)
+ <xsl:choose>
+ <xsl:when test="$inparamcount = position()">javax.xml.ws.Holder<<xsl:value-of select="@type"/>
+ <xsl:text>> </xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:when>
+ <xsl:otherwise>javax.xml.ws.Holder<<xsl:value-of select="@type"/>
+ <xsl:text>> </xsl:text>
+ <xsl:value-of select="@name"/>,<xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each></xsl:when>
+ <xsl:when test="$inputWrappedCount > 0">
+ <xsl:for-each select="input/param/param">
+ <xsl:choose>
+ <xsl:when test="$inputWrappedCount = position()">
+ <xsl:value-of select="@type"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@type"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>,<xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise><xsl:for-each select="input/param">
+ <xsl:choose>
+ <xsl:when test="$inparamcount = position()">
+ <xsl:value-of select="@type"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@type"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>,<xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each></xsl:otherwise>
+ </xsl:choose>)<xsl:for-each select="fault/param[@type!='']">
+ <xsl:if test="position()=1">
+ throws </xsl:if>
+ <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@shortName"/>
+ </xsl:for-each> {
+ //TODO : fill this with the necessary business logic
+ throw new java.lang.UnsupportedOperationException("Please implement " + this.getClass().getName()
+ + "#" + this.getClass().getEnclosingMethod().getName());
+ }
+ </xsl:template>
+
+</xsl:stylesheet>
Added: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceXMLTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceXMLTemplate.xsl?rev=568546&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceXMLTemplate.xsl (added)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/JaxwsServiceXMLTemplate.xsl Wed Aug 22 03:36:03 2007
@@ -0,0 +1,66 @@
+<!--
+ ~ 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.
+ -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
+
+ <xsl:template match="/">
+ <xsl:comment> This file was auto-generated from WSDL </xsl:comment>
+ <xsl:comment> Apache Axis2 version: #axisVersion# #today# </xsl:comment>
+ <serviceGroup>
+ <xsl:apply-templates/>
+ </serviceGroup>
+ </xsl:template>
+
+ <xsl:template match="interfaces/interface">
+ <xsl:variable name="package"><xsl:value-of select="@classpackage"/></xsl:variable>
+
+ <service>
+ <xsl:attribute name="name"><xsl:value-of select="@servicename"/></xsl:attribute>
+ <messageReceivers>
+ <xsl:for-each select="messagereceiver">
+ <xsl:if test=".">
+ <messageReceiver>
+ <xsl:attribute name="mep"><xsl:value-of select="@mepURI"/></xsl:attribute>
+ <xsl:attribute name="class">org.apache.axis2.jaxws.server.JAXWSMessageReceiver</xsl:attribute>
+ </messageReceiver>
+ </xsl:if>
+ </xsl:for-each>
+ </messageReceivers>
+ <parameter name="ServiceClass">
+ <xsl:choose>
+ <xsl:when test="$package=''">
+ <xsl:value-of select="@name"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$package"/>.<xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </parameter>
+ <xsl:for-each select="method">
+ <operation>
+ <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+ <xsl:attribute name="mep"><xsl:value-of select="@mepURI"/></xsl:attribute>
+ <actionMapping>
+ <xsl:value-of select="@soapaction"/>
+ </actionMapping>
+ </operation>
+ </xsl:for-each>
+ </service>
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org