You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by gd...@apache.org on 2002/08/01 21:08:31 UTC
cvs commit: xml-axis/java/src/org/apache/axis/wsdl Java2WSDL.java
gdaniels 2002/08/01 12:08:31
Modified: java/src/org/apache/axis/wsdl/fromJava Types.java
java/src/org/apache/axis/wsdl Java2WSDL.java
Log:
"simple" typeness is now determined by the namespace of the type
QName, instead of looking up a list of Java classes. This allows
different class mappings to work correctly without generating
extraneous (not to mention erroneous) schema definitions.
We could switch this to look in a list of known valid QNames (based
off SOAPConstants/SchemaVersion), but this seems to work fine for
now.
Revision Changes Path
1.52 +39 -59 xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java
Index: Types.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Types.java,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- Types.java 29 Jul 2002 19:20:50 -0000 1.51
+++ Types.java 1 Aug 2002 19:08:30 -0000 1.52
@@ -57,9 +57,7 @@
package org.apache.axis.wsdl.fromJava;
import org.apache.axis.AxisFault;
-import org.apache.axis.AxisProperties;
import org.apache.axis.Constants;
-import org.apache.axis.encoding.DefaultTypeMappingImpl;
import org.apache.axis.encoding.Serializer;
import org.apache.axis.encoding.SerializerFactory;
import org.apache.axis.encoding.SimpleType;
@@ -168,9 +166,7 @@
Node node = elements.item(i);
if (node.getLocalName() != null &&
node.getLocalName().equals("types")) {
- Document emptyDoc = XMLUtils.newDocument(inputWSDL);
wsdlTypesElem = (Element) node;
-
}
}
}
@@ -248,11 +244,21 @@
type = JavaUtils.getHolderValueType(type);
}
+ if (qname == null) {
+ qname = getTypeQName(type);
+ if (qname == null) {
+ throw new AxisFault("Type was " + type.getName()); // FIXME!
+ }
+ }
+
/**
* No need to do anything if this is a simple type (i.e. in the
* xsd or soap-enc schemas already)
*/
- if (isSimpleType(type)) {
+ String nsURI = qname.getNamespaceURI();
+ if (Constants.isSchemaXSD(nsURI) ||
+ (Constants.isSOAP_ENC(nsURI) &&
+ !"Array".equals(qname.getLocalPart()))) {
return qname;
}
@@ -463,12 +469,23 @@
* Then return the qualified string representation of the generated type
*
* @param type Class for which to generate schema
- * @param qname of the type to write
* @return a prefixed string for the schema type
*/
public String writeType(Class type) throws AxisFault {
return writeType(type, null);
}
+
+ /**
+ * Write a schema representation for the given <code>Class</code>. Recurse
+ * through all the public fields as well as fields represented by java
+ * bean compliant accessor methods.
+ *
+ * Then return the qualified string representation of the generated type
+ *
+ * @param type Class for which to generate schema
+ * @param qName of the type to write
+ * @return a prefixed string for the schema type
+ */
public String writeType(Class type, QName qName) throws AxisFault {
// Get a corresponding QName if one is not provided
if (qName == null ||
@@ -477,14 +494,13 @@
}
// Quick return if schema type
- if (isSimpleType(type)) {
- if (Constants.isSchemaXSD(qName.getNamespaceURI())) {
- return Constants.NS_PREFIX_SCHEMA_XSD + ":" +
+ if (Constants.isSchemaXSD(qName.getNamespaceURI())) {
+ return Constants.NS_PREFIX_SCHEMA_XSD + ":" +
qName.getLocalPart();
- } else {
- return Constants.NS_PREFIX_SOAP_ENC + ":" +
+ } else if (Constants.isSOAP_ENC(qName.getNamespaceURI()) &&
+ !"Array".equals(qName.getLocalPart())) {
+ return Constants.NS_PREFIX_SOAP_ENC + ":" +
qName.getLocalPart();
- }
}
// look up the serializer in the TypeMappingRegistry
@@ -727,57 +743,21 @@
}
/**
- * Is the given class one of the simple types defined by Schema
- * (per JSR 101 v.0.6)
- * @param type input Class
- * @return true if the type is a simple schema type
- */
- public boolean isSimpleSchemaType(Class type) {
- return (type == java.lang.String.class ||
- type == java.lang.Boolean.TYPE ||
- type == java.lang.Byte.TYPE ||
- type == java.lang.Double.TYPE ||
- type == java.lang.Float.TYPE ||
- type == java.lang.Integer.TYPE ||
- type == java.lang.Long.TYPE ||
- type == java.lang.Short.TYPE ||
- type == java.math.BigInteger.class ||
- type == java.math.BigDecimal.class ||
- type == QName.class ||
- type == java.util.Calendar.class ||
- type == org.apache.axis.encoding.Token.class ||
- type == org.apache.axis.encoding.NormalizedString.class ||
- //type == Byte[].class ||
- type == byte[].class);
- }
-
- /**
- * Is the given class one of the simple types defined by SoapEncoding.
- * (per JSR 101 v.0.6)
- * @param type input Class
- * @return true if the type is a simple soap encoding type
- */
- boolean isSimpleSoapEncodingType(Class type) {
- return (type == java.lang.String.class ||
- type == java.lang.Boolean.class ||
- type == java.lang.Byte.class ||
- type == java.lang.Double.class ||
- type == java.lang.Float.class ||
- type == java.lang.Integer.class ||
- type == java.lang.Long.class ||
- type == java.lang.Short.class ||
- type == java.math.BigDecimal.class ||
- type == byte[].class);
- }
-
- /**
- * Is the given class one of the simple types
+ * Is the given class one of the simple types? In other words,
+ * do we have a mapping for this type which is in the xsd or
+ * soap-enc namespaces?
+ *
* @param type input Class
* @return true if the type is a simple type
*/
boolean isSimpleType(Class type) {
- return (isSimpleSchemaType(type) ||
- isSimpleSoapEncodingType(type));
+ QName qname = tm.getTypeQName(type);
+ if (qname == null)
+ return false; // No mapping
+
+ String nsURI = qname.getNamespaceURI();
+ return (Constants.isSchemaXSD(nsURI) ||
+ Constants.isSOAP_ENC(nsURI));
}
/**
1.22 +4 -4 xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java
Index: Java2WSDL.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/Java2WSDL.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- Java2WSDL.java 16 Jul 2002 18:32:46 -0000 1.21
+++ Java2WSDL.java 1 Aug 2002 19:08:31 -0000 1.22
@@ -228,7 +228,7 @@
* addOptions
* Add option descriptions to the tool. Allows
* extended classes to add additional options.
- * @param CLOptionDescriptor[] the options
+ * @param newOptions CLOptionDescriptor[] the options
*/
protected void addOptions(CLOptionDescriptor[] newOptions) {
if (newOptions != null && newOptions.length > 0) {
@@ -242,7 +242,7 @@
/**
* Parse an option
- * @param CLOption is the option
+ * @param option CLOption is the option
*/
protected void parseOption(CLOption option) {
String value;
@@ -417,7 +417,7 @@
/**
* run
* checks the command-line arguments and runs the tool.
- * @param String[] command-line arguments.
+ * @param args String[] command-line arguments.
*/
protected void run(String[] args) {
// Parse the arguments
@@ -488,7 +488,7 @@
/**
* Main
* Run the Java2WSDL emitter with the specified command-line arguments
- * @param String[] command-line arguments
+ * @param args String[] command-line arguments
*/
public static void main(String args[]) {
Java2WSDL java2wsdl = new Java2WSDL();