You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by de...@apache.org on 2006/07/03 09:18:12 UTC
svn commit: r418698 - in /webservices/axis2/trunk/java/modules:
core/src/org/apache/axis2/engine/ java2wsdl/src/org/apache/ws/java2wsdl/
java2wsdl/src/org/apache/ws/java2wsdl/utils/
Author: deepal
Date: Mon Jul 3 00:18:10 2006
New Revision: 418698
URL: http://svn.apache.org/viewvc?rev=418698&view=rev
Log:
applied the patch
http://issues.apache.org/jira/browse/AXIS2-837
build is working !
Venkat for the patch
Modified:
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java
webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java
webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java
webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java
webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java
webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java
webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/InstanceDispatcher.java Mon Jul 3 00:18:10 2006
@@ -38,8 +38,6 @@
*/
public class InstanceDispatcher extends AbstractHandler {
- private static final long serialVersionUID = -1928612412157492489L;
-
/**
* Post Condition : All the Contexts must be populated.
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2OMBuilder.java Mon Jul 3 00:18:10 2006
@@ -1,4 +1,14 @@
-package org.apache.ws.java2wsdl;
+package org.apache.ws.java2wsdl;
+
+import java.io.ByteArrayInputStream;
+import java.io.StringWriter;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
@@ -10,15 +20,6 @@
import org.apache.ws.java2wsdl.utils.TypeTable;
import org.codehaus.jam.JMethod;
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamReader;
-import java.io.ByteArrayInputStream;
-import java.io.StringWriter;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Iterator;
-
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
@@ -160,37 +161,40 @@
private void generateMessages(OMFactory fac, OMElement definitions) {
Hashtable namespaceMap = new Hashtable();
- String namespacePrefix;
- String namespaceURI;
- QName messagePartType;
+ String namespacePrefix = null;
+ String namespaceURI = null;
+ QName messagePartType = null;
for (int i = 0; i < method.length; i++) {
JMethod jmethod = method[i];
+ //Request Message
+ OMElement requestMessge = fac.createOMElement(
+ MESSAGE_LOCAL_NAME, wsdl);
+ requestMessge.addAttribute(ATTRIBUTE_NAME, jmethod
+ .getSimpleName()
+ + MESSAGE_SUFFIX, null);
+ definitions.addChild(requestMessge);
+
// only if a type for the message part has already been defined
if ((messagePartType = typeTable.getComplexSchemaType(jmethod
- .getSimpleName())) != null) {
+ .getSimpleName())) != null)
+ {
namespaceURI = messagePartType.getNamespaceURI();
// avoid duplicate namespaces
- if ((namespacePrefix = (String) namespaceMap.get(namespaceURI)) == null) {
+ if ((namespacePrefix = (String) namespaceMap.get(namespaceURI)) == null)
+ {
namespacePrefix = generatePrefix();
namespaceMap.put(namespaceURI, namespacePrefix);
}
- //Request Message
- OMElement requestMessge = fac.createOMElement(
- MESSAGE_LOCAL_NAME, wsdl);
- requestMessge.addAttribute(ATTRIBUTE_NAME, jmethod
- .getSimpleName()
- + MESSAGE_SUFFIX, null);
- definitions.addChild(requestMessge);
OMElement requestPart = fac.createOMElement(
PART_ATTRIBUTE_NAME, wsdl);
requestMessge.addChild(requestPart);
requestPart.addAttribute(ATTRIBUTE_NAME, "part1", null);
-
+
requestPart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
- namespacePrefix + COLON_SEPARATOR
- + jmethod.getSimpleName(), null);
+ namespacePrefix + COLON_SEPARATOR
+ + jmethod.getSimpleName(), null);
}
// only if a type for the message part has already been defined
@@ -202,7 +206,7 @@
namespacePrefix = generatePrefix();
namespaceMap.put(namespaceURI, namespacePrefix);
}
- //Response Message
+ //Response Message
OMElement responseMessge = fac.createOMElement(
MESSAGE_LOCAL_NAME, wsdl);
responseMessge.addAttribute(ATTRIBUTE_NAME, jmethod
@@ -211,10 +215,10 @@
definitions.addChild(responseMessge);
OMElement responsePart = fac.createOMElement(
PART_ATTRIBUTE_NAME, wsdl);
- responseMessge.addChild(responsePart);
- responsePart.addAttribute(ATTRIBUTE_NAME, "part1", null);
+ responseMessge.addChild(responsePart);
+ responsePart.addAttribute(ATTRIBUTE_NAME, "part1", null);
- responsePart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
+ responsePart.addAttribute(ELEMENT_ATTRIBUTE_NAME,
namespacePrefix + COLON_SEPARATOR
+ jmethod.getSimpleName() + RESPONSE, null);
}
@@ -228,6 +232,7 @@
.get(namespaceURI));
}
}
+
/**
* Generate the porttypes
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDL.java Mon Jul 3 00:18:10 2006
@@ -45,6 +45,8 @@
System.out.println("-st <binding style> : style for the WSDL");
System.out.println("-u <binding use> : use for the WSDL");
System.out.println("-l <soap address> : address of the port for the WSDL");
+ System.out.println("-efd <unqualified> : Setting for elementFormDefault (defaults to qualified)");
+ System.out.println("-afd <unqualified> : Setting for attributeFormDefault (defaults to qualified)");
System.exit(0);
}
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLBuilder.java Mon Jul 3 00:18:10 2006
@@ -36,6 +36,8 @@
private String targetNamespace = null;
private String targetNamespacePrefix = null;
+ private String attrFormDefault = null;
+ private String elementFormDefault = null;
private String schemaTargetNamespace = null;
private String schemaTargetNamespacePrefix = null;
private String style = Java2WSDLConstants.DOCUMENT;
@@ -133,13 +135,17 @@
* @throws Exception
*/
public void generateWSDL() throws Exception {
- SchemaGenerator sg = new SchemaGenerator(classLoader, className,
- schemaTargetNamespace, schemaTargetNamespacePrefix);
+ SchemaGenerator sg = new SchemaGenerator(classLoader,
+ className,
+ schemaTargetNamespace,
+ schemaTargetNamespacePrefix);
ArrayList excludeOpeartion = new ArrayList();
excludeOpeartion.add("init");
excludeOpeartion.add("setOperationContext");
excludeOpeartion.add("destroy");
sg.setExcludeMethods(excludeOpeartion);
+ sg.setAttrFormDefault(getAttrFormDefault());
+ sg.setElementFormDefault(getElementFormDefault());
Collection schemaCollection = sg.generateSchema();
Java2OMBuilder java2OMBuilder = new Java2OMBuilder(sg.getMethods(),
schemaCollection,
@@ -154,6 +160,22 @@
wsdlElement.serialize(out);
out.flush();
out.close();
+ }
+
+ public String getAttrFormDefault() {
+ return attrFormDefault;
+ }
+
+ public void setAttrFormDefault(String attrFormDefault) {
+ this.attrFormDefault = attrFormDefault;
+ }
+
+ public String getElementFormDefault() {
+ return elementFormDefault;
+ }
+
+ public void setElementFormDefault(String elementFormDefault) {
+ this.elementFormDefault = elementFormDefault;
}
}
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLCodegenEngine.java Mon Jul 3 00:18:10 2006
@@ -149,6 +149,15 @@
if (option != null) {
java2WsdlBuilder.setUse(option.getOptionValue());
}
+
+ option = loadOption(Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION,
+ Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION_LONG, optionsMap);
+ java2WsdlBuilder.setAttrFormDefault(option == null ? null : option.getOptionValue());
+
+ option = loadOption(Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION,
+ Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION_LONG, optionsMap);
+ java2WsdlBuilder.setElementFormDefault(option == null ? null : option.getOptionValue());
+
}
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/Java2WSDLConstants.java Mon Jul 3 00:18:10 2006
@@ -25,6 +25,9 @@
String DEFAULT_TARGET_NAMESPACE_PREFIX = "axis2";
String TARGETNAMESPACE_PREFIX = "tns";
String SCHEMA_NAMESPACE_PRFIX = "ns";
+ String FORM_DEFAULT_QUALIFIED = "qualified";
+ String FORM_DEFAULT_UNQUALIFIED = "unqualified";
+
String DEFAULT_TARGET_NAMESPACE = "http://ws.apache.org/axis2";
String WSDL_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/";
@@ -94,6 +97,8 @@
String STYLE_OPTION = "st";
String USE_OPTION = "u";
String LOCATION_OPTION = "l";
+ String ATTR_FORM_DEFAULT_OPTION = "afd";
+ String ELEMENT_FORM_DEFAULT_OPTION = "efd";
//long option constants
String OUTPUT_LOCATION_OPTION_LONG = "output";
@@ -109,6 +114,8 @@
String USE_OPTION_LONG = "use";
String LOCATION_OPTION_LONG = "location";
String AXIS2_NAMESPACE_PREFIX = "ns1";
+ String ATTR_FORM_DEFAULT_OPTION_LONG = "attributeFormDefault";
+ String ELEMENT_FORM_DEFAULT_OPTION_LONG = "elementFormDefault";
public static final String SOLE_INPUT = "SOLE_INPUT";
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java Mon Jul 3 00:18:10 2006
@@ -27,7 +27,8 @@
*
*/
-public class SchemaGenerator implements Java2WSDLConstants {
+public class SchemaGenerator implements Java2WSDLConstants
+{
public static final String NAME_SPACE_PREFIX = "stn_";
@@ -56,6 +57,10 @@
private String schemaTargetNameSpace;
private String schema_namespace_prefix;
+
+ private String attrFormDefault = null;
+
+ private String elementFormDefault = null;
private Class clazz;
@@ -83,9 +88,7 @@
} else {
this.schema_namespace_prefix = SCHEMA_NAMESPACE_PRFIX;
}
- XmlSchema xmlSchema = getXmlSchema(Java2WSDLUtils.getPackageName(className,loader), schemaTargetNameSpace, schema_namespace_prefix);
- xmlSchema.getPrefixToNamespaceMap().put(DEFAULT_SCHEMA_NAMESPACE_PREFIX,
- URI_2001_SCHEMA_XSD);
+ //initializeSchemaMap(this.schemaTargetNameSpace, this.schema_namespace_prefix);
}
/**
@@ -128,9 +131,13 @@
// since we do not support overload
HashMap uniqueMethods = new HashMap();
+ XmlSchemaComplexType methodSchemaType = null;
+ XmlSchemaSequence sequence = null;
+ QName methodPartSchemaTypeName = null;
for (int i = 0; i < methods.length; i++) {
JMethod jMethod = methods[i];
+ String methodName = methods[i].getSimpleName();
// no need to think abt this method , since that is system
// config method
if (excludeMethods.contains(jMethod.getSimpleName())) {
@@ -147,222 +154,43 @@
continue;
}
uniqueMethods.put(jMethod.getSimpleName(), jMethod);
-
- //it can easily get the annotations
-// jMethod.getAnnotations();
+ //create the schema type for the method wrapper
+
+ uniqueMethods.put(jMethod.getSimpleName(), jMethod);
JParameter [] paras = jMethod.getParameters();
- for (int j = 0; j < paras.length; j++) {
+ String parameterNames [] = null;
+ if (paras.length > 0)
+ {
+ 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();
- String classTypeName = paraType.getQualifiedName();
- if (paraType.isArrayType()) {
- classTypeName = paraType.getArrayComponentType()
- .getQualifiedName();
- if (!typeTable.isSimpleType(classTypeName)) {
- generateSchema(paraType.getArrayComponentType());
- }
- } else {
- if (!typeTable.isSimpleType(classTypeName)) {
- generateSchema(methodParameter.getType());
- }
- }
- /**
- * 1. have to check whethet its a simple type 2. then to
- * check whther its a simple type array 3. OM elemney 4.
- * Bean
- */
-
+ generateSchemaForType(sequence, paraType,
+ ( parameterNames != null && parameterNames[j] != null )? parameterNames[j] : methodParameter.getSimpleName());
}
// for its return type
- JClass retuenType = jMethod.getReturnType();
- if (!retuenType.isVoidType()) {
- if (retuenType.isArrayType()) {
- String returnTypeName = retuenType
- .getArrayComponentType().getQualifiedName();
- if (!typeTable.isSimpleType(returnTypeName)) {
- generateSchema(retuenType.getArrayComponentType());
- }
- } else {
- if (!typeTable.isSimpleType(retuenType
- .getQualifiedName())) {
- generateSchema(retuenType);
- }
- }
+ JClass returnType = jMethod.getReturnType();
+
+ if (!returnType.isVoidType())
+ {
+ methodSchemaType = createSchemaTypeForMethodPart(jMethod.getSimpleName() + RESPONSE);
+ sequence = new XmlSchemaSequence();
+ methodSchemaType.setParticle(sequence);
+ generateSchemaForType(sequence, returnType, "return");
}
-
}
- generateWrapperElements(methods);
}
return schemaMap.values();
}
/**
- * Generates wrapper element. If a method takes more than one parameter e.g.
- * foo(Type1 para1, Type2 para2){} creates a Wrapper element like <element
- * name="fooInParameter type="tns:fooInParameterElement""> <complexType
- * name="fooInParameterElement"> <sequnce> <element name="para1"
- * type="tns:Type1"> <element name="para2" type="tns:Type2"> </sequnce>
- * </complexType> </element>
- */
- private void generateWrapperElements(JMethod methods[]) throws Exception {
- for (int i = 0; i < methods.length; i++) {
- JMethod method = methods[i];
- if (excludeMethods.contains(method.getSimpleName())) {
- continue;
- }
-// if (method.getSimpleName().equals("init")
-// || method.getSimpleName().equals("setOperationContext")
-// || method.getSimpleName().equals("destroy"))
-// continue;
- if (!method.isPublic())
- continue;
- generateWrapperElementforMethod(method);
- }
- }
-
- private void generateWrapperElementforMethod(JMethod method) throws Exception {
- //since the wrapper elements are generated for the methods of the service interface
- //we get the schema that corresponds to the package of the service interface classname
- XmlSchema xmlSchema = getXmlSchema(Java2WSDLUtils.getPackageName(className,classLoader),
- schemaTargetNameSpace,
- schema_namespace_prefix);
- String methodName = method.getSimpleName();
- XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
- XmlSchemaSequence sequence = new XmlSchemaSequence();
-
- XmlSchemaElement eltOuter = new XmlSchemaElement();
- eltOuter.setName(methodName);
- eltOuter.setSchemaType(complexType);
- // adding this type to the table
- QName elementName = new QName(this.schemaTargetNameSpace, eltOuter
- .getName(), this.schema_namespace_prefix);
- eltOuter.setQName(elementName);
- typeTable.addComplexSchema(methodName, elementName);
- xmlSchema.getItems().add(eltOuter);
- xmlSchema.getElements().add(elementName, eltOuter);
-
- JParameter [] paras = method.getParameters();
- if (paras.length > 0) {
- complexType.setParticle(sequence);
- }
- String parameterNames [] = null;
- if (paras.length > 0) {
- parameterNames = methodTable.getParameterNames(methodName);
- }
- for (int j = 0; j < paras.length; j++) {
- JParameter methodParameter = paras[j];
- String paraName = methodParameter.getSimpleName();
- String classTypeName = methodParameter.getType().getQualifiedName();
- boolean isArryType = methodParameter.getType().isArrayType();
- if (isArryType) {
- classTypeName = methodParameter.getType()
- .getArrayComponentType().getQualifiedName();
- }
-
- if (parameterNames != null) {
- paraName = parameterNames[j];
- }
-
- if (typeTable.isSimpleType(classTypeName)) {
- XmlSchemaElement elt1 = new XmlSchemaElement();
- elt1.setName(paraName);
- elt1.setSchemaTypeName(typeTable
- .getSimpleSchemaTypeName(classTypeName));
- sequence.getItems().add(elt1);
- if (isArryType) {
- elt1.setMaxOccurs(Long.MAX_VALUE);
- elt1.setMinOccurs(0);
- }
- } else {
- XmlSchemaElement elt1 = new XmlSchemaElement();
- elt1.setName(paraName);
- elt1.setSchemaTypeName(typeTable
- .getComplexSchemaType(classTypeName));
- sequence.getItems().add(elt1);
- if (isArryType) {
- elt1.setMaxOccurs(Long.MAX_VALUE);
- elt1.setMinOccurs(0);
- }
-
- if (!xmlSchema.getPrefixToNamespaceMap().values().
- contains(typeTable.getComplexSchemaType(classTypeName).getNamespaceURI())) {
- XmlSchemaImport importElement = new XmlSchemaImport();
- importElement.setNamespace(typeTable.getComplexSchemaType(classTypeName).getNamespaceURI());
- xmlSchema.getItems().add(importElement);
- xmlSchema.getPrefixToNamespaceMap().
- put(generatePrefix(), typeTable.getComplexSchemaType(classTypeName).getNamespaceURI());
- }
- }
- }
-
- //generating wrapper element for retuen element
- JClass methodReturnType = method.getReturnType();
- generateWrapperforReturnType(methodReturnType, methodName);
-
- }
-
- private void generateWrapperforReturnType(JClass retuenType,
- String methodName) throws Exception {
- //since the wrapper elements are generated for the methods of the service interface
- //we get the schema that corresponds to the package of the service interface classname
- XmlSchema xmlSchema = getXmlSchema(Java2WSDLUtils.getPackageName(className,classLoader),
- schemaTargetNameSpace,
- schema_namespace_prefix);
- if (!retuenType.isVoidType()) {
- XmlSchemaComplexType retuen_com_type = new XmlSchemaComplexType(
- xmlSchema);
- XmlSchemaElement ret_eltOuter = new XmlSchemaElement();
- ret_eltOuter.setName(methodName + RESPONSE);
-
- ret_eltOuter.setSchemaType(retuen_com_type);
- QName ret_comTypeName = new QName(this.schemaTargetNameSpace,
- ret_eltOuter.getName(), this.schema_namespace_prefix);
- xmlSchema.getItems().add(ret_eltOuter);
- xmlSchema.getElements().add(ret_comTypeName, ret_eltOuter);
-
- typeTable.addComplexSchema(
- methodName + RESPONSE, ret_comTypeName);
- String classTypeName = retuenType.getQualifiedName();
- boolean isArryType = retuenType.isArrayType();
- XmlSchemaSequence sequence = new XmlSchemaSequence();
- retuen_com_type.setParticle(sequence);
- if (isArryType) {
- classTypeName = retuenType.getArrayComponentType()
- .getQualifiedName();
- }
- if (typeTable.isSimpleType(classTypeName)) {
- XmlSchemaElement elt1 = new XmlSchemaElement();
- elt1.setName("return");
- elt1.setSchemaTypeName(typeTable
- .getSimpleSchemaTypeName(classTypeName));
- sequence.getItems().add(elt1);
- if (isArryType) {
- elt1.setMaxOccurs(Long.MAX_VALUE);
- elt1.setMinOccurs(0);
- }
- } else {
- XmlSchemaElement elt1 = new XmlSchemaElement();
- elt1.setName("return");
- elt1.setSchemaTypeName(typeTable
- .getComplexSchemaType(classTypeName));
- sequence.getItems().add(elt1);
- if (isArryType) {
- elt1.setMaxOccurs(Long.MAX_VALUE);
- elt1.setMinOccurs(0);
- }
- if (!xmlSchema.getPrefixToNamespaceMap().values().
- contains(typeTable.getComplexSchemaType(classTypeName).getNamespaceURI())) {
- XmlSchemaImport importElement = new XmlSchemaImport();
- importElement.setNamespace(typeTable.getComplexSchemaType(classTypeName).getNamespaceURI());
- xmlSchema.getItems().add(importElement);
- xmlSchema.getPrefixToNamespaceMap().
- put(generatePrefix(), typeTable.getComplexSchemaType(classTypeName).getNamespaceURI());
- }
- }
- }
- }
-
- /**
* JAM convert first name of an attribute into UpperCase as an example if
* there is a instance variable called foo in a bean , then Jam give that as
* Foo so this method is to correct that error
@@ -382,33 +210,35 @@
/**
* @param javaType
*/
- private void generateSchema(JClass javaType) {
+ private QName generateSchema(JClass javaType)
+ {
String name = javaType.getQualifiedName();
- if (typeTable.getComplexSchemaType(name) == null) {
+ QName schemaTypeName = typeTable.getComplexSchemaType(name);
+ if ( schemaTypeName == null) {
String simpleName = javaType.getSimpleName();
String packageName = javaType.getContainingPackage().getQualifiedName();
String targetNameSpace = Java2WSDLUtils.schemaNamespaceFromPackageName(packageName).toString();
- XmlSchema xmlSchema = getXmlSchema(packageName, targetNameSpace, generatePrefix());
- String targetNamespacePrefix = (String) targetNamespacePrefixMap.get(packageName);
+ XmlSchema xmlSchema = getXmlSchema(Java2WSDLUtils.schemaNamespaceFromPackageName(packageName).toString());
+ String targetNamespacePrefix = (String) targetNamespacePrefixMap.get(targetNameSpace);
XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
XmlSchemaSequence sequence = new XmlSchemaSequence();
XmlSchemaElement eltOuter = new XmlSchemaElement();
- QName elemntName = new QName(targetNameSpace, simpleName, targetNamespacePrefix);
+ schemaTypeName = new QName(targetNameSpace, simpleName, targetNamespacePrefix);
eltOuter.setName(simpleName);
- eltOuter.setQName(elemntName);
+ eltOuter.setQName(schemaTypeName);
complexType.setParticle(sequence);
complexType.setName(simpleName);
xmlSchema.getItems().add(eltOuter);
- xmlSchema.getElements().add(elemntName, eltOuter);
+ xmlSchema.getElements().add(schemaTypeName, eltOuter);
eltOuter.setSchemaTypeName(complexType.getQName());
xmlSchema.getItems().add(complexType);
- xmlSchema.getSchemaTypes().add(elemntName, complexType);
+ xmlSchema.getSchemaTypes().add(schemaTypeName, complexType);
// adding this type to the table
typeTable.addComplexSchema(name, eltOuter.getQName());
@@ -457,27 +287,113 @@
}
}
}
+ return schemaTypeName;
}
- private XmlSchema getXmlSchema(String packageName, String targetNamespace, String targetNamespacePrefix) {
- XmlSchema xmlSchema;
- // schema element that will hold this type i.e. schema element whose
- // targetnamespace
- // corresponds to this type's package
- if ((xmlSchema = (XmlSchema) schemaMap.get(packageName)) == null) {
+ private QName generateSchemaForType(XmlSchemaSequence sequence, JClass type, String partName) throws Exception
+ {
+ boolean isArrayType = type.isArrayType();
+ if ( isArrayType )
+ {
+ type = type.getArrayComponentType();
+ }
+
+ String classTypeName = type.getQualifiedName();
+
+ QName schemaTypeName = typeTable.getSimpleSchemaTypeName(classTypeName);
+ if ( schemaTypeName == null )
+ {
+ schemaTypeName = generateSchema(type);
+ addContentToMethodSchemaType(sequence,
+ schemaTypeName,
+ partName,
+ type.isArrayType());
+ //addImport((XmlSchema)schemaMap.get(schemaTargetNameSpace), schemaTypeName);
+ String schemaNamespace = Java2WSDLUtils.schemaNamespaceFromPackageName(type.getContainingPackage().
+ getQualifiedName()).toString();
+ addImport(getXmlSchema(schemaNamespace),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 )
+ {
+ elt1.setMaxOccurs(Long.MAX_VALUE);
+ elt1.setMinOccurs(0);
+ }
+ }
+
+ private XmlSchemaComplexType createSchemaTypeForMethodPart(String localPartName)
+ {
+ //XmlSchema xmlSchema = (XmlSchema)schemaMap.get(schemaTargetNameSpace);
+ XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace);
+ QName elementName = new QName(this.schemaTargetNameSpace, localPartName, this.schema_namespace_prefix);
+ XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema);
+
+ XmlSchemaElement globalElement = new XmlSchemaElement();
+ globalElement.setSchemaType(complexType);
+ globalElement.setName(formGlobalElementName(localPartName));
+ globalElement.setQName(elementName);
+
+ xmlSchema.getItems().add(globalElement);
+ xmlSchema.getElements().add(elementName, globalElement);
+
+ typeTable.addComplexSchema(localPartName, elementName);
+
+ return complexType;
+ }
+
+
+ private String formGlobalElementName(String typeName)
+ {
+ String firstChar = typeName.substring(0,1);
+ return typeName.replaceFirst(firstChar, firstChar.toLowerCase());
+ }
+
+ private XmlSchema getXmlSchema(String targetNamespace)
+ {
+ XmlSchema xmlSchema;
+
+ if ((xmlSchema = (XmlSchema) schemaMap.get(targetNamespace)) == null)
+ {
+ String targetNamespacePrefix = generatePrefix();
+
xmlSchema = new XmlSchema(targetNamespace, xmlSchemaCollection);
- targetNamespacePrefixMap.put(packageName, targetNamespacePrefix);
- schemaMap.put(packageName, xmlSchema);
-
+ xmlSchema.setAttributeFormDefault(getAttrFormDefaultSetting());
+ xmlSchema.setElementFormDefault(getElementFormDefaultSetting());
+
+
+ targetNamespacePrefixMap.put(targetNamespace, targetNamespacePrefix);
+ schemaMap.put(targetNamespace, xmlSchema);
+
Hashtable prefixmap = new Hashtable();
prefixmap.put(DEFAULT_SCHEMA_NAMESPACE_PREFIX, URI_2001_SCHEMA_XSD);
prefixmap.put(targetNamespacePrefix, targetNamespace);
xmlSchema.setPrefixToNamespaceMap(prefixmap);
}
-
return xmlSchema;
}
+
public TypeTable getTypeTable() {
return typeTable;
}
@@ -497,4 +413,70 @@
public String getSchemaTargetNameSpace() {
return schemaTargetNameSpace;
}
+
+ private void initializeSchemaMap(String targetNamespace, String targetNamespacePrefix)
+ {
+ XmlSchema xmlSchema = new XmlSchema(targetNamespace, xmlSchemaCollection);
+ targetNamespacePrefixMap.put(targetNamespace, targetNamespacePrefix);
+ schemaMap.put(targetNamespace, xmlSchema);
+
+ Hashtable prefixmap = new Hashtable();
+ prefixmap.put(DEFAULT_SCHEMA_NAMESPACE_PREFIX, URI_2001_SCHEMA_XSD);
+ prefixmap.put(targetNamespacePrefix, targetNamespace);
+ xmlSchema.setPrefixToNamespaceMap(prefixmap);
+ }
+
+ private void addImport(XmlSchema xmlSchema, QName schemaTypeName)
+ {
+ if (!xmlSchema.getPrefixToNamespaceMap().values().
+ contains(schemaTypeName.getNamespaceURI()))
+ {
+ XmlSchemaImport importElement = new XmlSchemaImport();
+ importElement.setNamespace(schemaTypeName.getNamespaceURI());
+ xmlSchema.getItems().add(importElement);
+ xmlSchema.getPrefixToNamespaceMap().
+ put(generatePrefix(), schemaTypeName.getNamespaceURI());
+ }
+ }
+
+ public String getAttrFormDefault() {
+ return attrFormDefault;
+ }
+
+ public void setAttrFormDefault(String attrFormDefault) {
+ this.attrFormDefault = attrFormDefault;
+ }
+
+ public String getElementFormDefault() {
+ return elementFormDefault;
+ }
+
+ public void setElementFormDefault(String elementFormDefault) {
+ this.elementFormDefault = elementFormDefault;
+ }
+
+ private XmlSchemaForm getAttrFormDefaultSetting()
+ {
+ if ( FORM_DEFAULT_UNQUALIFIED.equals(getAttrFormDefault()) )
+ {
+ return new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
+ }
+ else
+ {
+ return new XmlSchemaForm(XmlSchemaForm.QUALIFIED);
+ }
+ }
+
+ private XmlSchemaForm getElementFormDefaultSetting()
+ {
+ if ( FORM_DEFAULT_UNQUALIFIED.equals(getElementFormDefault()) )
+ {
+ return new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
+ }
+ else
+ {
+ return new XmlSchemaForm(XmlSchemaForm.QUALIFIED);
+ }
+ }
+
}
Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java?rev=418698&r1=418697&r2=418698&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/utils/Java2WSDLOptionsValidator.java Mon Jul 3 00:18:10 2006
@@ -36,6 +36,10 @@
Java2WSDLConstants.STYLE_OPTION.equalsIgnoreCase(optionType) ||
Java2WSDLConstants.USE_OPTION.equalsIgnoreCase(optionType) ||
Java2WSDLConstants.LOCATION_OPTION.equalsIgnoreCase(optionType) ||
+ Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION.equalsIgnoreCase(optionType) ||
+ Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION.equalsIgnoreCase(optionType) ||
+ Java2WSDLConstants.ATTR_FORM_DEFAULT_OPTION_LONG.equalsIgnoreCase(optionType) ||
+ Java2WSDLConstants.ELEMENT_FORM_DEFAULT_OPTION_LONG.equalsIgnoreCase(optionType) ||
Java2WSDLConstants.CLASSNAME_OPTION_LONG.equalsIgnoreCase(optionType) ||
Java2WSDLConstants.OUTPUT_FILENAME_OPTION_LONG.equalsIgnoreCase(optionType) ||
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org