public abstract class ResourceYangModuleInfo implements YangModuleInfo {
@Override
public final InputStream openYangTextStream() throws IOException {
- final InputStream ret = ResourceYangModuleInfo.this.getClass()
- .getResourceAsStream(verifyNotNull(resourceName()));
+ final Class<?> subclass = getClass();
+ final String name = verifyNotNull(resourceName(), "%s provided a null resource name", subclass);
+ final InputStream ret = subclass.getResourceAsStream(name);
if (ret == null) {
- throw new IOException("Failed to open resource " + resourceName());
+ String message = "Failed to open resource " + name + " in context of " + subclass;
+ final ClassLoader loader = subclass.getClassLoader();
+ if (!ResourceYangModuleInfo.class.getClassLoader().equals(loader)) {
+ message = message + " (loaded in " + loader + ")";
+ }
+ throw new IOException(message);
}
return ret;
}