This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch coheigea/saml-refactor-new
in repository https://gitbox.apache.org/repos/asf/ws-wss4j.git
The following commit(s) were added to refs/heads/coheigea/saml-refactor-new by
this push:
new 7fa4c30dc Relying only on RequestData.getMessageContext() instead of
WSHandler
7fa4c30dc is described below
commit 7fa4c30dcda311c477dd48c6ef20dbff5d8917e6
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Wed Jun 18 16:46:57 2025 +0100
Relying only on RequestData.getMessageContext() instead of WSHandler
---
.../apache/wss4j/dom/action/EncryptionAction.java | 2 +-
.../dom/action/SignatureConfirmationAction.java | 9 ++--
.../org/apache/wss4j/dom/handler/RequestData.java | 7 +--
.../org/apache/wss4j/dom/handler/WSHandler.java | 50 +++++++++-------------
.../org/apache/wss4j/dom/common/CustomAction.java | 7 ++-
.../org/apache/wss4j/dom/common/CustomHandler.java | 18 --------
.../apache/wss4j/dom/handler/CallbackRefTest.java | 2 +-
.../dom/handler/CustomActionProcessorTest.java | 19 ++++----
.../wss4j/dom/message/SignatureCertTest.java | 2 +-
.../apache/wss4j/stax/test/AbstractTestBase.java | 12 ------
10 files changed, 46 insertions(+), 82 deletions(-)
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionAction.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionAction.java
index 029f92634..0c09795c2 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionAction.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionAction.java
@@ -91,7 +91,7 @@ public class EncryptionAction implements Action {
wsEncrypt.setUserInfo(encryptionToken.getUser());
wsEncrypt.setUseThisCert(encryptionToken.getCertificate());
Crypto crypto = encryptionToken.getCrypto();
- boolean enableRevocation =
Boolean.parseBoolean(handler.getStringOption(WSHandlerConstants.ENABLE_REVOCATION));
+ boolean enableRevocation =
Boolean.parseBoolean((String)reqData.getMsgContext().get(WSHandlerConstants.ENABLE_REVOCATION));
if (enableRevocation && crypto != null) {
CryptoType cryptoType = new CryptoType(CryptoType.TYPE.ALIAS);
cryptoType.setAlias(encryptionToken.getUser());
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureConfirmationAction.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureConfirmationAction.java
index 6bffe2517..66fd8e011 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureConfirmationAction.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureConfirmationAction.java
@@ -43,9 +43,7 @@ public class SignatureConfirmationAction implements Action {
LOG.debug("Perform Signature confirmation");
List<WSHandlerResult> results =
- (List<WSHandlerResult>) handler.getProperty(
- reqData.getMsgContext(), WSHandlerConstants.RECV_RESULTS
- );
+ (List<WSHandlerResult>)
reqData.getMsgContext().get(WSHandlerConstants.RECV_RESULTS);
if (results == null || results.isEmpty()) {
return;
}
@@ -90,9 +88,8 @@ public class SignatureConfirmationAction implements Action {
wsc.build(null);
signatureParts.add(new WSEncryptionPart(wsc.getId()));
}
- handler.setProperty(
- reqData.getMsgContext(), WSHandlerConstants.SIG_CONF_DONE, ""
- );
+
+ reqData.getMsgContext().put(WSHandlerConstants.SIG_CONF_DONE, "");
}
}
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/RequestData.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/RequestData.java
index 7ddf9da8e..f1029fa99 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/RequestData.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/RequestData.java
@@ -23,6 +23,7 @@ import java.security.Provider;
import java.security.cert.Certificate;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -54,7 +55,7 @@ import org.apache.xml.security.encryption.Serializer;
*/
public class RequestData {
- private Object msgContext;
+ private Map<String, Object> msgContext = Collections.emptyMap();
private SOAPConstants soapConstants;
private String actor;
private String username;
@@ -197,11 +198,11 @@ public class RequestData {
private boolean expandXopInclude;
- public Object getMsgContext() {
+ public Map<String, Object> getMsgContext() {
return msgContext;
}
- public void setMsgContext(Object msgContext) {
+ public void setMsgContext(Map<String, Object> msgContext) {
this.msgContext = msgContext;
}
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/WSHandler.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/WSHandler.java
index 7f01d3bfa..c23b8e22b 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/WSHandler.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/WSHandler.java
@@ -86,7 +86,7 @@ public abstract class WSHandler {
reqData.setWsDocInfo(wsDocInfo);
}
- Object mc = reqData.getMsgContext();
+ Map<String, Object> mc = reqData.getMsgContext();
reqData.setEncodePasswords(
decodeBooleanConfigValue(mc,
WSHandlerConstants.USE_ENCODED_PASSWORDS, false)
);
@@ -196,7 +196,7 @@ public abstract class WSHandler {
*/
if (reqData.isEnableSignatureConfirmation() && !isRequest) {
String done =
- (String)getProperty(reqData.getMsgContext(),
WSHandlerConstants.SIG_CONF_DONE);
+
(String)reqData.getMsgContext().get(WSHandlerConstants.SIG_CONF_DONE);
if (done == null) {
wssConfig.getAction(WSConstants.SC).execute(this, null,
reqData);
}
@@ -251,12 +251,10 @@ public abstract class WSHandler {
&& isRequest && !reqData.getSignatureValues().isEmpty()) {
@SuppressWarnings("unchecked")
Set<Integer> savedSignatures =
- (Set<Integer>)getProperty(reqData.getMsgContext(),
WSHandlerConstants.SEND_SIGV);
+
(Set<Integer>)reqData.getMsgContext().get(WSHandlerConstants.SEND_SIGV);
if (savedSignatures == null) {
savedSignatures = new HashSet<>();
- setProperty(
- reqData.getMsgContext(), WSHandlerConstants.SEND_SIGV,
savedSignatures
- );
+ reqData.getMsgContext().put(WSHandlerConstants.SEND_SIGV,
savedSignatures);
}
for (byte[] signatureValue : reqData.getSignatureValues()) {
savedSignatures.add(Arrays.hashCode(signatureValue));
@@ -303,7 +301,7 @@ public abstract class WSHandler {
reqData.setWssConfig(wssConfig);
}
- Object mc = reqData.getMsgContext();
+ Map<String, Object> mc = reqData.getMsgContext();
boolean enableSigConf =
decodeBooleanConfigValue(mc,
WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION, false);
reqData.setEnableSignatureConfirmation(
@@ -427,7 +425,7 @@ public abstract class WSHandler {
// First get all Signature values stored during sending the request
//
Set<Integer> savedSignatures =
- (Set<Integer>) getProperty(reqData.getMsgContext(),
WSHandlerConstants.SEND_SIGV);
+ (Set<Integer>)
reqData.getMsgContext().get(WSHandlerConstants.SEND_SIGV);
//
// Now get all results that hold a SignatureConfirmation element from
// the current run of receiver (we can have more than one run: if we
@@ -489,7 +487,7 @@ public abstract class WSHandler {
protected void decodeUTParameter(RequestData reqData)
throws WSSecurityException {
- Object mc = reqData.getMsgContext();
+ Map<String, Object> mc = reqData.getMsgContext();
String type = getString(WSHandlerConstants.PASSWORD_TYPE, mc);
if (type != null) {
@@ -534,7 +532,7 @@ public abstract class WSHandler {
// the RequestData object
protected void decodeSignatureParameter(RequestData reqData)
throws WSSecurityException {
- Object mc = reqData.getMsgContext();
+ Map<String, Object> mc = reqData.getMsgContext();
String signatureUser = getString(WSHandlerConstants.SIGNATURE_USER,
mc);
SignatureActionToken actionToken = reqData.getSignatureToken();
@@ -635,7 +633,7 @@ public abstract class WSHandler {
}
protected void decodeAlgorithmSuite(RequestData reqData) throws
WSSecurityException {
- Object mc = reqData.getMsgContext();
+ Map<String, Object> mc = reqData.getMsgContext();
if (mc == null || reqData.getAlgorithmSuite() != null) {
return;
}
@@ -677,7 +675,7 @@ public abstract class WSHandler {
// the RequestData object
protected void decodeEncryptionParameter(RequestData reqData)
throws WSSecurityException {
- Object mc = reqData.getMsgContext();
+ Map<String, Object> mc = reqData.getMsgContext();
EncryptionActionToken actionToken = reqData.getEncryptionToken();
if (actionToken == null) {
@@ -727,7 +725,7 @@ public abstract class WSHandler {
getString(WSHandlerConstants.ENC_KEY_DERIVATION_FUNCTION, mc);
actionToken.setKeyDerivationFunction(encKeyDerivationAlgorithm);
- Object obj = getProperty(mc,
WSHandlerConstants.ENC_KEY_DERIVATION_PARAMS);
+ Object obj = mc.get(WSHandlerConstants.ENC_KEY_DERIVATION_PARAMS);
if (obj instanceof KeyDerivationParameters) {
actionToken.setKeyDerivationParameters((KeyDerivationParameters)obj);
}
@@ -864,7 +862,7 @@ public abstract class WSHandler {
}
protected boolean decodeBooleanConfigValue(
- Object messageContext, String configTag, boolean defaultToTrue
+ Map<String, Object> messageContext, String configTag, boolean
defaultToTrue
) throws WSSecurityException {
String value = getString(configTag, messageContext);
@@ -963,7 +961,7 @@ public abstract class WSHandler {
String cryptoPropertyRefId,
RequestData requestData
) throws WSSecurityException {
- Object mc = requestData.getMsgContext();
+ Map<String, Object> mc = requestData.getMsgContext();
Crypto crypto = null;
//
@@ -973,7 +971,7 @@ public abstract class WSHandler {
if (refId != null) {
crypto = cryptos.get(refId);
if (crypto == null) {
- Object obj = getProperty(mc, refId);
+ Object obj = mc.get(refId);
if (obj instanceof Properties) {
crypto = CryptoFactory.getInstance((Properties)obj,
Loader.getClassLoader(CryptoFactory.class),
@@ -1049,10 +1047,10 @@ public abstract class WSHandler {
String callbackHandlerRef,
RequestData requestData
) throws WSSecurityException {
- Object mc = requestData.getMsgContext();
+ Map<String, Object> mc = requestData.getMsgContext();
CallbackHandler cbHandler = (CallbackHandler)
getOption(callbackHandlerRef);
if (cbHandler == null) {
- cbHandler = (CallbackHandler) getProperty(mc, callbackHandlerRef);
+ cbHandler = (CallbackHandler) mc.get(callbackHandlerRef);
}
if (cbHandler == null) {
String callback = getString(callbackHandlerClass, mc);
@@ -1125,8 +1123,8 @@ public abstract class WSHandler {
}
}
if (passwordEncryptor == null) {
- Object mc = requestData.getMsgContext();
- Object o = getProperty(mc,
WSHandlerConstants.PASSWORD_ENCRYPTOR_INSTANCE);
+ Map<String, Object> mc = requestData.getMsgContext();
+ Object o = mc.get(WSHandlerConstants.PASSWORD_ENCRYPTOR_INSTANCE);
if (o instanceof PasswordEncryptor) {
passwordEncryptor = (PasswordEncryptor) o;
}
@@ -1201,9 +1199,7 @@ public abstract class WSHandler {
return;
}
List<WSHandlerResult> results =
- (List<WSHandlerResult>) getProperty(
- reqData.getMsgContext(), WSHandlerConstants.RECV_RESULTS
- );
+ (List<WSHandlerResult>)
reqData.getMsgContext().get(WSHandlerConstants.RECV_RESULTS);
if (results == null) {
return;
}
@@ -1335,7 +1331,7 @@ public abstract class WSHandler {
* @return the value found.
* @throws IllegalArgumentException if <code>key</code> is null.
*/
- public String getString(String key, Object mc) {
+ public String getString(String key, Map<String, Object> mc) {
if (key == null) {
throw new IllegalArgumentException("Key cannot be null");
}
@@ -1346,7 +1342,7 @@ public abstract class WSHandler {
if (mc == null) {
throw new IllegalArgumentException("Message context cannot be
null");
}
- return (String) getProperty(mc, key);
+ return (String) mc.get(key);
}
@@ -1379,9 +1375,5 @@ public abstract class WSHandler {
}
public abstract Object getOption(String key);
- public abstract Object getProperty(Object msgContext, String key);
-
- public abstract void setProperty(Object msgContext, String key,
- Object value);
}
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomAction.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomAction.java
index 68b959370..5949753d1 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomAction.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomAction.java
@@ -20,6 +20,9 @@
package org.apache.wss4j.dom.common;
import org.apache.wss4j.dom.action.Action;
+
+import java.util.Map;
+
import org.apache.wss4j.common.SecurityActionToken;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.dom.handler.WSHandler;
@@ -39,8 +42,8 @@ public class CustomAction implements Action {
//
// leave a breadcrumb, if asked...
//
- if (reqData.getMsgContext().equals("bread")) {
- reqData.setMsgContext("crumb");
+ if (reqData.getMsgContext().containsKey("bread")) {
+ reqData.setMsgContext(Map.of("bread", "crumb"));
}
}
}
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomHandler.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomHandler.java
index 8023e203e..e26a3d2cd 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomHandler.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomHandler.java
@@ -49,24 +49,6 @@ public class CustomHandler extends WSHandler {
optionsMap.put(key, option);
}
- @SuppressWarnings("unchecked")
- public void
- setProperty(
- Object ctx,
- String key,
- Object value
- ) {
- ((Map<String, Object>)ctx).put(key, value);
- }
-
- public Object
- getProperty(Object ctx, String key) {
- if (ctx instanceof Map<?,?>) {
- return ((Map<?,?>)ctx).get(key);
- }
- return null;
- }
-
public void send(
Document doc,
RequestData reqData,
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/CallbackRefTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/CallbackRefTest.java
index 5b3b9f094..034479b52 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/CallbackRefTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/CallbackRefTest.java
@@ -100,7 +100,7 @@ public class CallbackRefTest {
reqData.setWssConfig(cfg);
reqData.setUsername("alice");
reqData.setPwType(WSConstants.PASSWORD_TEXT);
- reqData.setMsgContext(new java.util.TreeMap<String, String>());
+ reqData.setMsgContext(new java.util.TreeMap<String, Object>());
final java.util.List<Integer> actions = new java.util.ArrayList<>();
actions.add(WSConstants.UT);
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/CustomActionProcessorTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/CustomActionProcessorTest.java
index cfef5e934..c5377d348 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/CustomActionProcessorTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/CustomActionProcessorTest.java
@@ -41,6 +41,7 @@ import org.w3c.dom.Document;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -166,15 +167,15 @@ public class CustomActionProcessorTest {
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
CustomHandler handler = new CustomHandler();
- reqData.setMsgContext("bread");
- assertEquals(reqData.getMsgContext(), "bread");
+ reqData.setMsgContext(Map.of("bread", "bread"));
+ assertEquals(reqData.getMsgContext().get("bread"), "bread");
handler.send(
doc,
reqData,
Collections.singletonList(new HandlerAction(action)),
true
);
- assertEquals(reqData.getMsgContext(), "crumb");
+ assertEquals(reqData.getMsgContext().get("bread"), "crumb");
}
/**
@@ -193,15 +194,15 @@ public class CustomActionProcessorTest {
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
CustomHandler handler = new CustomHandler();
- reqData.setMsgContext("bread");
- assertEquals(reqData.getMsgContext(), "bread");
+ reqData.setMsgContext(Map.of("bread", "bread"));
+ assertEquals(reqData.getMsgContext().get("bread"), "bread");
handler.send(
doc,
reqData,
Collections.singletonList(new HandlerAction(action)),
true
);
- assertEquals(reqData.getMsgContext(), "crumb");
+ assertEquals(reqData.getMsgContext().get("bread"), "crumb");
}
/**
@@ -250,15 +251,15 @@ public class CustomActionProcessorTest {
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
CustomHandler handler = new CustomHandler();
- reqData.setMsgContext("bread");
- assertEquals(reqData.getMsgContext(), "bread");
+ reqData.setMsgContext(Map.of("bread", "bread"));
+ assertEquals(reqData.getMsgContext().get("bread"), "bread");
handler.send(
doc,
reqData,
actionList,
true
);
- assertEquals(reqData.getMsgContext(), "crumb");
+ assertEquals(reqData.getMsgContext().get("bread"), "crumb");
if (LOG.isDebugEnabled()) {
LOG.debug("Message:");
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureCertTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureCertTest.java
index edf622b52..41bd128c6 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureCertTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureCertTest.java
@@ -242,7 +242,7 @@ public class SignatureCertTest {
final RequestData reqData = new RequestData();
reqData.setWssConfig(cfg);
reqData.setUsername("wss40");
- java.util.Map<String, String> config = new java.util.TreeMap<>();
+ java.util.Map<String, Object> config = new java.util.TreeMap<>();
config.put(WSHandlerConstants.SIG_PROP_FILE, "wss40.properties");
config.put(WSHandlerConstants.PW_CALLBACK_CLASS,
KeystoreCallbackHandler.class.getName());
config.put(WSHandlerConstants.SIG_KEY_ID, "DirectReference");
diff --git
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
index 3a77de274..b41ee0ca7 100644
---
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
+++
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
@@ -591,18 +591,6 @@ public abstract class AbstractTestBase {
return null;
}
- @SuppressWarnings("unchecked")
- @Override
- public Object getProperty(Object msgContext, String key) {
- return ((Map<String, Object>) msgContext).get(key);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public void setProperty(Object msgContext, String key, Object value) {
- ((Map<String, Object>) msgContext).put(key, value);
- }
-
}
protected class TestSecurityEventListener implements SecurityEventListener
{