Author: coheigea
Date: Tue Apr 21 13:33:46 2009
New Revision: 767142

URL: http://svn.apache.org/viewvc?rev=767142&view=rev
Log:
[WSS-147] - Added a "checkReceiverResultsAnyOrder" method to WSHandler.
 - Applications can use this instead of checkReceiverResults if they want...I'm 
not changing the Axis Handlers to use it though.


Added:
    webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java   (with 
props)
Modified:
    webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
    webservices/wss4j/trunk/test/wssec/PackageTests.java

Modified: 
webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java?rev=767142&r1=767141&r2=767142&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java 
(original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java 
Tue Apr 21 13:33:46 2009
@@ -302,6 +302,33 @@
 
         return true;
     }
+    
+    protected boolean checkReceiverResultsAnyOrder(Vector wsResult, Vector 
actions) {
+        int resultActions = wsResult.size();
+        Vector actionsClone = (Vector)actions.clone();
+        
+        for (int i = 0; i < resultActions; i++) {
+            final Integer actInt = (Integer) ((WSSecurityEngineResult) wsResult
+                    .get(i)).get(WSSecurityEngineResult.TAG_ACTION);
+            int act = actInt.intValue();
+            if (act == WSConstants.SC || act == WSConstants.BST) {
+                continue;
+            }
+            
+            int foundIndex = actionsClone.indexOf(actInt);
+            if (foundIndex == -1) {
+                return false;
+            } else {
+                actionsClone.remove(foundIndex);
+            }
+        }
+
+        if (!actionsClone.isEmpty()) {
+            return false;
+        }
+
+        return true;
+    }
 
     protected void checkSignatureConfirmation(RequestData reqData,
             Vector wsResult) throws WSSecurityException{

Modified: webservices/wss4j/trunk/test/wssec/PackageTests.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/PackageTests.java?rev=767142&r1=767141&r2=767142&view=diff
==============================================================================
--- webservices/wss4j/trunk/test/wssec/PackageTests.java (original)
+++ webservices/wss4j/trunk/test/wssec/PackageTests.java Tue Apr 21 13:33:46 
2009
@@ -71,6 +71,7 @@
         suite.addTestSuite(TestWSSecurityKerberosTokenProfile.class);
         suite.addTestSuite(TestWSSecurityTimestamp.class);
         suite.addTestSuite(SignatureKeyValueTest.class);
+        suite.addTestSuite(TestWSSecurityResultsOrder.class);
         
         return suite;
     }

Added: webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java?rev=767142&view=auto
==============================================================================
--- webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java (added)
+++ webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java Tue Apr 
21 13:33:46 2009
@@ -0,0 +1,306 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package wssec;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.handler.WSHandler;
+
+
+/**
+ * This is a test for WSS-147. A "checkReceiverResultsAnyOrder" method is 
added to WSHandler
+ * which applications can use if they want.
+ */
+public class TestWSSecurityResultsOrder extends TestCase {
+
+    /**
+     * TestWSSecurity constructor
+     * <p/>
+     * 
+     * @param name name of the test
+     */
+    public TestWSSecurityResultsOrder(String name) {
+        super(name);
+    }
+
+    /**
+     * JUnit suite
+     * <p/>
+     * 
+     * @return a junit test suite
+     */
+    public static Test suite() {
+        return new TestSuite(TestWSSecurityResultsOrder.class);
+    }
+    
+    /**
+     */
+    public void 
+    testOrder() throws Exception {
+        MyHandler handler = new MyHandler();
+        
+        java.util.Vector results = new java.util.Vector();
+        results.add(
+            new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+        );
+        
+        java.util.Vector actions = new java.util.Vector();
+        actions.add(new Integer(WSConstants.UT));
+        actions.add(new Integer(WSConstants.TS));
+        actions.add(new Integer(WSConstants.SIGN));
+        
+        assertTrue (handler.checkResults(results, actions));
+        assertTrue (handler.checkResultsAnyOrder(results, actions));
+    }
+
+    /**
+     */
+    public void 
+    testReverseOrder() throws Exception {
+        MyHandler handler = new MyHandler();
+        
+        java.util.Vector results = new java.util.Vector();
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+        );
+        
+        java.util.Vector actions = new java.util.Vector();
+        actions.add(new Integer(WSConstants.UT));
+        actions.add(new Integer(WSConstants.TS));
+        actions.add(new Integer(WSConstants.SIGN));
+        
+        assertFalse (handler.checkResults(results, actions));
+        assertTrue (handler.checkResultsAnyOrder(results, actions));
+    }
+    
+    /**
+     */
+    public void 
+    testMixedOrder() throws Exception {
+        MyHandler handler = new MyHandler();
+        
+        java.util.Vector results = new java.util.Vector();
+        results.add(
+            new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+        );
+        
+        java.util.Vector actions = new java.util.Vector();
+        actions.add(new Integer(WSConstants.UT));
+        actions.add(new Integer(WSConstants.TS));
+        actions.add(new Integer(WSConstants.SIGN));
+        
+        assertFalse (handler.checkResults(results, actions));
+        assertTrue (handler.checkResultsAnyOrder(results, actions));
+        assertFalse (actions.isEmpty());
+    }
+    
+    /**
+     */
+    public void 
+    testMixedOrder2() throws Exception {
+        MyHandler handler = new MyHandler();
+        
+        java.util.Vector results = new java.util.Vector();
+        results.add(
+            new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+        );
+        
+        java.util.Vector actions = new java.util.Vector();
+        actions.add(new Integer(WSConstants.SIGN));
+        actions.add(new Integer(WSConstants.UT));
+        actions.add(new Integer(WSConstants.TS));
+        
+        assertFalse (handler.checkResults(results, actions));
+        assertTrue (handler.checkResultsAnyOrder(results, actions));
+    }
+    
+    /**
+     */
+    public void 
+    testMissingResult() throws Exception {
+        MyHandler handler = new MyHandler();
+        
+        java.util.Vector results = new java.util.Vector();
+        results.add(
+            new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+        );
+        
+        java.util.Vector actions = new java.util.Vector();
+        actions.add(new Integer(WSConstants.TS));
+        actions.add(new Integer(WSConstants.UT));
+        actions.add(new Integer(WSConstants.SIGN));
+        
+        assertFalse (handler.checkResults(results, actions));
+        assertFalse (handler.checkResultsAnyOrder(results, actions));
+    }
+    
+    /**
+     */
+    public void 
+    testMissingAction() throws Exception {
+        MyHandler handler = new MyHandler();
+        
+        java.util.Vector results = new java.util.Vector();
+        results.add(
+            new WSSecurityEngineResult(WSConstants.UT, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SIGN, (Object)null)
+        );
+        results.add(
+            new WSSecurityEngineResult(WSConstants.SC, (Object)null)
+        );
+        
+        java.util.Vector actions = new java.util.Vector();
+        actions.add(new Integer(WSConstants.TS));
+        actions.add(new Integer(WSConstants.UT));
+        
+        assertFalse (handler.checkResults(results, actions));
+        assertFalse (handler.checkResultsAnyOrder(results, actions));
+    }
+    
+    /**
+     */
+    public void 
+    testNoResult() throws Exception {
+        MyHandler handler = new MyHandler();
+        
+        java.util.Vector results = new java.util.Vector();
+        
+        java.util.Vector actions = new java.util.Vector();
+        actions.add(new Integer(WSConstants.TS));
+        
+        assertFalse (handler.checkResults(results, actions));
+        assertFalse (handler.checkResultsAnyOrder(results, actions));
+    }
+    
+    /**
+     */
+    public void 
+    testNoAction() throws Exception {
+        MyHandler handler = new MyHandler();
+        
+        java.util.Vector results = new java.util.Vector();
+        results.add(
+            new WSSecurityEngineResult(WSConstants.TS, (Object)null)
+        );
+        
+        java.util.Vector actions = new java.util.Vector();
+        
+        assertFalse (handler.checkResults(results, actions));
+        assertFalse (handler.checkResultsAnyOrder(results, actions));
+    }
+    
+    /**
+     * a trivial extension of the WSHandler type
+     */
+    public static class MyHandler extends WSHandler {
+        
+        public Object 
+        getOption(String key) {
+            return null;
+        }
+        
+        public void 
+        setProperty(
+            Object msgContext, 
+            String key, 
+            Object value
+        ) {
+        }
+
+        public Object 
+        getProperty(Object ctx, String key) {
+            return null;
+        }
+    
+        public void 
+        setPassword(Object msgContext, String password) {
+        }
+        
+        public String 
+        getPassword(Object msgContext) {
+            return null;
+        }
+
+        boolean checkResults(
+            java.util.Vector results,
+            java.util.Vector actions
+        ) throws org.apache.ws.security.WSSecurityException {
+            return checkReceiverResults(results, actions);
+        }
+        
+        boolean checkResultsAnyOrder(
+            java.util.Vector results,
+            java.util.Vector actions
+        ) throws org.apache.ws.security.WSSecurityException {
+            return checkReceiverResultsAnyOrder(results, actions);
+        }
+    }
+    
+}

Propchange: webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: webservices/wss4j/trunk/test/wssec/TestWSSecurityResultsOrder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to