tomj 02/04/15 12:37:23
Modified: java/src/org/apache/axis/message RPCHandler.java
java/src/org/apache/axis/handlers JWSProcessor.java
Log:
Fix problems with JWS type mapping (and the lack thereof).
- The JWS service did not call setEngine(), which associates the engine with
the service, and additionally give the service its global type mappings
- In RPCHandler, add a bit of code which checks to see if we know the
element type of an array before we go an use the xsi:type. This allows
the correct processing of e.g. Integer[] arrays which have elements of type
int.
Revision Changes Path
1.34 +7 -3 xml-axis/java/src/org/apache/axis/message/RPCHandler.java
Index: RPCHandler.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- RPCHandler.java 15 Apr 2002 02:35:57 -0000 1.33
+++ RPCHandler.java 15 Apr 2002 19:37:22 -0000 1.34
@@ -152,9 +152,13 @@
ref.getName(),
ref.getAttributes());
} else {
- type = context.getTypeFromAttributes(namespace,
- localName,
- attributes);
+ // Get the element type if we have it, otherwise check xsi:type
+ type = curEl.getType();
+ if (type == null) {
+ type = context.getTypeFromAttributes(namespace,
+ localName,
+ attributes);
+ }
}
if (log.isDebugEnabled()) {
1.44 +3 -0 xml-axis/java/src/org/apache/axis/handlers/JWSProcessor.java
Index: JWSProcessor.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/JWSProcessor.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- JWSProcessor.java 11 Apr 2002 16:07:35 -0000 1.43
+++ JWSProcessor.java 15 Apr 2002 19:37:23 -0000 1.44
@@ -278,6 +278,9 @@
sd.setImplClass(cl.loadClass(clsName));
sd.setTypeMapping(msgContext.getTypeMapping());
+ // Set engine, which hooks up type mappings.
+ rpc.setEngine(msgContext.getAxisEngine());
+
rpc.init(); // ??
if (doWsdl)
rpc.generateWSDL(msgContext);