> On 15 Nov 2016, at 08:25, Bengt Rodehav <[email protected]> wrote: > > OK - I'll remember that. > > I do use Managed Service Factories a lot but when I'm dealing with a > singleton I normally use @instantiate. This is, however, the first time > where I have a property that cannot really have a sensible default value > which is why I set it to mandatory. > > It feels a bit weird to use Managed Service Factories when dealing with a > singleton.
I agree. I had plans to “delay” the instantiation until it gets a valid set of properties, but I never implemented it. Clement > > /Bengt > > 2016-11-13 20:56 GMT+01:00 Clement Escoffier <[email protected]>: > >> >>> On 13 Nov 2016, at 14:46, Bengt Rodehav <[email protected]> wrote: >>> >>> OK, thanks Clement. >>> >>> Out of interest, when would the combination @instantiate and mandatory >> work >>> / make sense? >> >> Never I would say ;-) >> There are many other way to declare instances in iPOJO such as Managed >> Service Factory, the iPOJO Factory service and so on. Mandatory is used in >> these contexts. >> >> Clement >> >> >>> >>> /Bengt >>> >>> Den 11 nov. 2016 2:52 em skrev "Clement Escoffier" < >>> [email protected]>: >>> >>>> Hi, >>>> >>>> No actually, it’s the expected behaviour. A mandatory property is >> required >>>> to be set when the instance is created. >>>> >>>> @Instantiate create an instance without any configuration, while you >> set a >>>> property to be mandatory. The property is injected by the config admin >>>> after the instance creation (as it’s a ManagedService configuration). >>>> >>>> So you have 2 choices: >>>> >>>> * either set the property to not mandatory and use the config admin to >>>> provide a value after the instantiation >>>> * use a ManagedServiceFactory configuration to instantiate the component >>>> (in this case remove the @Instantiate) >>>> >>>> Clement >>>> >>>> >>>>> On 10 Nov 2016, at 12:00, Bengt Rodehav <[email protected]> wrote: >>>>> >>>>> Do you think this is a bug or haven't I fully understood how iPojo >> works >>>> in >>>>> this situation? >>>>> >>>>> /Bengt >>>>> >>>>> 2016-11-09 9:02 GMT+01:00 Bengt Rodehav <[email protected]>: >>>>> >>>>>> Hello Clement, >>>>>> >>>>>> I instantiate the component as follows: >>>>>> >>>>>> @Component(managedservice = "hp.webservice", name = "hp.webservice", >>>>>>> publicFactory = false) >>>>>>> @Instantiate >>>>>>> public class HpWebService { >>>>>>> ... >>>>>> >>>>>> >>>>>> If I declare the property as mandatory, the instance never becomes >> valid >>>>>> at all. I thought it would be invalid until configuration manager gave >>>> the >>>>>> property a value and then it would become valid. >>>>>> >>>>>> /Bengt >>>>>> >>>>>> >>>>>> 2016-11-08 20:52 GMT+01:00 Clement Escoffier < >>>> [email protected]> >>>>>> : >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> The error means that you tried to create an instance of the component >>>>>>> with without the “logoBaseUrl” property. Do you know how this >> instance >>>> is >>>>>>> declared, and from where come the configuration ? >>>>>>> >>>>>>> Clement >>>>>>> >>>>>>>> On 8 Nov 2016, at 14:54, Bengt Rodehav <[email protected]> wrote: >>>>>>>> >>>>>>>> I'm using Karaf 4.0.7 with iPojo 1.12.1. >>>>>>>> >>>>>>>> I have declared a mandatory parameter as follows: >>>>>>>> >>>>>>>> @Property(name = "logoBaseUrl", mandatory = true) >>>>>>>> >>>>>>>> >>>>>>>> I have a configuration file for this property that sets the proper >>>>>>> value of >>>>>>>> the property "logoBaseUrl". >>>>>>>> >>>>>>>> But, on startup I get: >>>>>>>> >>>>>>>> 2016-11-08 14:40:40,910 | ERROR | pool-1-thread-1 | web >>>>>>>>> | ? ? | [ERROR] >>>>>>> hp.webservice >>>>>>>>> : The configuration is not acceptable : The mandatory property >>>>>>> logoBaseUrl >>>>>>>>> is missing >>>>>>>> >>>>>>>> >>>>>>>> And my iPojo component never becomes valid. >>>>>>>> >>>>>>>> If I change the property as follows: >>>>>>>> >>>>>>>> @Property(name = "logoBaseUrl", mandatory = false, >>>> value="/notvalidurl") >>>>>>>> >>>>>>>> >>>>>>>> Then everything works and the proper value is picked up from my >>>>>>>> configuration file. >>>>>>>> >>>>>>>> It's like iPojo never waits for the component to become configured >> but >>>>>>>> fails immediately. I would like the iPojo component to wait for the >>>>>>>> configuration and then become valid. How can I accomplish this? >>>>>>>> >>>>>>>> /Bengt >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------ >> --------- >>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>> For additional commands, e-mail: [email protected] >>>>>>> >>>>>>> >>>>>> >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

