Author: coheigea Date: Sun Sep 12 12:21:48 2010 New Revision: 996299 URL: http://svn.apache.org/viewvc?rev=996299&view=rev Log: [WSS-245] - WSHandlerConstants.PW_CALLBACK_REF isn't correctly searched for - Test added as well.
Added: webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java - copied, changed from r996298, webservices/wss4j/branches/1_5_x-fixes/test/wssec/TestWSSecurityWSS245.java Modified: webservices/wss4j/trunk/ (props changed) webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java webservices/wss4j/trunk/test/wssec/MyHandler.java Propchange: webservices/wss4j/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sun Sep 12 12:21:48 2010 @@ -1 +1 @@ -/webservices/wss4j/branches/1_5_x-fixes:996180 +/webservices/wss4j/branches/1_5_x-fixes:996180,996298 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=996299&r1=996298&r2=996299&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 Sun Sep 12 12:21:48 2010 @@ -815,27 +815,35 @@ public abstract class WSHandler { RequestData reqData ) throws WSSecurityException { WSPasswordCallback pwCb = null; - CallbackHandler cbHandler = null; - String err = "provided null or empty password"; Object mc = reqData.getMsgContext(); String callback = getString(clsProp, mc); - if (callback != null) { // we have a password callback class + + if (callback != null) { + // we have a password callback class pwCb = readPwViaCallbackClass(callback, username, doAction, reqData); - // Null passwords are not always a problem: if the callback was called to provide a username instead. - } else if ((cbHandler = (CallbackHandler) getProperty(mc, refProp)) != null) { - pwCb = performCallback(cbHandler, username, doAction); } else { - // - // If a callback isn't configured then try to get the password - // from the message context - // - String password = getPassword(mc); - if (password == null) { - throw new WSSecurityException("WSHandler: application " + err); + // Try to obtain a password callback class from the message context or handler options + CallbackHandler cbHandler = (CallbackHandler) getOption(refProp); + if (cbHandler == null) { + cbHandler = (CallbackHandler) getProperty(mc, refProp); + } + if (cbHandler != null) { + pwCb = performCallback(cbHandler, username, doAction); + } else { + // + // If a callback isn't configured then try to get the password + // from the message context + // + String password = getPassword(mc); + if (password == null) { + String err = "provided null or empty password"; + throw new WSSecurityException("WSHandler: application " + err); + } + pwCb = constructPasswordCallback(username, doAction); + pwCb.setPassword(password); } - pwCb = constructPasswordCallback(username, doAction); - pwCb.setPassword(password); } + return pwCb; } Modified: webservices/wss4j/trunk/test/wssec/MyHandler.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/MyHandler.java?rev=996299&r1=996298&r2=996299&view=diff ============================================================================== --- webservices/wss4j/trunk/test/wssec/MyHandler.java (original) +++ webservices/wss4j/trunk/test/wssec/MyHandler.java Sun Sep 12 12:21:48 2010 @@ -23,15 +23,25 @@ import org.apache.ws.security.handler.WS import org.apache.ws.security.handler.RequestData; import org.w3c.dom.Document; +import java.util.HashMap; +import java.util.Map; + /** * A trivial extension of the WSHandler type for use in unit-testing. */ public class MyHandler extends WSHandler { + + private Map optionsMap = new HashMap(); public Object getOption(String key) { - return null; + return optionsMap.get(key); + } + + public void + setOption(String key, Object option) { + optionsMap.put(key, option); } public void Copied: webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java (from r996298, webservices/wss4j/branches/1_5_x-fixes/test/wssec/TestWSSecurityWSS245.java) URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java?p2=webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java&p1=webservices/wss4j/branches/1_5_x-fixes/test/wssec/TestWSSecurityWSS245.java&r1=996298&r2=996299&rev=996299&view=diff ============================================================================== --- webservices/wss4j/branches/1_5_x-fixes/test/wssec/TestWSSecurityWSS245.java (original) +++ webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java Sun Sep 12 12:21:48 2010 @@ -22,11 +22,6 @@ package wssec; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; -import org.apache.axis.Message; -import org.apache.axis.MessageContext; -import org.apache.axis.client.AxisClient; -import org.apache.axis.configuration.NullProvider; -import org.apache.axis.message.SOAPEnvelope; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ws.security.WSPasswordCallback; @@ -37,9 +32,7 @@ import org.apache.ws.security.handler.Re import org.apache.ws.security.handler.WSHandlerConstants; import org.w3c.dom.Document; -import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.InputStream; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; @@ -66,9 +59,6 @@ public class TestWSSecurityWSS245 extend + "</SOAP-ENV:Body>" + "</SOAP-ENV:Envelope>"; - private MessageContext msgContext; - private SOAPEnvelope unsignedEnvelope; - /** * TestWSSecurity constructor * <p/> @@ -90,32 +80,6 @@ public class TestWSSecurityWSS245 extend } /** - * Setup method - * <p/> - * - * @throws java.lang.Exception Thrown when there is a problem in setup - */ - protected void setUp() throws Exception { - AxisClient tmpEngine = new AxisClient(new NullProvider()); - msgContext = new MessageContext(tmpEngine); - unsignedEnvelope = getSOAPEnvelope(); - } - - /** - * Constructs a soap envelope - * <p/> - * - * @return soap envelope - * @throws java.lang.Exception if there is any problem constructing the soap envelope - */ - protected SOAPEnvelope getSOAPEnvelope() throws Exception { - InputStream in = new ByteArrayInputStream(SOAPMSG.getBytes()); - Message msg = new Message(in); - msg.setMessageContext(msgContext); - return msg.getSOAPEnvelope(); - } - - /** * A test for {...@link WSHandler#getPassword(String, int, String, String, RequestData)}, * where the password is obtained from a Callback Handler, which is placed on the * Message Context using a reference. @@ -137,7 +101,7 @@ public class TestWSSecurityWSS245 extend final java.util.Vector actions = new java.util.Vector(); actions.add(new Integer(WSConstants.UT)); - Document doc = unsignedEnvelope.getAsDocument(); + Document doc = SOAPUtil.toSOAPPart(SOAPMSG); MyHandler handler = new MyHandler(); handler.send( WSConstants.UT, @@ -173,7 +137,7 @@ public class TestWSSecurityWSS245 extend final java.util.Vector actions = new java.util.Vector(); actions.add(new Integer(WSConstants.UT)); - Document doc = unsignedEnvelope.getAsDocument(); + Document doc = SOAPUtil.toSOAPPart(SOAPMSG); MyHandler handler = new MyHandler(); handler.setOption(WSHandlerConstants.PW_CALLBACK_REF, new MyCallbackHandler()); handler.send( --------------------------------------------------------------------- To unsubscribe, e-mail: wss4j-dev-unsubscr...@ws.apache.org For additional commands, e-mail: wss4j-dev-h...@ws.apache.org