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

📄 javageneratorfactory.java

📁 Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应的Java工程 进行使用
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/* * 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.components.logger.LogFactory;import org.apache.axis.utils.JavaUtils;import org.apache.axis.utils.Messages;import org.apache.axis.wsdl.gen.Generator;import org.apache.axis.wsdl.gen.GeneratorFactory;import org.apache.axis.wsdl.gen.NoopGenerator;import org.apache.axis.wsdl.symbolTable.BaseTypeMapping;import org.apache.axis.wsdl.symbolTable.BindingEntry;import org.apache.axis.wsdl.symbolTable.ContainedAttribute;import org.apache.axis.wsdl.symbolTable.Element;import org.apache.axis.wsdl.symbolTable.ElementDecl;import org.apache.axis.wsdl.symbolTable.FaultInfo;import org.apache.axis.wsdl.symbolTable.MessageEntry;import org.apache.axis.wsdl.symbolTable.Parameter;import org.apache.axis.wsdl.symbolTable.Parameters;import org.apache.axis.wsdl.symbolTable.PortTypeEntry;import org.apache.axis.wsdl.symbolTable.SchemaUtils;import org.apache.axis.wsdl.symbolTable.ServiceEntry;import org.apache.axis.wsdl.symbolTable.SymTabEntry;import org.apache.axis.wsdl.symbolTable.SymbolTable;import org.apache.axis.wsdl.symbolTable.Type;import org.apache.axis.wsdl.symbolTable.TypeEntry;import org.apache.commons.logging.Log;import javax.wsdl.Binding;import javax.wsdl.Definition;import javax.wsdl.Fault;import javax.wsdl.Message;import javax.wsdl.Operation;import javax.wsdl.OperationType;import javax.wsdl.Port;import javax.wsdl.PortType;import javax.wsdl.Service;import javax.xml.namespace.QName;import javax.xml.rpc.holders.BooleanHolder;import java.io.IOException;import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Vector;/** * This is Wsdl2java's implementation of the GeneratorFactory */public class JavaGeneratorFactory implements GeneratorFactory {    private static final Log log_ =        LogFactory.getLog(JavaGeneratorFactory.class.getName());    /** Field emitter */    protected Emitter emitter;    /** Field symbolTable */    protected SymbolTable symbolTable;    /** Field COMPLEX_TYPE_FAULT */    public static String COMPLEX_TYPE_FAULT = "ComplexTypeFault";    /** Field EXCEPTION_CLASS_NAME */    public static String EXCEPTION_CLASS_NAME = "ExceptionClassName";    /** Field EXCEPTION_DATA_TYPE */    public static String EXCEPTION_DATA_TYPE = "ExceptionDataType";        /* Name suffixes for collision */    private static final String SERVICE_SUFFIX = "_Service";    private static final String PORT_TYPE_SUFFIX = "_PortType";     // "_Port" (Axis classic) --> "_PortType" (JAX-RPC 1.1)    private static final String TYPE_SUFFIX = "_Type";    private static final String ELEMENT_SUFFIX = "_Element";        // "_ElemType (Axis classic) --> "_Element" (JAX-RPC 1.1)    private static final String EXCEPTION_SUFFIX = "_Exception";       private static final String BINDING_SUFFIX = "_Binding";    /**     * Default constructor.  Note that this class is unusable until setEmitter     * is called.     */    public JavaGeneratorFactory() {        addGenerators();    }    // ctor    /**     * Constructor JavaGeneratorFactory     *     * @param emitter     */    public JavaGeneratorFactory(Emitter emitter) {        this.emitter = emitter;        addGenerators();    }    // ctor    /**     * Method setEmitter     *     * @param emitter     */    public void setEmitter(Emitter emitter) {        this.emitter = emitter;    }    // setEmitter    /**     * Method addGenerators     */    private void addGenerators() {        addMessageGenerators();        addPortTypeGenerators();        addBindingGenerators();        addServiceGenerators();        addTypeGenerators();        addDefinitionGenerators();    }                                            // addGenerators    /**     * These addXXXGenerators are called by the constructor.     * If an extender of this factory wants to CHANGE the set     * of generators that are called per WSDL construct, they     * should override these addXXXGenerators methods.  If all     * an extender wants to do is ADD a generator, then the     * extension should simply call addGenerator.     * (NOTE:  It doesn't quite work this way, yet.  Only the     * Definition generators fit this model at this point in     * time.)     */    protected void addMessageGenerators() {    }     // addMessageGenerators    /**     * Method addPortTypeGenerators     */    protected void addPortTypeGenerators() {    }    // addPortTypeGenerators    /**     * Method addBindingGenerators     */    protected void addBindingGenerators() {    }     // addBindingGenerators    /**     * Method addServiceGenerators     */    protected void addServiceGenerators() {    }     // addServiceGenerators    /**     * Method addTypeGenerators     */    protected void addTypeGenerators() {    }        // addTypeGenerators    /**     * Method addDefinitionGenerators     */    protected void addDefinitionGenerators() {        addGenerator(Definition.class, JavaDefinitionWriter.class);    // for faults        addGenerator(Definition.class,                JavaDeployWriter.class);      // for deploy.wsdd        addGenerator(Definition.class,                JavaUndeployWriter.class);    // for undeploy.wsdd        addGenerator(Definition.class,                JavaBuildFileWriter.class); //add a build file writer    }                                              // addDefinitionGenerators    /**     * Do the Wsdl2java generator pass:     * - resolve name clashes     * - construct signatures     *     * @param def     * @param symbolTable     */    public void generatorPass(Definition def, SymbolTable symbolTable) {        this.symbolTable = symbolTable;        javifyNames(symbolTable);        setFaultContext(symbolTable);        resolveNameClashes(symbolTable);        determineInterfaceNames(symbolTable);        if (emitter.isAllWanted()) {            setAllReferencesToTrue();        } else {            ignoreNonSOAPBindings(symbolTable);        }        constructSignatures(symbolTable);        determineIfHoldersNeeded(symbolTable);    }    // generatorPass    /** Since Wsdl2java doesn't emit anything for Messages, return the No-op generator. */    private Writers messageWriters = new Writers();    /**     * Method getGenerator     *     * @param message     * @param symbolTable     * @return     */    public Generator getGenerator(Message message, SymbolTable symbolTable) {        if (include(message.getQName())) {            MessageEntry mEntry = symbolTable.getMessageEntry(message.getQName());            messageWriters.addStuff(new NoopGenerator(), mEntry, symbolTable);            return messageWriters;        }        else {            return new NoopGenerator();        }    }    // getGenerator    /** Return Wsdl2java's JavaPortTypeWriter object. */    private Writers portTypeWriters = new Writers();    /**     * Method getGenerator     *     * @param portType     * @param symbolTable     * @return     */    public Generator getGenerator(PortType portType, SymbolTable symbolTable) {        if (include(portType.getQName())) {            PortTypeEntry ptEntry =                    symbolTable.getPortTypeEntry(portType.getQName());            portTypeWriters.addStuff(new NoopGenerator(), ptEntry, symbolTable);            return portTypeWriters;        }        else {            return new NoopGenerator();        }    }    // getGenerator    /** Return Wsdl2java's JavaBindingWriter object. */    protected Writers bindingWriters = new Writers();    /**     * Method getGenerator     *     * @param binding     * @param symbolTable     * @return     */    public Generator getGenerator(Binding binding, SymbolTable symbolTable) {        if (include(binding.getQName())) {            Generator writer = new JavaBindingWriter(emitter, binding,                    symbolTable);            BindingEntry bEntry = symbolTable.getBindingEntry(binding.getQName());            bindingWriters.addStuff(writer, bEntry, symbolTable);            return bindingWriters;        }        else {            return new NoopGenerator();        }    }    // getGenerator    /** Return Wsdl2java's JavaServiceWriter object. */    protected Writers serviceWriters = new Writers();    /**     * Method getGenerator     *     * @param service     * @param symbolTable     * @return     */    public Generator getGenerator(Service service, SymbolTable symbolTable) {        if (include(service.getQName())) {            Generator writer = new JavaServiceWriter(emitter, service,                    symbolTable);            ServiceEntry sEntry = symbolTable.getServiceEntry(service.getQName());            serviceWriters.addStuff(writer, sEntry, symbolTable);            return serviceWriters;        }        else {            return new NoopGenerator();        }    }    // getGenerator    /** Return Wsdl2java's JavaTypeWriter object. */    private Writers typeWriters = new Writers();    /**     * Method getGenerator     *     * @param type     * @param symbolTable     * @return     */    public Generator getGenerator(TypeEntry type, SymbolTable symbolTable) {        if (include(type.getQName())) {            Generator writer = new JavaTypeWriter(emitter, type, symbolTable);            typeWriters.addStuff(writer, type, symbolTable);            return typeWriters;        }        else {            return new NoopGenerator();        }    }    // getGenerator    /** Return Wsdl2java's JavaDefinitionWriter object. */    private Writers defWriters = new Writers();    /**     * Method getGenerator     *

⌨️ 快捷键说明

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