Author: thilinamb Date: Tue Mar 1 06:59:15 2011 New Revision: 1075683 URL: http://svn.apache.org/viewvc?rev=1075683&view=rev Log: - Registering HttpsTokenBuilder as a neethi assertion builder. - Adding a null check before processing policy alternatives defined for HttpsTokens to support the <HttpsToken/> assertion.
Modified: axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/HttpsTokenBuilder.java axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/TransportTokenBuilder.java Modified: axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder?rev=1075683&r1=1075682&r2=1075683&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder Tue Mar 1 06:59:15 2011 @@ -44,4 +44,5 @@ org.apache.ws.secpolicy12.builders.Secur org.apache.ws.secpolicy12.builders.SymmetricBindingBuilder org.apache.ws.secpolicy12.builders.IssuedTokenBuilder org.apache.ws.secpolicy12.builders.RequiredElementsBuilder -org.apache.ws.secpolicy12.builders.ContentEncryptedElementsBuilder \ No newline at end of file +org.apache.ws.secpolicy12.builders.ContentEncryptedElementsBuilder +org.apache.ws.secpolicy12.builders.HttpsTokenBuilder \ No newline at end of file Modified: axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/HttpsTokenBuilder.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/HttpsTokenBuilder.java?rev=1075683&r1=1075682&r2=1075683&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/HttpsTokenBuilder.java (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/HttpsTokenBuilder.java Tue Mar 1 06:59:15 2011 @@ -15,21 +15,20 @@ */ package org.apache.ws.secpolicy12.builders; -import java.util.Iterator; -import java.util.List; - -import javax.xml.namespace.QName; - import org.apache.axiom.om.OMElement; import org.apache.neethi.Assertion; import org.apache.neethi.AssertionBuilderFactory; import org.apache.neethi.Policy; import org.apache.neethi.PolicyEngine; import org.apache.neethi.builders.AssertionBuilder; -import org.apache.ws.secpolicy.SPConstants; import org.apache.ws.secpolicy.SP12Constants; +import org.apache.ws.secpolicy.SPConstants; import org.apache.ws.secpolicy.model.HttpsToken; +import javax.xml.namespace.QName; +import java.util.Iterator; +import java.util.List; + /** * This is a standard assertion builder implementation for the https token * as specified by the ws security policy 1.2 specification. In order for this builder to be used @@ -50,15 +49,17 @@ public class HttpsTokenBuilder implement */ public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException { HttpsToken httpsToken = new HttpsToken(SPConstants.SP_V12); - - Policy policy = PolicyEngine.getPolicy(element.getFirstElement()); - policy = (Policy) policy.normalize(false); - - for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) { - processAlternative((List) iterator.next(), httpsToken); - break; // since there should be only one alternative + + if (element.getFirstElement()!= null) { + Policy policy = PolicyEngine.getPolicy(element.getFirstElement()); + policy = (Policy) policy.normalize(false); + + for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) { + processAlternative((List) iterator.next(), httpsToken); + break; // since there should be only one alternative + } } - + return httpsToken; } Modified: axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/TransportTokenBuilder.java URL: http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/TransportTokenBuilder.java?rev=1075683&r1=1075682&r2=1075683&view=diff ============================================================================== --- axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/TransportTokenBuilder.java (original) +++ axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/TransportTokenBuilder.java Tue Mar 1 06:59:15 2011 @@ -15,69 +15,46 @@ */ package org.apache.ws.secpolicy12.builders; -import java.util.Iterator; -import java.util.List; - -import javax.xml.namespace.QName; - import org.apache.axiom.om.OMElement; import org.apache.neethi.Assertion; import org.apache.neethi.AssertionBuilderFactory; import org.apache.neethi.Policy; -import org.apache.neethi.PolicyContainingAssertion; import org.apache.neethi.PolicyEngine; import org.apache.neethi.builders.AssertionBuilder; -import org.apache.ws.secpolicy.SPConstants; import org.apache.ws.secpolicy.SP12Constants; +import org.apache.ws.secpolicy.SPConstants; import org.apache.ws.secpolicy.model.HttpsToken; import org.apache.ws.secpolicy.model.TransportToken; +import javax.xml.namespace.QName; +import java.util.Iterator; +import java.util.List; + public class TransportTokenBuilder implements AssertionBuilder<OMElement> { - - - + public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException { TransportToken transportToken = new TransportToken(SPConstants.SP_V12); - Policy policy = PolicyEngine.getPolicy(element.getFirstElement()); policy = (Policy) policy.normalize(false); - + for (Iterator iterator = policy.getAlternatives(); iterator.hasNext();) { processAlternative((List) iterator.next(), transportToken); break; // since there should be only one alternative } - + return transportToken; } - + public QName[] getKnownElements() { return new QName[] {SP12Constants.TRANSPORT_TOKEN}; } - + private void processAlternative(List assertions, TransportToken parent) { - for (Iterator iterator = assertions.iterator(); iterator.hasNext();) { Assertion primtive = (Assertion) iterator.next(); QName qname = primtive.getName(); - - if (SP12Constants.HTTPS_TOKEN.equals(qname)) { - HttpsToken httpsToken = new HttpsToken(SPConstants.SP_V12); - Policy child = ((PolicyContainingAssertion)primtive).getPolicy(); - Iterator<List<Assertion>> alts = child.getAlternatives(); - while (alts.hasNext()) { - for (Assertion assertion : alts.next()) { - QName qn = assertion.getName(); - if (SP12Constants.HTTP_BASIC_AUTHENTICATION.equals(qn)) { - httpsToken.setHttpBasicAuthentication(true); - } else if (SP12Constants.HTTP_DIGEST_AUTHENTICATION.equals(qn)) { - httpsToken.setHttpDigestAuthentication(true); - } else if (SP12Constants.REQUIRE_CLIENT_CERTIFICATE.equals(qn)) { - httpsToken.setRequireClientCertificate(true); - } - } - } - - parent.setToken(httpsToken); + if(SP12Constants.HTTPS_TOKEN.equals(qname)){ + parent.setToken((HttpsToken)primtive); } } }