summaryrefslogtreecommitdiffstats
path: root/tags/java/sca/2.0-M1/tools/sdo/java2wsdl/src/main/java/org/apache/tuscany/tools/java2wsdl/generate/TuscanyWSDLTypesGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'tags/java/sca/2.0-M1/tools/sdo/java2wsdl/src/main/java/org/apache/tuscany/tools/java2wsdl/generate/TuscanyWSDLTypesGenerator.java')
-rw-r--r--tags/java/sca/2.0-M1/tools/sdo/java2wsdl/src/main/java/org/apache/tuscany/tools/java2wsdl/generate/TuscanyWSDLTypesGenerator.java370
1 files changed, 0 insertions, 370 deletions
diff --git a/tags/java/sca/2.0-M1/tools/sdo/java2wsdl/src/main/java/org/apache/tuscany/tools/java2wsdl/generate/TuscanyWSDLTypesGenerator.java b/tags/java/sca/2.0-M1/tools/sdo/java2wsdl/src/main/java/org/apache/tuscany/tools/java2wsdl/generate/TuscanyWSDLTypesGenerator.java
deleted file mode 100644
index 66c9100ef9..0000000000
--- a/tags/java/sca/2.0-M1/tools/sdo/java2wsdl/src/main/java/org/apache/tuscany/tools/java2wsdl/generate/TuscanyWSDLTypesGenerator.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.java2wsdl.generate;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Map;
-
-import javax.xml.namespace.QName;
-
-import org.apache.axis2.description.java2wsdl.bytecode.MethodTable;
-import org.apache.ws.commons.schema.XmlSchema;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
-import org.apache.ws.commons.schema.XmlSchemaComplexType;
-import org.apache.ws.commons.schema.XmlSchemaElement;
-import org.apache.ws.commons.schema.XmlSchemaForm;
-import org.apache.ws.commons.schema.XmlSchemaImport;
-import org.apache.ws.commons.schema.XmlSchemaInclude;
-import org.apache.ws.commons.schema.XmlSchemaSequence;
-import org.apache.ws.commons.schema.utils.NamespaceMap;
-import org.codehaus.jam.JClass;
-import org.codehaus.jam.JMethod;
-import org.codehaus.jam.JParameter;
-import org.codehaus.jam.JamClassIterator;
-import org.codehaus.jam.JamService;
-import org.codehaus.jam.JamServiceFactory;
-import org.codehaus.jam.JamServiceParams;
-
-public class TuscanyWSDLTypesGenerator implements TuscanyJava2WSDLConstants {
- public static final String NAME_SPACE_PREFIX = "stn_";
-
- public static final String PERIOD_SEPARATOR = ".";
-
- private static int prefixCount = 1;
-
- protected GenerationParameters generationParams;
-
- protected Hashtable targetNamespacePrefixMap = new Hashtable();
-
- protected Hashtable schemaMap = new Hashtable();
-
- protected XmlSchemaCollection xmlSchemaCollection = new XmlSchemaCollection();
-
- private TuscanyTypeTable typeTable = new TuscanyTypeTable();
-
- protected SchemaBuilder schemaBuilder = null;
-
- protected Map schemaLocationMap = null;
-
- // to keep loaded method using JAM
- private JMethod methods[];
-
- // to store byte code method using Axis 1.x codes
- private MethodTable methodTable;
-
- private Class clazz;
-
- private ArrayList excludeMethods = new ArrayList();
-
- boolean alreadyPrintedArrayWarningMessage = false;
-
- public TuscanyWSDLTypesGenerator(GenerationParameters genParams) throws Exception {
- this.generationParams = genParams;
-
- String inputClassName = generationParams.getSourceClassName();
-
- try {
- clazz = Class.forName(inputClassName, true, generationParams.getClassLoader());
- } catch (ClassNotFoundException cfne) {
- printInputSourceClassNotFoundMessage(inputClassName);
- throw new IllegalArgumentException("Input className not found:" + inputClassName, cfne);
- }
-
- methodTable = new MethodTable(clazz);
-
- initializeSchemaMap(generationParams.getSchemaTargetNamespace(), generationParams
- .getSchemaTargetNamespacePrefix());
-
- this.schemaLocationMap = generationParams.getSchemaLocationMap();
- schemaBuilder =
- new SchemaBuilder(xmlSchemaCollection, schemaMap, targetNamespacePrefixMap, typeTable, generationParams
- .getAttrFormDefault(), generationParams.getElementFormDefault(), generationParams
- .getSchemaLocationMap(), generationParams.getClassLoader(), generationParams.getFactoryClassNames());
- }
-
- /**
- * Generates schema for all the parameters in method. First generates schema
- * for all different parameter type and later refers to them.
- *
- * @return Returns XmlSchema.
- * @throws Exception
- */
- public Collection buildWSDLTypes() throws Exception {
- JamServiceFactory factory = JamServiceFactory.getInstance();
- JamServiceParams jam_service_parms = factory.createServiceParams();
- // setting the classLoder
- // jam_service_parms.setParentClassLoader(factory.createJamClassLoader(classLoader));
- // it can possible to add the classLoader as well
- jam_service_parms.addClassLoader(generationParams.getClassLoader());
- jam_service_parms.includeClass(generationParams.getSourceClassName());
-
- for (int count = 0; count < generationParams.getExtraClasses().size(); ++count) {
- jam_service_parms.includeClass((String)generationParams.getExtraClasses().get(count));
- }
-
- JamService service = factory.createService(jam_service_parms);
- QName extraSchemaTypeName = null;
- JamClassIterator jClassIter = service.getClasses();
- // all most all the time the ittr will have only one class in it
- while (jClassIter.hasNext()) {
- JClass jclass = (JClass)jClassIter.next();
- // serviceName = jclass.getSimpleName();
- // todo in the future , when we support annotation we can use this
- // JAnnotation[] annotations = jclass.getAnnotations();
-
- if (jclass.getQualifiedName().equals(generationParams.getSourceClassName())) {
- /**
- * Schema generation done in two stage 1. Load all the methods
- * and create type for methods parameters (if the parameters are
- * Bean then it will create Complex types for those , and if the
- * parameters are simple type which describe in SimpleTypeTable
- * nothing will happen) 2. In the next stage for all the methods
- * messages and port types will be created
- */
- methods = jclass.getDeclaredMethods();
- // short the elements in the array
- Arrays.sort(methods);
-
- // since we do not support overload
- HashMap uniqueMethods = new HashMap();
- XmlSchemaComplexType methodSchemaType;
- XmlSchemaSequence sequence = null;
-
- for (int i = 0; i < methods.length; i++) {
- JMethod jMethod = methods[i];
-
- String methodName = methods[i].getSimpleName();
- // no need to think about this method , since that is system
- // config method
- if (excludeMethods.contains(jMethod.getSimpleName())) {
- continue;
- }
-
- if (uniqueMethods.get(jMethod.getSimpleName()) != null) {
- throw new Exception(" Sorry we don't support methods overloading !!!! ");
- }
-
- if (!jMethod.isPublic()) {
- // no need to generate Schema for non public methods
- continue;
- }
- uniqueMethods.put(jMethod.getSimpleName(), jMethod);
- // create the schema type for the method wrapper
-
- uniqueMethods.put(jMethod.getSimpleName(), jMethod);
- JParameter[] paras = jMethod.getParameters();
- String parameterNames[] = null;
- // better to handle void types too
- parameterNames = methodTable.getParameterNames(methodName);
- sequence = new XmlSchemaSequence();
-
- methodSchemaType = createSchemaTypeForMethodPart(jMethod.getSimpleName());
- methodSchemaType.setParticle(sequence);
-
- for (int j = 0; j < paras.length; j++) {
- JParameter methodParameter = paras[j];
- JClass paraType = methodParameter.getType();
- generateSchemaForType(sequence, paraType, (parameterNames != null && parameterNames[j] != null)
- ? parameterNames[j] : methodParameter.getSimpleName());
- }
- // for its return type
- JClass returnType = jMethod.getReturnType();
-
- // better to handle void types too
- methodSchemaType = createSchemaTypeForMethodPart(jMethod.getSimpleName() + RESPONSE);
- sequence = new XmlSchemaSequence();
- methodSchemaType.setParticle(sequence);
- generateSchemaForType(sequence, returnType, "return");
- }
- } else {
- // generate the schema type for extra classes
- extraSchemaTypeName = typeTable.getSimpleSchemaTypeName(jclass.getQualifiedName());
- if (extraSchemaTypeName == null) {
- extraSchemaTypeName = schemaBuilder.generateSchema(jclass);
- }
- }
- }
- return schemaMap.values();
- }
-
- private QName generateSchemaForType(XmlSchemaSequence sequence, JClass type, String partName) throws Exception {
- if (type.isVoidType()) {
- return null;
- }
- boolean isArrayType = type.isArrayType();
- if (isArrayType) {
- type = type.getArrayComponentType();
- }
-
- String classTypeName = type.getQualifiedName();
-
- QName schemaTypeName = typeTable.getSimpleSchemaTypeName(classTypeName);
- if (schemaTypeName == null) {
- schemaTypeName = schemaBuilder.generateSchema(type);
- addContentToMethodSchemaType(sequence, schemaTypeName, partName, type.isArrayType());
- addImportORInclude((XmlSchema)schemaMap.get(generationParams.getSchemaTargetNamespace()), schemaTypeName);
-
- } else {
- addContentToMethodSchemaType(sequence, schemaTypeName, partName, type.isArrayType());
- }
-
- return schemaTypeName;
- }
-
- private void addContentToMethodSchemaType(XmlSchemaSequence sequence,
- QName schemaTypeName,
- String paraName,
- boolean isArray) {
- XmlSchemaElement elt1 = new XmlSchemaElement();
- elt1.setName(paraName);
- elt1.setSchemaTypeName(schemaTypeName);
- sequence.getItems().add(elt1);
-
- if (isArray) {
- // FIXME: lresende to check this
- if (!alreadyPrintedArrayWarningMessage) {
- alreadyPrintedArrayWarningMessage = true;
- System.out.println("Warning!: Array type detected as Java method parameter. The WSDL");
- System.out.println("will be generated anyway in spite of the fact that round-trip (WSDL2Java)");
- System.out.println("may not be handled in the expected manner. There may be runtime issues as ");
- System.out.println("well as array types are not necessarily supported yet.");
- System.out.println("");
- }
- elt1.setMaxOccurs(Long.MAX_VALUE);
- elt1.setMinOccurs(0);
- }
- }
-
- private XmlSchemaComplexType createSchemaTypeForMethodPart(String localPartName) throws Exception {
- XmlSchema xmlSchema = (XmlSchema)schemaMap.get(generationParams.getSchemaTargetNamespace());
- QName elementName =
- new QName(generationParams.getSchemaTargetNamespace(), localPartName, generationParams
- .getSchemaTargetNamespacePrefix());
- XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
-
- XmlSchemaElement globalElement = new XmlSchemaElement();
- globalElement.setSchemaType(complexType);
- globalElement.setName(localPartName);
- globalElement.setQName(elementName);
-
- xmlSchema.getItems().add(globalElement);
- xmlSchema.getElements().add(elementName, globalElement);
-
- typeTable.addComplexSchemaType(generationParams.getSchemaTargetNamespace(),
- globalElement.getName(),
- elementName);
-
- return complexType;
- }
-
- public TuscanyTypeTable getTypeTable() {
- return typeTable;
- }
-
- public JMethod[] getMethods() {
- return methods;
- }
-
- private String generatePrefix() {
- return NAME_SPACE_PREFIX + prefixCount++;
- }
-
- public void setExcludeMethods(ArrayList excludeMethods) {
- this.excludeMethods = excludeMethods;
- }
-
- private void initializeSchemaMap(String targetNamespace, String targetNamespacePrefix) {
- XmlSchema xmlSchema = new XmlSchema(targetNamespace, xmlSchemaCollection);
- xmlSchema.setAttributeFormDefault(getAttrFormDefaultSetting());
- xmlSchema.setElementFormDefault(getElementFormDefaultSetting());
-
- targetNamespacePrefixMap.put(targetNamespace, targetNamespacePrefix);
- schemaMap.put(targetNamespace, xmlSchema);
-
- NamespaceMap prefixmap = new NamespaceMap();
- prefixmap.put(TuscanyTypeTable.XS_URI_PREFIX, TuscanyTypeTable.XML_SCHEMA_URI);
- prefixmap.put(targetNamespacePrefix, targetNamespace);
- xmlSchema.setNamespaceContext(prefixmap);
- }
-
- /*
- * Adds to 'xmlSchema' an import or include of the XMLSchema containing
- * 'schemaTypeName'
- */
- private void addImportORInclude(XmlSchema xmlSchema, QName schemaTypeName) {
- // decide whether there must be an import or an include
- if (xmlSchema.getTargetNamespace().equals(schemaTypeName.getNamespaceURI())) {
- XmlSchema containingSchema = (XmlSchema)schemaMap.get(schemaTypeName.getNamespaceURI());
- // if the type is not defined in the Schema then include
- if (containingSchema.getTypeByName(schemaTypeName) == null) {
- String schemaLocation = null;
- // This looked backwards so I flipped it
- if ((schemaLocation = (String)schemaLocationMap.get(schemaTypeName.getNamespaceURI())) != null) {
- schemaLocation = DEFAULT_SCHEMA_LOCATION;
- }
-
- XmlSchemaInclude includeElement = new XmlSchemaInclude();
- includeElement.setSchemaLocation(schemaLocation);
-
- if (!xmlSchema.getIncludes().contains(includeElement)) {
- xmlSchema.getIncludes().add(includeElement);
- // Add this so it will be serialized
- xmlSchema.getItems().add(includeElement);
- }
- }
- } else {
- if (!((NamespaceMap)xmlSchema.getNamespaceContext()).values().contains(schemaTypeName.getNamespaceURI())) {
- XmlSchemaImport importElement = new XmlSchemaImport();
- importElement.setNamespace(schemaTypeName.getNamespaceURI());
-
- // Add schemaLocation on imports
- String schemaLocation = (String)schemaLocationMap.get(schemaTypeName.getNamespaceURI());
- importElement.setSchemaLocation(schemaLocation);
- xmlSchema.getItems().add(importElement);
- ((NamespaceMap)xmlSchema.getNamespaceContext()).put(generatePrefix(), schemaTypeName.getNamespaceURI());
- }
- }
- }
-
- private XmlSchemaForm getAttrFormDefaultSetting() {
- if (FORM_DEFAULT_UNQUALIFIED.equals(generationParams.getAttrFormDefault())) {
- return new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
- } else {
- return new XmlSchemaForm(XmlSchemaForm.QUALIFIED);
- }
- }
-
- private XmlSchemaForm getElementFormDefaultSetting() {
- if (FORM_DEFAULT_UNQUALIFIED.equals(generationParams.getElementFormDefault())) {
- return new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
- } else {
- return new XmlSchemaForm(XmlSchemaForm.QUALIFIED);
- }
- }
-
- private void printInputSourceClassNotFoundMessage(String inputClassName) {
- System.out.println("ERROR!!: The input class: " + inputClassName + " could not be found.");
- System.out.println("Please check the value you provided for the -cp <class path uri> option.");
- System.out.println("");
- }
-}