com.episode6.hackit.mockspresso.dagger.DaggerLazyMaker Maven / Gradle / Ivy
package com.episode6.hackit.mockspresso.dagger;
import com.episode6.hackit.mockspresso.api.DependencyProvider;
import com.episode6.hackit.mockspresso.api.SpecialObjectMaker;
import com.episode6.hackit.mockspresso.reflect.DependencyKey;
import com.episode6.hackit.mockspresso.reflect.TypeToken;
import dagger.Lazy;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
/**
* An implementation of SpecialObjectMaker for {@link dagger.Lazy}.
*
* @deprecated This functionality is now exposed by the kotlin extension method `automaticLazies()` and its
* JavaSupport counterpart {@link MockspressoDaggerPluginsJavaSupport#automaticLazies()}
*
* This class will be marked internal/protected in a future release
*/
@Deprecated
public class DaggerLazyMaker implements SpecialObjectMaker {
@Override
public boolean canMakeObject(DependencyKey> key) {
return key.typeToken.getRawType() == Lazy.class &&
key.typeToken.getType() instanceof ParameterizedType;
}
@SuppressWarnings("unchecked")
@Override
public T makeObject(DependencyProvider dependencyProvider, DependencyKey key) {
if (!canMakeObject(key)) {
return null;
}
Type paramType = ((ParameterizedType)key.typeToken.getType()).getActualTypeArguments()[0];
DependencyKey> subKey = DependencyKey.of(TypeToken.of(paramType), key.identityAnnotation);
return (T) new DependencyInstanceLazy(dependencyProvider, subKey);
}
private static class DependencyInstanceLazy implements Lazy {
private final DependencyProvider mDependencyProvider;
private final DependencyKey mDependencyKey;
private DependencyInstanceLazy(
DependencyProvider dependencyProvider,
DependencyKey dependencyKey) {
mDependencyProvider = dependencyProvider;
mDependencyKey = dependencyKey;
}
@Override
public V get() {
return mDependencyProvider.get(mDependencyKey);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy