You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by na...@apache.org on 2008/08/05 11:33:57 UTC

svn commit: r682650 - /webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AlgorithmSuiteBuilder.java

Author: nandana
Date: Tue Aug  5 02:33:56 2008
New Revision: 682650

URL: http://svn.apache.org/viewvc?rev=682650&view=rev
Log:
RAMPART-182 Applying the patch from Stefan.
Thanks Stefan.

Modified:
    webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AlgorithmSuiteBuilder.java

Modified: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AlgorithmSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AlgorithmSuiteBuilder.java?rev=682650&r1=682649&r2=682650&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AlgorithmSuiteBuilder.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AlgorithmSuiteBuilder.java Tue Aug  5 02:33:56 2008
@@ -15,9 +15,14 @@
  */
 package org.apache.ws.secpolicy12.builders;
 
+import java.util.Iterator;
+import java.util.List;
+
 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;
@@ -29,16 +34,30 @@
 public class AlgorithmSuiteBuilder implements AssertionBuilder {
         
     public Assertion build(OMElement element, AssertionBuilderFactory factory) throws IllegalArgumentException {
+        
         AlgorithmSuite algorithmSuite = new AlgorithmSuite(SPConstants.SP_V12);
         
-        OMElement policyElem = element.getFirstElement();
+        Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+        policy = (Policy) policy.normalize(false);
+                 
+        Iterator iterAlterns = policy.getAlternatives();
+        List assertions = ((List) iterAlterns.next());
+        
+        processAlternative(assertions, algorithmSuite);
+                
+        return algorithmSuite;
         
+    }
+    
+    private void processAlternative(List assertions, AlgorithmSuite algorithmSuite) {        
+        Iterator iterator = assertions.iterator();
+        Assertion assertion = ((Assertion) iterator.next());
+        String name = assertion.getName().getLocalPart();
         try {
-            algorithmSuite.setAlgorithmSuite(policyElem.getFirstElement().getLocalName());
+            algorithmSuite.setAlgorithmSuite(name);
         } catch (WSSPolicyException e) {
             throw new IllegalArgumentException(e);
         }
-        return algorithmSuite;
     }
     
     public QName[] getKnownElements() {