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 sc...@apache.org on 2002/01/31 16:20:27 UTC
cvs commit: xml-axis/java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java JavaStubWriter.java
scheu 02/01/31 07:20:27
Modified: java/src/org/apache/axis/wsdl/toJava JavaDeployWriter.java
JavaStubWriter.java
Log:
Arrays and Enums are now registered in the Stubs and deploy.wsdd emitted by WSDL2Java
Revision Changes Path
1.13 +13 -12 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
Index: JavaDeployWriter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- JavaDeployWriter.java 30 Jan 2002 03:34:10 -0000 1.12
+++ JavaDeployWriter.java 31 Jan 2002 15:20:26 -0000 1.13
@@ -149,22 +149,23 @@
TypeEntry type = (TypeEntry) types.elementAt(i);
if (type.getBaseType() == null && type.isReferenced()
&& !type.isOnlyLiteralReferenced()
- && !type.getName().endsWith("[]")) {
- // Generate a typeMapping clause that is compatible with JSR 109
- // This replaces the old beanMapping clause
- //pw.println(" <beanMapping");
- //pw.println(" xmlns:ns=\"" + type.getQName().getNamespaceURI() + "\"");
- //pw.println(" qname=\"ns:" + type.getQName().getLocalPart() + '"');
- //pw.println(" type=\"" +
- // Constants.NSPREFIX_WSDD_JAVA + ":" + type.getName() + '"');
- //pw.println(" />");
-
+ && !(type instanceof CollectionType)) {
pw.println(" <typeMapping");
pw.println(" xmlns:ns=\"" + type.getQName().getNamespaceURI() + "\"");
pw.println(" qname=\"ns:" + type.getQName().getLocalPart() + '"');
pw.println(" type=\"java:" + type.getName() + '"');
- pw.println(" serializer=\"org.apache.axis.encoding.ser.BeanSerializerFactory\"");
- pw.println(" deserializer=\"org.apache.axis.encoding.ser.BeanDeserializerFactory\"");
+ if (type.getName().endsWith("[]")) {
+ pw.println(" serializer=\"org.apache.axis.encoding.ser.ArraySerializerFactory\"");
+ pw.println(" deserializer=\"org.apache.axis.encoding.ser.ArrayDeserializerFactory\"");
+ } else if (type.getNode() != null &&
+ SchemaUtils.getEnumerationBaseAndValues(
+ type.getNode(), emitter.getSymbolTable()) != null) {
+ pw.println(" serializer=\"org.apache.axis.encoding.ser.EnumSerializerFactory\"");
+ pw.println(" deserializer=\"org.apache.axis.encoding.ser.EnumDeserializerFactory\"");
+ } else {
+ pw.println(" serializer=\"org.apache.axis.encoding.ser.BeanSerializerFactory\"");
+ pw.println(" deserializer=\"org.apache.axis.encoding.ser.BeanDeserializerFactory\"");
+ }
pw.println(" encodingStyle=\""+ Constants.URI_CURRENT_SOAP_ENC+"\"");
pw.println(" />");
}
1.24 +40 -14 xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
Index: JavaStubWriter.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- JavaStubWriter.java 28 Jan 2002 20:50:14 -0000 1.23
+++ JavaStubWriter.java 31 Jan 2002 15:20:26 -0000 1.24
@@ -129,6 +129,7 @@
pw.println(" private java.util.Vector cachedSerQNames = new java.util.Vector();");
pw.println(" private java.util.Vector cachedSerFactories = new java.util.Vector();");
pw.println(" private java.util.Vector cachedDeserFactories = new java.util.Vector();");
+ pw.println(" private boolean firstCall = true;");
}
pw.println();
@@ -180,15 +181,23 @@
pw.println(" call.setProperty(key, super.cachedProperties.get(key));");
pw.println(" }");
if (types.size() > 0) {
- pw.println(" for (int i = 0; i < cachedSerFactories.size(); ++i) {");
- pw.println(" Class cls = (Class) cachedSerClasses.get(i);");
- pw.println(" javax.xml.rpc.namespace.QName qname =");
- pw.println(" (javax.xml.rpc.namespace.QName) cachedSerQNames.get(i);");
- pw.println(" Class sf = (Class)");
- pw.println(" cachedSerFactories.get(i);");
- pw.println(" Class df = (Class)");
- pw.println(" cachedDeserFactories.get(i);");
- pw.println(" call.registerTypeMapping(cls, qname, sf, df, false);");
+ pw.println(" // All the type mapping information is registered");
+ pw.println(" // when the first call is made.");
+ pw.println(" // The type mapping information is actually registered in");
+ pw.println(" // the TypeMappingRegistry of the service, which");
+ pw.println(" // is the reason why registration is only needed for the first call.");
+ pw.println(" if (firstCall) {");
+ pw.println(" firstCall = false;");
+ pw.println(" for (int i = 0; i < cachedSerFactories.size(); ++i) {");
+ pw.println(" Class cls = (Class) cachedSerClasses.get(i);");
+ pw.println(" javax.xml.rpc.namespace.QName qName =");
+ pw.println(" (javax.xml.rpc.namespace.QName) cachedSerQNames.get(i);");
+ pw.println(" Class sf = (Class)");
+ pw.println(" cachedSerFactories.get(i);");
+ pw.println(" Class df = (Class)");
+ pw.println(" cachedDeserFactories.get(i);");
+ pw.println(" call.registerTypeMapping(cls, qName, sf, df, false);");
+ pw.println(" }");
pw.println(" }");
}
pw.println(" return call;");
@@ -365,14 +374,21 @@
private boolean firstSer = true ;
private void writeSerializationInit(TypeEntry type) throws IOException {
- if (type.getBaseType() != null || type.getName().endsWith("[]")) {
+ // Don't need to register base types or
+ // our special collection types for indexed properties
+ if (type.getBaseType() != null ||
+ type instanceof CollectionType) {
return;
}
if ( firstSer ) {
pw.println(" Class cls;" );
pw.println(" javax.xml.rpc.namespace.QName qName;" );
- pw.println(" Class sf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;");
- pw.println(" Class df = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;");
+ pw.println(" Class beansf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;");
+ pw.println(" Class beandf = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;");
+ pw.println(" Class enumsf = org.apache.axis.encoding.ser.EnumSerializerFactory.class;");
+ pw.println(" Class enumdf = org.apache.axis.encoding.ser.EnumDeserializerFactory.class;");
+ pw.println(" Class arraysf = org.apache.axis.encoding.ser.ArraySerializerFactory.class;");
+ pw.println(" Class arraydf = org.apache.axis.encoding.ser.ArrayDeserializerFactory.class;");
}
firstSer = false ;
@@ -383,8 +399,18 @@
pw.println(" cachedSerQNames.add(qName);");
pw.println(" cls = " + type.getName() + ".class;");
pw.println(" cachedSerClasses.add(cls);");
- pw.println(" cachedSerFactories.add(sf);");
- pw.println(" cachedDeserFactories.add(df);");
+ if (type.getName().endsWith("[]")) {
+ pw.println(" cachedSerFactories.add(arraysf);");
+ pw.println(" cachedDeserFactories.add(arraydf);");
+ } else if (type.getNode() != null &&
+ SchemaUtils.getEnumerationBaseAndValues(
+ type.getNode(), emitter.getSymbolTable()) != null) {
+ pw.println(" cachedSerFactories.add(enumsf);");
+ pw.println(" cachedDeserFactories.add(enumdf);");
+ } else {
+ pw.println(" cachedSerFactories.add(beansf);");
+ pw.println(" cachedDeserFactories.add(beandf);");
+ }
pw.println();
} // writeSerializationInit