scheu 02/03/20 13:43:52
Modified: java/src/org/apache/axis/encoding/ser BeanSerializer.java
java/src/org/apache/axis/wsdl/toJava JavaBeanWriter.java
java/test/wsdl/roundtrip Investment.java
Log:
Added support for the abstract attribute (optional requirement of JSR 101).
1) An abstract=true on a complexType causes the generation of an abstract class.
2) An abstract class causes an abstract=true on the complexType.
3) Changed the roundtrip test slightly to test this behavior.
Revision Changes Path
1.22 +6 -0
xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java
Index: BeanSerializer.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- BeanSerializer.java 17 Mar 2002 16:25:08 -0000 1.21
+++ BeanSerializer.java 20 Mar 2002 21:43:51 -0000 1.22
@@ -86,6 +86,7 @@
import java.io.Serializable;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Modifier;
import java.beans.IntrospectionException;
import org.w3c.dom.Element;
@@ -330,6 +331,11 @@
// Build a ClassRep that represents the bean class. This
// allows users to provide their own field mapping.
ClassRep clsRep = types.getBeanBuilder().build(javaType);
+
+ // Map abstract classes to abstract attribute on complexType
+ if (Modifier.isAbstract(clsRep.getModifiers())) {
+ complexType.setAttribute("abstract", "true");
+ }
// Write out fields
Vector fields = clsRep.getFields();
1.2 +11 -1
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java
Index: JavaBeanWriter.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JavaBeanWriter.java 19 Mar 2002 23:38:31 -0000 1.1
+++ JavaBeanWriter.java 20 Mar 2002 21:43:52 -0000 1.2
@@ -141,7 +141,17 @@
if (type.isSimpleType())
implementsText = ", org.apache.axis.encoding.SimpleType";
- pw.println("public class " + className + extendsText +
+ // Support abstract attribute by mapping to an abstract class
+ String abstractText = "";
+ if (node != null) {
+ String abstractValue = Utils.getAttribute(node, "abstract");
+ if (abstractValue != null &&
+ abstractValue.equalsIgnoreCase("true")) {
+ abstractText = "abstract ";
+ }
+ }
+
+ pw.println("public " + abstractText + "class " + className + extendsText +
" implements java.io.Serializable" + implementsText + " {");
for (int i = 0; i < names.size(); i += 2) {
1.2 +1 -1 xml-axis/java/test/wsdl/roundtrip/Investment.java
Index: Investment.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/wsdl/roundtrip/Investment.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Investment.java 12 Feb 2002 22:10:19 -0000 1.1
+++ Investment.java 20 Mar 2002 21:43:52 -0000 1.2
@@ -65,7 +65,7 @@
* @version 1.00 06 Feb 2002
* @author Brent Ulbricht
*/
-public class Investment implements java.io.Serializable {
+public abstract class Investment implements java.io.Serializable {
public String name;
private int id;