axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From i..@apache.org
Subject cvs commit: ws-axis/contrib/ews/src/org/apache/geronimo/ews/jaxrpcmapping J2eeSkelWriter.java
Date Tue, 31 Aug 2004 17:32:33 GMT
ias         2004/08/31 10:32:33

  Modified:    contrib/ews/src/org/apache/geronimo/ews/jaxrpcmapping
                        J2eeSkelWriter.java
  Log:
  Remove deprecation because it's now used.
  
  Revision  Changes    Path
  1.4       +465 -466  ws-axis/contrib/ews/src/org/apache/geronimo/ews/jaxrpcmapping/J2eeSkelWriter.java
  
  Index: J2eeSkelWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/contrib/ews/src/org/apache/geronimo/ews/jaxrpcmapping/J2eeSkelWriter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- J2eeSkelWriter.java	11 Aug 2004 09:16:05 -0000	1.3
  +++ J2eeSkelWriter.java	31 Aug 2004 17:32:33 -0000	1.4
  @@ -1,466 +1,465 @@
  -/*
  - * The Apache Software License, Version 1.1
  - *
  - *
  - * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
  - * reserved.
  - *
  - * Redistribution and use in source and binary forms, with or without
  - * modification, are permitted provided that the following conditions
  - * are met:
  - *
  - * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer.
  - *
  - * 2. Redistributions in binary form must reproduce the above copyright
  - *    notice, this list of conditions and the following disclaimer in
  - *    the documentation and/or other materials provided with the
  - *    distribution.
  - *
  - * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:
  - *       "This product includes software developed by the
  - *        Apache Software Foundation (http://www.apache.org/)."
  - *    Alternately, this acknowledgment may appear in the software itself,
  - *    if and wherever such third-party acknowledgments normally appear.
  - *
  - * 4. The names "Axis" and "Apache Software Foundation" must
  - *    not be used to endorse or promote products derived from this
  - *    software without prior written permission. For written
  - *    permission, please contact apache@apache.org.
  - *
  - * 5. Products derived from this software may not be called "Apache",
  - *    nor may "Apache" appear in their name, without prior written
  - *    permission of the Apache Software Foundation.
  - *
  - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  - * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  - * SUCH DAMAGE.
  - * ====================================================================
  - *
  - * This software consists of voluntary contributions made by many
  - * individuals on behalf of the Apache Software Foundation.  For more
  - * information on the Apache Software Foundation, please see
  - * <http://www.apache.org/>.
  - */
  -package org.apache.geronimo.ews.jaxrpcmapping;
  -
  -import org.apache.axis.Constants;
  -import org.apache.axis.utils.Messages;
  -import org.apache.axis.wsdl.symbolTable.BindingEntry;
  -import org.apache.axis.wsdl.symbolTable.FaultInfo;
  -import org.apache.axis.wsdl.symbolTable.Parameter;
  -import org.apache.axis.wsdl.symbolTable.Parameters;
  -import org.apache.axis.wsdl.symbolTable.SymbolTable;
  -import org.apache.axis.wsdl.toJava.JavaClassWriter;
  -import org.apache.axis.wsdl.toJava.Utils;
  -
  -import javax.wsdl.Binding;
  -import javax.wsdl.BindingInput;
  -import javax.wsdl.BindingOperation;
  -import javax.wsdl.BindingOutput;
  -import javax.wsdl.Operation;
  -import javax.wsdl.OperationType;
  -import javax.wsdl.extensions.ExtensibilityElement;
  -import javax.wsdl.extensions.UnknownExtensibilityElement;
  -import javax.wsdl.extensions.soap.SOAPBody;
  -import javax.wsdl.extensions.soap.SOAPOperation;
  -import javax.xml.namespace.QName;
  -import java.io.IOException;
  -import java.io.PrintWriter;
  -import java.util.ArrayList;
  -import java.util.Iterator;
  -import java.util.List;
  -
  -/**
  - * This is Wsdl2java's skeleton writer.  It writes the <BindingName>Skeleton.java
  - * file which contains the <bindingName>Skeleton class.
  - * 
  - * @author Ias (iasandcb@tmax.co.kr)
  - * @deprecated no more used by J2eeGeneratorFactory
  - */
  -public class J2eeSkelWriter extends JavaClassWriter {
  -    private BindingEntry bEntry;
  -    private Binding binding;
  -    private SymbolTable symbolTable;
  -
  -    /**
  -     * Constructor.
  -     */
  -    protected J2eeSkelWriter(J2eeEmitter emitter,
  -                             BindingEntry bEntry,
  -                             SymbolTable symbolTable) {
  -        super(emitter, bEntry.getName() + "Skeleton", "skeleton");
  -        this.bEntry = bEntry;
  -        this.binding = bEntry.getBinding();
  -        this.symbolTable = symbolTable;
  -    } // ctor
  -
  -    /**
  -     * Returns "implements <SEI>, org.apache.axis.wsdl.Skeleton ".
  -     */
  -    protected String getImplementsText() {
  -        return "implements " + bEntry.getDynamicVar(J2eeBindingWriter.INTERFACE_NAME)
  -                + ", org.apache.axis.wsdl.Skeleton ";
  -    } // getImplementsText
  -
  -    /**
  -     * Write the body of the binding's stub file.
  -     */
  -    protected void writeFileBody(PrintWriter pw) throws IOException {
  -        String portTypeName = (String) bEntry.getDynamicVar(J2eeBindingWriter.INTERFACE_NAME);
  -        String implType = portTypeName + " impl";
  -
  -        // Declare private impl and skeleton base delegates
  -        pw.println("    private " + implType + ";");
  -        pw.println("    private static java.util.Map _myOperations = new java.util.Hashtable();");
  -        pw.println("    private static java.util.Collection _myOperationsList = new java.util.ArrayList();");
  -        pw.println();
  -        pw.println("    /**");
  -        pw.println("    * Returns List of OperationDesc objects with this name");
  -        pw.println("    */");
  -        pw.println("    public static java.util.List getOperationDescByName(java.lang.String
methodName) {");
  -        pw.println("        return (java.util.List)_myOperations.get(methodName);");
  -        pw.println("    }");
  -        pw.println();
  -        pw.println("    /**");
  -        pw.println("    * Returns Collection of OperationDescs");
  -        pw.println("    */");
  -        pw.println("    public static java.util.Collection getOperationDescs() {");
  -        pw.println("        return _myOperationsList;");
  -        pw.println("    }");
  -        pw.println();
  -
  -        // Initialize operation parameter names
  -        pw.println("    static {");
  -        pw.println("        org.apache.axis.description.OperationDesc _oper;");
  -        pw.println("        org.apache.axis.description.FaultDesc _fault;");
  -        pw.println("        org.apache.axis.description.ParameterDesc [] _params;");
  -        List operations = binding.getBindingOperations();
  -        for (int i = 0; i < operations.size(); ++i) {
  -            BindingOperation bindingOper = (BindingOperation) operations.get(i);
  -            Operation operation = bindingOper.getOperation();
  -            OperationType type = operation.getStyle();
  -            // These operation types are not supported.  The signature
  -            // will be a string stating that fact.
  -            if (type == OperationType.NOTIFICATION
  -                    || type == OperationType.SOLICIT_RESPONSE) {
  -                continue;
  -            }
  -
  -            Parameters parameters =
  -                    bEntry.getParameters(bindingOper.getOperation());
  -
  -            if (parameters != null) {
  -                // The invoked java name of the bindingOper is stored.
  -                String opName = bindingOper.getOperation().getName();
  -                String javaOpName = Utils.xmlNameToJava(opName);
  -                pw.println("        _params = new org.apache.axis.description.ParameterDesc
[] {");
  -
  -                for (int j = 0; j < parameters.list.size(); j++) {
  -                    Parameter p = (Parameter) parameters.list.get(j);
  -                    String modeStr;
  -                    switch (p.getMode()) {
  -                        case Parameter.IN:
  -                            modeStr = "org.apache.axis.description.ParameterDesc.IN";
  -                            break;
  -                        case Parameter.OUT:
  -                            modeStr = "org.apache.axis.description.ParameterDesc.OUT";
  -                            break;
  -                        case Parameter.INOUT:
  -                            modeStr = "org.apache.axis.description.ParameterDesc.INOUT";
  -                            break;
  -                        default:
  -                            throw new IOException(Messages.getMessage("badParmMode00",
  -                                    (new Byte(p.getMode())).toString()));
  -                    }
  -
  -                    // Get the QNames representing the parameter name and type
  -                    QName paramName = p.getQName();
  -                    QName paramType = Utils.getXSIType(p);
  -
  -                    // Is this parameter a header?
  -                    String inHeader = p.isInHeader() ? "true" : "false";
  -                    String outHeader = p.isOutHeader() ? "true" : "false";
  -                    pw.println("            " +
  -                            "new org.apache.axis.description.ParameterDesc(" +
  -                            Utils.getNewQName(paramName) +
  -                            ", " + modeStr +
  -                            ", " + Utils.getNewQName(paramType) +
  -                            ", " + Utils.getParameterTypeName(p) + ".class" +
  -                            ", " + inHeader +
  -                            ", " + outHeader + "), ");
  -                }
  -
  -                pw.println("        };");
  -
  -                // Get the return name QName and type
  -                QName retName = null;
  -                QName retType = null;
  -                if (parameters.returnParam != null) {
  -                    retName = parameters.returnParam.getQName();
  -                    retType = Utils.getXSIType(parameters.returnParam);
  -                }
  -
  -                String returnStr;
  -                if (retName != null) {
  -                    returnStr = Utils.getNewQName(retName);
  -                } else {
  -                    returnStr = "null";
  -                }
  -                pw.println("        _oper = new org.apache.axis.description.OperationDesc(\""
+
  -                        javaOpName + "\", _params, " + returnStr + ");");
  -
  -                if (retType != null) {
  -                    pw.println("        _oper.setReturnType(" +
  -                            Utils.getNewQName(retType) + ");");
  -                    if (parameters.returnParam != null &&
  -                            parameters.returnParam.isOutHeader()) {
  -                        pw.println("        _oper.setReturnHeader(true);");
  -                    }
  -                }
  -
  -                // If we need to know the QName (if we have a namespace or
  -                // the actual method name doesn't match the XML we expect),
  -                // record it in the OperationDesc
  -                QName elementQName =
  -                        Utils.getOperationQName(bindingOper, bEntry, symbolTable);
  -                if (elementQName != null) {
  -                    pw.println("        _oper.setElementQName(" +
  -                            Utils.getNewQName(elementQName) + ");");
  -                }
  -
  -                // Find the SOAPAction.
  -                List elems = bindingOper.getExtensibilityElements();
  -                Iterator it = elems.iterator();
  -                boolean found = false;
  -                while (!found && it.hasNext()) {
  -                    ExtensibilityElement elem = (ExtensibilityElement) it.next();
  -                    if (elem instanceof SOAPOperation) {
  -                        SOAPOperation soapOp = (SOAPOperation) elem;
  -                        String action = soapOp.getSoapActionURI();
  -                        if (action != null) {
  -                            pw.println("        _oper.setSoapAction(\"" + action + "\");");
  -                            found = true;
  -                        }
  -                    } else if (elem instanceof UnknownExtensibilityElement) {
  -                        //TODO: After WSDL4J supports soap12, change this code
  -                        UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement)
elem;
  -                        QName name = unkElement.getElementType();
  -                        if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) &&
  -                                name.getLocalPart().equals("operation")) {
  -                            String action = unkElement.getElement().getAttribute("soapAction");
  -                            if (action != null) {
  -                                pw.println("        _oper.setSoapAction(\"" + action +
"\");");
  -                                found = true;
  -                            }
  -                        }
  -                    }
  -                }
  -
  -                pw.println("        _myOperationsList.add(_oper);");
  -                pw.println("        if (_myOperations.get(\"" + javaOpName + "\") == null)
{");
  -                pw.println("            _myOperations.put(\"" + javaOpName + "\", new java.util.ArrayList());");
  -                pw.println("        }");
  -                pw.println("        ((java.util.List)_myOperations.get(\"" + javaOpName
+ "\")).add(_oper);");
  -            }
  -
  -            // Now generate FaultDesc
  -            if (bEntry.getFaults() != null) {
  -                ArrayList faults = (ArrayList) bEntry.getFaults().get(bindingOper);
  -                if (faults != null) {
  -
  -                    // Operation was not created if there were no parameters
  -                    if (parameters == null) {
  -                        String opName = bindingOper.getOperation().getName();
  -                        String javaOpName = Utils.xmlNameToJava(opName);
  -                        pw.println("        _oper = " +
  -                                "new org.apache.axis.description.OperationDesc();");
  -                        pw.println("        _oper.setName(\"" +
  -                                javaOpName + "\");");
  -                    }
  -                    // Create FaultDesc items for each fault
  -                    Iterator it = faults.iterator();
  -                    while (it.hasNext()) {
  -                        FaultInfo faultInfo = (FaultInfo) it.next();
  -                        QName faultQName = faultInfo.getQName();
  -                        QName faultXMLType = faultInfo.getXMLType();
  -                        String faultName = faultInfo.getName();
  -                        String className =
  -                                Utils.getFullExceptionName(faultInfo.getMessage(), symbolTable);
  -                        pw.println("        _fault = " +
  -                                "new org.apache.axis.description.FaultDesc();");
  -                        if (faultName != null) {
  -                            pw.println("        _fault.setName(\"" +
  -                                    faultName + "\");");
  -                        }
  -                        if (faultQName != null) {
  -                            pw.println("        _fault.setQName(" +
  -                                    Utils.getNewQName(faultQName) + ");");
  -                        }
  -                        if (className != null) {
  -                            pw.println("        _fault.setClassName(\"" +
  -                                    className + "\");");
  -                        }
  -                        if (faultXMLType != null) {
  -                            pw.println("        _fault.setXmlType(" +
  -                                    Utils.getNewQName(faultXMLType) + ");");
  -                        }
  -                        pw.println("        _oper.addFault(_fault);");
  -                    }
  -                }
  -            }
  -        }
  -        pw.println("    }");
  -        pw.println();
  -
  -        // Skeleton constructors
  -        pw.println("    public " + className + "() {");
  -        pw.println("        this.impl = new " + bEntry.getName() + "Impl();");
  -        pw.println("    }");
  -        pw.println();
  -        pw.println("    public " + className + "(" + implType + ") {");
  -        pw.println("        this.impl = impl;");
  -        pw.println("    }");
  -
  -        // Now write each of the operation methods
  -        for (int i = 0; i < operations.size(); ++i) {
  -            BindingOperation operation = (BindingOperation) operations.get(i);
  -            Parameters parameters =
  -                    bEntry.getParameters(operation.getOperation());
  -
  -            // Get the soapAction from the <soap:operation>
  -            String soapAction = "";
  -            Iterator operationExtensibilityIterator = operation.getExtensibilityElements().iterator();
  -            for (; operationExtensibilityIterator.hasNext();) {
  -                Object obj = operationExtensibilityIterator.next();
  -                if (obj instanceof SOAPOperation) {
  -                    soapAction = ((SOAPOperation) obj).getSoapActionURI();
  -                    break;
  -                } else if (obj instanceof UnknownExtensibilityElement) {
  -                    //TODO: After WSDL4J supports soap12, change this code
  -                    UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement)
obj;
  -                    QName name = unkElement.getElementType();
  -                    if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) &&
  -                            name.getLocalPart().equals("operation")) {
  -                        if (unkElement.getElement().getAttribute("soapAction") != null)
{
  -                            soapAction = unkElement.getElement().getAttribute("soapAction");
  -                        }
  -                    }
  -                }
  -            }
  -            // Get the namespace for the operation from the <soap:body>
  -            // RJB: is this the right thing to do?
  -            String namespace = "";
  -            Iterator bindingMsgIterator = null;
  -            BindingInput input = operation.getBindingInput();
  -            BindingOutput output;
  -            if (input != null) {
  -                bindingMsgIterator =
  -                        input.getExtensibilityElements().iterator();
  -            } else {
  -                output = operation.getBindingOutput();
  -                if (output != null) {
  -                    bindingMsgIterator =
  -                            output.getExtensibilityElements().iterator();
  -                }
  -            }
  -            if (bindingMsgIterator != null) {
  -                for (; bindingMsgIterator.hasNext();) {
  -                    Object obj = bindingMsgIterator.next();
  -                    if (obj instanceof SOAPBody) {
  -                        namespace = ((SOAPBody) obj).getNamespaceURI();
  -                        if (namespace == null) {
  -                            namespace = symbolTable.getDefinition().getTargetNamespace();
  -                        }
  -                        if (namespace == null)
  -                            namespace = "";
  -                        break;
  -                    } else if (obj instanceof UnknownExtensibilityElement) {
  -                        //TODO: After WSDL4J supports soap12, change this code
  -                        UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement)
obj;
  -                        QName name = unkElement.getElementType();
  -                        if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) &&
  -                                name.getLocalPart().equals("body")) {
  -                            namespace = unkElement.getElement().getAttribute("namespace");
  -                            if (namespace == null) {
  -                                namespace = symbolTable.getDefinition().getTargetNamespace();
  -                            }
  -                            if (namespace == null)
  -                                namespace = "";
  -                            break;
  -                        }
  -                    }
  -                }
  -            }
  -            Operation ptOperation = operation.getOperation();
  -            OperationType type = ptOperation.getStyle();
  -
  -            // These operation types are not supported.  The signature
  -            // will be a string stating that fact.
  -            if (type == OperationType.NOTIFICATION
  -                    || type == OperationType.SOLICIT_RESPONSE) {
  -                pw.println(parameters.signature);
  -                pw.println();
  -            } else {
  -                writeOperation(pw,
  -                        operation, parameters, soapAction, namespace);
  -            }
  -        }
  -    } // writeFileBody
  -
  -    /**
  -     * Write the skeleton code for the given operation.
  -     */
  -    private void writeOperation(PrintWriter pw,
  -                                BindingOperation operation,
  -                                Parameters parms,
  -                                String soapAction,
  -                                String namespace) {
  -        writeComment(pw, operation.getDocumentationElement(), true);
  -
  -        // The skeleton used to have specialized operation signatures.
  -        // now the same signature is used as the portType
  -        pw.println(parms.signature);
  -        pw.println("    {");
  -
  -        // Note: The holders are now instantiated by the runtime and passed 
  -        // in as parameters.
  -
  -        // Call the real implementation
  -        if (parms.returnParam == null) {
  -            pw.print("        ");
  -        } else {
  -            pw.print("        " + Utils.getParameterTypeName(parms.returnParam) + " ret
= ");
  -        }
  -        String call = "impl." + Utils.xmlNameToJava(operation.getName()) + "(";
  -        boolean needComma = false;
  -        for (int i = 0; i < parms.list.size(); ++i) {
  -            if (needComma)
  -                call = call + ", ";
  -            else
  -                needComma = true;
  -            Parameter p = (Parameter) parms.list.get(i);
  -
  -            call = call + Utils.xmlNameToJava(p.getName());
  -        }
  -        call = call + ")";
  -        pw.println(call + ";");
  -
  -        if (parms.returnParam != null) {
  -            pw.println("        return ret;");
  -        }
  -        pw.println("    }");
  -        pw.println();
  -    } // writeSkeletonOperation
  -
  -}
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Axis" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
  +package org.apache.geronimo.ews.jaxrpcmapping;
  +
  +import org.apache.axis.Constants;
  +import org.apache.axis.utils.Messages;
  +import org.apache.axis.wsdl.symbolTable.BindingEntry;
  +import org.apache.axis.wsdl.symbolTable.FaultInfo;
  +import org.apache.axis.wsdl.symbolTable.Parameter;
  +import org.apache.axis.wsdl.symbolTable.Parameters;
  +import org.apache.axis.wsdl.symbolTable.SymbolTable;
  +import org.apache.axis.wsdl.toJava.JavaClassWriter;
  +import org.apache.axis.wsdl.toJava.Utils;
  +
  +import javax.wsdl.Binding;
  +import javax.wsdl.BindingInput;
  +import javax.wsdl.BindingOperation;
  +import javax.wsdl.BindingOutput;
  +import javax.wsdl.Operation;
  +import javax.wsdl.OperationType;
  +import javax.wsdl.extensions.ExtensibilityElement;
  +import javax.wsdl.extensions.UnknownExtensibilityElement;
  +import javax.wsdl.extensions.soap.SOAPBody;
  +import javax.wsdl.extensions.soap.SOAPOperation;
  +import javax.xml.namespace.QName;
  +import java.io.IOException;
  +import java.io.PrintWriter;
  +import java.util.ArrayList;
  +import java.util.Iterator;
  +import java.util.List;
  +
  +/**
  + * This is Wsdl2java's skeleton writer.  It writes the <BindingName>Skeleton.java
  + * file which contains the <bindingName>Skeleton class.
  + * 
  + * @author Ias (iasandcb@tmax.co.kr)
  + */
  +public class J2eeSkelWriter extends JavaClassWriter {
  +    private BindingEntry bEntry;
  +    private Binding binding;
  +    private SymbolTable symbolTable;
  +
  +    /**
  +     * Constructor.
  +     */
  +    protected J2eeSkelWriter(J2eeEmitter emitter,
  +                             BindingEntry bEntry,
  +                             SymbolTable symbolTable) {
  +        super(emitter, bEntry.getName() + "Skeleton", "skeleton");
  +        this.bEntry = bEntry;
  +        this.binding = bEntry.getBinding();
  +        this.symbolTable = symbolTable;
  +    } // ctor
  +
  +    /**
  +     * Returns "implements <SEI>, org.apache.axis.wsdl.Skeleton ".
  +     */
  +    protected String getImplementsText() {
  +        return "implements " + bEntry.getDynamicVar(J2eeBindingWriter.INTERFACE_NAME)
  +                + ", org.apache.axis.wsdl.Skeleton ";
  +    } // getImplementsText
  +
  +    /**
  +     * Write the body of the binding's stub file.
  +     */
  +    protected void writeFileBody(PrintWriter pw) throws IOException {
  +        String portTypeName = (String) bEntry.getDynamicVar(J2eeBindingWriter.INTERFACE_NAME);
  +        String implType = portTypeName + " impl";
  +
  +        // Declare private impl and skeleton base delegates
  +        pw.println("    private " + implType + ";");
  +        pw.println("    private static java.util.Map _myOperations = new java.util.Hashtable();");
  +        pw.println("    private static java.util.Collection _myOperationsList = new java.util.ArrayList();");
  +        pw.println();
  +        pw.println("    /**");
  +        pw.println("    * Returns List of OperationDesc objects with this name");
  +        pw.println("    */");
  +        pw.println("    public static java.util.List getOperationDescByName(java.lang.String
methodName) {");
  +        pw.println("        return (java.util.List)_myOperations.get(methodName);");
  +        pw.println("    }");
  +        pw.println();
  +        pw.println("    /**");
  +        pw.println("    * Returns Collection of OperationDescs");
  +        pw.println("    */");
  +        pw.println("    public static java.util.Collection getOperationDescs() {");
  +        pw.println("        return _myOperationsList;");
  +        pw.println("    }");
  +        pw.println();
  +
  +        // Initialize operation parameter names
  +        pw.println("    static {");
  +        pw.println("        org.apache.axis.description.OperationDesc _oper;");
  +        pw.println("        org.apache.axis.description.FaultDesc _fault;");
  +        pw.println("        org.apache.axis.description.ParameterDesc [] _params;");
  +        List operations = binding.getBindingOperations();
  +        for (int i = 0; i < operations.size(); ++i) {
  +            BindingOperation bindingOper = (BindingOperation) operations.get(i);
  +            Operation operation = bindingOper.getOperation();
  +            OperationType type = operation.getStyle();
  +            // These operation types are not supported.  The signature
  +            // will be a string stating that fact.
  +            if (type == OperationType.NOTIFICATION
  +                    || type == OperationType.SOLICIT_RESPONSE) {
  +                continue;
  +            }
  +
  +            Parameters parameters =
  +                    bEntry.getParameters(bindingOper.getOperation());
  +
  +            if (parameters != null) {
  +                // The invoked java name of the bindingOper is stored.
  +                String opName = bindingOper.getOperation().getName();
  +                String javaOpName = Utils.xmlNameToJava(opName);
  +                pw.println("        _params = new org.apache.axis.description.ParameterDesc
[] {");
  +
  +                for (int j = 0; j < parameters.list.size(); j++) {
  +                    Parameter p = (Parameter) parameters.list.get(j);
  +                    String modeStr;
  +                    switch (p.getMode()) {
  +                        case Parameter.IN:
  +                            modeStr = "org.apache.axis.description.ParameterDesc.IN";
  +                            break;
  +                        case Parameter.OUT:
  +                            modeStr = "org.apache.axis.description.ParameterDesc.OUT";
  +                            break;
  +                        case Parameter.INOUT:
  +                            modeStr = "org.apache.axis.description.ParameterDesc.INOUT";
  +                            break;
  +                        default:
  +                            throw new IOException(Messages.getMessage("badParmMode00",
  +                                    (new Byte(p.getMode())).toString()));
  +                    }
  +
  +                    // Get the QNames representing the parameter name and type
  +                    QName paramName = p.getQName();
  +                    QName paramType = Utils.getXSIType(p);
  +
  +                    // Is this parameter a header?
  +                    String inHeader = p.isInHeader() ? "true" : "false";
  +                    String outHeader = p.isOutHeader() ? "true" : "false";
  +                    pw.println("            " +
  +                            "new org.apache.axis.description.ParameterDesc(" +
  +                            Utils.getNewQName(paramName) +
  +                            ", " + modeStr +
  +                            ", " + Utils.getNewQName(paramType) +
  +                            ", " + Utils.getParameterTypeName(p) + ".class" +
  +                            ", " + inHeader +
  +                            ", " + outHeader + "), ");
  +                }
  +
  +                pw.println("        };");
  +
  +                // Get the return name QName and type
  +                QName retName = null;
  +                QName retType = null;
  +                if (parameters.returnParam != null) {
  +                    retName = parameters.returnParam.getQName();
  +                    retType = Utils.getXSIType(parameters.returnParam);
  +                }
  +
  +                String returnStr;
  +                if (retName != null) {
  +                    returnStr = Utils.getNewQName(retName);
  +                } else {
  +                    returnStr = "null";
  +                }
  +                pw.println("        _oper = new org.apache.axis.description.OperationDesc(\""
+
  +                        javaOpName + "\", _params, " + returnStr + ");");
  +
  +                if (retType != null) {
  +                    pw.println("        _oper.setReturnType(" +
  +                            Utils.getNewQName(retType) + ");");
  +                    if (parameters.returnParam != null &&
  +                            parameters.returnParam.isOutHeader()) {
  +                        pw.println("        _oper.setReturnHeader(true);");
  +                    }
  +                }
  +
  +                // If we need to know the QName (if we have a namespace or
  +                // the actual method name doesn't match the XML we expect),
  +                // record it in the OperationDesc
  +                QName elementQName =
  +                        Utils.getOperationQName(bindingOper, bEntry, symbolTable);
  +                if (elementQName != null) {
  +                    pw.println("        _oper.setElementQName(" +
  +                            Utils.getNewQName(elementQName) + ");");
  +                }
  +
  +                // Find the SOAPAction.
  +                List elems = bindingOper.getExtensibilityElements();
  +                Iterator it = elems.iterator();
  +                boolean found = false;
  +                while (!found && it.hasNext()) {
  +                    ExtensibilityElement elem = (ExtensibilityElement) it.next();
  +                    if (elem instanceof SOAPOperation) {
  +                        SOAPOperation soapOp = (SOAPOperation) elem;
  +                        String action = soapOp.getSoapActionURI();
  +                        if (action != null) {
  +                            pw.println("        _oper.setSoapAction(\"" + action + "\");");
  +                            found = true;
  +                        }
  +                    } else if (elem instanceof UnknownExtensibilityElement) {
  +                        //TODO: After WSDL4J supports soap12, change this code
  +                        UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement)
elem;
  +                        QName name = unkElement.getElementType();
  +                        if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) &&
  +                                name.getLocalPart().equals("operation")) {
  +                            String action = unkElement.getElement().getAttribute("soapAction");
  +                            if (action != null) {
  +                                pw.println("        _oper.setSoapAction(\"" + action +
"\");");
  +                                found = true;
  +                            }
  +                        }
  +                    }
  +                }
  +
  +                pw.println("        _myOperationsList.add(_oper);");
  +                pw.println("        if (_myOperations.get(\"" + javaOpName + "\") == null)
{");
  +                pw.println("            _myOperations.put(\"" + javaOpName + "\", new java.util.ArrayList());");
  +                pw.println("        }");
  +                pw.println("        ((java.util.List)_myOperations.get(\"" + javaOpName
+ "\")).add(_oper);");
  +            }
  +
  +            // Now generate FaultDesc
  +            if (bEntry.getFaults() != null) {
  +                ArrayList faults = (ArrayList) bEntry.getFaults().get(bindingOper);
  +                if (faults != null) {
  +
  +                    // Operation was not created if there were no parameters
  +                    if (parameters == null) {
  +                        String opName = bindingOper.getOperation().getName();
  +                        String javaOpName = Utils.xmlNameToJava(opName);
  +                        pw.println("        _oper = " +
  +                                "new org.apache.axis.description.OperationDesc();");
  +                        pw.println("        _oper.setName(\"" +
  +                                javaOpName + "\");");
  +                    }
  +                    // Create FaultDesc items for each fault
  +                    Iterator it = faults.iterator();
  +                    while (it.hasNext()) {
  +                        FaultInfo faultInfo = (FaultInfo) it.next();
  +                        QName faultQName = faultInfo.getQName();
  +                        QName faultXMLType = faultInfo.getXMLType();
  +                        String faultName = faultInfo.getName();
  +                        String className =
  +                                Utils.getFullExceptionName(faultInfo.getMessage(), symbolTable);
  +                        pw.println("        _fault = " +
  +                                "new org.apache.axis.description.FaultDesc();");
  +                        if (faultName != null) {
  +                            pw.println("        _fault.setName(\"" +
  +                                    faultName + "\");");
  +                        }
  +                        if (faultQName != null) {
  +                            pw.println("        _fault.setQName(" +
  +                                    Utils.getNewQName(faultQName) + ");");
  +                        }
  +                        if (className != null) {
  +                            pw.println("        _fault.setClassName(\"" +
  +                                    className + "\");");
  +                        }
  +                        if (faultXMLType != null) {
  +                            pw.println("        _fault.setXmlType(" +
  +                                    Utils.getNewQName(faultXMLType) + ");");
  +                        }
  +                        pw.println("        _oper.addFault(_fault);");
  +                    }
  +                }
  +            }
  +        }
  +        pw.println("    }");
  +        pw.println();
  +
  +        // Skeleton constructors
  +        pw.println("    public " + className + "() {");
  +        pw.println("        this.impl = new " + bEntry.getName() + "Impl();");
  +        pw.println("    }");
  +        pw.println();
  +        pw.println("    public " + className + "(" + implType + ") {");
  +        pw.println("        this.impl = impl;");
  +        pw.println("    }");
  +
  +        // Now write each of the operation methods
  +        for (int i = 0; i < operations.size(); ++i) {
  +            BindingOperation operation = (BindingOperation) operations.get(i);
  +            Parameters parameters =
  +                    bEntry.getParameters(operation.getOperation());
  +
  +            // Get the soapAction from the <soap:operation>
  +            String soapAction = "";
  +            Iterator operationExtensibilityIterator = operation.getExtensibilityElements().iterator();
  +            for (; operationExtensibilityIterator.hasNext();) {
  +                Object obj = operationExtensibilityIterator.next();
  +                if (obj instanceof SOAPOperation) {
  +                    soapAction = ((SOAPOperation) obj).getSoapActionURI();
  +                    break;
  +                } else if (obj instanceof UnknownExtensibilityElement) {
  +                    //TODO: After WSDL4J supports soap12, change this code
  +                    UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement)
obj;
  +                    QName name = unkElement.getElementType();
  +                    if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) &&
  +                            name.getLocalPart().equals("operation")) {
  +                        if (unkElement.getElement().getAttribute("soapAction") != null)
{
  +                            soapAction = unkElement.getElement().getAttribute("soapAction");
  +                        }
  +                    }
  +                }
  +            }
  +            // Get the namespace for the operation from the <soap:body>
  +            // RJB: is this the right thing to do?
  +            String namespace = "";
  +            Iterator bindingMsgIterator = null;
  +            BindingInput input = operation.getBindingInput();
  +            BindingOutput output;
  +            if (input != null) {
  +                bindingMsgIterator =
  +                        input.getExtensibilityElements().iterator();
  +            } else {
  +                output = operation.getBindingOutput();
  +                if (output != null) {
  +                    bindingMsgIterator =
  +                            output.getExtensibilityElements().iterator();
  +                }
  +            }
  +            if (bindingMsgIterator != null) {
  +                for (; bindingMsgIterator.hasNext();) {
  +                    Object obj = bindingMsgIterator.next();
  +                    if (obj instanceof SOAPBody) {
  +                        namespace = ((SOAPBody) obj).getNamespaceURI();
  +                        if (namespace == null) {
  +                            namespace = symbolTable.getDefinition().getTargetNamespace();
  +                        }
  +                        if (namespace == null)
  +                            namespace = "";
  +                        break;
  +                    } else if (obj instanceof UnknownExtensibilityElement) {
  +                        //TODO: After WSDL4J supports soap12, change this code
  +                        UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement)
obj;
  +                        QName name = unkElement.getElementType();
  +                        if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) &&
  +                                name.getLocalPart().equals("body")) {
  +                            namespace = unkElement.getElement().getAttribute("namespace");
  +                            if (namespace == null) {
  +                                namespace = symbolTable.getDefinition().getTargetNamespace();
  +                            }
  +                            if (namespace == null)
  +                                namespace = "";
  +                            break;
  +                        }
  +                    }
  +                }
  +            }
  +            Operation ptOperation = operation.getOperation();
  +            OperationType type = ptOperation.getStyle();
  +
  +            // These operation types are not supported.  The signature
  +            // will be a string stating that fact.
  +            if (type == OperationType.NOTIFICATION
  +                    || type == OperationType.SOLICIT_RESPONSE) {
  +                pw.println(parameters.signature);
  +                pw.println();
  +            } else {
  +                writeOperation(pw,
  +                        operation, parameters, soapAction, namespace);
  +            }
  +        }
  +    } // writeFileBody
  +
  +    /**
  +     * Write the skeleton code for the given operation.
  +     */
  +    private void writeOperation(PrintWriter pw,
  +                                BindingOperation operation,
  +                                Parameters parms,
  +                                String soapAction,
  +                                String namespace) {
  +        writeComment(pw, operation.getDocumentationElement(), true);
  +
  +        // The skeleton used to have specialized operation signatures.
  +        // now the same signature is used as the portType
  +        pw.println(parms.signature);
  +        pw.println("    {");
  +
  +        // Note: The holders are now instantiated by the runtime and passed 
  +        // in as parameters.
  +
  +        // Call the real implementation
  +        if (parms.returnParam == null) {
  +            pw.print("        ");
  +        } else {
  +            pw.print("        " + Utils.getParameterTypeName(parms.returnParam) + " ret
= ");
  +        }
  +        String call = "impl." + Utils.xmlNameToJava(operation.getName()) + "(";
  +        boolean needComma = false;
  +        for (int i = 0; i < parms.list.size(); ++i) {
  +            if (needComma)
  +                call = call + ", ";
  +            else
  +                needComma = true;
  +            Parameter p = (Parameter) parms.list.get(i);
  +
  +            call = call + Utils.xmlNameToJava(p.getName());
  +        }
  +        call = call + ")";
  +        pw.println(call + ";");
  +
  +        if (parms.returnParam != null) {
  +            pw.println("        return ret;");
  +        }
  +        pw.println("    }");
  +        pw.println();
  +    } // writeSkeletonOperation
  +
  +}
  
  
  

Mime
View raw message