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]