Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id F1CC817937 for ; Fri, 13 Mar 2015 07:50:21 +0000 (UTC) Received: (qmail 13248 invoked by uid 500); 13 Mar 2015 07:49:59 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 13186 invoked by uid 500); 13 Mar 2015 07:49:59 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 13136 invoked by uid 99); 13 Mar 2015 07:49:59 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Mar 2015 07:49:59 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 6A7D8E05D0; Fri, 13 Mar 2015 07:49:59 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: asoldano@apache.org To: commits@cxf.apache.org Date: Fri, 13 Mar 2015 07:49:59 -0000 Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: [1/2] cxf git commit: [CXF-6295] create Validator instance when a string with class name is provided Repository: cxf Updated Branches: refs/heads/3.0.x-fixes 4d7bae999 -> 2aa1f7a2f [CXF-6295] create Validator instance when a string with class name is provided Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/58f924e9 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/58f924e9 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/58f924e9 Branch: refs/heads/3.0.x-fixes Commit: 58f924e9a0957083bcbb97aca5985e6fde2b74f9 Parents: 4d7bae9 Author: Alessio Soldano Authored: Thu Mar 12 22:57:33 2015 +0100 Committer: Alessio Soldano Committed: Fri Mar 13 08:46:35 2015 +0100 ---------------------------------------------------------------------- .../wss4j/UsernameTokenInterceptor.java | 29 ++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/58f924e9/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/UsernameTokenInterceptor.java ---------------------------------------------------------------------- diff --git a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/UsernameTokenInterceptor.java b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/UsernameTokenInterceptor.java index 96f0ac8..e9e3c52 100644 --- a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/UsernameTokenInterceptor.java +++ b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/UsernameTokenInterceptor.java @@ -31,6 +31,7 @@ import javax.xml.namespace.QName; import org.w3c.dom.Element; import org.apache.cxf.binding.soap.SoapMessage; +import org.apache.cxf.common.classloader.ClassLoaderUtils; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.headers.Header; import org.apache.cxf.helpers.CastUtils; @@ -205,8 +206,7 @@ public class UsernameTokenInterceptor extends AbstractTokenInterceptor { return getCallback(message); } public Validator getValidator(QName qName) throws WSSecurityException { - Object validator = - message.getContextualProperty(SecurityConstants.USERNAME_TOKEN_VALIDATOR); + Object validator = loadValidator(SecurityConstants.USERNAME_TOKEN_VALIDATOR, message); if (validator == null) { return super.getValidator(qName); } @@ -236,6 +236,31 @@ public class UsernameTokenInterceptor extends AbstractTokenInterceptor { throw WSS4JUtils.createSoapFault(message, message.getVersion(), ex); } } + + private Validator loadValidator(String validatorKey, SoapMessage message) throws WSSecurityException { + Object o = message.getContextualProperty(validatorKey); + if (o == null) { + return null; + } + try { + if (o instanceof Validator) { + return (Validator)o; + } else if (o instanceof Class) { + return (Validator)((Class)o).newInstance(); + } else if (o instanceof String) { + return (Validator)ClassLoaderUtils.loadClass(o.toString(), + UsernameTokenInterceptor.class) + .newInstance(); + } else { + throw new WSSecurityException(WSSecurityException.ErrorCode.FAILURE, + "Cannot load Validator: " + o); + } + } catch (RuntimeException t) { + throw t; + } catch (Exception ex) { + throw new WSSecurityException(WSSecurityException.ErrorCode.FAILURE, ex); + } + } protected UsernameTokenPrincipal parseTokenAndCreatePrincipal(Element tokenElement, boolean bspCompliant) throws WSSecurityException, Base64DecodingException {