Author: gdaniels
Date: Tue Nov 13 14:14:23 2007
New Revision: 594669

URL: http://svn.apache.org/viewvc?rev=594669&view=rev
Log:
Add new API for iterating with a RolePlayer and a namespace.

We should do a cleanup pass on all the header iterators after we finish 
discussion of whether or not to add a stateful RolePlayer.

Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPHeader.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderImpl.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPHeader.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPHeader.java?rev=594669&r1=594668&r2=594669&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPHeader.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAPHeader.java
 Tue Nov 13 14:14:23 2007
@@ -120,4 +120,21 @@
      * @return Returns ArrayList.
      */
     ArrayList getHeaderBlocksWithNSURI(String nsURI);
+
+    /**
+     * Get the appropriate set of headers for a RolePlayer in a particular 
namespace
+     * <p/>
+     * The RolePlayer indicates whether it is the ultimate destination (in 
which case headers with
+     * no role or the explicit UltimateDestination role will be included), and 
any non-standard
+     * roles it supports.  Headers targeted to "next" will always be included, 
and those targeted to
+     * "none" (for SOAP 1.2) will never be included.
+     * <p/>
+     * This version of the API allows us to iterate only once over the headers 
searching for
+     * a particular namespace for headers targeted at "us".
+     *
+     * @param rolePlayer a RolePlayer containing our role configuration
+     * @param namespace if specified, we'll only return headers from this 
namespace
+     * @return an Iterator over all the HeaderBlocks this RolePlayer should 
process.
+     */
+    Iterator getHeadersToProcess(RolePlayer rolePlayer, String namespace);
 }

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java?rev=594669&r1=594668&r2=594669&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java
 Tue Nov 13 14:14:23 2007
@@ -68,7 +68,6 @@
      *         <CODE>SOAPHeader</CODE> object
      * @throws org.apache.axiom.om.OMException
      *                     if a SOAP error occurs
-     * @throws OMException
      */
     public abstract SOAPHeaderBlock addHeaderBlock(String localName,
                                                    OMNamespace ns)
@@ -86,6 +85,10 @@
      */
     public Iterator getHeadersToProcess(RolePlayer rolePlayer) {
         return null; // TODO: Implement this!
+    }
+
+    public Iterator getHeadersToProcess(RolePlayer rolePlayer, String 
namespace) {
+        return null; // TODO: Implement this!    
     }
 
     /**

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderImpl.java?rev=594669&r1=594668&r2=594669&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderImpl.java
 Tue Nov 13 14:14:23 2007
@@ -88,6 +88,9 @@
 class RolePlayerChecker implements Checker {
     RolePlayer rolePlayer;
 
+    /** Optional namespace - if non-null we'll only return headers that match 
*/
+    String namespace;
+
     /**
      * Constructor.
      *
@@ -98,7 +101,17 @@
         this.rolePlayer = rolePlayer;
     }
 
+    public RolePlayerChecker(RolePlayer rolePlayer, String namespace) {
+        this.rolePlayer = rolePlayer;
+        this.namespace = namespace;
+    }
+
     public boolean checkHeader(SOAPHeaderBlock header) {
+        // If we're filtering on namespace, check that first since the compare 
is simpler.
+        if ((namespace != null) && 
!namespace.equals(header.getNamespace().getNamespaceURI())) {
+            return false;
+        }
+
         String role = header.getRole();
         SOAPVersion version = header.getVersion();
 
@@ -258,6 +271,22 @@
      */
     public Iterator getHeadersToProcess(RolePlayer rolePlayer) {
         return new HeaderIterator(new RolePlayerChecker(rolePlayer));
+    }
+
+    /**
+     * Get the appropriate set of headers for a RolePlayer.
+     * <p/>
+     * The RolePlayer indicates whether it is the ultimate destination (in 
which case headers with
+     * no role or the explicit UltimateDestination role will be included), and 
any non-standard
+     * roles it supports.  Headers targeted to "next" will always be included, 
and those targeted to
+     * "none" (for SOAP 1.2) will never be included.
+     *
+     * @param rolePlayer a RolePlayer containing our role configuration
+     * @param namespace if specified, we'll only return headers from this 
namespace
+     * @return an Iterator over all the HeaderBlocks this RolePlayer should 
process.
+     */
+    public Iterator getHeadersToProcess(RolePlayer rolePlayer, String 
namespace) {
+        return new HeaderIterator(new RolePlayerChecker(rolePlayer, 
namespace));
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to