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 di...@apache.org on 2004/09/14 15:07:26 UTC
cvs commit: ws-axis/java/src/org/apache/axis/wsdl/toJava JavaBeanFaultWriter.java JavaBeanHelperWriter.java JavaBeanWriter.java JavaTypeWriter.java
dims 2004/09/14 06:07:26
Modified: java/src/org/apache/axis/wsdl/toJava
JavaBeanFaultWriter.java JavaBeanHelperWriter.java
JavaBeanWriter.java JavaTypeWriter.java
Log:
Fix for AXIS-1554 - Summary: attempting to use incompatible return type - method getCause()
from Iltchenko, Andrei <an...@nl.compuware.com>
Revision Changes Path
1.9 +35 -0 ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanFaultWriter.java
Index: JavaBeanFaultWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanFaultWriter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- JavaBeanFaultWriter.java 22 Apr 2004 16:48:14 -0000 1.8
+++ JavaBeanFaultWriter.java 14 Sep 2004 13:07:26 -0000 1.9
@@ -20,6 +20,9 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;
+import java.util.Set;
+import java.util.Collections;
+import java.util.HashSet;
/**
* This is Wsdl2java's Complex Fault Writer.
@@ -27,6 +30,38 @@
* in an operation fault message.
*/
public class JavaBeanFaultWriter extends JavaBeanWriter {
+ /**
+ * All server specific exception classes have {@link Throwable} as an
+ * indirect superclass. <code>Throwable</code> defines a set of properties
+ * that may potentially conflict with those that would be generated by
+ * this class for an XSD complex type used as a fault. The following
+ * immutable object contains all property names that must be excluded
+ * when generating a service specific exception. <i>Note:</t>
+ * {@link org.apache.axis.encoding.ser.BeanSerializer} always excludes
+ * <code>Throwable</code>'s and <code>AxisFault</code>'s properties
+ * when marshalling a service Java exception.
+ */
+ public static final Set RESERVED_PROPERTY_NAMES;
+ static {
+ Set temp = new HashSet();
+ // Throwable's properties.
+ temp.add("cause");
+ temp.add("message");
+ temp.add("localizedMessage");
+ temp.add("tackTrace");
+ // AxisFault's properties.
+ temp.add("faultActor");
+ temp.add("faultCode");
+ temp.add("faultDetails");
+ temp.add("faultNode");
+ temp.add("faultReason");
+ temp.add("faultRole");
+ temp.add("faultString");
+ temp.add("faultSubCodes");
+ temp.add("headers");
+ RESERVED_PROPERTY_NAMES = Collections.unmodifiableSet(temp);
+ }
+
/**
* Constructor.
1.47 +17 -9 ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java
Index: JavaBeanHelperWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- JavaBeanHelperWriter.java 22 Aug 2004 03:07:00 -0000 1.46
+++ JavaBeanHelperWriter.java 14 Sep 2004 13:07:26 -0000 1.47
@@ -17,6 +17,7 @@
import org.apache.axis.utils.Messages;
import org.apache.axis.wsdl.symbolTable.ContainedAttribute;
+import org.apache.axis.utils.JavaUtils;
import org.apache.axis.wsdl.symbolTable.DefinedType;
import org.apache.axis.wsdl.symbolTable.ElementDecl;
import org.apache.axis.wsdl.symbolTable.SchemaUtils;
@@ -26,6 +27,7 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;
+import java.util.Set;
/**
* This is Wsdl2java's Helper Type Writer. It writes the <typeName>.java file.
@@ -53,6 +55,9 @@
/** Field canSearchParents */
protected boolean canSearchParents;
+ /** Field reservedPropNames */
+ protected Set reservedPropNames;
+
/**
* Constructor.
*
@@ -64,7 +69,7 @@
*/
protected JavaBeanHelperWriter(Emitter emitter, TypeEntry type,
Vector elements, TypeEntry extendType,
- Vector attributes) {
+ Vector attributes, Set reservedPropNames) {
super(emitter, type.getName() + "_Helper", "helper");
@@ -72,6 +77,7 @@
this.elements = elements;
this.attributes = attributes;
this.extendType = extendType;
+ this.reservedPropNames = reservedPropNames;
// is this a complex type that is derived from other types
// by restriction? if so, set the policy of the generated
@@ -271,11 +277,10 @@
if (attributes != null) {
boolean wroteAttrDecl = false;
- for (int i = 0; i < attributes.size(); i += 1) {
+ for (int i = 0; i < attributes.size(); i++) {
ContainedAttribute attr = (ContainedAttribute) attributes.get(i);
TypeEntry te = attr.getType();
QName attrName = attr.getQName();
-
String fieldName = getAsFieldName(attr.getName());
QName attrXmlType = te.getQName();
@@ -315,8 +320,7 @@
continue;
}
- String fieldName = getAsFieldName(elem.getName()); // jongjin.
-
+ String fieldName = getAsFieldName(elem.getName());
QName xmlName = elem.getQName();
// Some special handling for arrays.
@@ -390,8 +394,11 @@
* getter/setter methods "getFOO()/setFOO()". So when the Introspector
* looks at that bean, the property name will be "FOO", not "fOO" due
* to the rules in the JavaBeans spec. So this makes sure the
- * metadata will match.
- *
+ * metadata will match. <p>
+ *
+ * The method also makes sure that the returned property name is not in
+ * the set of reserved properties as defined by {@link #reservedPropNames}.
+ *
* @param fieldName
* @return
*/
@@ -402,10 +409,11 @@
// (because setURL() maps to a property named "URL", not "uRL")
if ((fieldName.length() > 1)
&& Character.isUpperCase(fieldName.charAt(1))) {
- return Utils.capitalizeFirstChar(fieldName);
+ fieldName = Utils.capitalizeFirstChar(fieldName);
}
- return fieldName;
+ // Make sure the property name is not reserved.
+ return JavaUtils.getUniqueValue(reservedPropNames, fieldName);
}
/**
1.71 +12 -5 ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java
Index: JavaBeanWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- JavaBeanWriter.java 2 Sep 2004 12:15:59 -0000 1.70
+++ JavaBeanWriter.java 14 Sep 2004 13:07:26 -0000 1.71
@@ -274,6 +274,9 @@
}
}
+ // Make sure the property name is not reserved.
+ variableName = JavaUtils.getUniqueValue(
+ helper.reservedPropNames, variableName);
names.add(typeName);
names.add(variableName);
@@ -304,7 +307,7 @@
// Add attribute names
if (attributes != null) {
- for (int i = 0; i < attributes.size(); i += 1) {
+ for (int i = 0; i < attributes.size(); i++) {
ContainedAttribute attr = (ContainedAttribute) attributes.get(i);
String typeName = attr.getType().getName();
String variableName = attr.getName();
@@ -315,6 +318,10 @@
typeName = Utils.getWrapperType(typeName);
}
+ // Make sure the property name is not reserved.
+ variableName = JavaUtils.getUniqueValue(
+ helper.reservedPropNames, variableName);
+
names.add(typeName);
names.add(variableName);
@@ -621,8 +628,8 @@
for (int j = 0; j < attributes.size(); j += 1) {
ContainedAttribute attr = (ContainedAttribute) attributes.get(j);
paramTypes.add(attr.getType().getName());
- paramNames.add(attr.getName());
-
+ paramNames.add(JavaUtils.getUniqueValue(
+ helper.reservedPropNames, attr.getName()));
}
}
@@ -632,9 +639,9 @@
if (elements != null) {
for (int j = 0; j < elements.size(); j++) {
ElementDecl elem = (ElementDecl) elements.get(j);
-
paramTypes.add(elem.getType().getName());
- paramNames.add(elem.getName());
+ paramNames.add(JavaUtils.getUniqueValue(
+ helper.reservedPropNames, elem.getName()));
}
}
}
1.22 +14 -12 ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java
Index: JavaTypeWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- JavaTypeWriter.java 22 Aug 2004 03:07:01 -0000 1.21
+++ JavaTypeWriter.java 14 Sep 2004 13:07:26 -0000 1.22
@@ -26,6 +26,7 @@
import javax.xml.namespace.QName;
import java.io.IOException;
import java.util.Vector;
+import java.util.Collections;
/**
* This is Wsdl2java's Type Writer. It writes the following files, as appropriate:
@@ -149,18 +150,13 @@
*
* @param emitter
* @param type
- * @param elements
* @param base
- * @param attributes
* @return
*/
protected JavaWriter getBeanWriter(Emitter emitter, TypeEntry type, TypeEntry base) { // CONTAINED_ELEM_AND_ATTR
Vector elements = type.getContainedElements();
Vector attributes = type.getContainedAttributes();
- JavaWriter helperWriter = getBeanHelperWriter(emitter, type, elements,
- base, attributes);
-
// If this complexType is referenced in a
// fault context, emit a bean-like exception
// class
@@ -168,12 +164,16 @@
JavaGeneratorFactory.COMPLEX_TYPE_FAULT);
if ((isComplexFault != null) && isComplexFault.booleanValue()) {
+
return new JavaBeanFaultWriter(emitter, type, elements, base,
- attributes, helperWriter);
+ attributes,
+ getBeanHelperWriter(emitter, type, elements, base,
+ attributes, true));
}
return new JavaBeanWriter(emitter, type, elements, base, attributes,
- helperWriter);
+ getBeanHelperWriter(emitter, type, elements, base,
+ attributes, false));
}
/**
@@ -186,11 +186,13 @@
* @param attributes
* @return
*/
- protected JavaWriter getBeanHelperWriter(Emitter emitter, TypeEntry type,
- Vector elements, TypeEntry base,
- Vector attributes) {
- return new JavaBeanHelperWriter(emitter, type, elements, base,
- attributes);
+ protected JavaWriter getBeanHelperWriter(
+ Emitter emitter, TypeEntry type, Vector elements, TypeEntry base,
+ Vector attributes, boolean forException) {
+ return new JavaBeanHelperWriter(
+ emitter, type, elements, base, attributes,
+ forException ? JavaBeanFaultWriter.RESERVED_PROPERTY_NAMES
+ : Collections.EMPTY_SET);
}
/**