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 <cohei...@apache.org> 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 {