Updated Branches: refs/heads/1.7.x 114872483 -> dc7bad39c
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/dc7bad39 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/dc7bad39 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/dc7bad39 Branch: refs/heads/1.7.x Commit: dc7bad39ccfd766129ee8710911420fca2e435d3 Parents: 1148724 Author: Andrew Phillips <[email protected]> Authored: Fri Jan 24 17:08:05 2014 -0500 Committer: Andrew Phillips <[email protected]> Committed: Tue Jan 28 07:59:45 2014 -0500 ---------------------------------------------------------------------- .../internal/DelegatesToInvocationFunction.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/dc7bad39/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;
