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 97be721e0 Adding back the getProperty method in WSHandler
97be721e0 is described below
commit 97be721e0ca3ffaf2fe856d5b7bb1c35bd270187
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Tue Jul 1 15:56:55 2025 +0100
Adding back the getProperty method in WSHandler
---
.../org/apache/wss4j/dom/handler/WSHandler.java | 29 ++++++++++++++++------
.../org/apache/wss4j/dom/common/CustomHandler.java | 24 ++++++++++++++++++
.../wss4j/common/saml/dom/CustomHandler.java | 24 ++++++++++++++++++
.../apache/wss4j/stax/test/AbstractTestBase.java | 19 ++++++++++++++
4 files changed, 89 insertions(+), 7 deletions(-)
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 ab4d3db73..762818dd0 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
@@ -264,7 +264,9 @@ public abstract class WSHandler {
(Set<Integer>)reqData.getMsgContext().get(WSHandlerConstants.SEND_SIGV);
if (savedSignatures == null) {
savedSignatures = new HashSet<>();
- reqData.getMsgContext().put(WSHandlerConstants.SEND_SIGV,
savedSignatures);
+ setProperty(
+ reqData.getMsgContext(), WSHandlerConstants.SEND_SIGV,
savedSignatures
+ );
}
for (byte[] signatureValue : reqData.getSignatureValues()) {
savedSignatures.add(Arrays.hashCode(signatureValue));
@@ -460,7 +462,7 @@ public abstract class WSHandler {
// First get all Signature values stored during sending the request
//
Set<Integer> savedSignatures =
- (Set<Integer>)
reqData.getMsgContext().get(WSHandlerConstants.SEND_SIGV);
+ (Set<Integer>) getProperty(reqData.getMsgContext(),
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
@@ -760,7 +762,7 @@ public abstract class WSHandler {
getString(WSHandlerConstants.ENC_KEY_DERIVATION_FUNCTION, mc);
actionToken.setKeyDerivationFunction(encKeyDerivationAlgorithm);
- Object obj = mc.get(WSHandlerConstants.ENC_KEY_DERIVATION_PARAMS);
+ Object obj = getProperty(mc,
WSHandlerConstants.ENC_KEY_DERIVATION_PARAMS);
if (obj instanceof KeyDerivationParameters) {
actionToken.setKeyDerivationParameters((KeyDerivationParameters)obj);
}
@@ -1006,7 +1008,7 @@ public abstract class WSHandler {
if (refId != null) {
crypto = cryptos.get(refId);
if (crypto == null) {
- Object obj = mc.get(refId);
+ Object obj = getProperty(mc, refId);
if (obj instanceof Properties) {
crypto = CryptoFactory.getInstance((Properties)obj,
Loader.getClassLoader(CryptoFactory.class),
@@ -1084,6 +1086,9 @@ public abstract class WSHandler {
) throws WSSecurityException {
Map<String, Object> mc = requestData.getMsgContext();
CallbackHandler cbHandler = (CallbackHandler)
mc.get(callbackHandlerRef);
+ if (cbHandler == null) {
+ cbHandler = (CallbackHandler) getProperty(mc, callbackHandlerRef);
+ }
if (cbHandler == null) {
String callback = getString(callbackHandlerClass, mc);
@@ -1151,7 +1156,7 @@ public abstract class WSHandler {
PasswordEncryptor passwordEncryptor =
requestData.getPasswordEncryptor();
if (passwordEncryptor == null) {
Map<String, Object> mc = requestData.getMsgContext();
- Object o = mc.get(WSHandlerConstants.PASSWORD_ENCRYPTOR_INSTANCE);
+ Object o = getProperty(mc,
WSHandlerConstants.PASSWORD_ENCRYPTOR_INSTANCE);
if (o instanceof PasswordEncryptor) {
passwordEncryptor = (PasswordEncryptor) o;
}
@@ -1226,7 +1231,9 @@ public abstract class WSHandler {
return;
}
List<WSHandlerResult> results =
- (List<WSHandlerResult>)
reqData.getMsgContext().get(WSHandlerConstants.RECV_RESULTS);
+ (List<WSHandlerResult>) getProperty(
+ reqData.getMsgContext(), WSHandlerConstants.RECV_RESULTS
+ );
if (results == null) {
return;
}
@@ -1365,7 +1372,7 @@ public abstract class WSHandler {
if (mc == null) {
throw new IllegalArgumentException("Message context cannot be
null");
}
- return (String) mc.get(key);
+ return (String) getProperty(mc, key);
}
/**
@@ -1380,4 +1387,12 @@ public abstract class WSHandler {
}
}
+ public abstract Object getProperty(Object msgContext, String key);
+
+ public abstract void setProperty(Object msgContext, String key,
+ Object value);
+
+
+ public abstract String getPassword(Object msgContext);
+
}
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 a0501428a..1c028c6d9 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
@@ -28,6 +28,7 @@ import org.apache.wss4j.dom.handler.WSHandlerResult;
import org.w3c.dom.Document;
import java.util.List;
+import java.util.Map;
/**
@@ -80,5 +81,28 @@ public class CustomHandler extends WSHandler {
return checkReceiverResultsAnyOrder(results, actions);
}
+ @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 String getPassword(Object msgContext) {
+ if (msgContext instanceof Map<?,?>) {
+ return (String)((Map<?,?>)msgContext).get("password");
+ }
+ return null;
+ }
+
}
diff --git
a/ws-security-saml/src/test/java/org/apache/wss4j/common/saml/dom/CustomHandler.java
b/ws-security-saml/src/test/java/org/apache/wss4j/common/saml/dom/CustomHandler.java
index 25b3d00e9..c06040bdf 100644
---
a/ws-security-saml/src/test/java/org/apache/wss4j/common/saml/dom/CustomHandler.java
+++
b/ws-security-saml/src/test/java/org/apache/wss4j/common/saml/dom/CustomHandler.java
@@ -28,6 +28,7 @@ import org.apache.wss4j.dom.handler.WSHandlerResult;
import org.w3c.dom.Document;
import java.util.List;
+import java.util.Map;
/**
@@ -80,5 +81,28 @@ public class CustomHandler extends WSHandler {
return checkReceiverResultsAnyOrder(results, actions);
}
+ @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 String getPassword(Object msgContext) {
+ if (msgContext instanceof Map<?,?>) {
+ return (String)((Map<?,?>)msgContext).get("password");
+ }
+ return null;
+ }
+
}
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 db5483c76..0347fb614 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
@@ -586,6 +586,25 @@ public abstract class AbstractTestBase {
return true;
}
+ @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);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public String getPassword(Object msgContext) {
+ return (String) ((Map<String, Object>) msgContext).get("password");
+ }
+
+
}
protected class TestSecurityEventListener implements SecurityEventListener
{