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) {
  
  
  


Reply via email to