summaryrefslogtreecommitdiffstats
path: root/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate
diff options
context:
space:
mode:
Diffstat (limited to 'tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate')
-rw-r--r--tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java200
-rw-r--r--tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java219
-rw-r--r--tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/SDODataBindingCodegenExtension.java47
-rw-r--r--tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/SDODataBindingTypeMappingEntry.java49
-rw-r--r--tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java347
5 files changed, 0 insertions, 862 deletions
diff --git a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java b/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java
deleted file mode 100644
index 7bb2559b62..0000000000
--- a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * 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.tuscany.tools.wsdl2java.generate;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-
-import org.apache.axis2.description.AxisMessage;
-import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.util.FileWriter;
-import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
-import org.apache.axis2.wsdl.codegen.emitter.JavaEmitter;
-import org.apache.axis2.wsdl.codegen.writer.InterfaceWriter;
-import org.apache.axis2.wsdl.databinding.TypeMapper;
-import org.apache.tuscany.model.util.XMLNameUtil;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Overrides the Axis2 JavaEmitter to generate unwrapped methods.
- */
-public class JavaInterfaceEmitter extends JavaEmitter {
-
- private CodeGenConfiguration codegenConfiguration;
- private TypeMapper typeMapper;
-
- public void setCodeGenConfiguration(CodeGenConfiguration configuration) {
- super.setCodeGenConfiguration(configuration);
- codegenConfiguration=configuration;
- }
-
- public void setMapper(TypeMapper typeMapper) {
- super.setMapper(typeMapper);
- this.typeMapper = typeMapper;
- }
-
- private List getParameterElementList(Document doc, AxisMessage message, boolean wrapped) {
- List parameterElementList = new ArrayList();
-
- if (message != null && message.getElementQName()!=null) {
-
- SDODataBindingTypeMappingEntry typeMappingEntry =
- (SDODataBindingTypeMappingEntry)this.typeMapper.getTypeMappingObject(message.getElementQName());
- List typeMappings;
- if (wrapped) {
- typeMappings = (List)typeMappingEntry.getPropertyClassNames();
- } else {
- typeMappings = new ArrayList();
- typeMappings.add(typeMappingEntry.getClassName());
- }
-
- for (int i=0; i<typeMappings.size(); i++) {
- Element param = doc.createElement("param");
- parameterElementList.add(param);
-
- String typeMapping = (String)typeMappings.get(i);
-
- addAttribute(doc, "name", this.typeMapper.getParameterName(message.getElementQName()), param);
- addAttribute(doc, "type", (typeMapping == null)
- ? ""
- : typeMapping, param);
-
- // add an extra attribute to say whether the type mapping is the default
- if (TypeMapper.DEFAULT_CLASS_NAME.equals(typeMapping)) {
- addAttribute(doc, "default", "yes", param);
- }
-
- addAttribute(doc, "value", null, param);
-
- // add this as a body parameter
- addAttribute(doc, "location", "body", param);
-
- }
- }
-
- return parameterElementList;
- }
-
- private List getParameterElementList(Document doc, List parameters, String location) {
- List parameterElementList = new ArrayList();
-
- if ((parameters != null) && !parameters.isEmpty()) {
- int count = parameters.size();
-
- for (int i = 0; i < count; i++) {
- Element param = doc.createElement("param");
- QName name = (QName) parameters.get(i);
-
- addAttribute(doc, "name", this.typeMapper.getParameterName(name), param);
-
- String typeMapping = this.typeMapper.getTypeMappingName(name);
- String typeMappingStr = (typeMapping == null)
- ? ""
- : typeMapping;
-
- addAttribute(doc, "type", typeMappingStr, param);
- addAttribute(doc, "location", location, param);
- parameterElementList.add(param);
- }
- }
-
- return parameterElementList;
- }
-
- protected boolean isWrapped(AxisOperation operation) {
- boolean wrapped = false;
-
- if (isInputPresentForMEP(operation.getMessageExchangePattern())) {
- QName qname = operation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE).getElementQName();
- if (qname != null && qname.getLocalPart().equals(operation.getName().getLocalPart())) {
-
- SDODataBindingTypeMappingEntry typeMappingEntry =
- (SDODataBindingTypeMappingEntry)this.typeMapper.getTypeMappingObject(qname);
- if (typeMappingEntry.isAnonymous()) {
- wrapped = true;
- }
- }
- }
-
- return wrapped;
- }
-
- private boolean isInputPresentForMEP(String MEP) {
- return WSDLConstants.MEP_URI_IN_ONLY.equals(MEP) ||
- WSDLConstants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP) ||
- WSDLConstants.MEP_URI_OUT_OPTIONAL_IN.equals(MEP) ||
- WSDLConstants.MEP_URI_ROBUST_OUT_ONLY.equals(MEP) ||
- WSDLConstants.MEP_URI_ROBUST_IN_ONLY.equals(MEP) ||
- WSDLConstants.MEP_URI_IN_OUT.equals(MEP);
- }
-
- protected Element getInputElement(Document doc, AxisOperation operation, List headerParameterQNameList) {
- return getElement(doc, "input", operation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE), isWrapped(operation), headerParameterQNameList);
- }
-
- protected Element getOutputElement(Document doc, AxisOperation operation, List headerParameterQNameList) {
- return getElement(doc, "output", operation.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE), isWrapped(operation), headerParameterQNameList);
- }
-
- protected Element getElement(Document doc, String elementName, AxisMessage message, boolean wrapped, List headerParameterQNameList) {
- Element element = doc.createElement(elementName);
-
- List parameterElementList = getParameterElementList(doc, message, wrapped);
- for (int i = 0; i < parameterElementList.size(); i++) {
- element.appendChild((Element) parameterElementList.get(i));
- }
-
- List outputElementList = getParameterElementList(doc, headerParameterQNameList, "header");
-
- for (int i = 0; i < outputElementList.size(); i++) {
- element.appendChild((Element) outputElementList.get(i));
- }
-
- return element;
- }
-
- protected void writeInterface(boolean writeDatabinders) throws Exception {
- Document interfaceModel = createDOMDocumentForInterface(writeDatabinders);
- if (!codegenConfiguration.getOutputLocation().exists()) {
- codegenConfiguration.getOutputLocation().mkdirs();
- }
- InterfaceWriter interfaceWriter = new InterfaceWriter(this.codegenConfiguration
- .getOutputLocation(), this.codegenConfiguration.getOutputLanguage());
-
- String packageName = interfaceModel.getDocumentElement().getAttribute("package");
- String className = interfaceModel.getDocumentElement().getAttribute("name");
-
- System.out.println(">> Generating Java class " + packageName + "." + className);
- File outputFile = FileWriter.createClassFile(this.codegenConfiguration.getOutputLocation(),
- packageName, className, ".java");
- if (outputFile.exists()) {
- outputFile.delete();
- }
-
- writeClass(interfaceModel, interfaceWriter);
- }
-
- protected String makeJavaClassName(String word) {
- return XMLNameUtil.getJavaNameFromXMLName(word, true);
- }
-
-}
diff --git a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java b/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
deleted file mode 100644
index 7c31e0535c..0000000000
--- a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * 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.tuscany.tools.wsdl2java.generate;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import javax.wsdl.Binding;
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.PortType;
-import javax.wsdl.Service;
-import javax.wsdl.WSDLException;
-import javax.wsdl.factory.WSDLFactory;
-import javax.wsdl.xml.WSDLReader;
-import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.WSDL2AxisServiceBuilder;
-import org.apache.axis2.util.XMLUtils;
-import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
-import org.apache.axis2.wsdl.codegen.CodeGenerationException;
-import org.apache.axis2.wsdl.codegen.extension.CodeGenExtension;
-import org.apache.axis2.wsdl.codegen.extension.DefaultDatabindingExtension;
-import org.apache.axis2.wsdl.codegen.extension.PackageFinder;
-import org.apache.axis2.wsdl.codegen.extension.WSDLValidatorExtension;
-import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
-import org.apache.tuscany.model.util.XMLNameUtil;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-public class JavaInterfaceGenerator {
-
- private List codegenExtensions = new ArrayList();
- private List<CodeGenConfiguration> codegenConfigurations= new LinkedList<CodeGenConfiguration>();
-
-
-
-
- public JavaInterfaceGenerator(String uri, String ports[], String outputLocation, String packageName,
- Map<QName, SDODataBindingTypeMappingEntry> typeMapping) throws CodeGenerationException {
-
- Definition definition;
- try {
- definition = readWSDL(uri);
- } catch (WSDLException e) {
- throw new CodeGenerationException(e);
- }
-
- HashSet interestedPorts= ports == null ? null : new HashSet(Arrays.asList(ports));
-
- // Service service=(Service)definition.getServices().values().().next();
-
- HashSet<QName> donePortTypes= new HashSet<QName>();
-
- for (Iterator sIter = definition.getServices().values().iterator(); sIter.hasNext(); ) {
- Service service = (Service) sIter.next();
-
- QName serviceQname = service.getQName();
- for (Iterator pIter= service.getPorts().values().iterator(); pIter.hasNext(); ) {
- Port port= (Port) pIter.next();
- if(interestedPorts != null && ! interestedPorts.contains(port.getName())) continue;//not iterested.
- PortType portType= getPortType(port);
- if(null == portType) continue; // not connected.
- QName pQName= portType.getQName();
- if(donePortTypes.contains(pQName)) continue; //allready did it.
- donePortTypes.add(pQName);
-
- if (packageName == null) {
- packageName = XMLNameUtil.getPackageNameFromNamespace(definition.getTargetNamespace());
- }
- JavaTypeMapper typeMapper = new JavaTypeMapper();
- for (Map.Entry<QName, SDODataBindingTypeMappingEntry> e : typeMapping.entrySet()) {
- typeMapper.addTypeMappingObject(e.getKey(), e.getValue());
- }
- AxisService axisService;
- try {
- axisService = new WSDL2AxisServiceBuilder(definition, serviceQname, port.getName()).populateService();
- } catch (AxisFault e) {
- throw new CodeGenerationException(e);
- }
- axisService.setName(port.getBinding().getPortType().getQName().getLocalPart());
- CodeGenConfiguration codegenConfiguration = new CodeGenConfiguration(Collections.EMPTY_MAP);
- codegenConfigurations.add(codegenConfiguration);
- codegenConfiguration.setAxisService(axisService);
- codegenConfiguration.setAdvancedCodeGenEnabled(false);
- codegenConfiguration.setAsyncOn(false);
- codegenConfiguration.setDatabindingType("sdo");
- codegenConfiguration.setGenerateAll(true);
- codegenConfiguration.setGenerateDeployementDescriptor(false);
- codegenConfiguration.setOutputLanguage("java");
- codegenConfiguration.setOutputLocation(new File(outputLocation));
- codegenConfiguration.setPackageName(packageName);
- codegenConfiguration.setPackClasses(false);
- codegenConfiguration.setPolicyMap(Collections.EMPTY_MAP);
- codegenConfiguration.setPortName(port.getName());
- codegenConfiguration.setServerSide(false);
- codegenConfiguration.setServiceName(service.getQName().getLocalPart());
- codegenConfiguration.setSyncOn(true);
- codegenConfiguration.setTypeMapper(typeMapper);
- codegenConfiguration.setWriteMessageReceiver(false);
- codegenConfiguration.setWriteTestCase(false);
- addExtension(new WSDLValidatorExtension(), codegenConfiguration);
- addExtension(new PackageFinder(), codegenConfiguration);
- addExtension(new SDODataBindingCodegenExtension(typeMapper), codegenConfiguration);
- addExtension(new DefaultDatabindingExtension(), codegenConfiguration);
- }
- }
- }
-
-
- private PortType getPortType(Port port) {
- Binding binding = port.getBinding();
- if(null != binding){
- return binding.getPortType();
- }
- return null;
-
- }
-
-
- @SuppressWarnings("unchecked")
- private void addExtension(CodeGenExtension ext, CodeGenConfiguration codegenConfiguration) {
- ext.init(codegenConfiguration);
- codegenExtensions.add(ext);
- }
-
- public void generate() throws CodeGenerationException {
- try {
- for (int i = 0; i < codegenExtensions.size(); i++) {
- ((CodeGenExtension)codegenExtensions.get(i)).engage();
- }
-
- for(CodeGenConfiguration codegenConfiguration : codegenConfigurations){
- JavaInterfaceEmitter emitter = new JavaInterfaceEmitter();
- emitter.setCodeGenConfiguration(codegenConfiguration);
- emitter.setMapper(codegenConfiguration.getTypeMapper());
-
- emitter.writeInterface(false);
- }
-
- } catch (Exception e) {
- throw new CodeGenerationException(e);
- }
- }
-
- /**
- * Read the WSDL file
- * @param uri
- * @return
- * @throws WSDLException
- */
- private Definition readWSDL(String uri) throws WSDLException {
-
- WSDLReader reader =
- WSDLFactory.newInstance().newWSDLReader();
- reader.setFeature("javax.wsdl.importDocuments", true);
-
- File file = new File(uri);
- String baseURI;
-
- if (uri.startsWith("http://")){
- baseURI = uri;
- } else{
- if(file.getParentFile() == null){
- try {
- baseURI = new File(".").getCanonicalFile().toURI().toString();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- } else {
- baseURI = file.getParentFile().toURI().toString();
- }
- }
-
- Document doc;
- try {
- doc = XMLUtils.newDocument(uri);
- } catch (ParserConfigurationException e) {
- throw new WSDLException(WSDLException.PARSER_ERROR,
- "Parser Configuration Error",
- e);
- } catch (SAXException e) {
- throw new WSDLException(WSDLException.PARSER_ERROR,
- "Parser SAX Error",
- e);
-
- } catch (IOException e) {
- throw new WSDLException(WSDLException.INVALID_WSDL, "IO Error", e);
- }
-
- return reader.readWSDL(baseURI, doc);
- }
-
-}
diff --git a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/SDODataBindingCodegenExtension.java b/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/SDODataBindingCodegenExtension.java
deleted file mode 100644
index 2523b7efd6..0000000000
--- a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/SDODataBindingCodegenExtension.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * 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.tuscany.tools.wsdl2java.generate;
-
-import org.apache.axis2.wsdl.codegen.extension.AbstractDBProcessingExtension;
-import org.apache.axis2.wsdl.databinding.TypeMapper;
-
-/**
- * SDO data binding codegen extension.
- */
-public class SDODataBindingCodegenExtension extends AbstractDBProcessingExtension {
-
- private TypeMapper typeMapper;
-
- public SDODataBindingCodegenExtension(TypeMapper typeMapper) {
- this.typeMapper=typeMapper;
- }
-
- protected boolean testFallThrough(String dbFrameworkName) {
- return !dbFrameworkName.equals("sdo");
- }
-
- public void engage() {
- if (testFallThrough(configuration.getDatabindingType())) {
- return;
- }
-
- // Set the type mapper into the config
- configuration.setTypeMapper(typeMapper);
-
- }
-
-}
diff --git a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/SDODataBindingTypeMappingEntry.java b/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/SDODataBindingTypeMappingEntry.java
deleted file mode 100644
index 2f2e5521be..0000000000
--- a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/SDODataBindingTypeMappingEntry.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * 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.tuscany.tools.wsdl2java.generate;
-
-import java.util.List;
-
-/**
- * This represents a type mapping entry, used by the JavaInterfaceEmitter to generate
- * method signatures.
- */
-public class SDODataBindingTypeMappingEntry {
-
- private final boolean anonymous;
- private final List<String> propertyClassNames;
- private final String className;
-
- public SDODataBindingTypeMappingEntry(String className, boolean anonymous, List<String> propertyClassNames) {
- this.className = className;
- this.anonymous = anonymous;
- this.propertyClassNames = propertyClassNames;
- }
-
- public boolean isAnonymous() {
- return anonymous;
- }
-
- public String getClassName() {
- return className;
- }
-
- public List<String> getPropertyClassNames() {
- return propertyClassNames;
- }
-
-}
diff --git a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java b/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
deleted file mode 100644
index 5cf3426c7e..0000000000
--- a/tags/java-M1-final/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * 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.tuscany.tools.wsdl2java.generate;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.sdo.helper.XSDHelperImpl;
-import org.apache.tuscany.sdo.util.DataObjectUtil;
-import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
-import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
-import org.eclipse.emf.codegen.ecore.genmodel.GenModelFactory;
-import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
-import org.eclipse.emf.codegen.util.CodeGenUtil;
-import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.BasicExtendedMetaData;
-import org.eclipse.emf.ecore.util.ExtendedMetaData;
-
-import commonj.sdo.helper.XSDHelper;
-
-public class WSDL2JavaGenerator {
-
- /**
- * Generate Java interfaces from WSDL Usage arguments: [ -targetDirectory
- * <target-root-directory> ] [ -javaPackage <java-package-name> ]
- * <wsdl-file> For example: generate somedir/somefile.wsdl Basic options:
- * -targetDirectory Generates the Java source code in the specified
- * directory. By default, the code is generated in the same directory as the
- * input wsdl file. -javaPackage Overrides the Java package for the
- * generated classes. By default the package name is derived from the
- * targetNamespace of the WSDL definition being generated. For example, if
- * the targetNamespace is "http://www.example.com/simple", the default
- * package will be "com.example.simple".
- */
- public static void main(String args[]) {
- if (args.length == 0) {
- printUsage();
- return;
- }
-
- String portName = null;
- String targetDirectory = null;
- String wsdlJavaPackage = null;
- String xsdJavaPackage = null;
-
- int index = 0;
- for (; index < args.length && args[index].startsWith("-"); ++index) {
- if (args[index].equalsIgnoreCase("-port")) {
- portName = args[++index];
- } else if (args[index].equalsIgnoreCase("-targetDirectory")) {
- targetDirectory = args[++index];
- } else if (args[index].equalsIgnoreCase("-javaPackage")) {
- wsdlJavaPackage = args[++index];
- }
- // else if (...)
- else {
- printUsage();
- return;
- }
- }
-
- String wsdlFileName = args[index];
- if (wsdlFileName == null || targetDirectory == null) {
- printUsage();
- return;
- }
-
- generateFromWSDL(wsdlFileName, portName!=null? new String[]{portName}:null, targetDirectory, wsdlJavaPackage, xsdJavaPackage, 0);
-
- }
-
- @SuppressWarnings("unchecked")
- public static void generateFromWSDL(String wsdlFileName, String targetDirectory,
- String wsdlJavaPackage,
- String xsdJavaPackage, int genOptions){
- generateFromWSDL( wsdlFileName, null, targetDirectory,
- wsdlJavaPackage,
- xsdJavaPackage, genOptions);
-
- }
-
-
- @SuppressWarnings("unchecked")
- public static void generateFromWSDL(String wsdlFileName, String[] ports,
- String targetDirectory, String wsdlJavaPackage,
- String xsdJavaPackage, int genOptions)
- {
-
- // Initialize the SDO runtime
- DataObjectUtil.initRuntime();
- EPackage.Registry packageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
- ExtendedMetaData extendedMetaData = new BasicExtendedMetaData(packageRegistry);
- XSDHelper xsdHelper = new XSDHelperImpl(extendedMetaData);
-
- try {
-
- // Load the WSDL file
- File inputFile = new File(wsdlFileName).getAbsoluteFile();
- InputStream inputStream = new FileInputStream(inputFile);
-
- // Define SDO metadata
- xsdHelper.define(inputStream, inputFile.toURI().toString());
-
- if (targetDirectory == null) {
- targetDirectory = new File(wsdlFileName).getCanonicalFile().getParent();
- } else {
- targetDirectory = new File(targetDirectory).getCanonicalPath();
- }
-
- // Populate the typeMapping table that will be given to the Axis2 WSDL2Java
- Map<QName, SDODataBindingTypeMappingEntry> typeMapping =
- new HashMap<QName, SDODataBindingTypeMappingEntry>();
- if (!packageRegistry.values().isEmpty()) {
- ResourceSet resourceSet = DataObjectUtil.createResourceSet();
-
- // Populate list of GenPackages and a map of GenClasses keyed by EClass
- List<GenPackage> genPackages = new ArrayList<GenPackage>();
- Map<EClass, GenClass> genClasses = new HashMap<EClass, GenClass>();
- for (Iterator iter = packageRegistry.values().iterator(); iter.hasNext();) {
- EPackage currentEPackage = (EPackage)iter.next();
- String currentBasePackage = extractBasePackageName(currentEPackage, xsdJavaPackage);
- String currentPrefix = CodeGenUtil.capName(currentEPackage.getName());
-
- GenPackage currentGenPackage = createGenPackage(currentEPackage, currentBasePackage,
- currentPrefix, genOptions, resourceSet);
- genPackages.add(currentGenPackage);
- for (GenClass genClass : (List<GenClass>)currentGenPackage.getGenClasses()) {
- genClasses.put(genClass.getEcoreClass(), genClass);
- }
-
- }
-
- // Process all the SDO packages
- // Populate the qname -> interfaceName typeMapping table
- for (GenPackage currentGenPackage : genPackages) {
- EPackage currentEPackage = currentGenPackage.getEcorePackage();
-
- // Populate the type mappings for all the complex types
- for (GenClass genClass : (List<GenClass>)currentGenPackage.getGenClasses()) {
- QName qname = new QName(extendedMetaData.getNamespace(currentEPackage),
- extendedMetaData.getName(genClass.getEcoreClass()));
- String interfaceName = currentGenPackage.getInterfacePackageName() + '.'
- + genClass.getInterfaceName();
- SDODataBindingTypeMappingEntry typeMappingEntry =
- new SDODataBindingTypeMappingEntry(interfaceName, false, null);
- typeMapping.put(qname, typeMappingEntry);
- }
-
- // Process all the global XSD elements
- EClass documentRoot = extendedMetaData.getDocumentRoot(currentEPackage);
- if (documentRoot != null) {
- for (EStructuralFeature element : (List<EStructuralFeature>)extendedMetaData
- .getElements(documentRoot)) {
- EClassifier elementType = element.getEType();
-
- // Handle a complex type
- if (elementType instanceof EClass) {
- EClass eClass = (EClass)elementType;
-
- GenClass genClass = genClasses.get(elementType);
- QName qname = new QName(extendedMetaData.getNamespace(currentEPackage),
- extendedMetaData.getName(element));
- String interfaceName = genClass.getGenPackage().getInterfacePackageName()
- + '.' + genClass.getInterfaceName();
- boolean anonymous = extendedMetaData.isAnonymous(eClass);
-
- // Build list of property class names
- List<String> propertyClassNames=new ArrayList<String>();
- for (EStructuralFeature feature : (List<EStructuralFeature>)eClass.getEStructuralFeatures()) {
- EClassifier propertyType = feature.getEType();
- if (propertyType instanceof EClass) {
- GenClass propertyGenClass = genClasses.get(propertyType);
- String propertyClassName = propertyGenClass.getGenPackage().getInterfacePackageName()
- + '.' + propertyGenClass.getInterfaceName();
- propertyClassNames.add(propertyClassName);
- } else if (propertyType instanceof EClassifier) {
- String propertyClassName = propertyType.getInstanceClass().getName();
- propertyClassNames.add(propertyClassName);
- }
- }
-
- SDODataBindingTypeMappingEntry typeMappingEntry =
- new SDODataBindingTypeMappingEntry(interfaceName, anonymous, propertyClassNames);
- typeMapping.put(qname, typeMappingEntry);
-
- } else {
-
- // Handle a simple type
- QName qname = new QName(extendedMetaData.getNamespace(currentEPackage),
- extendedMetaData.getName(element));
- String className = elementType.getInstanceClass().getName();
- SDODataBindingTypeMappingEntry typeMappingEntry =
- new SDODataBindingTypeMappingEntry(className, false, null);
- typeMapping.put(qname, typeMappingEntry);
- }
- }
- }
- }
- }
-
- try {
- JavaInterfaceGenerator codeGenerator = new JavaInterfaceGenerator(wsdlFileName,
- ports,
- targetDirectory,
- wsdlJavaPackage,
- typeMapping);
- codeGenerator.generate();
- } catch (Exception e) {
- throw new IllegalArgumentException(e);
- }
-
- } catch (IOException e) {
- throw new IllegalArgumentException(e);
- }
- }
-
- @SuppressWarnings("unchecked")
- public static GenPackage createGenPackage(EPackage ePackage, String basePackage, String prefix,
- int genOptions, ResourceSet resourceSet) {
- GenModel genModel = ecore2GenModel(ePackage, basePackage, prefix, genOptions);
-
- URI ecoreURI = URI.createURI("file:///" + ePackage.getName() + ".ecore");
- URI genModelURI = ecoreURI.trimFileExtension().appendFileExtension("genmodel");
-
- Resource ecoreResource = resourceSet.createResource(ecoreURI);
- ecoreResource.getContents().add(ePackage);
-
- Resource genModelResource = resourceSet.createResource(genModelURI);
- genModelResource.getContents().add(genModel);
-
- return (GenPackage)genModel.getGenPackages().get(0);
- }
-
- public static GenModel ecore2GenModel(EPackage ePackage, String basePackage,
- String prefix, int genOptions) {
- GenModel genModel = GenModelFactory.eINSTANCE.createGenModel();
- genModel.initialize(Collections.singleton(ePackage));
-
- genModel.setRootExtendsInterface("");
- genModel.setRootImplementsInterface("commonj.sdo.DataObject");
- genModel.setRootExtendsClass("org.apache.tuscany.sdo.impl.DataObjectImpl");
- genModel.setFeatureMapWrapperInterface("commonj.sdo.Sequence");
- genModel.setFeatureMapWrapperInternalInterface("org.apache.tuscany.sdo.util.BasicSequence");
- genModel.setFeatureMapWrapperClass("org.apache.tuscany.sdo.util.BasicSequence");
- genModel.setSuppressEMFTypes(true);
- genModel.setSuppressEMFMetaData(true);
- genModel.setSuppressEMFModelTags(true);
- genModel.setCanGenerate(true);
- // FIXME workaround java.lang.NoClassDefFoundError:
- // org/eclipse/jdt/core/jdom/IDOMNode with 02162006 build
- genModel.setFacadeHelperClass("Hack");
- genModel.setForceOverwrite(true);
-
- GenPackage genPackage = (GenPackage)genModel.getGenPackages().get(0);
-
- if (basePackage != null) {
- genPackage.setBasePackage(basePackage);
- }
- if (prefix != null) {
- genPackage.setPrefix(prefix);
- }
-
- return genModel;
- }
-
- public static String extractBasePackageName(EPackage ePackage, String javaPackage) {
- String qualifiedName = javaPackage != null ? javaPackage : ePackage.getName();
- String name = /* CodeGenUtil. */shortName(qualifiedName);
- String baseName = qualifiedName.substring(0, qualifiedName.length() - name.length());
- if (javaPackage != null || !name.equals(qualifiedName)) {
- ePackage.setName(name);
- }
- return baseName != null ? /* CodeGenUtil. */safeQualifiedName(baseName) : null;
- }
-
- public static String shortName(String qualifiedName) {
- int index = qualifiedName.lastIndexOf(".");
- return index != -1 ? qualifiedName.substring(index + 1) : qualifiedName;
- }
-
- public static String safeQualifiedName(String qualifiedName) {
- StringBuffer safeQualifiedName = new StringBuffer();
- for (StringTokenizer stringTokenizer = new StringTokenizer(qualifiedName, ".");
- stringTokenizer.hasMoreTokens();) {
- String name = stringTokenizer.nextToken();
- safeQualifiedName.append(CodeGenUtil.safeName(name));
- if (stringTokenizer.hasMoreTokens()) {
- safeQualifiedName.append('.');
- }
- }
- return safeQualifiedName.toString();
- }
-
- protected static void printDiagnostic(Diagnostic diagnostic, String indent) {
- System.out.print(indent);
- System.out.println(diagnostic.getMessage());
- for (Iterator i = diagnostic.getChildren().iterator(); i.hasNext();) {
- printDiagnostic((Diagnostic)i.next(), indent + " ");
- }
- }
-
- protected static void printUsage() {
- System.out.println("Usage arguments:");
- System.out.println(" [ -targetDirectory <target-root-directory> ]");
- System.out.println(" [ -javaPackage <java-package-name> ]");
- System.out.println(" <wsdl-file>");
- System.out.println("");
- System.out.println("For example:");
- System.out.println("");
- System.out.println(" generate somedir/somefile.wsdl");
- }
-
-
-}