+1 On Thu, Nov 10, 2011 at 15:53, Thomas Mortagne <[email protected]>wrote:
> +1 > > On Thu, Nov 10, 2011 at 3:44 PM, Vincent Massol <[email protected]> > wrote: > > Hi devs, > > > > I've started investigating this. The documentation for Provider can be > found here: > > > http://code.google.com/p/atinject/source/browse/trunk/src/javax/inject/Provider.java > > > > Here's we would define a provider: > > > > @Component > > public class MyProvider implements Provider<RoleToProvide> > > { > > @Inject <-- just to show that a provider is a component and be > injected other components > > private SomeRole role; > > > > @Override > > public RoleToProvide get() > > { > > … logic here to return a RoleToProvide instance… > > } > > } > > > > And here's how you'd use it: > > > > @Component > > public class MyComponent implements MyRole > > { > > … > > @Inject > > private Provider<RoleToProvide> provider; > > … > > public void someMethod() > > { > > RoleToProvide instance = this.provider.get(); > > … > > > > Rationale: > > ========= > > > > * UC1: Useful to break cyclic dependencies in a cleaner way than having > the ComponentManager injected, especially since the Provider can be reused > since it's shared > > * UC2: Useful to clean up code so that the logic to decide which > implementation to return can be externalized in a Provider implementation. > For example imagine you have a config property in xwiki.properties and > based on it you wish to return a component with one hint or another. You > could use a Provider for this. > > * Allows us to be JSR330 compliant (not a very strong point but still an > argument ;)) > > > > Default Provider > > ============= > > > > When you ask to get injected a Provider if no Provider is defined for > the Role you wish, you'll get injected a generic provider which simply does > a lookup using the Component Manager. This allows to simply implement UC1. > > > > WDYT? > > > > Thanks > > -Vincent > > > > _______________________________________________ > > devs mailing list > > [email protected] > > http://lists.xwiki.org/mailman/listinfo/devs > > > > > > -- > Thomas Mortagne > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > -- Denis Gervalle SOFTEC sa - CEO eGuilde sarl - CTO _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

