⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javastubwriter.java

📁 Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应的Java工程 进行使用
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
     * @param opStyle         * @param oneway          * @param opIndex         */    protected void writeOperation(PrintWriter pw, BindingOperation operation,                                Parameters parms, String soapAction,                                String opStyle, boolean oneway, int opIndex) {        writeComment(pw, operation.getDocumentationElement(), true);                if (parms.signature == null) {        	return;        }        pw.println(parms.signature + " {");        pw.println("        if (super.cachedEndpoint == null) {");        pw.println(                "            throw new org.apache.axis.NoEndPointException();");        pw.println("        }");        pw.println("        org.apache.axis.client.Call _call = createCall();");        pw.println("        _call.setOperation(_operations[" + opIndex + "]);");        // SoapAction        if (soapAction != null) {            pw.println("        _call.setUseSOAPAction(true);");            pw.println("        _call.setSOAPActionURI(\"" + soapAction                    + "\");");        }        boolean hasMIME = Utils.hasMIME(bEntry, operation);        // Encoding: literal or encoded use.        Use use = bEntry.getInputBodyType(operation.getOperation());        if (use == Use.LITERAL) {            // Turn off encoding            pw.println("        _call.setEncodingStyle(null);");            // turn off XSI types            pw.println(                    "        _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);");        }        if (hasMIME || (use == Use.LITERAL)) {            // If it is literal, turn off multirefs.            //             // If there are any MIME types, turn off multirefs.            // I don't know enough about the guts to know why            // attachments don't work with multirefs, but they don't.            pw.println(                    "        _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);");        }        Style style = Style.getStyle(opStyle, bEntry.getBindingStyle());        if ((style == Style.DOCUMENT) && symbolTable.isWrapped()) {            style = Style.WRAPPED;        }        Iterator iterator =                bEntry.getBinding().getExtensibilityElements().iterator();        while (iterator.hasNext()) {            Object obj = iterator.next();            if (obj instanceof SOAPBinding) {                pw.println(                        "        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);");            } 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("binding")) {                    pw.println(                            "        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS);");                }            }        }        // Operation name        if (style == Style.WRAPPED) {            // We need to make sure the operation name, which is what we            // wrap the elements in, matches the Qname of the parameter            // element.            Map partsMap =                    operation.getOperation().getInput().getMessage().getParts();            Iterator i = partsMap.values().iterator();            QName q = null;            while (q == null && i.hasNext()) {            	Part p = (Part) i.next();            	q = p.getElementName();            }            if(q != null) {                pw.println("        _call.setOperationName(" + Utils.getNewQName(q)                        + ");");            } else {                log.warn(Messages.getMessage("missingPartsForMessage00",operation.getOperation().getInput().getMessage().getQName().toString()));             }        } else {            QName elementQName = Utils.getOperationQName(operation, bEntry,                    symbolTable);            if (elementQName != null) {                pw.println("        _call.setOperationName("                        + Utils.getNewQName(elementQName) + ");");            }        }        pw.println();        // Set the headers        pw.println("        setRequestHeaders(_call);");        // Set the attachments        pw.println("        setAttachments(_call);");        // Set DIME flag if needed        if (bEntry.isOperationDIME(operation.getOperation().getName())) {            pw.println(                    "        _call.setProperty(_call.ATTACHMENT_ENCAPSULATION_FORMAT, _call.ATTACHMENT_ENCAPSULATION_FORMAT_DIME);");        }        // Invoke the operation        if (oneway) {            pw.print("        _call.invokeOneWay(");        } else {            pw.print(" try {");            pw.print("        java.lang.Object _resp = _call.invoke(");        }        pw.print("new java.lang.Object[] {");        writeParameters(pw, parms);        pw.println("});");        pw.println();        if (!oneway) {            writeResponseHandling(pw, parms);        }        pw.println("    }");        pw.println();    }    // writeOperation    /**     * Method writeParameters     *      * @param pw         * @param parms      */    protected void writeParameters(PrintWriter pw, Parameters parms) {        // Write the input and inout parameter list        boolean needComma = false;        for (int i = 0; i < parms.list.size(); ++i) {            Parameter p = (Parameter) parms.list.get(i);            if (p.getMode() != Parameter.OUT) {                if (needComma) {                    pw.print(", ");                } else {                    needComma = true;                }                String javifiedName = Utils.xmlNameToJava(p.getName());                if (p.getMode() != Parameter.IN) {                    javifiedName += ".value";                }                if (p.getMIMEInfo() == null && !p.isOmittable()) {                    javifiedName = Utils.wrapPrimitiveType(p.getType(),                            javifiedName);                }                pw.print(javifiedName);            }        }    }    // writeParamters    /**     * Method writeResponseHandling     *      * @param pw         * @param parms      */    protected void writeResponseHandling(PrintWriter pw, Parameters parms) {        pw.println("        if (_resp instanceof java.rmi.RemoteException) {");        pw.println("            throw (java.rmi.RemoteException)_resp;");        pw.println("        }");        int allOuts = parms.outputs + parms.inouts;        if (allOuts > 0) {            pw.println("        else {");            pw.println("            extractAttachments(_call);");            if (allOuts == 1) {                if (parms.returnParam != null) {                    writeOutputAssign(pw, "return ",                            parms.returnParam, "_resp");                } else {                    // The resp object must go into a holder                    int i = 0;                    Parameter p = (Parameter) parms.list.get(i);                    while (p.getMode() == Parameter.IN) {                        p = (Parameter) parms.list.get(++i);                    }                    String javifiedName = Utils.xmlNameToJava(p.getName());                    String qnameName = Utils.getNewQNameWithLastLocalPart(p.getQName());                    pw.println("            java.util.Map _output;");                    pw.println(                            "            _output = _call.getOutputParams();");                    writeOutputAssign(pw,                                      javifiedName + ".value = ",                                      p,                                      "_output.get(" + qnameName + ")");                }            } else {                // There is more than 1 output.  Get the outputs from getOutputParams.                pw.println("            java.util.Map _output;");                pw.println("            _output = _call.getOutputParams();");                for (int i = 0; i < parms.list.size(); ++i) {                    Parameter p = (Parameter) parms.list.get(i);                    String javifiedName = Utils.xmlNameToJava(p.getName());                    String qnameName =                             Utils.getNewQNameWithLastLocalPart(p.getQName());                    if (p.getMode() != Parameter.IN) {                        writeOutputAssign(pw,                                          javifiedName + ".value = ",                                          p,                                          "_output.get(" + qnameName + ")");                    }                }                if (parms.returnParam != null) {                    writeOutputAssign(pw,                                      "return ",                                       parms.returnParam,                                      "_resp");                }            }            pw.println("        }");        } else {            pw.println("        extractAttachments(_call);");        }        // End catch        // Get faults                Map faults = parms.faults;        // Get faults of signature        List exceptionsThrowsList = new ArrayList();                int index = parms.signature.indexOf("throws");        if (index != -1) {            String[] thrExcep = StringUtils.split(parms.signature.substring(index+6),',');            for (int i = 0; i < thrExcep.length; i++) {                exceptionsThrowsList.add(thrExcep[i].trim());            }        }        pw.println("  } catch (org.apache.axis.AxisFault axisFaultException) {");        if (faults != null && faults.size() > 0) {            pw.println("    if (axisFaultException.detail != null) {");            for (Iterator faultIt = exceptionsThrowsList.iterator(); faultIt                    .hasNext();) {                String exceptionFullName = (String) faultIt.next();                pw.println("        if (axisFaultException.detail instanceof "                        + exceptionFullName + ") {");                pw.println("              throw (" + exceptionFullName                        + ") axisFaultException.detail;");                pw.println("         }");            }            pw.println("   }");        }        pw.println("  throw axisFaultException;");        pw.println("}");    }    // writeResponseHandling    /**     * writeOutputAssign     *      * @param pw            * @param target   (either "return" or "something ="     * @param source   (source String)     */    protected void writeOutputAssign(PrintWriter pw, String target,                                   Parameter param,                                   String source) {        TypeEntry type = param.getType();                if ((type != null) && (type.getName() != null)) {            String typeName = type.getName();            // If minOccurs="0" and singular or array with nillable underlying            // type get the corresponding wrapper type.            if ((param.isOmittable() && param.getType().getDimensions().equals(""))                || (param.getType() instanceof CollectionType                    && ((CollectionType) param.getType()).isWrapped())                || param.getType().getUnderlTypeNillable()) {                typeName = Utils.getWrapperType(type);            }            // Try casting the output to the expected output.            // If that fails, use JavaUtils.convert()            pw.println("            try {");            pw.println("                " + target                    + Utils.getResponseString(param, source));            pw.println(                    "            } catch (java.lang.Exception _exception) {");            pw.println(                    "                " + target                    + Utils.getResponseString(param,                            "org.apache.axis.utils.JavaUtils.convert(" +                            source + ", " + typeName + ".class)"));            pw.println("            }");        } else {            pw.println("              " + target                    + Utils.getResponseString(param, source));        }    }}    // class JavaStubWriter

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -