scheu 02/05/30 08:47:13
Modified: java TODO.txt
java/src/org/apache/axis/encoding
SerializationContextImpl.java
java/test/wsdl Wsdl2javaTestSuite.xml
java/test/wsdl/roundtrip RoundtripTestServiceTestCase.java
Log:
The following changes are made:
1) Support for abstract parameters. (Cool)
If an operation has an abstract parameter, the
actual concrete derived argument must be serialized using
its own xmlType and javaType. This is necessary so that the
object can be deserialized on the server-side (can't deserialize
an abstract javaType).
Changes were made to SerializationContextImpl to make this work.
Uncommented code in the roundtrip testcase that invokes the
getId(Investment) operation with a StockInvestment argument.
Investment is abstract and StockInvestment is a derived concrete
class. So this tests the new feature.
2) The above getId(..) method is overloaded, and due to a problem
in the skeleton, the roundtrip test is temporarily changed
to do non-skeleton deploy. I am working on the skeleton fix.
3) Changes to the TODO list.
Revision Changes Path
1.51 +17 -6 xml-axis/java/TODO.txt
Index: TODO.txt
===================================================================
RCS file: /home/cvs/xml-axis/java/TODO.txt,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- TODO.txt 22 May 2002 17:38:39 -0000 1.50
+++ TODO.txt 30 May 2002 15:47:12 -0000 1.51
@@ -8,6 +8,10 @@
* <Glen> Write TO DO list
+BETA 3 MUST DO LIST
+-------------------
+
+
BETA 2 MUST DO LIST
-------------------
* <Glen> Clean up User's Guide
@@ -29,7 +33,9 @@
SCHEMA SUPPORT
--------------
-! <> Support qualified/unqualified flags for elements + attributes
+X <Glen> Support qualified/unqualified flags for elements
+ (this also relates to WSDL2Java and type metadata)
+! <> Support qualified/unqualified flags for attributes
(this also relates to WSDL2Java and type metadata)
@@ -79,16 +85,17 @@
* <> (ongoing) JAX-RPC compliance. In particular:
! <> Mapping of XML names. We do some, not all, of what JAX-RPC specifies.
! <> Faults - What do we handle now? What needs to be enhanced? JAX-RPC needs
improving, first, we think.
-! <> Derived type support.
+X <Rich> Faults - Support v1.0 mapping
+X <Rich> Derived type support. Including extending abstract complexTypes and
extending simpleTypes.
! <> Object[] doesn't work. If we have method(Object[] array) and we pass in an
Object[], we get NullPointerExceptions. If, however, we pass in a String[] or a
Phone[] then it works. Object[] becomes xsd:anyType[]. Since anyType doesn't work, I
don't expect anyType[] to work.
! <> do we want xsd:anyType to work?
-! <> with the --all flag, ALL types should be registered in the Stub.
+X <Russell> with the --all flag, ALL types should be registered in the Stub.
* <Russell> (ongoing) Need to pull everything writer-specific out of the
framework(Emitter/SymbolTable/etc). Signatures are still in there. So are Wsdl2java
options that only the writers care about.
! <> Attachment support.
-! <> Name clash resolution has to grow up.
+X <Rich/Russell> Name clash resolution has to grow up.
! <> Automatically creating a package name from a namespace is very limited at the
moment.
@@ -105,7 +112,7 @@
interface will look like.
- We do not emit SOAPElement arguments per JAX-RPC yet.
-! <Russell/Rich> If a reference to a type is encountered before the definition, a
RefdType is created and added to the symbol table. Once the type is defined, this
RefdType is replaced by a real type. Other objects may have referred to the RefdType.
Their references also need to be replaced. This doesn't affect any of our existing
tests.
+X <Rich> If a reference to a type is encountered before the definition, a RefdType
is created and added to the symbol table. Once the type is defined, this RefdType is
replaced by a real type. Other objects may have referred to the RefdType. Their
references also need to be replaced. This doesn't affect any of our existing tests.
(We do have tests for this.)
* <Russell/Tom> Grow Filegen test. We now generate code only if it's needed, but
this feature isn't well tested yet.
@@ -113,6 +120,8 @@
* <Rich/Tom?> Need to handle collections of objects (max occurs > 1). Rich did the
work for encoding. Does something still need to be done for literal?
+X <Rich> Support for anonymous complexTypes and simpleTypes for elements and
attributes.
+
Java2WSDL
---------
! <Russell?/Rich?> Java2WSDL "void op(boolean b1, Boolean b2)" maps to
@@ -133,6 +142,8 @@
! <> Support wildcards in stop object classes (i.e. "javax.*")
+X <Rich> Generate correct input/output elements for overloading.
+
METHOD DISPATCH / SERVICE METADATA
----------------------------------
@@ -152,7 +163,7 @@
for that type:
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
We must also check for this import statement in WSDL2Java.
-
+! <Rich> Serialize/Deserialize fault contents
FUTURE ENHANCEMENTS (not necessary for current release)
-------------------------------------------------------
1.29 +18 -1
xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java
Index: SerializationContextImpl.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContextImpl.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- SerializationContextImpl.java 30 May 2002 03:06:08 -0000 1.28
+++ SerializationContextImpl.java 30 May 2002 15:47:12 -0000 1.29
@@ -86,6 +86,7 @@
import javax.xml.rpc.JAXRPCException;
import java.io.IOException;
import java.io.Writer;
+import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -1005,7 +1006,23 @@
}
SerializerInfo info = null;
- if (xmlType != null) {
+// If the javaType is abstract, try getting a
+ // serializer that matches the value's class.
+ if (javaType != null &&
+ !javaType.isPrimitive() &&
+ !javaType.isArray() &&
+ !isPrimitive(value, javaType) &&
+ Modifier.isAbstract(javaType.getModifiers())) {
+ info = getSerializer(value.getClass(), value);
+ if (info != null) {
+ // Successfully found a serializer for the derived object.
+ // Must serializer the type.
+ sendType = true;
+ xmlType = null;
+ }
+ }
+ // Try getting a serializer for the prefered xmlType
+ if (info == null && xmlType != null) {
info = getSerializer(javaType, xmlType);
}
1.100 +9 -0 xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml
Index: Wsdl2javaTestSuite.xml
===================================================================
RCS file: /home/cvs/xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -r1.99 -r1.100
--- Wsdl2javaTestSuite.xml 21 May 2002 17:15:50 -0000 1.99
+++ Wsdl2javaTestSuite.xml 30 May 2002 15:47:13 -0000 1.100
@@ -139,11 +139,20 @@
<!-- Delete the intermediate files so we recreate over a clean slate -->
<delete dir="${build.dir}/classes/test/wsdl/roundtrip"/>
<!-- Recreate Java files from the new WSDL -->
+ <!-- Temporarily changed to remove skeletonDeploy...Scheu
<wsdl2java url="build/work/test/wsdl/roundtrip/Roundtrip.wsdl"
output="build/work"
deployscope="session"
serverSide="yes"
skeletonDeploy="yes"
+ noimports="no"
+ verbose="no"
+ testcase="no">
+ -->
+ <wsdl2java url="build/work/test/wsdl/roundtrip/Roundtrip.wsdl"
+ output="build/work"
+ deployscope="session"
+ serverSide="yes"
noimports="no"
verbose="no"
testcase="no">
1.11 +0 -2
xml-axis/java/test/wsdl/roundtrip/RoundtripTestServiceTestCase.java
Index: RoundtripTestServiceTestCase.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/test/wsdl/roundtrip/RoundtripTestServiceTestCase.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- RoundtripTestServiceTestCase.java 28 May 2002 23:08:16 -0000 1.10
+++ RoundtripTestServiceTestCase.java 30 May 2002 15:47:13 -0000 1.11
@@ -583,7 +583,6 @@
/**
* Test the overloaded method getId with a StockInvestment.
*/
- /* Disabled due to RPCProvider bug
public void testInvestmentGetId() {
try {
@@ -601,7 +600,6 @@
}
} // testInvestmentGetId
- */
/**
* Test to insure that a multiple array sent by a remote method can be