Repository: jclouds Updated Branches: refs/heads/master 3b42bafe2 -> 7aad59972
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. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/7aad5997 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/7aad5997 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/7aad5997 Branch: refs/heads/master Commit: 7aad59972186dfee7920ab000195e259aa84a534 Parents: 3b42baf Author: Duncan Grant <[email protected]> Authored: Mon Sep 5 09:40:48 2016 +0100 Committer: Ignasi Barrera <[email protected]> Committed: Mon Sep 5 14:11:59 2016 +0200 ---------------------------------------------------------------------- .../DeserializationConstructorAndReflectiveTypeAdapterFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/7aad5997/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java b/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java index 852a1a1..85293e2 100644 --- a/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java +++ b/core/src/main/java/org/jclouds/json/internal/DeserializationConstructorAndReflectiveTypeAdapterFactory.java @@ -132,7 +132,7 @@ public final class DeserializationConstructorAndReflectiveTypeAdapterFactory imp String autoClassName = type.getRawType().getName().replace('$', '_') .replace(packageName + ".", packageName + ".AutoValue_"); try { - type = (TypeToken<T>) TypeToken.get(Class.forName(autoClassName)); + type = (TypeToken<T>) TypeToken.get(type.getRawType().getClassLoader().loadClass(autoClassName)); } catch (ClassNotFoundException ignored) { } }
