gdaniels 2003/02/01 11:16:51
Modified: java/test/soap12 TestFault.java
java/src/org/apache/axis/message SOAPFaultReasonBuilder.java
SOAPFaultBuilder.java SOAPFault.java
Log:
Write out <Reason><Text></Text></Reason> correctly, and make sure
to propagate the value of the first text element into the faultString field
of the AxisFault when deserializing. Needs a little more cleanup (incl.
xml:lang) but works now.
Clean up TestFault a bit.
Revision Changes Path
1.2 +11 -9 xml-axis/java/test/soap12/TestFault.java
Index: TestFault.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/soap12/TestFault.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestFault.java 20 Dec 2002 17:28:21 -0000 1.1
+++ TestFault.java 1 Feb 2003 19:16:51 -0000 1.2
@@ -48,11 +48,14 @@
msgContext.setSOAPConstants(SOAPConstants.SOAP12_CONSTANTS);
SOAPEnvelope msg = new SOAPEnvelope(SOAPConstants.SOAP12_CONSTANTS);
- SOAPFault fault = new SOAPFault(new AxisFault(FAULTCODE, FAULTSUBCODE
,FAULTREASON, FAULTROLE, FAULTNODE, null));
+ SOAPFault fault = new SOAPFault(new AxisFault(FAULTCODE, FAULTSUBCODE,
+ FAULTREASON, FAULTROLE,
+ FAULTNODE, null));
msg.addBodyElement(fault);
Writer stringWriter = new StringWriter();
- SerializationContext context = new SerializationContextImpl(stringWriter,
msgContext);
+ SerializationContext context =
+ new SerializationContextImpl(stringWriter, msgContext);
context.setDoMultiRefs(false);
msg.output(context);
String msgString = stringWriter.toString();
@@ -62,7 +65,7 @@
Message message = new Message(msgString);
message.setMessageContext(new MessageContext(server));
- SOAPEnvelope envelope = (SOAPEnvelope) message.getSOAPEnvelope();
+ SOAPEnvelope envelope = message.getSOAPEnvelope();
assertNotNull("envelope should not be null", envelope);
SOAPBodyElement respBody = envelope.getFirstBody();
@@ -72,14 +75,13 @@
assertNotNull("Fault should not be null", aFault);
- assertTrue(aFault.getFaultCode().equals(FAULTCODE));
- assertTrue(aFault.getFaultReason().equals(FAULTREASON));
- assertTrue(aFault.getFaultRole().equals(FAULTROLE));
- assertTrue(aFault.getFaultNode().equals(FAULTNODE));
+ assertEquals(FAULTCODE, aFault.getFaultCode());
+ assertEquals(FAULTREASON, aFault.getFaultReason());
+ assertEquals(FAULTROLE, aFault.getFaultRole());
+ assertEquals(FAULTNODE, aFault.getFaultNode());
QName q[] = aFault.getFaultSubCodes();
for (int i = 0; i < q.length; i++)
- assertTrue(q[i].equals(FAULTSUBCODE[i]));
-
+ assertEquals(FAULTSUBCODE[i], q[i]);
}
}
1.2 +5 -2
xml-axis/java/src/org/apache/axis/message/SOAPFaultReasonBuilder.java
Index: SOAPFaultReasonBuilder.java
===================================================================
RCS file:
/home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPFaultReasonBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SOAPFaultReasonBuilder.java 31 Jan 2003 23:04:13 -0000 1.1
+++ SOAPFaultReasonBuilder.java 1 Feb 2003 19:16:51 -0000 1.2
@@ -74,8 +74,10 @@
{
/** Storage for the actual text */
private ArrayList text = new ArrayList();
+ private SOAPFaultBuilder faultBuilder;
- public SOAPFaultReasonBuilder() {
+ public SOAPFaultReasonBuilder(SOAPFaultBuilder faultBuilder) {
+ this.faultBuilder = faultBuilder;
}
public SOAPHandler onStartChild(String namespace,
@@ -90,7 +92,8 @@
Deserializer currentDeser = null;
currentDeser = context.getDeserializerForType(Constants.XSD_STRING);
if (currentDeser != null) {
- currentDeser.registerValueTarget(new CallbackTarget(this, null));
+ currentDeser.registerValueTarget(
+ new CallbackTarget(faultBuilder, thisQName));
}
return (SOAPHandler)currentDeser;
} else {
1.29 +4 -2 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.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- SOAPFaultBuilder.java 1 Feb 2003 17:05:40 -0000 1.28
+++ SOAPFaultBuilder.java 1 Feb 2003 19:16:51 -0000 1.29
@@ -110,7 +110,7 @@
}
static {
- fields_soap12.put(Constants.ELEM_FAULT_REASON_SOAP12, Constants.XSD_STRING);
+ fields_soap12.put(Constants.ELEM_FAULT_REASON_SOAP12, null);
fields_soap12.put(Constants.ELEM_FAULT_ROLE_SOAP12, Constants.XSD_STRING);
fields_soap12.put(Constants.ELEM_FAULT_NODE_SOAP12, Constants.XSD_STRING);
fields_soap12.put(Constants.ELEM_FAULT_DETAIL_SOAP12, null);
@@ -278,6 +278,8 @@
QName thisQName = new QName(namespace, name);
if (thisQName.equals(Constants.QNAME_FAULTCODE_SOAP12))
return (code = new SOAPFaultCodeBuilder());
+ else if (thisQName.equals(Constants.QNAME_FAULTREASON_SOAP12))
+ return new SOAPFaultReasonBuilder(this);
else if (thisQName.equals(Constants.QNAME_FAULTDETAIL_SOAP12))
return new SOAPFaultDetailsBuilder(this);
@@ -333,7 +335,7 @@
if (((QName)hint).getNamespaceURI().equals(Constants.URI_SOAP12_ENV)) {
if (local.equals(Constants.ELEM_FAULT_ROLE_SOAP12)) {
faultActor = (String) value;
- } else if (local.equals(Constants.ELEM_FAULT_REASON_SOAP12)) {
+ } else if (local.equals(Constants.ELEM_TEXT_SOAP12)) {
faultString = (String) value;
} else if (local.equals(Constants.ELEM_FAULT_NODE_SOAP12)) {
faultNode = (String) value;
1.13 +7 -2 xml-axis/java/src/org/apache/axis/message/SOAPFault.java
Index: SOAPFault.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPFault.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SOAPFault.java 17 Dec 2002 20:10:54 -0000 1.12
+++ SOAPFault.java 1 Feb 2003 19:16:51 -0000 1.13
@@ -144,12 +144,17 @@
}
if (axisFault.getFaultString() != null) {
- if (soapConstants == SOAPConstants.SOAP12_CONSTANTS)
+ if (soapConstants == SOAPConstants.SOAP12_CONSTANTS) {
context.startElement(Constants.QNAME_FAULTREASON_SOAP12, null);
- else
+ // TODO: put an xml:lang attribute on the <Text> element?
+ context.startElement(Constants.QNAME_TEXT_SOAP12, null);
+ } else
context.startElement(Constants.QNAME_FAULTSTRING, null);
context.writeSafeString(axisFault.getFaultString());
context.endElement();
+ if (soapConstants == SOAPConstants.SOAP12_CONSTANTS) {
+ context.endElement();
+ }
}
if (axisFault.getFaultActor() != null) {