You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2010/11/30 21:04:09 UTC
svn commit: r1040748 - in /cxf/branches/2.2.x-fixes: ./
rt/core/src/main/java/org/apache/cxf/bus/spring/
rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/
rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/
Author: dkulp
Date: Tue Nov 30 20:04:08 2010
New Revision: 1040748
URL: http://svn.apache.org/viewvc?rev=1040748&view=rev
Log:
Merged revisions 1040739 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.3.x-fixes
................
r1040739 | dkulp | 2010-11-30 14:53:55 -0500 (Tue, 30 Nov 2010) | 11 lines
Merged revisions 1040728 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1040728 | dkulp | 2010-11-30 14:45:06 -0500 (Tue, 30 Nov 2010) | 3 lines
Update to make sure the proper spring-dm application bundle classloader
is used to load the ws-security related things like properties files and
callbacks and such
........
................
Modified:
cxf/branches/2.2.x-fixes/ (props changed)
cxf/branches/2.2.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java
cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java
cxf/branches/2.2.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.2.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java?rev=1040748&r1=1040747&r2=1040748&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java (original)
+++ cxf/branches/2.2.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/spring/BusApplicationContextResourceResolver.java Tue Nov 30 20:04:08 2010
@@ -62,7 +62,9 @@ public class BusApplicationContextResour
//ignore
}
try {
- if (URL.class.isAssignableFrom(resourceType)) {
+ if (ClassLoader.class.isAssignableFrom(resourceType)) {
+ return resourceType.cast(context.getClassLoader());
+ } else if (URL.class.isAssignableFrom(resourceType)) {
Resource r = context.getResource(resourceName);
if (r != null && r.exists()) {
return resourceType.cast(r.getURL());
Modified: cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java?rev=1040748&r1=1040747&r2=1040748&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java Tue Nov 30 20:04:08 2010
@@ -40,6 +40,7 @@ import org.apache.cxf.helpers.HttpHeader
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.resource.ResourceManager;
import org.apache.cxf.security.SecurityContext;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.service.model.OperationInfo;
@@ -110,39 +111,53 @@ public class OsgiServletController exten
} else {
ei = d.getEndpointInfo();
Bus bus = d.getBus();
- if (null != request.getQueryString()
- && request.getQueryString().length() > 0
- && bus.getExtension(QueryHandlerRegistry.class) != null) {
-
- String ctxUri = request.getPathInfo();
- String baseUri = request.getRequestURL().toString()
- + "?" + request.getQueryString();
- // update the EndPoint Address with request url
- if ("GET".equals(request.getMethod())) {
- updateDests(request);
+ ClassLoader orig = Thread.currentThread().getContextClassLoader();
+ try {
+ ResourceManager manager = bus.getExtension(ResourceManager.class);
+ if (manager != null) {
+ ClassLoader loader = manager.resolveResource("", ClassLoader.class);
+ if (loader != null) {
+ //need to set the context classloader to the loader of the bundle
+ Thread.currentThread().setContextClassLoader(loader);
+ }
}
-
- for (QueryHandler qh : bus.getExtension(QueryHandlerRegistry.class).getHandlers()) {
- if (qh.isRecognizedQuery(baseUri, ctxUri, ei)) {
-
- res.setContentType(qh.getResponseContentType(baseUri, ctxUri));
- OutputStream out = res.getOutputStream();
- try {
- qh.writeResponse(baseUri, ctxUri, ei, out);
- out.flush();
- return;
- } catch (Exception e) {
- LOG.warning(qh.getClass().getName()
- + " Exception caught writing response: "
- + e.getMessage());
- throw new ServletException(e);
+
+ if (null != request.getQueryString()
+ && request.getQueryString().length() > 0
+ && bus.getExtension(QueryHandlerRegistry.class) != null) {
+
+ String ctxUri = request.getPathInfo();
+ String baseUri = request.getRequestURL().toString()
+ + "?" + request.getQueryString();
+ // update the EndPoint Address with request url
+ if ("GET".equals(request.getMethod())) {
+ updateDests(request);
+ }
+
+ for (QueryHandler qh : bus.getExtension(QueryHandlerRegistry.class).getHandlers()) {
+ if (qh.isRecognizedQuery(baseUri, ctxUri, ei)) {
+
+ res.setContentType(qh.getResponseContentType(baseUri, ctxUri));
+ OutputStream out = res.getOutputStream();
+ try {
+ qh.writeResponse(baseUri, ctxUri, ei, out);
+ out.flush();
+ return;
+ } catch (Exception e) {
+ LOG.warning(qh.getClass().getName()
+ + " Exception caught writing response: "
+ + e.getMessage());
+ throw new ServletException(e);
+ }
}
}
+ } else if ("/".equals(address) || address.length() == 0) {
+ updateDests(request);
}
- } else if ("/".equals(address) || address.length() == 0) {
- updateDests(request);
+ invokeDestination(request, res, d);
+ } finally {
+ Thread.currentThread().setContextClassLoader(orig);
}
- invokeDestination(request, res, d);
}
} catch (IOException e) {
Modified: cxf/branches/2.2.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java?rev=1040748&r1=1040747&r2=1040748&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java (original)
+++ cxf/branches/2.2.x-fixes/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java Tue Nov 30 20:04:08 2010
@@ -18,7 +18,9 @@
*/
package org.apache.cxf.ws.security.wss4j;
+import java.io.InputStream;
import java.net.URI;
+import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -30,10 +32,12 @@ import javax.xml.namespace.QName;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.SoapInterceptor;
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.phase.PhaseInterceptor;
+import org.apache.cxf.resource.ResourceManager;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSSecurityException;
import org.apache.ws.security.components.crypto.Crypto;
@@ -175,8 +179,7 @@ public abstract class AbstractWSS4JInter
if (sigPropFile != null) {
crypto = cryptoTable.get(sigPropFile);
if (crypto == null) {
- crypto = CryptoFactory.getInstance(sigPropFile, this
- .getClassLoader(reqData.getMsgContext()));
+ crypto = loadCryptoFromPropertiesFile(sigPropFile, reqData);
cryptoTable.put(sigPropFile, crypto);
}
} else if (getString(WSHandlerConstants.SIG_PROP_REF_ID, reqData
@@ -200,6 +203,37 @@ public abstract class AbstractWSS4JInter
}
return crypto;
}
+
+ protected Crypto loadCryptoFromPropertiesFile(String propFilename, RequestData reqData) {
+ ClassLoader orig = Thread.currentThread().getContextClassLoader();
+ try {
+ try {
+ URL url = ClassLoaderUtils.getResource(propFilename, this.getClass());
+ if (url == null) {
+ ResourceManager manager = ((Message)reqData.getMsgContext()).getExchange()
+ .getBus().getExtension(ResourceManager.class);
+ ClassLoader loader = manager.resolveResource("", ClassLoader.class);
+ if (loader != null) {
+ Thread.currentThread().setContextClassLoader(loader);
+ }
+ url = manager.resolveResource(propFilename, URL.class);
+ }
+ if (url != null) {
+ Properties props = new Properties();
+ InputStream in = url.openStream();
+ props.load(in);
+ in.close();
+ return CryptoFactory.getInstance(props,
+ this.getClassLoader(reqData.getMsgContext()));
+ }
+ } catch (Exception e) {
+ //ignore
+ }
+ return CryptoFactory.getInstance(propFilename, this.getClassLoader(reqData.getMsgContext()));
+ } finally {
+ Thread.currentThread().setContextClassLoader(orig);
+ }
+ }
protected Crypto loadDecryptionCrypto(RequestData reqData)
throws WSSecurityException {
@@ -210,8 +244,7 @@ public abstract class AbstractWSS4JInter
if (decPropFile != null) {
crypto = cryptoTable.get(decPropFile);
if (crypto == null) {
- crypto = CryptoFactory.getInstance(decPropFile, this
- .getClassLoader(reqData.getMsgContext()));
+ crypto = loadCryptoFromPropertiesFile(decPropFile, reqData);
cryptoTable.put(decPropFile, crypto);
}
} else if (getString(WSHandlerConstants.DEC_PROP_REF_ID, reqData
@@ -249,8 +282,7 @@ public abstract class AbstractWSS4JInter
if (encPropFile != null) {
crypto = cryptoTable.get(encPropFile);
if (crypto == null) {
- crypto = CryptoFactory.getInstance(encPropFile, this
- .getClassLoader(reqData.getMsgContext()));
+ crypto = loadCryptoFromPropertiesFile(encPropFile, reqData);
cryptoTable.put(encPropFile, crypto);
}
} else if (getString(WSHandlerConstants.ENC_PROP_REF_ID, reqData