I´m using Guice TypeListener to intercept a map instance generated by a provider.
Here the config method where I bind my listener
@Override
public void addConfig() {
MapListener mapListener = new MapListener();
requestInjection(mapListener);
bindListener(Matchers.any(), mapListener);
}This is the map instance created by this provider
@Provides
Map<String, String> mapTest(){
return new HashMap<>();
}This is the listener class to detect the map instance
public class MapListener implements TypeListener {
@Override
public <I> void hear(final TypeLiteral<I> typeLiteral, TypeEncounter<I> typeEncounter) {
typeEncounter.register((InjectionListener<I>) i -> {
if(i.getClass().isAssignableFrom(Map.class)){
System.out.println("DI:"+ i.getClass()
.getName());
//TODO:Logic to modify map
}
});
}
}The problem is the Map is never passed to the hear method. Am I doing something wrong?
Regards.
install(new FactoryModuleBuilder().build(MapFactory.Factory.class));
public static class MapFactory<K, V> extends HashMap<String, String> {
public interface Factory {
MapFactory <String, String> create();
}
}
MapFactory.Factory mapFactoryMap<String, String> map =mapFactory.create();
You can use ProvisonListener to intercept the provision (@Provides, Provider.get, or constructor) of any binding.
sam
--
You received this message because you are subscribed to the Google Groups "google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-guice...@googlegroups.com.
To post to this group, send email to google...@googlegroups.com.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/717b6c94-658a-48ec-87c9-51ad9a488a7a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.