Valentin, I think you're reading the compendium spec. This requirement has been relaxed. See the errata for 4.2 or the same section in the enterprise spec. It now says: "There should only be one set method with a single argument for a specific property. If overloaded properties are encountered, the chosen set method is unspecified."
So I guess we might need to update the Blueprint code. Jarek On Mon, Jul 19, 2010 at 1:45 PM, Valentin Mahrwald <[email protected]> wrote: > Hi Tomasz, > I had a look through the spec and it is unfortunately quite explicit in > ruling out your scenario :( > From the spec (121.5.7): > name – The name of the bean property. This name refers to the set method on > the constructed object as specified in the design pattern for > beans getters and setters, see [6] Java Beans Specification. For example, if > the property name is foo, then the public method setFoo(arg) will be used to > set the value. There must only be one set method with a single argument for > a specific property, that is, overloading of properties is not allowed. > > So the behaviour is correct and not a bug I think. > Regards, > Valentin > > On 19 Jul 2010, at 16:04, Tomasz Chodakowski wrote: > > Hello, > > I've tried deploying simple blueprint-enabled bundle, however it looks > like Aries blueprint implementation fails to inject a property with > overloaded setter method. I am getting following error: > > [Blueprint Extender: 3] ERROR > org.apache.aries.blueprint.container.BlueprintContainerImpl - Unable to > start blueprint container for bundle Fusion-RESTApp > org.osgi.service.blueprint.container.ComponentDefinitionException: > Unable to find property descriptor inboundRoot2 on class > com.ovi.music.fusion.rest.app.RestApplication > at > org.apache.aries.blueprint.container.BeanRecipe.getPropertyDescriptor(BeanRecipe.java:799) > at > org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:765) > at > org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:742) > at > org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:723) > (...) > > with the property setters listed below: > > public void setInboundRoot2(Restlet inboundRoot) { > (...) > } > > public void setInboundRoot2(int i) { > (...) > } > > > The situation doesn't seem to depend on these particular signatures it's > the fact that the setter method is overloaded that causes problems. It > works otherwise (ie: when setter method is not overloaded). > > Is this a bug or just me? > > Tomasz > > > >
