You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2016/09/05 12:29:35 UTC

jclouds git commit: Fix autovalue class loading in karaf

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 <du...@cloudsoftcorp.com>
Authored: Mon Sep 5 09:40:48 2016 +0100
Committer: Ignasi Barrera <na...@apache.org>
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) {
          }
       }