tomj 02/02/28 06:56:05
Modified: java/src/org/apache/axis/wsdl/toJava SymbolTable.java
Log:
Change "dotNet" switch to wrapped.
Key off single part name of "parameters" not attributes.
Much goodness from interop!!!
Revision Changes Path
1.37 +19 -16 xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java
Index: SymbolTable.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- SymbolTable.java 27 Feb 2002 13:41:28 -0000 1.36
+++ SymbolTable.java 28 Feb 2002 14:56:05 -0000 1.37
@@ -140,7 +140,7 @@
private BaseTypeMapping btm = null;
// should we attempt to treat document/literal WSDL as "rpc-style"
- private boolean dotNet = true;
+ private boolean wrapped = false;
/**
* Construct a symbol table with the given Namespaces.
@@ -283,17 +283,17 @@
}
/**
- * Are we trying to treat document/literal in an "rpc-style" manner.
+ * Are we wrapping literal soap body elements.
*/
- public boolean isDotNet() {
- return dotNet;
+ public boolean isWrapped() {
+ return wrapped;
}
/**
- * Turn on/off .NET strategy for literal soap body's.
+ * Turn on/off element wrapping for literal soap body's.
*/
- public void setDotNet(boolean dotNet) {
- this.dotNet = dotNet;
+ public void setWrapped(boolean wrapped) {
+ this.wrapped = wrapped;
}
/**
@@ -570,8 +570,6 @@
te.setSimpleType(true);
}
else if (isXSD && localPart.equals("attribute")) {
- // we can no longer do .NET stuff and treat document as rpc style
- this.dotNet = false;
// Create symbol table entry for attribute type
QName refQName = Utils.getNodeTypeRefQName(node, "type");
if (refQName != null) {
@@ -1064,18 +1062,23 @@
Part part = (Part) i.next();
QName elementName = part.getElementName();
QName typeName = part.getTypeName();
+ String partName = part.getName();
+
+ // Hack alert - Try to sense "wrapped" document literal mode
+ if (literal && !i.hasNext() && partName.equals("parameters"))
+ wrapped = true;
- if (!literal || !dotNet) {
+ if (!literal || !wrapped) {
// not doing literal use, add this type or element name
if (typeName != null) {
v.add(getType(typeName));
- v.add(part.getName());
+ v.add(partName);
} else if (elementName != null) {
// Just an FYI: The WSDL spec says that for use=encoded
// that parts reference an abstract type using the type attr
// but we kinda do the right thing here, so let it go.
v.add(getElement(elementName));
- v.add(part.getName());
+ v.add(partName);
}
continue; // next part
}
@@ -1094,7 +1097,7 @@
// node = getTypeEntry(typeName, false).getNode();
throw new IOException(
JavaUtils.getMessage("literalTypePart00",
- new String[] {part.getName(),
+ new String[] {partName,
opName,
bindingName}));
}
@@ -1122,10 +1125,10 @@
// XXX - This should be a SOAPElement/SOAPBodyElement
if (typeName != null) {
v.add(getType(typeName));
- v.add(part.getName());
+ v.add(partName);
} else if (elementName != null) {
v.add(getElement(elementName));
- v.add(part.getName());
+ v.add(partName);
}
}
} // while
@@ -1333,7 +1336,7 @@
private void setTypeReferences(TypeEntry entry, Document doc,
boolean literal) {
- if (dotNet) {
+ if (wrapped) {
// If this type is ONLY referenced from a literal usage in a binding,
// then isOnlyLiteralReferenced should return true.
if (!entry.isReferenced() && literal) {