mirror of https://github.com/apache/jclouds.git
Fix autovalue class loading in karaf
When Class.forName is called for a class in a different bundle it will fail as the default karaf class loader won't load classes from other bundles. I have fixed this by using the classloader of the original (non-autovalue) type and assuming it will be in the same bundle as the autovalue type (I think this is a reasonable assumtion). So far the only place where I've actually seen this being an issue is when using the jclouds-labs-google provider within karaf. It fails when serialising the Firewall.Rule class within a FirewallOptions object.
This commit is contained in:
parent
a28ebee392
commit
c79b235594
|
@ -132,7 +132,7 @@ public final class DeserializationConstructorAndReflectiveTypeAdapterFactory imp
|
||||||
String autoClassName = type.getRawType().getName().replace('$', '_')
|
String autoClassName = type.getRawType().getName().replace('$', '_')
|
||||||
.replace(packageName + ".", packageName + ".AutoValue_");
|
.replace(packageName + ".", packageName + ".AutoValue_");
|
||||||
try {
|
try {
|
||||||
type = (TypeToken<T>) TypeToken.get(Class.forName(autoClassName));
|
type = (TypeToken<T>) TypeToken.get(type.getRawType().getClassLoader().loadClass(autoClassName));
|
||||||
} catch (ClassNotFoundException ignored) {
|
} catch (ClassNotFoundException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue