+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

Reply via email to