📄 javageneratorfactory.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.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 + -