aboutsummaryrefslogtreecommitdiff
path: root/core/src/com/google/inject
diff options
context:
space:
mode:
authorSam Berlin <sameb@google.com>2014-05-03 00:40:05 -0400
committerSam Berlin <sameb@google.com>2014-05-03 00:52:24 -0400
commit4754a22f265ad638d5484d12219515bd663272d0 (patch)
tree4e69c613f5cd414c9ce6b0a015f4cda1b1b6dae7 /core/src/com/google/inject
parent14e2703cd15b0ac745a0df80d25800692d8c727e (diff)
downloadguice-4754a22f265ad638d5484d12219515bd663272d0.tar.gz
Add equals/hashCode to Providers.guicify(...) results.
------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=65072672
Diffstat (limited to 'core/src/com/google/inject')
-rw-r--r--core/src/com/google/inject/util/Providers.java76
1 files changed, 48 insertions, 28 deletions
diff --git a/core/src/com/google/inject/util/Providers.java b/core/src/com/google/inject/util/Providers.java
index e191b019..c18d3512 100644
--- a/core/src/com/google/inject/util/Providers.java
+++ b/core/src/com/google/inject/util/Providers.java
@@ -97,40 +97,60 @@ public final class Providers {
Set<InjectionPoint> injectionPoints =
InjectionPoint.forInstanceMethodsAndFields(provider.getClass());
if(injectionPoints.isEmpty()) {
- return new Provider<T>() {
- public T get() {
- return delegate.get();
- }
-
- @Override public String toString() {
- return "guicified(" + delegate + ")";
- }
- };
+ return new GuicifiedProvider<T>(delegate);
} else {
Set<Dependency<?>> mutableDeps = Sets.newHashSet();
for(InjectionPoint ip : injectionPoints) {
mutableDeps.addAll(ip.getDependencies());
}
final Set<Dependency<?>> dependencies = ImmutableSet.copyOf(mutableDeps);
- return new ProviderWithDependencies<T>() {
- @SuppressWarnings("unused")
- @Inject
- void initialize(Injector injector) {
- injector.injectMembers(delegate);
- }
-
- public Set<Dependency<?>> getDependencies() {
- return dependencies;
- }
-
- public T get() {
- return delegate.get();
- }
-
- @Override public String toString() {
- return "guicified(" + delegate + ")";
- }
- };
+ return new GuicifiedProviderWithDependencies<T>(dependencies, delegate);
+ }
+ }
+
+ private static class GuicifiedProvider<T> implements Provider<T> {
+ protected final javax.inject.Provider<T> delegate;
+
+ private GuicifiedProvider(javax.inject.Provider<T> delegate) {
+ this.delegate = delegate;
+ }
+
+ public T get() {
+ return delegate.get();
+ }
+
+ @Override public String toString() {
+ return "guicified(" + delegate + ")";
+ }
+
+ @Override public boolean equals(Object obj) {
+ return (obj instanceof GuicifiedProvider)
+ && Objects.equal(delegate, ((GuicifiedProvider<?>) obj).delegate);
+ }
+
+ @Override public int hashCode() {
+ return Objects.hashCode(delegate);
+ }
+ }
+
+ private static final class GuicifiedProviderWithDependencies<T>
+ extends GuicifiedProvider<T> implements ProviderWithDependencies<T> {
+ private final Set<Dependency<?>> dependencies;
+
+ private GuicifiedProviderWithDependencies(Set<Dependency<?>> dependencies,
+ javax.inject.Provider<T> delegate) {
+ super(delegate);
+ this.dependencies = dependencies;
+ }
+
+ @SuppressWarnings("unused")
+ @Inject
+ void initialize(Injector injector) {
+ injector.injectMembers(delegate);
+ }
+
+ public Set<Dependency<?>> getDependencies() {
+ return dependencies;
}
}
}