Author: jsdelfino
Date: Thu Apr 27 00:11:31 2006
New Revision: 397455
URL: http://svn.apache.org/viewcvs?rev=397455&view=rev
Log:
Fix for TUSCANY-111 - Extend and override the Axi2
JavaEmitter.getInput/OuputElement methods to generate unwrapped java methods
Added:
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java
(with props)
Modified:
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
Added:
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java?rev=397455&view=auto
==============================================================================
---
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java
(added)
+++
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java
Thu Apr 27 00:11:31 2006
@@ -0,0 +1,158 @@
+/**
+ *
+ * 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.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.util.FileWriter;
+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.wsdl.MessageReference;
+import org.apache.wsdl.WSDLExtensibilityAttribute;
+import org.apache.wsdl.WSDLOperation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+class JavaInterfaceEmitter extends JavaEmitter {
+
+ private List getParameterElementList(Document doc, MessageReference
message) {
+ List parameterElementList = new ArrayList();
+
+ if (message != null) {
+
+ Object typeMappingObject =
this.mapper.getTypeMappingObject(message.getElementQName());
+ List typeMappingList;
+ if (typeMappingObject instanceof List) {
+ typeMappingList = (List)typeMappingObject;
+ } else {
+ typeMappingList = new ArrayList();
+ typeMappingList.add(typeMappingObject);
+ }
+
+ for (int i=0; i<typeMappingList.size(); i++) {
+ Element param = doc.createElement("param");
+ parameterElementList.add(param);
+
+ String typeMapping = (String)typeMappingList.get(i);
+
+ addAttribute(doc, "name",
this.mapper.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);
+
+ Iterator iter =
message.getExtensibilityAttributes().iterator();
+
+ while (iter.hasNext()) {
+ WSDLExtensibilityAttribute att =
(WSDLExtensibilityAttribute) iter.next();
+
+ addAttribute(doc, att.getKey().getLocalPart(),
att.getValue().toString(), 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.mapper.getParameterName(name),
param);
+
+ String typeMapping = this.mapper.getTypeMappingName(name);
+ String typeMappingStr = (typeMapping == null)
+ ? ""
+ : typeMapping;
+
+ addAttribute(doc, "type", typeMappingStr, param);
+ addAttribute(doc, "location", location, param);
+ parameterElementList.add(param);
+ }
+ }
+
+ return parameterElementList;
+ }
+
+ protected Element getInputElement(Document doc, WSDLOperation operation,
List headerParameterQNameList) {
+ return getElement(doc, "input", operation.getInputMessage(),
headerParameterQNameList);
+ }
+
+ protected Element getOutputElement(Document doc, WSDLOperation operation,
List headerParameterQNameList) {
+ return getElement(doc, "output", operation.getOutputMessage(),
headerParameterQNameList);
+ }
+
+ protected Element getElement(Document doc, String elementName,
MessageReference message, List headerParameterQNameList) {
+ Element element = doc.createElement(elementName);
+
+ List parameterElementList = getParameterElementList(doc, message);
+ 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 (!configuration.getOutputLocation().exists()) {
+ configuration.getOutputLocation().mkdirs();
+ }
+ InterfaceWriter interfaceWriter = new
InterfaceWriter(this.configuration
+ .getOutputLocation(), this.configuration.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.configuration.getOutputLocation(),
+ packageName, className,
".java");
+ if (outputFile.exists()) {
+ outputFile.delete();
+ }
+
+ writeClass(interfaceModel, interfaceWriter);
+ }
+
+}
Propchange:
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceEmitter.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Modified:
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java?rev=397455&r1=397454&r2=397455&view=diff
==============================================================================
---
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
(original)
+++
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/JavaInterfaceGenerator.java
Thu Apr 27 00:11:31 2006
@@ -17,7 +17,6 @@
package org.apache.tuscany.tools.wsdl2java.generate;
import java.io.File;
-import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -26,22 +25,17 @@
import javax.wsdl.WSDLException;
import javax.xml.namespace.QName;
-import org.apache.axis2.i18n.Messages;
-import org.apache.axis2.util.FileWriter;
import org.apache.axis2.wsdl.builder.WOMBuilderFactory;
import org.apache.axis2.wsdl.codegen.CodeGenConfiguration;
import org.apache.axis2.wsdl.codegen.CodeGenerationException;
-import org.apache.axis2.wsdl.codegen.emitter.JavaEmitter;
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.codegen.writer.InterfaceWriter;
import org.apache.axis2.wsdl.databinding.JavaTypeMapper;
import org.apache.axis2.wsdl.i18n.CodegenMessages;
import org.apache.tuscany.model.util.XMLNameUtil;
import org.apache.wsdl.WSDLDescription;
-import org.w3c.dom.Document;
public class JavaInterfaceGenerator {
@@ -49,7 +43,7 @@
private CodeGenConfiguration codegenConfiguration;
public JavaInterfaceGenerator(String uri, String outputLocation, String
packageName,
- Map<QName, String> typeMapping) throws
CodeGenerationException {
+ Map<QName, Object> typeMapping) throws
CodeGenerationException {
WSDLDescription wom;
try {
wom =
WOMBuilderFactory.getBuilder(org.apache.wsdl.WSDLConstants.WSDL_1_1)
@@ -63,8 +57,8 @@
}
JavaTypeMapper typeMapper = new JavaTypeMapper();
- for (Map.Entry<QName, String> e : typeMapping.entrySet()) {
- typeMapper.addTypeMappingName(e.getKey(), e.getValue());
+ for (Map.Entry<QName, Object> e : typeMapping.entrySet()) {
+ typeMapper.addTypeMappingObject(e.getKey(), e.getValue());
}
codegenConfiguration = new CodeGenConfiguration(wom, new HashMap());
@@ -103,31 +97,6 @@
try {
for (int i = 0; i < codegenExtensions.size(); i++) {
((CodeGenExtension)codegenExtensions.get(i)).engage();
- }
-
- class JavaInterfaceEmitter extends JavaEmitter {
-
- protected void writeInterface(boolean writeDatabinders) throws
Exception {
- Document interfaceModel =
createDOMDocumentForInterface(writeDatabinders);
- if (!configuration.getOutputLocation().exists()) {
- configuration.getOutputLocation().mkdirs();
- }
- InterfaceWriter interfaceWriter = new
InterfaceWriter(this.configuration
- .getOutputLocation(),
this.configuration.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.configuration.getOutputLocation(),
- packageName,
className, ".java");
- if (outputFile.exists()) {
- outputFile.delete();
- }
-
- writeClass(interfaceModel, interfaceWriter);
- }
-
}
JavaInterfaceEmitter emitter = new JavaInterfaceEmitter();
Modified:
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java?rev=397455&r1=397454&r2=397455&view=diff
==============================================================================
---
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
(original)
+++
incubator/tuscany/java/sca/tools/src/main/java/org/apache/tuscany/tools/wsdl2java/generate/WSDL2JavaGenerator.java
Thu Apr 27 00:11:31 2006
@@ -119,7 +119,7 @@
targetDirectory = new File(targetDirectory).getCanonicalPath();
}
- Map<QName, String> typeMapping = new HashMap<QName, String>();
+ Map<QName, Object> typeMapping = new HashMap<QName, Object>();
if (!packageRegistry.values().isEmpty()) {
ResourceSet resourceSet = DataObjectUtil.createResourceSet();
@@ -157,22 +157,37 @@
EClassifier elementType = element.getEType();
if (extendedMetaData.isAnonymous(elementType)) {
EClass eClass = (EClass)elementType;
- EStructuralFeature feature =
(EStructuralFeature)eClass
- .getEStructuralFeatures().get(0);
- elementType = feature.getEType();
- }
- if (elementType instanceof EClass) {
- GenClass genClass =
genClasses.get(elementType);
QName qname = new
QName(extendedMetaData.getNamespace(currentEPackage),
-
extendedMetaData.getName(element));
- String interfaceName =
genClass.getGenPackage().getInterfacePackageName()
- + '.' +
genClass.getInterfaceName();
- typeMapping.put(qname, interfaceName);
- } else if (elementType instanceof EClassifier) {
- QName qname = new
QName(extendedMetaData.getNamespace(currentEPackage),
-
extendedMetaData.getName(element));
- String interfaceName =
elementType.getInstanceClass().getName();
- typeMapping.put(qname, interfaceName);
+ extendedMetaData.getName(element));
+ List<String> interfaceNames=new
ArrayList<String>();
+ for (EStructuralFeature feature :
+
(List<EStructuralFeature>)eClass.getEStructuralFeatures()) {
+ elementType = feature.getEType();
+ if (elementType instanceof EClass) {
+ GenClass genClass =
genClasses.get(elementType);
+ String interfaceName =
genClass.getGenPackage().getInterfacePackageName()
+ + '.' +
genClass.getInterfaceName();
+ interfaceNames.add(interfaceName);
+ } else if (elementType instanceof
EClassifier) {
+ String interfaceName =
elementType.getInstanceClass().getName();
+ interfaceNames.add(interfaceName);
+ }
+ typeMapping.put(qname, interfaceNames);
+ }
+ } else {
+ if (elementType instanceof EClass) {
+ GenClass genClass =
genClasses.get(elementType);
+ QName qname = new
QName(extendedMetaData.getNamespace(currentEPackage),
+
extendedMetaData.getName(element));
+ String interfaceName =
genClass.getGenPackage().getInterfacePackageName()
+ + '.' +
genClass.getInterfaceName();
+ typeMapping.put(qname, interfaceName);
+ } else if (elementType instanceof EClassifier)
{
+ QName qname = new
QName(extendedMetaData.getNamespace(currentEPackage),
+
extendedMetaData.getName(element));
+ String interfaceName =
elementType.getInstanceClass().getName();
+ typeMapping.put(qname, interfaceName);
+ }
}
}
}