Author: sergeyb
Date: Fri Aug 2 13:33:48 2013
New Revision: 1509700
URL: http://svn.apache.org/r1509700
Log:
Trying to load Crypto with URI or File if other attempts fail
Modified:
cxf/trunk/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/common/CryptoLoader.java
cxf/trunk/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
Modified:
cxf/trunk/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/common/CryptoLoader.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/common/CryptoLoader.java?rev=1509700&r1=1509699&r2=1509700&view=diff
==============================================================================
---
cxf/trunk/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/common/CryptoLoader.java
(original)
+++
cxf/trunk/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/common/CryptoLoader.java
Fri Aug 2 13:33:48 2013
@@ -19,8 +19,10 @@
package org.apache.cxf.rs.security.common;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
import java.net.URL;
import java.util.Map;
import java.util.Properties;
@@ -63,15 +65,18 @@ public class CryptoLoader {
if (o == null) {
return null;
}
- Map<Object, Crypto> cryptoCache = getCryptoCache(message);
- crypto = cryptoCache != null ? cryptoCache.get(o) : null;
+
+ String propResourceName = (String)o;
+
+ Map<Object, Crypto> cryptoCache = getCryptoCache(message);
+ crypto = cryptoCache != null ? cryptoCache.get(propResourceName) :
null;
if (crypto != null) {
return crypto;
}
ClassLoaderHolder orig = null;
try {
- URL url = ClassLoaderUtils.getResource((String)o, this.getClass());
+ URL url = ClassLoaderUtils.getResource(propResourceName,
this.getClass());
if (url == null) {
ResourceManager manager = message.getExchange()
.getBus().getExtension(ResourceManager.class);
@@ -79,12 +84,27 @@ public class CryptoLoader {
if (loader != null) {
orig =
ClassLoaderUtils.setThreadContextClassloader(loader);
}
- url = manager.resolveResource((String)o, URL.class);
+ url = manager.resolveResource(propResourceName, URL.class);
+ }
+ if (url == null) {
+ URI propResourceUri = URI.create(propResourceName);
+ if (propResourceUri.getScheme() != null) {
+ url = propResourceUri.toURL();
+ } else {
+ try {
+ File f = new File(propResourceUri.toString());
+ if (f.exists()) {
+ url = f.toURI().toURL();
+ }
+ } catch (IOException ex) {
+ // let CryptoFactory try to load it
+ }
+ }
}
if (url != null) {
crypto = loadCryptoFromURL(url);
} else {
- crypto = CryptoFactory.getInstance((String)o);
+ crypto = CryptoFactory.getInstance(propResourceName,
Thread.currentThread().getContextClassLoader());
}
if (cryptoCache != null) {
cryptoCache.put(o, crypto);
Modified:
cxf/trunk/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java?rev=1509700&r1=1509699&r2=1509700&view=diff
==============================================================================
---
cxf/trunk/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
(original)
+++
cxf/trunk/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/xml/JAXRSXmlSecTest.java
Fri Aug 2 13:33:48 2013
@@ -56,10 +56,22 @@ public class JAXRSXmlSecTest extends Abs
@Test
public void testPostBookWithEnvelopedSigAndProxy() throws Exception {
String address = "https://localhost:" + PORT + "/xmlsig";
- doTestSignatureProxy(address, false);
+ doTestSignatureProxy(address, false, null);
}
- private void doTestSignatureProxy(String address, boolean enveloping) {
+ @Test
+ public void testPostBookWithEnvelopedSigAndProxy2() throws Exception {
+ String address = "https://localhost:" + PORT + "/xmlsig";
+ doTestSignatureProxy(address, false, "");
+ }
+
+ @Test
+ public void testPostBookEnvelopingSigAndProxy() throws Exception {
+ String address = "https://localhost:" + PORT + "/xmlsig";
+ doTestSignatureProxy(address, true, "file:");
+ }
+
+ private void doTestSignatureProxy(String address, boolean enveloping,
String cryptoUrlPrefix) throws Exception {
JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
bean.setAddress(address);
@@ -72,8 +84,12 @@ public class JAXRSXmlSecTest extends Abs
properties.put("ws-security.callback-handler",
"org.apache.cxf.systest.jaxrs.security.saml.KeystorePasswordCallback");
properties.put("ws-security.signature.username", "alice");
- properties.put("ws-security.signature.properties",
-
"org/apache/cxf/systest/jaxrs/security/alice.properties");
+
+ String cryptoUrl =
"org/apache/cxf/systest/jaxrs/security/alice.properties";
+ if (cryptoUrlPrefix != null) {
+ cryptoUrl = cryptoUrlPrefix + this.getClass().getResource("/" +
cryptoUrl).toURI().getPath();
+ }
+ properties.put("ws-security.signature.properties", cryptoUrl);
bean.setProperties(properties);
XmlSigOutInterceptor sigInterceptor = new XmlSigOutInterceptor();
if (enveloping) {