📄 javaskelwriter.java
字号:
/* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.axis.wsdl.toJava;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 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.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. */public class JavaSkelWriter extends JavaClassWriter { /** Field bEntry */ private BindingEntry bEntry; /** Field binding */ private Binding binding; /** Field symbolTable */ private SymbolTable symbolTable; /** * Constructor. * * @param emitter * @param bEntry * @param symbolTable */ protected JavaSkelWriter(Emitter 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 ". * * @return */ protected String getImplementsText() { return "implements " + bEntry.getDynamicVar(JavaBindingWriter.INTERFACE_NAME) + ", org.apache.axis.wsdl.Skeleton "; } // getImplementsText /** * Write the body of the binding's stub file. * * @param pw * @throws IOException */ protected void writeFileBody(PrintWriter pw) throws IOException { String portTypeName = (String) bEntry.getDynamicVar(JavaBindingWriter.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 ((OperationType.NOTIFICATION.equals(type)) || (OperationType.SOLICIT_RESPONSE.equals(type))) { 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.getNewQNameWithLastLocalPart(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.getNewQNameWithLastLocalPart(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. String action = Utils.getOperationSOAPAction(bindingOper); if (action != null) { pw.println(" _oper.setSoapAction(\"" + action + "\");"); } 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(\""
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -