You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2014/01/28 05:17:07 UTC

[2/2] git commit: JCLOUDS-415: Preparing for Guava 16.0

JCLOUDS-415: Preparing for Guava 16.0

Invokable.equals has changed from 15 to 16 so we need to implement the check differently ourselves.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/9d7c4ce8
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/9d7c4ce8
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/9d7c4ce8

Branch: refs/heads/JCLOUDS-415-1.7.x
Commit: 9d7c4ce89376dd26c7ef8f7886f3341c2fe23c96
Parents: 1148724
Author: Andrew Phillips <an...@apache.org>
Authored: Fri Jan 24 17:08:05 2014 -0500
Committer: Andrew Phillips <an...@apache.org>
Committed: Mon Jan 27 23:16:39 2014 -0500

----------------------------------------------------------------------
 .../internal/DelegatesToInvocationFunction.java   | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/9d7c4ce8/core/src/main/java/org/jclouds/rest/internal/DelegatesToInvocationFunction.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/rest/internal/DelegatesToInvocationFunction.java b/core/src/main/java/org/jclouds/rest/internal/DelegatesToInvocationFunction.java
index 280345e..8d94c3e 100644
--- a/core/src/main/java/org/jclouds/rest/internal/DelegatesToInvocationFunction.java
+++ b/core/src/main/java/org/jclouds/rest/internal/DelegatesToInvocationFunction.java
@@ -141,7 +141,7 @@ public class DelegatesToInvocationFunction<S, F extends Function<Invocation, Obj
 
    protected Object handle(Invocation invocation) {
       Invokable<?, ?> invokable = invocation.getInvokable();
-      if (CLOSE.equals(invokable)) {
+      if (isCloseMethod(invokable)) {
          try {
             injector.getInstance(Closer.class).close();
             return null;
@@ -157,6 +157,22 @@ public class DelegatesToInvocationFunction<S, F extends Function<Invocation, Obj
       }
    }
 
+   private static boolean isCloseMethod(Invokable<?, ?> invokable) {
+      /*
+       * Tests equality according to the Javadoc for java.lang.reflect.Method:
+       *
+       * Two Methods are the same if they were declared by the same class
+       * and have the same name and formal parameter types and return type.
+       *
+       * Invokable now uses the *owning* class (not the declaring class) in
+       * its equals check.
+       */
+      return CLOSE.getDeclaringClass().equals(invokable.getDeclaringClass())
+              && CLOSE.getName().equals(invokable.getName())
+              && CLOSE.getParameters().equals(invokable.getParameters())
+              && CLOSE.getReturnType().equals(invokable.getReturnType());
+   }
+
    protected final Injector injector;
    protected final TypeToken<S> ownerType;
    protected final SetCaller setCaller;