RE: Void factory method
I'm suggesting something that could possibly be used today - I don't believe it's particularly nice syntax, and it won't work for abstract classes or ones that you can't construct, but it might be possible to make progress without changes to the blueprint extender. Regards, Tim > Subject: Re: Void factory method > From: n...@apache.org > Date: Tue, 22 Feb 2011 22:26:08 + > To: user@aries.apache.org > > I'm not sure I follow are you suggesting something that might work today or > an alternative change? > > Alasdair Nottingham > > On 22 Feb 2011, at 22:21, Timothy Ward wrote: > > > > > Hi, > > > > Just a query, but I'm assuming that we can't just new up an instance of the > > Server and inject into the static methods as if they were instance methods > > on a normal bean? I don't believe we do any checking to see whether > > property setters are static or not. This seems like it would be the > > simplest solution, and wouldn't involve adding a new namespace. > > > > Regards, > > > > Tim > > > > > >> Date: Tue, 22 Feb 2011 21:08:14 +0100 > >> Subject: Re: Void factory method > >> From: gno...@gmail.com > >> To: user@aries.apache.org > >> > >> As others have indicated, that's clearly outside of the specs. > >> However, I see two different improvements we could add to Aries > >> Blueprint to support such use cases: > >> > >> > >> > >> > >> > >> > >> > >> or (maybe closer to the underlying jetty model): > >> > >> > >> init-method="start" destroy-method="stop"> > >> > >> > >> > >> > >> > >> > >> > >> I haven't given that a lot of thoughts, and I'm not really sure how/if > >> this can actually be implemented ... > >> Both could actually be useful I suppose. > >> > >> 2011/2/22 Łukasz Dywicki : > >>> 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: > >>> > >>> > >>> init-method="start" destroy-method="stop" > >>> /> > >>> > >>> > >>> depends-on="jersey"> > >>> > >>> > >>> class="org.eclipse.jetty.server.nio.SelectChannelConnector"> > >>> > >>> > >>> > >>> > >>> > >>> > >>> 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.cre
Re: Void factory method
I'm not sure I follow are you suggesting something that might work today or an alternative change? Alasdair Nottingham On 22 Feb 2011, at 22:21, Timothy Ward wrote: > > Hi, > > Just a query, but I'm assuming that we can't just new up an instance of the > Server and inject into the static methods as if they were instance methods on > a normal bean? I don't believe we do any checking to see whether property > setters are static or not. This seems like it would be the simplest solution, > and wouldn't involve adding a new namespace. > > Regards, > > Tim > > >> Date: Tue, 22 Feb 2011 21:08:14 +0100 >> Subject: Re: Void factory method >> From: gno...@gmail.com >> To: user@aries.apache.org >> >> As others have indicated, that's clearly outside of the specs. >> However, I see two different improvements we could add to Aries >> Blueprint to support such use cases: >> >> >> >> >> >> >> >> or (maybe closer to the underlying jetty model): >> >> >> init-method="start" destroy-method="stop"> >> >> >> >> >> >> >> >> I haven't given that a lot of thoughts, and I'm not really sure how/if >> this can actually be implemented ... >> Both could actually be useful I suppose. >> >> 2011/2/22 Łukasz Dywicki : >>> 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: >>> >>> >>> init-method="start" destroy-method="stop" >>>/> >>> >>> >>> depends-on="jersey"> >>> >>> >>> class="org.eclipse.jetty.server.nio.SelectChannelConnector"> >>> >>> >>> >>> >>> >>> >>> 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 >>> >>> >>> >> >> >> >> -- >> Cheers, >> Guillaume Nodet >> >> Blog: http://gnodet.blogspot.com/ >> >> Open Source SOA >> http://fusesource.com >
Re: Void factory method
I'd been thinking along these lines too, but I think the first case is more general and therefore preferable. I also don't think we should be putting this in blueprint core, but trying to do it as a namespace handler extension. Alasdair Nottingham On 22 Feb 2011, at 20:08, Guillaume Nodet wrote: > As others have indicated, that's clearly outside of the specs. > However, I see two different improvements we could add to Aries > Blueprint to support such use cases: > > > > > > > > or (maybe closer to the underlying jetty model): > > init-method="start" destroy-method="stop"> > > > > > > > > I haven't given that a lot of thoughts, and I'm not really sure how/if > this can actually be implemented ... > Both could actually be useful I suppose. > > 2011/2/22 Łukasz Dywicki : >> 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: >> >>>init-method="start" destroy-method="stop" >> /> >> >>> depends-on="jersey"> >> >>> class="org.eclipse.jetty.server.nio.SelectChannelConnector"> >> >> >> >> >> >> >> 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 >> >> >> > > > > -- > Cheers, > Guillaume Nodet > > Blog: http://gnodet.blogspot.com/ > > Open Source SOA > http://fusesource.com
RE: Void factory method
Hi, Just a query, but I'm assuming that we can't just new up an instance of the Server and inject into the static methods as if they were instance methods on a normal bean? I don't believe we do any checking to see whether property setters are static or not. This seems like it would be the simplest solution, and wouldn't involve adding a new namespace. Regards, Tim > Date: Tue, 22 Feb 2011 21:08:14 +0100 > Subject: Re: Void factory method > From: gno...@gmail.com > To: user@aries.apache.org > > As others have indicated, that's clearly outside of the specs. > However, I see two different improvements we could add to Aries > Blueprint to support such use cases: > > > > > > > > or (maybe closer to the underlying jetty model): > > > init-method="start" destroy-method="stop"> > > > > > > > > I haven't given that a lot of thoughts, and I'm not really sure how/if > this can actually be implemented ... > Both could actually be useful I suppose. > > 2011/2/22 Łukasz Dywicki : > > 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: > > > > > >init-method="start" destroy-method="stop" > > /> > > > > > > depends-on="jersey"> > > > > > > class="org.eclipse.jetty.server.nio.SelectChannelConnector"> > > > > > > > > > > > > > > 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 > > > > > > > > > > -- > Cheers, > Guillaume Nodet > > Blog: http://gnodet.blogspot.com/ > > Open Source SOA > http://fusesource.com
Re: Void factory method
As others have indicated, that's clearly outside of the specs. However, I see two different improvements we could add to Aries Blueprint to support such use cases: or (maybe closer to the underlying jetty model): I haven't given that a lot of thoughts, and I'm not really sure how/if this can actually be implemented ... Both could actually be useful I suppose. 2011/2/22 Łukasz Dywicki : > 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: > > init-method="start" destroy-method="stop" > /> > > depends-on="jersey"> > > class="org.eclipse.jetty.server.nio.SelectChannelConnector"> > > > > > > > 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 > > > -- Cheers, Guillaume Nodet Blog: http://gnodet.blogspot.com/ Open Source SOA http://fusesource.com
Re: Void factory method
Hi Łukasz, Section 121.5.7 of the OSGi Enterprise 4.2 spec does go on to say, "The object created this way will be the provided object of the bean after any properties are injected. If the factoryMethod returns a primitive type, then this primitive must be converted to the correspond- ing wrapper type before any usage." Given that beans can be injected into other beans, that cannot work if a factory-method returns a void: nor will the abovementioned cast be possible. Spring's MethodInvokingFactoryBean states, "Note that this factory bean will return the special MethodInvoker.VOID singleton instance when it is used to invoke a method which returns null, or has a void return type. While the user of the factory bean is presumably calling the method to perform some sort of initialization, and doesn't care about any return value, all factory beans must return a value, so this special singleton instance is used for this case." While it's possible that we could implement something in Aries, I do not believe that this use case is specifically supported by the 4.2 spec. Regards, Mark 2011/2/22 Łukasz Dywicki : > 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 : >> 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 : >>> 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: >>> >>> >> init-method="start" destroy-method="stop" >>> /> >>> >>> >> depends-on="jersey"> >>> >>> >> class="org.eclipse.jetty.server.nio.SelectChannelConnector"> >>> >>> >>> >>> >>> >>> >>> 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] >>>
RE: Void factory method
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 : > 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 : >> 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: >> >> > init-method="start" destroy-method="stop" >> /> >> >> > depends-on="jersey"> >> >> > class="org.eclipse.jetty.server.nio.SelectChannelConnector"> >> >> >> >> >> >> >> 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
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 : > 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 : >> 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: >> >> > init-method="start" destroy-method="stop" >> /> >> >> > depends-on="jersey"> >> >> > class="org.eclipse.jetty.server.nio.SelectChannelConnector"> >> >> >> >> >> >> >> 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
Re: Void factory method
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 : > 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: > > init-method="start" destroy-method="stop" > /> > > depends-on="jersey"> > > class="org.eclipse.jetty.server.nio.SelectChannelConnector"> > > > > > > > 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
Void factory method
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: 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