You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by gd...@apache.org on 2002/10/03 16:46:16 UTC
cvs commit: xml-axis/java/test/wsdl/interop4/groupH/simpleRPCenc build.xml
gdaniels 2002/10/03 07:46:16
Modified: java/src/org/apache/axis/message Tag: interop4
SOAPFaultDetailsBuilder.java SOAPFaultBuilder.java
java/src/org/apache/axis/encoding/ser Tag: interop4
SimpleDeserializer.java
java/src/org/apache/axis/encoding Tag: interop4
DeserializerImpl.java
java/test/wsdl/interop4/groupH/simpleRPCenc Tag: interop4
build.xml
Log:
More work on fault tests. Make sure multi-ref deserialization of fault
data works.
Revision Changes Path
No revision
No revision
1.1.2.3 +2 -13 xml-axis/java/src/org/apache/axis/message/Attic/SOAPFaultDetailsBuilder.java
Index: SOAPFaultDetailsBuilder.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/Attic/SOAPFaultDetailsBuilder.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- SOAPFaultDetailsBuilder.java 2 Oct 2002 15:14:56 -0000 1.1.2.2
+++ SOAPFaultDetailsBuilder.java 3 Oct 2002 14:46:15 -0000 1.1.2.3
@@ -54,7 +54,6 @@
*/
package org.apache.axis.message;
-import org.apache.axis.AxisFault;
import org.apache.axis.Constants;
import org.apache.axis.MessageContext;
import org.apache.axis.client.Service;
@@ -66,17 +65,10 @@
import org.apache.axis.utils.ClassUtils;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
-import org.w3c.dom.Element;
-import org.w3c.dom.Text;
import javax.xml.namespace.QName;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.lang.reflect.Constructor;
-
-/**
+/**
* Handle deserializing fault details.
*
* @author Glen Daniels (gdaniels@macromedia.com)
@@ -90,7 +82,6 @@
this.builder = builder;
}
-
public SOAPHandler onStartChild(String namespace,
String name,
String prefix,
@@ -98,8 +89,6 @@
DeserializationContext context)
throws SAXException
{
- Deserializer currentDeser = null;
-
// Get QName of element
QName qn = new QName(namespace, name);
@@ -122,6 +111,7 @@
if (info != null && info.cls != null) {
// Set the class
builder.setFaultClass(info.cls);
+ builder.setWaiting(true);
// register callback for the data, use the xmlType from fault info
Deserializer dser = context.getDeserializerForType(info.xmlType);
dser.registerValueTarget(new CallbackTarget(this, "faultData"));
@@ -140,7 +130,6 @@
*/
public void setValue(Object value, Object hint)
{
- String name = (String)hint;
if ("faultData".equals(hint)) {
builder.setFaultData(value);
} else if ("exceptionName".equals(hint)) {
1.23.8.3 +30 -14 xml-axis/java/src/org/apache/axis/message/SOAPFaultBuilder.java
Index: SOAPFaultBuilder.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPFaultBuilder.java,v
retrieving revision 1.23.8.2
retrieving revision 1.23.8.3
diff -u -r1.23.8.2 -r1.23.8.3
--- SOAPFaultBuilder.java 2 Oct 2002 14:53:56 -0000 1.23.8.2
+++ SOAPFaultBuilder.java 3 Oct 2002 14:46:15 -0000 1.23.8.3
@@ -56,24 +56,18 @@
import org.apache.axis.AxisFault;
import org.apache.axis.Constants;
-import org.apache.axis.MessageContext;
-import org.apache.axis.client.Service;
-import org.apache.axis.client.Call;
import org.apache.axis.encoding.DeserializationContext;
import org.apache.axis.encoding.Deserializer;
import org.apache.axis.encoding.Callback;
import org.apache.axis.encoding.CallbackTarget;
-import org.apache.axis.utils.ClassUtils;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.w3c.dom.Element;
-import org.w3c.dom.Text;
import javax.xml.namespace.QName;
import java.util.HashMap;
import java.util.ArrayList;
-import java.util.Iterator;
import java.lang.reflect.Constructor;
/**
@@ -85,6 +79,9 @@
*/
public class SOAPFaultBuilder extends SOAPHandler implements Callback
{
+ boolean waiting = false;
+ boolean passedEnd = false;
+
protected SOAPFault element;
protected DeserializationContext context;
static HashMap fields = new HashMap();
@@ -113,6 +110,12 @@
void setFaultData(Object data) {
faultData = data;
+ if (waiting && passedEnd) {
+ // This happened after the end of the <soap:Fault>, so make
+ // sure we set up the fault.
+ createFault();
+ }
+ waiting = false;
}
public void setFaultClass(Class faultClass) {
@@ -126,7 +129,21 @@
DeserializationContext context)
throws SAXException {
super.endElement(namespace, localName, context);
-
+ if (!waiting) {
+ createFault();
+ } else {
+ passedEnd = true;
+ }
+ }
+
+ void setWaiting(boolean waiting) {
+ this.waiting = waiting;
+ }
+
+ /**
+ * When we're sure we have everything, this gets called.
+ */
+ private void createFault() {
AxisFault f = null;
if (faultClass != null) {
// Custom fault handling
@@ -139,10 +156,10 @@
// This is our exception class
f = (AxisFault) faultData;
} else {
- // We need to create the exception,
+ // We need to create the exception,
// passing the data to the constructor.
Class argClass = ConvertWrapper(faultData.getClass());
- Constructor con =
+ Constructor con =
faultClass.getConstructor(
new Class[] { argClass });
f = (AxisFault) con.newInstance(new Object[] { faultData });
@@ -167,12 +184,12 @@
}
if (f == null) {
- f = new AxisFault(faultCode,
- faultString,
- faultActor,
+ f = new AxisFault(faultCode,
+ faultString,
+ faultActor,
faultDetails);
}
-
+
element.setFault(f);
}
@@ -248,7 +265,6 @@
} else if (name.equals(Constants.ELEM_FAULT_ACTOR)) {
faultActor = (String) value;
}
-
}
/**
No revision
No revision
1.28.2.1 +1 -0 xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializer.java
Index: SimpleDeserializer.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/SimpleDeserializer.java,v
retrieving revision 1.28
retrieving revision 1.28.2.1
diff -u -r1.28 -r1.28.2.1
--- SimpleDeserializer.java 26 Sep 2002 13:58:01 -0000 1.28
+++ SimpleDeserializer.java 3 Oct 2002 14:46:15 -0000 1.28.2.1
@@ -213,6 +213,7 @@
}
try {
value = makeValue(val.toString());
+ componentsReady = true;
} catch (InvocationTargetException ite) {
Throwable realException = ite.getTargetException();
if (realException instanceof Exception)
No revision
No revision
1.30.2.2 +1 -2 xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java
Index: DeserializerImpl.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java,v
retrieving revision 1.30.2.1
retrieving revision 1.30.2.2
diff -u -r1.30.2.1 -r1.30.2.2
--- DeserializerImpl.java 1 Oct 2002 20:38:51 -0000 1.30.2.1
+++ DeserializerImpl.java 3 Oct 2002 14:46:15 -0000 1.30.2.2
@@ -62,7 +62,6 @@
import org.apache.axis.message.SAXOutputter;
import org.apache.axis.message.SOAPHandler;
import org.apache.axis.Part;
-import org.apache.axis.utils.JavaUtils;
import org.apache.axis.utils.Messages;
import org.apache.axis.components.logger.LogFactory;
@@ -99,7 +98,7 @@
protected Vector targets = null;
protected QName defaultType = null;
- private boolean componentsReady = true;
+ protected boolean componentsReady = true;
/**
No revision
No revision
1.1.2.3 +4 -6 xml-axis/java/test/wsdl/interop4/groupH/simpleRPCenc/Attic/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-axis/java/test/wsdl/interop4/groupH/simpleRPCenc/Attic/build.xml,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- build.xml 2 Oct 2002 16:29:09 -0000 1.1.2.2
+++ build.xml 3 Oct 2002 14:46:15 -0000 1.1.2.3
@@ -55,18 +55,16 @@
<mkdir dir="${build.dest}"/>
-<!-- <copy file="SoapInteropImport1BindingImpl.java" overwrite="true"-->
-<!-- todir="${root.dir}/build/work/test/wsdl/interop3/${testname}"/>-->
-<!---->
-
+ <copy file="SimpleRpcEncBindingImpl.java" overwrite="true"
+ todir="${root.dir}/build/work/test/wsdl/interop4/groupH/${testname}"/>
<copy file="SimpleRpcEncServiceTestCase.java"
todir="${root.dir}/build/work/test/wsdl/interop4/groupH/${testname}"/>
- <!-- compile the skeletons -->
+ <!-- compile the code -->
<javac srcdir="${build.dir}/work"
destdir="${build.dest}" debug="on">
<classpath refid="classpath" />
- <include name="test/wsdl/interop4/groupH/simpleRPCenc/*.java" />
+ <include name="test/wsdl/interop4/groupH/simpleRPCenc/groupH/*.java" />
</javac>
</target>