Another thing: when using constructor args or factory method
arguments, to make sure there will no conflict with a property to be
set on the created object, i think we can use dummy names.  For
example:

        ObjectRecipe recipe = new ObjectRecipe(ColorInstanceFactory.class);
        recipe.setFactoryMethod("createColor");
        recipe.setConstructorArgNames(new String[]{"#arg0"});
        recipe.setProperty("#arg0", RGBColor.class.getName());
        recipe.setProperty("foo", "bar");
        recipe.setProperty("r", "255");

It seems to work.  The main drawback is that it won't do arguments
reordering automatically afaik.  So we'd still need to enhance this
bit.

On Thu, Apr 23, 2009 at 20:28, Guillaume Nodet <gno...@gmail.com> wrote:
> Right, but it might we worth considering enhancing xbean-reflect to
> better support our needs.
> For example initialization and destruction methods are now wired in
> blueprint, but a better place would be xbean imho.
> Constructor injection is a bit of a magic in xbean right now, and
> there's no clear difference betweens arguments passed to constructors
> or factory methods and properties.
>
> I think we should have the core ioc engine (xbean-reflect) support
> most of our needs so that we could do all the parsing and wiring
> completely with xbean.  Even scopes may be handled by xbean and maybe
> also dynamic dependencies that i've just plugged in.
>
> I agree to put everything in blueprint for now, but it may be better
> to refactor and enhance xbean to be more powerfull, and blueprint
> would only implement the OSGi bits or other specific things.
>
> On Thu, Apr 23, 2009 at 19:19, Jarek Gawor <jga...@gmail.com> wrote:
>> Guillaume,
>>
>> I've been working on the constructor injection and factory method for
>> blueprint services and I'm convinced that we can't use the factory
>> stuff that's built-in into the xbean-reflect because we have to do all
>> this parameter matching and re-ordering bits. But as long as
>> xbean-reflect will allow us to provide our own Factory implementation
>> we should be ok. So I'm not looking into changing the existing factory
>> xbean-reflect code but instead I'm looking into changing the
>> xbean-reflect code to have better extensibility so that we can provide
>> our own factory classes or our own recipe classes (that reuse a bunch
>> xbean-reflect code).
>>
>> Jarek
>>
>> On Thu, Apr 23, 2009 at 4:46 AM, Guillaume Nodet <gno...@gmail.com> wrote:
>>> When trying to implement the dedens-on attribute for blueprint, I had
>>> to find my way in xbean-reflect about constructor recipes and nested
>>> recipes.
>>> In the ObjectRecipe, a factory-method can be set so that the object is
>>> built by calling a static method or an instance method.
>>> This will be very useful when implementing the factory stuff in blueprint.
>>> However, I think there is a mismatch here.
>>> In xbean-reflect, the recipe is used to create both the factory (in
>>> case of an instance factory), then the factory method is called to
>>> create the final object.    In blueprint, there is a notion of factory
>>> component, which should be built by its own recipe, then used as a
>>> reference to create the object using arguments if any, then populating
>>> the created beans using properties.
>>> I'd like to enhance xbean-reflect to support such factory instances by
>>> references, but it would break any existing code relying on the
>>> current factory mechanism.
>>> Is there a need to support backward compatibility on this ?
>>>
>>> --
>>> Cheers,
>>> Guillaume Nodet
>>> ------------------------
>>> Blog: http://gnodet.blogspot.com/
>>> ------------------------
>>> Open Source SOA
>>> http://fusesource.com
>>>
>>
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to