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 &gt; 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&lt;<xsl:value-of select="@type"/>
+                <xsl:text>&gt; </xsl:text>
+                <xsl:value-of select="@name"/>
+            </xsl:when>
+            <xsl:otherwise>javax.xml.ws.Holder&lt;<xsl:value-of select="@type"/>
+                <xsl:text>&gt; </xsl:text>
+                <xsl:value-of select="@name"/>,<xsl:text> </xsl:text>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:for-each></xsl:when>
+        <xsl:when test="$inputWrappedCount &gt; 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