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 D73B39845 for ; Fri, 10 Feb 2012 15:05:10 +0000 (UTC) Received: (qmail 7356 invoked by uid 500); 10 Feb 2012 15:05:10 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 7238 invoked by uid 500); 10 Feb 2012 15:05:10 -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 7222 invoked by uid 99); 10 Feb 2012 15:05:09 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 Feb 2012 15:05:09 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 Feb 2012 15:05:06 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id D541123888E4 for ; Fri, 10 Feb 2012 15:04:45 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1242808 - /cxf/branches/2.5.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java Date: Fri, 10 Feb 2012 15:04:45 -0000 To: commits@cxf.apache.org From: coheigea@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120210150445.D541123888E4@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: coheigea Date: Fri Feb 10 15:04:45 2012 New Revision: 1242808 URL: http://svn.apache.org/viewvc?rev=1242808&view=rev Log: [CXF-4052] - Crypto cache issues and the PolicyBasedWSS4JInInterceptor used as a singleton Conflicts: rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java Modified: cxf/branches/2.5.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java Modified: cxf/branches/2.5.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java?rev=1242808&r1=1242807&r2=1242808&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java (original) +++ cxf/branches/2.5.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JInInterceptor.java Fri Feb 10 15:04:45 2012 @@ -123,14 +123,32 @@ public class PolicyBasedWSS4JInIntercept } } - private static Properties getProps(Object o, SoapMessage message) { - Properties properties = getPropertiesCache(message).get(o); + private static Properties getProps(Object o, String propsKey, URL propsURL, SoapMessage message) { + Properties properties = getPropertiesCache(message).get(propsKey); if (properties != null) { return properties; } if (o instanceof Properties) { properties = (Properties)o; - } else if (o instanceof String) { + } else if (propsURL != null) { + try { + properties = new Properties(); + InputStream ins = propsURL.openStream(); + properties.load(ins); + ins.close(); + } catch (IOException e) { + properties = null; + } + } + + if (properties != null) { + getPropertiesCache(message).put(propsKey, properties); + } + return properties; + } + + private URL getPropertiesFileURL(Object o, SoapMessage message) { + if (o instanceof String) { URL url = null; ResourceManager rm = message.getExchange().get(Bus.class).getExtension(ResourceManager.class); url = rm.resolveResource((String)o, URL.class); @@ -141,29 +159,14 @@ public class PolicyBasedWSS4JInIntercept if (url == null) { url = new URL((String)o); } - if (url != null) { - properties = new Properties(); - InputStream ins = url.openStream(); - properties.load(ins); - ins.close(); - } + return url; } catch (IOException e) { - properties = null; + // Do nothing } } else if (o instanceof URL) { - properties = new Properties(); - try { - InputStream ins = ((URL)o).openStream(); - properties.load(ins); - ins.close(); - } catch (IOException e) { - properties = null; - } + return (URL)o; } - if (properties != null) { - getPropertiesCache(message).put(o, properties); - } - return properties; + return null; } private void handleWSS11(AssertionInfoMap aim, SoapMessage message) { @@ -216,15 +219,25 @@ public class PolicyBasedWSS4JInIntercept Object s = message.getContextualProperty(SecurityConstants.SIGNATURE_PROPERTIES); Object e = message.getContextualProperty(SecurityConstants.ENCRYPT_PROPERTIES); if (s != null) { - message.put(WSHandlerConstants.DEC_PROP_REF_ID, "RefId-" + s.toString()); - message.put("RefId-" + s.toString(), getProps(s, message)); + URL propsURL = getPropertiesFileURL(s, message); + String propsKey = s.toString(); + if (propsURL != null) { + propsKey = propsURL.getPath(); + } + message.put(WSHandlerConstants.DEC_PROP_REF_ID, "RefId-" + propsKey); + message.put("RefId-" + propsKey, getProps(s, propsKey, propsURL, message)); if (e == null) { e = s; } } if (e != null) { - message.put(WSHandlerConstants.SIG_PROP_REF_ID, "RefId-" + e.toString()); - message.put("RefId-" + e.toString(), getProps(e, message)); + URL propsURL = getPropertiesFileURL(e, message); + String propsKey = e.toString(); + if (propsURL != null) { + propsKey = propsURL.getPath(); + } + message.put(WSHandlerConstants.SIG_PROP_REF_ID, "RefId-" + propsKey); + message.put("RefId-" + propsKey, getProps(e, propsKey, propsURL, message)); } return action; @@ -243,15 +256,25 @@ public class PolicyBasedWSS4JInIntercept Object s = message.getContextualProperty(SecurityConstants.SIGNATURE_PROPERTIES); Object e = message.getContextualProperty(SecurityConstants.ENCRYPT_PROPERTIES); if (s != null) { - message.put(WSHandlerConstants.DEC_PROP_REF_ID, "RefId-" + s.toString()); - message.put("RefId-" + s.toString(), getProps(s, message)); + URL propsURL = getPropertiesFileURL(s, message); + String propsKey = s.toString(); + if (propsURL != null) { + propsKey = propsURL.getPath(); + } + message.put(WSHandlerConstants.DEC_PROP_REF_ID, "RefId-" + propsKey); + message.put("RefId-" + propsKey, getProps(s, propsKey, propsURL, message)); if (e == null) { e = s; } } if (e != null) { - message.put(WSHandlerConstants.SIG_PROP_REF_ID, "RefId-" + e.toString()); - message.put("RefId-" + e.toString(), getProps(e, message)); + URL propsURL = getPropertiesFileURL(e, message); + String propsKey = e.toString(); + if (propsURL != null) { + propsKey = propsURL.getPath(); + } + message.put(WSHandlerConstants.SIG_PROP_REF_ID, "RefId-" + propsKey); + message.put("RefId-" + propsKey, getProps(e, propsKey, propsURL, message)); } return action; @@ -277,21 +300,41 @@ public class PolicyBasedWSS4JInIntercept if (isRequestor(message)) { if (e != null) { - message.put(WSHandlerConstants.SIG_PROP_REF_ID, "RefId-" + e.toString()); - message.put("RefId-" + e.toString(), getProps(e, message)); + URL propsURL = getPropertiesFileURL(e, message); + String propsKey = e.toString(); + if (propsURL != null) { + propsKey = propsURL.getPath(); + } + message.put(WSHandlerConstants.SIG_PROP_REF_ID, "RefId-" + propsKey); + message.put("RefId-" + propsKey, getProps(e, propsKey, propsURL, message)); } if (s != null) { - message.put(WSHandlerConstants.DEC_PROP_REF_ID, "RefId-" + s.toString()); - message.put("RefId-" + s.toString(), getProps(s, message)); + URL propsURL = getPropertiesFileURL(s, message); + String propsKey = s.toString(); + if (propsURL != null) { + propsKey = propsURL.getPath(); + } + message.put(WSHandlerConstants.DEC_PROP_REF_ID, "RefId-" + propsKey); + message.put("RefId-" + propsKey, getProps(s, propsKey, propsURL, message)); } } else { if (s != null) { - message.put(WSHandlerConstants.SIG_PROP_REF_ID, "RefId-" + s.toString()); - message.put("RefId-" + s.toString(), getProps(s, message)); + URL propsURL = getPropertiesFileURL(s, message); + String propsKey = s.toString(); + if (propsURL != null) { + propsKey = propsURL.getPath(); + } + message.put(WSHandlerConstants.SIG_PROP_REF_ID, "RefId-" + propsKey); + message.put("RefId-" + propsKey, getProps(s, propsKey, propsURL, message)); } if (e != null) { - message.put(WSHandlerConstants.DEC_PROP_REF_ID, "RefId-" + e.toString()); - message.put("RefId-" + e.toString(), getProps(e, message)); + URL propsURL = getPropertiesFileURL(e, message); + String propsKey = e.toString(); + if (propsURL != null) { + propsKey = propsURL.getPath(); + } + message.put(WSHandlerConstants.DEC_PROP_REF_ID, "RefId-" + propsKey); + message.put("RefId-" + propsKey, getProps(e, propsKey, propsURL, message)); } }