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/27 20:55:30 UTC
git commit: JCLOUDS-415: Preparing for Guava 16.0
Updated Branches:
refs/heads/JCLOUDS-415-1.7.x [created] 349c133a4
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/349c133a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/349c133a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/349c133a
Branch: refs/heads/JCLOUDS-415-1.7.x
Commit: 349c133a4ece4db5aa0fdac4e8141b9d21994b0c
Parents: d395a07
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 14:55:07 2014 -0500
----------------------------------------------------------------------
.../internal/DelegatesToInvocationFunction.java | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/349c133a/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;