Author: davidillsley
Date: Mon May 21 08:27:47 2007
New Revision: 540171

URL: http://svn.apache.org/viewvc?view=rev&rev=540171
Log:
Some more work on wsa:Addressing support

Added:
    webservices/axis2/scratch/java/davidillsley/src/test/java/org/
    webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/
    webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/axis2/
    
webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/axis2/addressing/
    
webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/axis2/addressing/policy/
    
webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/axis2/addressing/policy/AddressingAssertionTests.java
      - copied, changed from r540051, 
webservices/axis2/scratch/java/davidillsley/src/test/java/AddressingAssertionTests.java
Removed:
    
webservices/axis2/scratch/java/davidillsley/src/test/java/AddressingAssertionTests.java
Modified:
    webservices/axis2/scratch/java/davidillsley/pom.xml
    
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertion.java
    
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertionBuilder.java
    
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/CompactAddressingAssertion.java
    
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/NormalisedAddressingAssertion.java

Modified: webservices/axis2/scratch/java/davidillsley/pom.xml
URL: 
http://svn.apache.org/viewvc/webservices/axis2/scratch/java/davidillsley/pom.xml?view=diff&rev=540171&r1=540170&r2=540171
==============================================================================
--- webservices/axis2/scratch/java/davidillsley/pom.xml (original)
+++ webservices/axis2/scratch/java/davidillsley/pom.xml Mon May 21 08:27:47 2007
@@ -1,26 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>addressing-policy</groupId>
-  <artifactId>addressing-policy</artifactId>
-  <version>0.0.1</version>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.ws.commons.neethi</groupId>
-      <artifactId>neethi</artifactId>
-      <version>2.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.ws.commons.neethi</groupId>
-      <artifactId>neethi</artifactId>
-      <version>2.0</version>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+       <modelVersion>4.0.0</modelVersion>
+       <groupId>addressing-policy</groupId>
+       <artifactId>addressing-policy</artifactId>
+       <version>0.0.1</version>
+       <dependencies>
+               <dependency>
+                       <groupId>org.apache.ws.commons.neethi</groupId>
+                       <artifactId>neethi</artifactId>
+                       <version>2.0</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.ws.commons.neethi</groupId>
+                       <artifactId>neethi</artifactId>
+                       <version>2.0</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.axis2</groupId>
+                       <artifactId>axis2-kernel</artifactId>
+                       <version>SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>3.8</version>
+                       <scope>test</scope>
+               </dependency>
+       </dependencies>
+       <build>
+               <plugins>
+                       <plugin>
+                               <artifactId>maven-compiler-plugin</artifactId>
+                               <inherited>true</inherited>
+                               <configuration>
+                                       <source>1.5</source>
+                                       <target>1.5</target>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
 </project>
 

Modified: 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertion.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertion.java?view=diff&rev=540171&r1=540170&r2=540171
==============================================================================
--- 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertion.java
 (original)
+++ 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertion.java
 Mon May 21 08:27:47 2007
@@ -14,5 +14,6 @@
 package org.apache.axis2.addressing.policy;
 
 public interface AddressingAssertion {
-       public boolean isResponseCombinationAllowed(boolean anonymous, boolean 
nonAnonymous);
+       enum ResponsesEPRs{BOTH, ANONYMOUS, NON_ANONYMOUS, EITHER, NONE};
+       public ResponsesEPRs getAllowedResponseType();
 }

Modified: 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertionBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertionBuilder.java?view=diff&rev=540171&r1=540170&r2=540171
==============================================================================
--- 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertionBuilder.java
 (original)
+++ 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/AddressingAssertionBuilder.java
 Mon May 21 08:27:47 2007
@@ -27,6 +27,7 @@
 
        public Assertion build(OMElement element, AssertionBuilderFactory 
factory)
                        throws IllegalArgumentException {
+//             System.out.println(element);
                
if(element.getQName().equals(CompactAddressingAssertion.ADDRESSING_ASSERTION)){
                        return new CompactAddressingAssertion(element);
                }

Modified: 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/CompactAddressingAssertion.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/CompactAddressingAssertion.java?view=diff&rev=540171&r1=540170&r2=540171
==============================================================================
--- 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/CompactAddressingAssertion.java
 (original)
+++ 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/CompactAddressingAssertion.java
 Mon May 21 08:27:47 2007
@@ -23,6 +23,8 @@
 
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
+import org.apache.axis2.addressing.policy.AddressingAssertion;
+import org.apache.axis2.addressing.policy.AddressingAssertion.ResponsesEPRs;
 import org.apache.neethi.All;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.Constants;
@@ -105,20 +107,37 @@
                return Constants.TYPE_ASSERTION;
        }
 
-       public boolean isResponseCombinationAllowed(boolean anonymous, boolean 
nonAnonymous) {
-               boolean result = false;
+       public ResponsesEPRs getAllowedResponseType() {
+               boolean both = false, anon = false, nonAnon = false, either = 
false;
                Policy p = (Policy)normalize();
                Iterator<List<Assertion>> iter = 
(Iterator<List<Assertion>>)p.getAlternatives();
-               while(iter.hasNext() && !result){
+               while(iter.hasNext()){
                        for(Assertion a: iter.next()){
                                if(a instanceof 
org.apache.axis2.addressing.policy.AddressingAssertion){
-                                       
if(((org.apache.axis2.addressing.policy.AddressingAssertion)a).isResponseCombinationAllowed(anonymous,
 nonAnonymous)){
-                                               result = true;
+                                       AddressingAssertion aa = 
(org.apache.axis2.addressing.policy.AddressingAssertion)a;
+                                       ResponsesEPRs re = 
aa.getAllowedResponseType();
+                                       switch(re){
+                                       case BOTH: both = true; break;
+                                       case ANONYMOUS: anon = true;break;
+                                       case NON_ANONYMOUS: nonAnon = 
true;break;
+                                       case EITHER: either = true; break;
                                        }
                                }
                        }
                }
-               return result;
+               if(both){
+                       return ResponsesEPRs.BOTH;
+               }
+               if(either || (anon && nonAnon)){
+                       return ResponsesEPRs.EITHER;
+               }
+               if(anon){
+                       return ResponsesEPRs.ANONYMOUS;
+               }
+               if(nonAnon){
+                       return ResponsesEPRs.NON_ANONYMOUS;
+               }
+               return ResponsesEPRs.NONE;
        }
 
 }

Modified: 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/NormalisedAddressingAssertion.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/NormalisedAddressingAssertion.java?view=diff&rev=540171&r1=540170&r2=540171
==============================================================================
--- 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/NormalisedAddressingAssertion.java
 (original)
+++ 
webservices/axis2/scratch/java/davidillsley/src/main/java/org/apache/axis2/addressing/policy/impl/NormalisedAddressingAssertion.java
 Mon May 21 08:27:47 2007
@@ -32,6 +32,8 @@
        private Policy normaliseNestedPolicy;
        ArrayList<OMAttribute> nonoptatts;
        List<Assertion> assertions;
+       boolean nonAnonymousAssertionFound;
+       boolean anonymoysAssertionFound;
        public NormalisedAddressingAssertion(List<Assertion> assertions, 
ArrayList<OMAttribute> newnonoptatts){
                this.assertions = assertions;
                nonoptatts = newnonoptatts;
@@ -40,6 +42,12 @@
                    ExactlyOne seo = new ExactlyOne();
                    All sall = new All();
                    for(Assertion assertion: assertions){
+                       if(assertion instanceof NonAnonymousAssertion){
+                               nonAnonymousAssertionFound = true;
+                       }
+                       if(assertion instanceof AnonymousAssertion){
+                               anonymoysAssertionFound = true;
+                       }
                        sall.addAssertion(assertion);
                    }
                    seo.addPolicyComponent(sall);
@@ -80,26 +88,36 @@
        }
 
        public boolean isResponseCombinationAllowed(boolean anonymous, boolean 
nonAnonymous) {
-//  TODO reimplement this or re-design the method signature so it more closely
-//             matches the nested assertions
-//             boolean result = true;
-//             if(anonymous){
-//                     result = false;
-//                     for(Assertion a: assertions){
-//                             if(a instanceof AnonymousAssertion){
-//                                     result = true;
-//                             }
-//                     }
-//             }
-//             if(result && nonAnonymous){
-//                     result = false;
-//                     for(Assertion a: assertions){
-//                             if(a instanceof NonAnonymousAssertion){
-//                                     result = true;
-//                             }
-//                     }
-//             }
-//             return result;
+               if(nonAnonymousAssertionFound && anonymoysAssertionFound){
+                       // can't do anything that isn't none...
+                       return false;
+               }
+               if(!nonAnonymousAssertionFound && !anonymoysAssertionFound){
+                       return true;
+               }
+               if(anonymous && !nonAnonymous){
+                       return anonymoysAssertionFound;
+               }
+               if(nonAnonymous && !nonAnonymous){
+                       return nonAnonymousAssertionFound;
+               }
                return false;
+       }
+
+       public ResponsesEPRs getAllowedResponseType() {
+               if(nonAnonymousAssertionFound && anonymoysAssertionFound){
+                       // can't do anything that isn't none...
+                       return ResponsesEPRs.NONE;
+               }
+               if(!nonAnonymousAssertionFound && !anonymoysAssertionFound){
+                       return ResponsesEPRs.BOTH;
+               }
+               if(anonymoysAssertionFound){
+                       return ResponsesEPRs.ANONYMOUS;
+               }
+               if(nonAnonymousAssertionFound){
+                       return ResponsesEPRs.NON_ANONYMOUS;
+               }
+               return ResponsesEPRs.BOTH;
        }
 }

Copied: 
webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/axis2/addressing/policy/AddressingAssertionTests.java
 (from r540051, 
webservices/axis2/scratch/java/davidillsley/src/test/java/AddressingAssertionTests.java)
URL: 
http://svn.apache.org/viewvc/webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/axis2/addressing/policy/AddressingAssertionTests.java?view=diff&rev=540171&p1=webservices/axis2/scratch/java/davidillsley/src/test/java/AddressingAssertionTests.java&r1=540051&p2=webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/axis2/addressing/policy/AddressingAssertionTests.java&r2=540171
==============================================================================
--- 
webservices/axis2/scratch/java/davidillsley/src/test/java/AddressingAssertionTests.java
 (original)
+++ 
webservices/axis2/scratch/java/davidillsley/src/test/java/org/apache/axis2/addressing/policy/AddressingAssertionTests.java
 Mon May 21 08:27:47 2007
@@ -1,3 +1,4 @@
+package org.apache.axis2.addressing.policy;
 /*
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.



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

Reply via email to