src/net/fortuna/ical4j/util/ResourceLoader.java

changeset 5
e0e108e77052
parent 0
fb9019fb1bf7
     1.1 --- a/src/net/fortuna/ical4j/util/ResourceLoader.java	Tue Feb 10 19:58:00 2015 +0100
     1.2 +++ b/src/net/fortuna/ical4j/util/ResourceLoader.java	Tue Feb 10 21:32:00 2015 +0100
     1.3 @@ -54,11 +54,20 @@
     1.4  	public static URL getResource(String name) {
     1.5  		URL resource = null;
     1.6  		try {
     1.7 +			// Hack to bootstrap a multithreaded class loader context
     1.8 +			if (Thread.currentThread().getContextClassLoader() == null)
     1.9 +				Thread.currentThread().setContextClassLoader(ResourceLoader.class.getClassLoader());
    1.10  			resource = Thread.currentThread().getContextClassLoader().getResource(name);
    1.11 +
    1.12 +			if (resource == null) // Flawed build path for assets, try again
    1.13 +				resource = Thread.currentThread().getContextClassLoader().getResource("/" + name);
    1.14  		}
    1.15  		catch (SecurityException e) {
    1.16  			LOG.info("Unable to access context classloader, using default. " + e.getMessage());
    1.17  		}
    1.18 +		catch (Exception e) {
    1.19 +			LOG.info("General context classloader error, using default. " + e.getMessage());
    1.20 +		}
    1.21  		if (resource == null) {
    1.22  			resource = ResourceLoader.class.getResource("/" + name);
    1.23  		}
    1.24 @@ -74,11 +83,19 @@
    1.25  	public static InputStream getResourceAsStream(String name) {
    1.26  		InputStream stream = null;
    1.27  		try {
    1.28 +			// Hack to bootstrap a multithreaded class loader context
    1.29 +			if (Thread.currentThread().getContextClassLoader() == null)
    1.30 +				Thread.currentThread().setContextClassLoader(ResourceLoader.class.getClassLoader());
    1.31  			stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
    1.32 +			if (stream == null)
    1.33 +				stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/" + name);
    1.34  		}
    1.35  		catch (SecurityException e) {
    1.36  			LOG.info("Unable to access context classloader, using default. " + e.getMessage());
    1.37  		}
    1.38 +		catch (Exception e) {
    1.39 +			LOG.info("General context classloader error, using default. " + e.getMessage());
    1.40 +		}
    1.41  		if (stream == null) {
    1.42  			stream = ResourceLoader.class.getResourceAsStream("/" + name);
    1.43  		}

mercurial