Updated Branches: refs/heads/JCLOUDS-415 51cae419e -> c49489afc (forced update)
JCLOUDS-415: Upgrading to 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/c49489af Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/c49489af Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/c49489af Branch: refs/heads/JCLOUDS-415 Commit: c49489afc8d3e910067469bf62bc9f335db64825 Parents: 8ff6002 Author: Andrew Phillips <[email protected]> Authored: Fri Jan 24 17:08:05 2014 -0500 Committer: Andrew Phillips <[email protected]> Committed: Sat Jan 25 14:00:39 2014 -0500 ---------------------------------------------------------------------- core/pom.xml | 2 +- .../internal/DelegatesToInvocationFunction.java | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/c49489af/core/pom.xml ---------------------------------------------------------------------- diff --git a/core/pom.xml b/core/pom.xml index 967a3ad..a8ebdac 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -95,7 +95,7 @@ <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> - <version>15.0</version> + <version>16.0</version> </dependency> <dependency> <groupId>org.osgi</groupId> http://git-wip-us.apache.org/repos/asf/jclouds/blob/c49489af/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;
