HADOOP-14067. VersionInfo should load version-info.properties from its own classloader. Contributed by Thejas M Nair.
This commit is contained in:
parent
e196d158a2
commit
4bea96f9a8
@ -53,8 +53,7 @@ public static void sleepAtLeastIgnoreInterrupts(long millis) {
|
|||||||
* Convenience method that returns a resource as inputstream from the
|
* Convenience method that returns a resource as inputstream from the
|
||||||
* classpath.
|
* classpath.
|
||||||
* <p>
|
* <p>
|
||||||
* It first attempts to use the Thread's context classloader and if not
|
* Uses the Thread's context classloader to load resource.
|
||||||
* set it uses the class' classloader.
|
|
||||||
*
|
*
|
||||||
* @param resourceName resource to retrieve.
|
* @param resourceName resource to retrieve.
|
||||||
*
|
*
|
||||||
@ -68,6 +67,27 @@ public static InputStream getResourceAsStream(String resourceName)
|
|||||||
throw new IOException("Can not read resource file '" + resourceName +
|
throw new IOException("Can not read resource file '" + resourceName +
|
||||||
"' because class loader of the current thread is null");
|
"' because class loader of the current thread is null");
|
||||||
}
|
}
|
||||||
|
return getResourceAsStream(cl, resourceName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenience method that returns a resource as inputstream from the
|
||||||
|
* classpath using given classloader.
|
||||||
|
* <p>
|
||||||
|
*
|
||||||
|
* @param cl ClassLoader to be used to retrieve resource.
|
||||||
|
* @param resourceName resource to retrieve.
|
||||||
|
*
|
||||||
|
* @throws IOException thrown if resource cannot be loaded
|
||||||
|
* @return inputstream with the resource.
|
||||||
|
*/
|
||||||
|
public static InputStream getResourceAsStream(ClassLoader cl,
|
||||||
|
String resourceName)
|
||||||
|
throws IOException {
|
||||||
|
if (cl == null) {
|
||||||
|
throw new IOException("Can not read resource file '" + resourceName +
|
||||||
|
"' because given class loader is null");
|
||||||
|
}
|
||||||
InputStream is = cl.getResourceAsStream(resourceName);
|
InputStream is = cl.getResourceAsStream(resourceName);
|
||||||
if (is == null) {
|
if (is == null) {
|
||||||
throw new IOException("Can not read resource file '" +
|
throw new IOException("Can not read resource file '" +
|
||||||
@ -75,4 +95,6 @@ public static InputStream getResourceAsStream(String resourceName)
|
|||||||
}
|
}
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,8 @@ protected VersionInfo(String component) {
|
|||||||
String versionInfoFile = component + "-version-info.properties";
|
String versionInfoFile = component + "-version-info.properties";
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
try {
|
try {
|
||||||
is = ThreadUtil.getResourceAsStream(versionInfoFile);
|
is = ThreadUtil.getResourceAsStream(VersionInfo.class.getClassLoader(),
|
||||||
|
versionInfoFile);
|
||||||
info.load(is);
|
info.load(is);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
LoggerFactory.getLogger(getClass()).warn("Could not read '" +
|
LoggerFactory.getLogger(getClass()).warn("Could not read '" +
|
||||||
|
Loading…
Reference in New Issue
Block a user