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 du...@apache.org on 2001/03/21 02:17:26 UTC

cvs commit: xml-axis/java/src/org/apache/axis/message RPCArg.java RPCBody.java SOAPBody.java SOAPEnvelope.java SOAPHeader.java

dug         01/03/20 17:17:25

  Modified:    java/samples/stock undeploy.xml
               java/src/org/apache/axis AxisFault.java Message.java
               java/src/org/apache/axis/client HTTPMessage.java
               java/src/org/apache/axis/handlers DebugHandler.java
                        MsgDispatchHandler.java
               java/src/org/apache/axis/message RPCArg.java RPCBody.java
                        SOAPBody.java SOAPEnvelope.java SOAPHeader.java
  Log:
  Renamed some getAsXXX method to getElement and getDocument
  Added a getAsDOMElement method to SOAPHeader and SOAPEnvelope to allow
  people to use w3c dom stuff
  Redesigned SOAPHeader so that the entire Header is returned as a single
  element instead of trying to parse it - which makes more sense since they
  could technically have data in the Header element itself.
  
  Revision  Changes    Path
  1.2       +0 -1      xml-axis/java/samples/stock/undeploy.xml
  
  Index: undeploy.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/stock/undeploy.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- undeploy.xml	2001/02/09 12:41:54	1.1
  +++ undeploy.xml	2001/03/21 01:17:02	1.2
  @@ -8,7 +8,6 @@
   <!-- This file will be replaced by WSDD once it's ready           -->
   
   <undeploy>
  -  <handler name="debug" />
     <handler name="authen"  />
     <handler name="author"  />
     <chain   name="checks"  />
  
  
  
  1.11      +1 -1      xml-axis/java/src/org/apache/axis/AxisFault.java
  
  Index: AxisFault.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/AxisFault.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AxisFault.java	2001/03/02 20:02:48	1.10
  +++ AxisFault.java	2001/03/21 01:17:07	1.11
  @@ -132,7 +132,7 @@
       return( (Element[]) faultDetails.toArray() );
     }
   
  -  public Element getAsXML() {
  +  public Element getElement() {
       Element  elem, root ;
       int      i ;
   
  
  
  
  1.14      +3 -3      xml-axis/java/src/org/apache/axis/Message.java
  
  Index: Message.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Message.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Message.java	2001/03/13 06:46:18	1.13
  +++ Message.java	2001/03/21 01:17:08	1.14
  @@ -256,17 +256,17 @@
         else if ( currentForm.equals("AxisFault") ) {
           AxisFault     fault = (AxisFault) currentMessage ;
           SOAPEnvelope  env   = new SOAPEnvelope();
  -        SOAPBody      body  = new SOAPBody( fault.getAsXML() );
  +        SOAPBody      body  = new SOAPBody( fault.getElement() );
   
           env.addBody( body );
   
  -        setCurrentMessage( env.getAsXML(), "Document" );
  +        setCurrentMessage( env.getDocument(), "Document" );
           Debug.Print( 2, "Exit: Message::getAsDocument" );
           return( (Document) currentMessage );
         }
         else if ( currentForm.equals("SOAPEnvelope") ) {
           SOAPEnvelope  env = (SOAPEnvelope) currentMessage ;
  -        setCurrentMessage( env.getAsXML(), "Document" );
  +        setCurrentMessage( env.getDocument(), "Document" );
           Debug.Print( 2, "Exit: Message::getAsDocument" );
           return( (Document) currentMessage );
         }
  
  
  
  1.20      +5 -7      xml-axis/java/src/org/apache/axis/client/HTTPMessage.java
  
  Index: HTTPMessage.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/HTTPMessage.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- HTTPMessage.java	2001/03/15 01:53:32	1.19
  +++ HTTPMessage.java	2001/03/21 01:17:12	1.20
  @@ -198,13 +198,11 @@
         msgContext.setProperty(MessageContext.TRANS_OUTPUT, "HTTP.output" );
       }
   
  -    if ( false ) { // Debug.getDebugLevel() > 0  ) {
  -      SOAPHeader  header = new SOAPHeader();
  -      header.setPrefix("d");
  -      header.setName("Debug");
  -      header.setNamespaceURI( Constants.URI_DEBUG );
  +    if ( Debug.getDebugLevel() > 0  ) {
  +      Element  elem = new Element( "Debug", "d", Constants.URI_DEBUG );
  +      elem.addContent( "" + Debug.getDebugLevel() );
  +      SOAPHeader  header = new SOAPHeader(elem);
         header.setActor( Constants.URI_NEXT_ACTOR );
  -      header.addDataNode( "" + Debug.getDebugLevel() );
   
         reqEnv.addHeader( header );
       }
  @@ -229,7 +227,7 @@
       Message       resMsg = msgContext.getResponseMessage();
       SOAPEnvelope  resEnv = (SOAPEnvelope) resMsg.getAs( "SOAPEnvelope" );
       SOAPBody      resBody = resEnv.getFirstBody();
  -    Document      doc = new Document( resBody.getAsXML() );
  +    Document      doc = new Document( resBody.getRoot() );
   
       mc.setResponseMessage( new Message(doc, "Document") );
   
  
  
  
  1.7       +3 -2      xml-axis/java/src/org/apache/axis/handlers/DebugHandler.java
  
  Index: DebugHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/DebugHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DebugHandler.java	2001/03/02 20:03:25	1.6
  +++ DebugHandler.java	2001/03/21 01:17:15	1.7
  @@ -75,11 +75,12 @@
               SOAPEnvelope  env = (SOAPEnvelope) msg.getAs( "SOAPEnvelope" );
               Vector        headers = null ;
               
  -            headers = env.getHeadersByURI( Constants.URI_DEBUG );
  +            headers = env.getHeadersByNameAndURI("Debug", Constants.URI_DEBUG);
   
               for ( int i = 0 ; headers != null && i < headers.size() ; i ++ ) {
                   SOAPHeader  header = (SOAPHeader) headers.get(i);
  -                String      value = (String) header.getDataAtIndex( 0 );
  +                Element     root   = header.getRoot();
  +                String      value = root.getText();
                   if ( value != null ) {
                       int     debugVal = Integer.parseInt( value );
                       Debug.Print( 1, "Setting debug level to: " + debugVal );
  
  
  
  1.12      +1 -1      xml-axis/java/src/org/apache/axis/handlers/MsgDispatchHandler.java
  
  Index: MsgDispatchHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/handlers/MsgDispatchHandler.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- MsgDispatchHandler.java	2001/03/15 01:53:32	1.11
  +++ MsgDispatchHandler.java	2001/03/21 01:17:15	1.12
  @@ -104,7 +104,7 @@
                                 new SOAPEnvelope() :
                                 (SOAPEnvelope)resMsg.getAs("SOAPEnvelope");
   
  -      Document      doc     = new Document( reqBody.getAsXML() );
  +      Document      doc     = new Document( reqBody.getRoot() );
   
         /* If no methodName was specified during deployment then get it */
         /* from the root of the Body element                            */
  
  
  
  1.10      +1 -1      xml-axis/java/src/org/apache/axis/message/RPCArg.java
  
  Index: RPCArg.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCArg.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- RPCArg.java	2001/03/15 01:53:33	1.9
  +++ RPCArg.java	2001/03/21 01:17:19	1.10
  @@ -123,7 +123,7 @@
     }
     public void   setType(String str) { type = str ; }
   
  -  public Element getAsXML() {
  +  public Element getElement() {
       Element   root ;
   
       if ( prefix != null )
  
  
  
  1.12      +3 -3      xml-axis/java/src/org/apache/axis/message/RPCBody.java
  
  Index: RPCBody.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCBody.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- RPCBody.java	2001/03/13 06:46:19	1.11
  +++ RPCBody.java	2001/03/21 01:17:19	1.12
  @@ -134,7 +134,7 @@
       }
     }
   
  -  public Element getAsXML() {
  +  public Element getElement() {
       Element   root ;
      
       if ( prefix != null ) 
  @@ -143,13 +143,13 @@
         root = new Element( methodName );
       for ( int i = 0 ; args != null && i < args.size() ; i++ ) {
         RPCArg  arg = (RPCArg) args.get(i) ;
  -      root.addContent( arg.getAsXML() );
  +      root.addContent( arg.getElement() );
       }
       return( root );
     }
   
     public SOAPBody getAsSOAPBody() {
  -    return( new SOAPBody( getAsXML() ) );
  +    return( new SOAPBody( getElement() ) );
     }
   
   };
  
  
  
  1.12      +11 -2     xml-axis/java/src/org/apache/axis/message/SOAPBody.java
  
  Index: SOAPBody.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPBody.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SOAPBody.java	2001/03/15 01:53:33	1.11
  +++ SOAPBody.java	2001/03/21 01:17:20	1.12
  @@ -59,6 +59,7 @@
   
   import java.util.* ;
   import org.jdom.* ;
  +import org.apache.axis.AxisFault ;
   import org.apache.axis.message.* ;
   
   /**
  @@ -91,8 +92,16 @@
       this.root = r ;
     }
   
  -  public Element getAsXML() {
  -    return( root );
  +  public org.w3c.dom.Element getAsDOMElement() throws AxisFault {
  +    if ( root == null ) return( null );
  +    try {
  +      org.jdom.output.DOMOutputter outputter = null ;
  +      outputter = new org.jdom.output.DOMOutputter();
  +      return( outputter.output( root ) );
  +    }
  +    catch( Exception e ) {
  +      throw new AxisFault( e );
  +    }
     }
   
   };
  
  
  
  1.14      +21 -3     xml-axis/java/src/org/apache/axis/message/SOAPEnvelope.java
  
  Index: SOAPEnvelope.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPEnvelope.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SOAPEnvelope.java	2001/03/15 01:53:33	1.13
  +++ SOAPEnvelope.java	2001/03/21 01:17:20	1.14
  @@ -137,6 +137,24 @@
       return( headers );
     }
   
  +  public Vector getHeadersByNameAndURI(String name, String URI) {
  +    Vector tmpList = null ;
  +    /* If URI is null then they asked for the entire list */
  +    /******************************************************/
  +    if ( URI == null ) return( headers );
  +    if ( headers == null ) return( null );
  +
  +    for ( int i = 0 ; i < headers.size(); i++ ) {
  +      SOAPHeader  header = (SOAPHeader) headers.elementAt(i);
  +      if ( URI.equals( header.getNamespaceURI() ) &&
  +           name.equals( header.getName()) ) {
  +        if ( tmpList == null ) tmpList = new Vector();
  +        tmpList.add( header );
  +      }
  +    }
  +    return( tmpList );
  +  }
  +
     public Vector getHeadersByURI(String URI) {
       Vector tmpList = null ;
       /* If URI is null then they asked for the entire list */
  @@ -191,7 +209,7 @@
       return( body );
     }
   
  -  public Document getAsXML() {
  +  public Document getDocument() {
       Document doc = null ;
       Element  root ;
       int      i ;
  @@ -213,7 +231,7 @@
         root.addContent( elem );
         for ( i = 0 ; i < headers.size() ; i++ ) {
           SOAPHeader h = (SOAPHeader) headers.get(i);
  -        elem.addContent( h.getAsXML() );
  +        elem.addContent( h.getRoot() );
         }
       } 
       if ( body != null ) {
  @@ -221,7 +239,7 @@
                                     tmpEnvPre, tmpEnvURI );
         root.addContent( elem );
         for ( i = 0 ; i < body.size() ; i++ ) {
  -        Element  bod = ((SOAPBody)body.get(i)).getAsXML();
  +        Element  bod = ((SOAPBody)body.get(i)).getRoot();
           if ( bod.getDocument() != null )
             bod = (Element) bod.clone();
           elem.addContent( bod );
  
  
  
  1.12      +64 -64    xml-axis/java/src/org/apache/axis/message/SOAPHeader.java
  
  Index: SOAPHeader.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/SOAPHeader.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SOAPHeader.java	2001/03/13 06:46:19	1.11
  +++ SOAPHeader.java	2001/03/21 01:17:21	1.12
  @@ -67,93 +67,93 @@
    * @author Doug Davis (dug@us.ibm.com)
    */
   public class SOAPHeader {
  +  protected Element   root ;
  +  protected boolean   processed ;
  +
  +  // Utility vars - dup of info in 'root' but faster access here
     protected String    name ;
     protected String    prefix ;
     protected String    namespaceURI ;
  -  protected boolean   mustUnderstand ;
     protected String    actor ;
  -  protected Vector    data ;
  -  protected boolean   processed ;
  +  protected boolean   mustUnderstand ;
   
     public SOAPHeader() {
       processed = false ;
     }
   
     public SOAPHeader(Element elem) {
  -    String  value ;
  -    prefix = elem.getNamespacePrefix();
  -    namespaceURI = elem.getNamespaceURI();
  -    name = elem.getName();
  -    value = elem.getAttributeValue( Constants.ATTR_MUST_UNDERSTAND,
  -                                    elem.getNamespace() );
  -    if ( "1".equals(value) ) mustUnderstand = true ;
  -    actor = elem.getAttributeValue( Constants.ATTR_ACTOR, elem.getNamespace() );
  -    setData( elem.getMixedContent() );
       processed = false ;
  +    setRoot( elem );
     }
   
  -  public String getName() { return( name ); }
  -  public void setName(String n) { name = n; }
  +  public Element getRoot() {
  +    return( root );
  +  }
   
  -  public String getPrefix() { return( prefix ); }
  -  public void setPrefix(String p) { prefix = p; }
  +  public void setRoot(Element elem) {
  +    String  value ;
  +
  +    root           = elem ;
  +    prefix         = elem.getNamespacePrefix();
  +    namespaceURI   = elem.getNamespaceURI();
  +    name           = elem.getName();
  +
  +    value          = elem.getAttributeValue( Constants.ATTR_ACTOR, 
  +                                             elem.getNamespace() );
  +    if ( value != null )
  +      actor = value ;
  +    else 
  +      // Handle the case where they set Actor before they set the root
  +      if ( value != null ) setActor( value );
  +
  +    value          = elem.getAttributeValue( Constants.ATTR_MUST_UNDERSTAND,
  +                                             elem.getNamespace() );
  +    if ( value != null )
  +      mustUnderstand = "1".equals(value);
  +    else 
  +      // Handle the case where they set MU before they set the root
  +      if ( mustUnderstand ) setMustUnderstand( true );
  +  }
   
  +  public String getName() { return( name ); }
  +  public String getPrefix() { return( prefix ); }
     public String getNamespaceURI() { return( namespaceURI ); }
  -  public void setNamespaceURI(String nsuri) { namespaceURI = nsuri ; }
   
     public boolean getMustUnderstand() { return( mustUnderstand ); }
  -  public void setMustUnderstand(boolean b) { mustUnderstand = b ; }
  +  public void setMustUnderstand(boolean b) { 
  +    Namespace ns   = null ;
  +    Attribute attr = null ;
  +
  +    mustUnderstand = b ;
  +    if ( root == null ) return ;
  +    ns = Namespace.getNamespace( Constants.NSPREFIX_SOAP_ENV, 
  +                                 Constants.URI_SOAP_ENV );
  +    attr = new Attribute(Constants.ATTR_MUST_UNDERSTAND, "1", ns );
  +    root.addAttribute( attr );
  +  }
   
     public String getActor() { return( actor ); }
  -  public void setActor(String a) { actor = a ; }
  -
  -  public Vector getData() { return( data ); }
  +  public void setActor(String a) { 
  +    Namespace ns   = null ;
  +    Attribute attr = null ;
  +
  +    actor = a ;
  +    ns = Namespace.getNamespace( Constants.NSPREFIX_SOAP_ENV, 
  +                                 Constants.URI_SOAP_ENV );
  +    attr = new Attribute( Constants.ATTR_ACTOR, actor, ns );
  +    root.addAttribute( attr );
  +  }
   
  -  public Object getDataAtIndex(int i) {
  -    if ( data == null || i >= data.size() ) return( null );
  -    return( (Object) data.get(i) );
  -  }
  -
  -  public void addDataNode(Object n) { 
  -    if ( data == null ) data = new Vector();
  -    data.add(n); 
  -  };
  -
  -  public void setData(List nl) { 
  -    data = null ;
  -    if ( nl != null && nl.size() != 0 ) data = new Vector();
  -    for ( int i = 0 ; i < nl.size() ; i++ )
  -      data.add( nl.get(i) );
  -  }
  -
  -  public Element getAsXML() {
  -    Element    root = new Element( name, prefix, namespaceURI );
  -    Namespace  ns   = null ;
  -    Attribute  attr = null ;
  -    if ( mustUnderstand ) {
  -      ns = Namespace.getNamespace( Constants.NSPREFIX_SOAP_ENV, 
  -                                   Constants.URI_SOAP_ENV );
  -      attr = new Attribute(Constants.ATTR_MUST_UNDERSTAND, "1", ns );
  -      root.addAttribute( attr );
  +  public org.w3c.dom.Element getAsDOMElement() throws AxisFault {
  +    if ( root == null ) return( null );
  +    try {
  +      org.jdom.output.DOMOutputter outputter = null ;
  +      outputter = new org.jdom.output.DOMOutputter();
  +      return( outputter.output( root ) );
       }
  -    if ( actor != null ) {
  -      ns = Namespace.getNamespace( Constants.NSPREFIX_SOAP_ENV, 
  -                                   Constants.URI_SOAP_ENV );
  -      attr = new Attribute( Constants.ATTR_ACTOR, actor, ns );
  -      root.addAttribute( attr );
  +    catch( Exception e ) {
  +      throw new AxisFault( e );
       }
  -    for ( int i = 0 ; data != null && i < data.size() ; i++ ) {
  -      Object o = data.get(i);
  -      if ( o instanceof String )
  -        root.addContent( (String) o );
  -      else if ( o instanceof CDATA )
  -        root.addContent( (CDATA) o );
  -      else if ( o instanceof Element )
  -        root.addContent( (Element) o );
  -      else
  -        System.err.println( "Unknown type: " + o.getClass() );
  -    }
  -    return( root );
     }
   
     public void setProcessed(boolean value) {