scheu 2002/06/21 14:40:04
Modified: java/src/org/apache/axis/encoding/ser BeanSerializer.java
java/src/org/apache/axis/utils axisNLS.properties
Log:
Fix for Bugzilla defect http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9875
When writing schema for a class, ignore the properties of the super class.
Failure to do this causes elements to be repeated in the base and derived
complexTypes in the wsdl.
Also made some minor translation edits to the message file.
Revision Changes Path
1.37 +23 -1
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.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- BeanSerializer.java 20 Jun 2002 20:35:46 -0000 1.36
+++ BeanSerializer.java 21 Jun 2002 21:40:03 -0000 1.37
@@ -252,6 +252,7 @@
// See if there is a super class, stop if we hit a stop class
Element e = null;
Class superClass = javaType.getSuperclass();
+ BeanPropertyDescriptor[] superPd = null;
List stopClasses = types.getStopClasses();
if (superClass != null &&
superClass != java.lang.Object.class &&
@@ -267,6 +268,10 @@
complexContent.appendChild(extension);
extension.setAttribute("base", base);
e = extension;
+ // Get the property descriptors for the super class
+ superPd =
+ BeanUtils.getPd(superClass,
+ TypeDesc.getTypeDescForClass(superClass));
} else {
e = complexType;
}
@@ -287,8 +292,25 @@
// Serialize each property
for (int i=0; i<propertyDescriptor.length; i++) {
String propName = propertyDescriptor[i].getName();
- if (propName.equals("class"))
+
+ // Don't serializer properties named class
+ boolean writeProperty = true;
+ if (propName.equals("class")) {
+ writeProperty = false;
+ }
+
+ // Don't serialize the property if it is present
+ // in the super class property list
+ if (superPd != null && writeProperty) {
+ for (int j=0; j<superPd.length && writeProperty; j++) {
+ if (propName.equals(superPd[j].getName())) {
+ writeProperty = false;
+ }
+ }
+ }
+ if (!writeProperty) {
continue;
+ }
// If we have type metadata, check to see what we're doing
// with this field. If it's an attribute, skip it. If it's
1.12 +5 -0 xml-axis/java/src/org/apache/axis/utils/axisNLS.properties
Index: axisNLS.properties
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/axisNLS.properties,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- axisNLS.properties 20 Jun 2002 21:17:38 -0000 1.11
+++ axisNLS.properties 21 Jun 2002 21:40:03 -0000 1.12
@@ -504,6 +504,8 @@
popHandler00=Popping handler {0}
process00=Processing ''{0}''
processFile00=Processing file {0}
+
+# NOTE: in pushHandler00, we are pushing a handler onto a stack
pushHandler00=Pushing handler {0}
quit00={0} quitting.
quitRequest00=Administration service requested to quit, quitting.
@@ -788,7 +790,10 @@
length=Length: {0}
writeBeyond=Write beyond buffer
reading=reading {0} bytes from disk
+
+# NOTE: do not translate openBread
openBread=open bread = {0}
+
flushing=flushing
read=read {0} bytes
readError=Error reading data stream: {0}