Hello,
I won't argue it is good or not, it's just not in line with bean specs.
However blueprint specs says:
#factoryMethod - A static or instance factory method name that corresponds
to a publicly accessible method on the given class or factory manager.

So it's not pointing to return value of the factory method. 

To be honest, it's not important for me how this combination might be done -
it might be done just like we did this in Spring - with
MethodInvokingFactoryBean. But I wish to don't copy unnecessary code when it
might be done in existing. WDYT?

Best regards,
Lukasz

-----Original Message-----
From: alasdair.notting...@gmail.com [mailto:alasdair.notting...@gmail.com]
On Behalf Of Alasdair Nottingham
Sent: Tuesday, February 22, 2011 1:58 PM
To: user@aries.apache.org
Subject: Re: Void factory method

Can you raise a JIRA to make the error message better?

JIRA issues can be raised here: https://issues.apache.org/jira/browse/ARIES

Thanks for bringing this to our attention.
Alasdair

2011/2/22 Alasdair Nottingham <n...@apache.org>:
> Hi,
>
> You can't do what you are trying to do here. The factory-method needs
> to return an object
> that represents the bean. In this case it returns void. It is not a
> very nice error, we shouldn't
> throw a NullPointerException.
>
> In this scenario you are defining a bean without providing an instance
> that could back that bean.
>
> Alasdair
>
> 2011/2/22 Łukasz Dywicki <l...@code-house.org>:
>> Hello,
>> I have small problem with Aries. I try to configure jetty with blueprint.
>> Jetty requires to register some objects using void methods, for example:
>> Server.addConnector(Connector).
>>
>> I try to use blueprint XML:
>>
>>    <bean id="server" class="org.eclipse.jetty.server.Server"
>>        init-method="start" destroy-method="stop"
>>     />
>>
>>    <bean id="http" factory-ref="server" factory-method="addConnector"
>> depends-on="jersey">
>>        <argument>
>>            <bean
>> class="org.eclipse.jetty.server.nio.SelectChannelConnector">
>>                <property name="port" value="8080" />
>>                <property name="host" value="0.0.0.0" />
>>            </bean>
>>        </argument>
>>    </bean>
>>
>> This configuration causes following error:
>> org.apache.aries.blueprint - 0.2.0.incubating | Unable to start blueprint
>> container for bundle jetty-server
>> org.osgi.service.blueprint.container.ComponentDefinitionException: Unable
to
>> instantiate components
>>        at
>>
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEager
>>
Components(BlueprintContainerImpl.java:628)[7:org.apache.aries.blueprint:0.2
>> .0.incubating]
>>        at
>>
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintC
>> ontainerImpl.java:315)[7:org.apache.aries.blueprint:0.2.0.incubating]
>>        at
>>
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintCon
>> tainerImpl.java:213)[7:org.apache.aries.blueprint:0.2.0.incubating]
>>        at
>>
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6
>> .0_21]
>>        at
>>
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_21
>> ]
>>        at
>> java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_21]
>>        at
>>
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$
>> 301(ScheduledThreadPoolExecutor.java:98)[:1.6.0_21]
>>        at
>>
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Sch
>> eduledThreadPoolExecutor.java:207)[:1.6.0_21]
>>        at
>>
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja
>> va:886)[:1.6.0_21]
>>        at
>>
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9
>> 08)[:1.6.0_21]
>>        at java.lang.Thread.run(Thread.java:619)[:1.6.0_21]
>> Caused by: java.lang.NullPointerException
>>        at
>>
java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:881)[:1.6.
>> 0_21]
>>        at
>>
org.apache.aries.blueprint.container.BlueprintRepository.addPartialObject(Bl
>>
ueprintRepository.java:357)[7:org.apache.aries.blueprint:0.2.0.incubating]
>>        at
>>
org.apache.aries.blueprint.di.AbstractRecipe.addPartialObject(AbstractRecipe
>> .java:84)[7:org.apache.aries.blueprint:0.2.0.incubating]
>>        at
>>
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.ja
>> va:736)[7:org.apache.aries.blueprint:0.2.0.incubating]
>>        at
>>
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)[
>> 7:org.apache.aries.blueprint:0.2.0.incubating]
>>        at
>>
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(Blu
>> eprintRepository.java:219)[7:org.apache.aries.blueprint:0.2.0.incubating]
>>        at
>>
org.apache.aries.blueprint.container.BlueprintRepository.createAll(Blueprint
>> Repository.java:147)[7:org.apache.aries.blueprint:0.2.0.incubating]
>>        at
>>
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEager
>>
Components(BlueprintContainerImpl.java:624)[7:org.apache.aries.blueprint:0.2
>> .0.incubating]
>>        ... 10 more
>>
>>
>>
>
>
>
> --
> Alasdair Nottingham
> n...@apache.org
>



-- 
Alasdair Nottingham
n...@apache.org

Reply via email to