[jbossws-commits] JBossWS SVN: r15120 - common/trunk/src/main/java/org/jboss/ws/common/utils.
jbossws-commits at lists.jboss.org
jbossws-commits at lists.jboss.org
Tue Oct 18 06:24:09 EDT 2011
Author: alessio.soldano at jboss.com
Date: 2011-10-18 06:24:09 -0400 (Tue, 18 Oct 2011)
New Revision: 15120
Modified:
common/trunk/src/main/java/org/jboss/ws/common/utils/JBossWSEntityResolver.java
Log:
[JBWS-3369] Allow providing a classloader for entities properties file retrieval in JBossWSEntityResolver
Modified: common/trunk/src/main/java/org/jboss/ws/common/utils/JBossWSEntityResolver.java
===================================================================
--- common/trunk/src/main/java/org/jboss/ws/common/utils/JBossWSEntityResolver.java 2011-10-18 10:13:37 UTC (rev 15119)
+++ common/trunk/src/main/java/org/jboss/ws/common/utils/JBossWSEntityResolver.java 2011-10-18 10:24:09 UTC (rev 15120)
@@ -59,19 +59,32 @@
// provide logging
private static final Logger log = Logger.getLogger(JBossWSEntityResolver.class);
+
+ private ClassLoader additionalClassLoader;
public JBossWSEntityResolver()
{
- this("META-INF/jbossws-entities.properties");
+ this(ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader());
}
+ public JBossWSEntityResolver(ClassLoader loader)
+ {
+ this("META-INF/jbossws-entities.properties", loader);
+ }
+
public JBossWSEntityResolver(final String entitiesResource)
{
+ this(entitiesResource, ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader());
+ }
+
+ public JBossWSEntityResolver(final String entitiesResource, final ClassLoader loader)
+ {
super();
+ this.additionalClassLoader = loader;
Properties props = null;
- ClassLoader loader = SecurityActions.getContextClassLoader();
- Map<String, Properties> map = propertiesMap.get(loader);
+ ClassLoader tccl = SecurityActions.getContextClassLoader();
+ Map<String, Properties> map = propertiesMap.get(tccl);
if (map != null && map.containsKey(entitiesResource))
{
props = map.get(entitiesResource);
@@ -81,10 +94,10 @@
if (map == null)
{
map = new ConcurrentHashMap<String, Properties>();
- propertiesMap.put(loader, map);
+ propertiesMap.put(tccl, map);
}
// load entities
- props = loadEntitiesMappingFromClasspath(entitiesResource, loader);
+ props = loadEntitiesMappingFromClasspath(entitiesResource, tccl, this.additionalClassLoader);
if (props.size() == 0)
throw new IllegalArgumentException(BundleUtils.getMessage(bundle, "NO_ENTITIES_MAPPING_DEFINED_IN_RESOURCE_FILE", entitiesResource));
map.put(entitiesResource, props);
@@ -101,16 +114,16 @@
}
}
- private Properties loadEntitiesMappingFromClasspath(final String entitiesResource, final ClassLoader classLoader)
+ private Properties loadEntitiesMappingFromClasspath(final String entitiesResource, final ClassLoader classLoader, final ClassLoader additionalClassLoader)
{
return AccessController.doPrivileged(new PrivilegedAction<Properties>()
{
public Properties run()
{
- //use a delegate classloader: first try lookup using the provided classloader,
- //otherwise use server integration classloader which has the default configuration
- final ClassLoader intCl = ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader();
- InputStream is = new DelegateClassLoader(intCl, classLoader).getResourceAsStream(entitiesResource);
+ //use a delegate classloader: first try lookup using the provided (tccl) classloader,
+ //otherwise use the constructor provided classloader if any (that defaults to the
+ //server integration classloader which should have the default configuration)
+ InputStream is = new DelegateClassLoader(additionalClassLoader, classLoader).getResourceAsStream(entitiesResource);
// get stream
if (is == null)
throw new IllegalArgumentException(BundleUtils.getMessage(bundle, "RESOURCE_NOT_FOUND", entitiesResource ));
@@ -160,7 +173,7 @@
final ClassLoader origLoader = SecurityActions.getContextClassLoader();
try
{
- SecurityActions.setContextClassLoader(ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader());
+ SecurityActions.setContextClassLoader(this.additionalClassLoader);
is = super.loadClasspathResource(resource, trace);
}
finally
More information about the jbossws-commits
mailing list