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 ve...@apache.org on 2005/06/09 18:36:27 UTC

cvs commit: ws-axis/java/test/message TestSOAPBody.java

venkat      2005/06/09 09:36:27

  Modified:    java/src/org/apache/axis/message MessageElement.java
                        NodeImpl.java
               java/test/message TestSOAPBody.java
  Log:
  Fix for AXIS-1960:
  - Added a new test case for TestSOAPBody.java to test for this bug.
  - added a call to setDirty(true) inside a few methods in NodeImpl
  - added setDirty(false) in getAsString() to fix ant all-tests errors.
  
  Revision  Changes    Path
  1.198     +1 -0      ws-axis/java/src/org/apache/axis/message/MessageElement.java
  
  Index: MessageElement.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/message/MessageElement.java,v
  retrieving revision 1.197
  retrieving revision 1.198
  diff -u -r1.197 -r1.198
  --- MessageElement.java	25 Apr 2005 14:44:06 -0000	1.197
  +++ MessageElement.java	9 Jun 2005 16:36:27 -0000	1.198
  @@ -1107,6 +1107,7 @@
           }
           serializeContext = new SerializationContext(writer, msgContext);
           serializeContext.setSendDecl(false);
  +        setDirty(false);
           output(serializeContext);
           writer.close();
   
  
  
  
  1.15      +3 -0      ws-axis/java/src/org/apache/axis/message/NodeImpl.java
  
  Index: NodeImpl.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/message/NodeImpl.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- NodeImpl.java	27 May 2005 10:20:12 -0000	1.14
  +++ NodeImpl.java	9 Jun 2005 16:36:27 -0000	1.15
  @@ -493,6 +493,7 @@
           ((NodeImpl) newChild).detachNode();
           children.add(newChild);
           ((NodeImpl) newChild).parent = this;
  +        setDirty(true);
           return newChild;
       }
   
  @@ -560,6 +561,7 @@
               position = 0;
           }
           children.add(position, newChild);
  +        setDirty(true);
           return newChild;
       }
   
  @@ -595,6 +597,7 @@
           }
           children.remove(position);
           children.add(position, newChild);
  +        setDirty(true);
           return oldChild;
       }
   
  
  
  
  1.4       +47 -2     ws-axis/java/test/message/TestSOAPBody.java
  
  Index: TestSOAPBody.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/test/message/TestSOAPBody.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestSOAPBody.java	25 Feb 2004 14:02:57 -0000	1.3
  +++ TestSOAPBody.java	9 Jun 2005 16:36:27 -0000	1.4
  @@ -23,11 +23,18 @@
   import javax.xml.soap.MimeHeaders;
   import javax.xml.soap.Name;
   import javax.xml.soap.SOAPBody;
  +import javax.xml.soap.SOAPEnvelope;
  +import javax.xml.soap.SOAPHeader;
   import javax.xml.soap.SOAPBodyElement;
   import javax.xml.soap.SOAPMessage;
   import javax.xml.soap.SOAPPart;
   import java.io.ByteArrayInputStream;
   import java.util.Iterator;
  +import org.w3c.dom.Node;
  +import org.w3c.dom.Element;
  +import org.apache.axis.Message;
  +import org.apache.axis.utils.XMLUtils;
  +
   
   /**
    * @author john.gregg@techarch.com
  @@ -118,4 +125,42 @@
           }
           assertTrue(count == 1);
       }
  +    /**
  +     * Method testSaveChanges
  +     *
  +     * @throws Exception
  +     */
  +    public void testSaveChanges() throws Exception {
  +        MimeHeaders mimeheaders = new MimeHeaders();
  +
  +        mimeheaders.addHeader("Content-Type", "text/xml");
  +        ByteArrayInputStream instream = new ByteArrayInputStream(xmlString.getBytes());
  +        MessageFactory factory =
  +                MessageFactory.newInstance();
  +        SOAPMessage msg =
  +                factory.createMessage(mimeheaders, instream);
  +        org.apache.axis.client.AxisClient axisengine =
  +                new org.apache.axis.client.AxisClient();
  +
  +        ((Message) msg).setMessageContext(
  +                new org.apache.axis.MessageContext(axisengine));
  +        SOAPPart sp = msg.getSOAPPart();
  +        SOAPEnvelope se = (org.apache.axis.message.SOAPEnvelope) sp.getEnvelope();
  +        SOAPHeader sh = (org.apache.axis.message.SOAPHeader)se.getHeader();
  +        SOAPBody sb = (org.apache.axis.message.SOAPBody)se.getBody();
  +
  +        Node myNode = (Element) sb.getElementsByTagName("City").item(0);
  +
  +        myNode.replaceChild( myNode.getOwnerDocument().createTextNode("NY"), myNode.getFirstChild());
  +        System.out.println(XMLUtils.ElementToString(sb));
  +
  +        msg.saveChanges();
  +        
  +        sp = msg.getSOAPPart();
  +        se = (org.apache.axis.message.SOAPEnvelope) sp.getEnvelope();
  +        javax.xml.soap.SOAPBody sb2 = se.getBody();
  +        myNode = (Element) sb.getElementsByTagName("City").item(0);
  +        Node city = myNode.getFirstChild();
  +        assertEquals("City name did not change to NY", city.toString(), "NY");
  +    }
   }