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

changeset 5
e0e108e77052
parent 0
fb9019fb1bf7
equal deleted inserted replaced
0:c5128fb046ba 1:c53be8a942e9
52 * @return a {@link URL} or null if resource is not found 52 * @return a {@link URL} or null if resource is not found
53 */ 53 */
54 public static URL getResource(String name) { 54 public static URL getResource(String name) {
55 URL resource = null; 55 URL resource = null;
56 try { 56 try {
57 // Hack to bootstrap a multithreaded class loader context
58 if (Thread.currentThread().getContextClassLoader() == null)
59 Thread.currentThread().setContextClassLoader(ResourceLoader.class.getClassLoader());
57 resource = Thread.currentThread().getContextClassLoader().getResource(name); 60 resource = Thread.currentThread().getContextClassLoader().getResource(name);
61
62 if (resource == null) // Flawed build path for assets, try again
63 resource = Thread.currentThread().getContextClassLoader().getResource("/" + name);
58 } 64 }
59 catch (SecurityException e) { 65 catch (SecurityException e) {
60 LOG.info("Unable to access context classloader, using default. " + e.getMessage()); 66 LOG.info("Unable to access context classloader, using default. " + e.getMessage());
67 }
68 catch (Exception e) {
69 LOG.info("General context classloader error, using default. " + e.getMessage());
61 } 70 }
62 if (resource == null) { 71 if (resource == null) {
63 resource = ResourceLoader.class.getResource("/" + name); 72 resource = ResourceLoader.class.getResource("/" + name);
64 } 73 }
65 return resource; 74 return resource;
72 * @return an {@link InputStream} or null if resource is not found 81 * @return an {@link InputStream} or null if resource is not found
73 */ 82 */
74 public static InputStream getResourceAsStream(String name) { 83 public static InputStream getResourceAsStream(String name) {
75 InputStream stream = null; 84 InputStream stream = null;
76 try { 85 try {
86 // Hack to bootstrap a multithreaded class loader context
87 if (Thread.currentThread().getContextClassLoader() == null)
88 Thread.currentThread().setContextClassLoader(ResourceLoader.class.getClassLoader());
77 stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(name); 89 stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
90 if (stream == null)
91 stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/" + name);
78 } 92 }
79 catch (SecurityException e) { 93 catch (SecurityException e) {
80 LOG.info("Unable to access context classloader, using default. " + e.getMessage()); 94 LOG.info("Unable to access context classloader, using default. " + e.getMessage());
95 }
96 catch (Exception e) {
97 LOG.info("General context classloader error, using default. " + e.getMessage());
81 } 98 }
82 if (stream == null) { 99 if (stream == null) {
83 stream = ResourceLoader.class.getResourceAsStream("/" + name); 100 stream = ResourceLoader.class.getResourceAsStream("/" + name);
84 } 101 }
85 return stream; 102 return stream;

mercurial