Hi Could it be that you announce the component to be „ManagedService“ but the class does not implement it and thus the component cannot be instantiated at all ?
Regards Felix > Am 19.11.2014 um 12:32 schrieb Hasanein Khafaji <[email protected]>: > > Let's assume that Bundle A defines a service interface and export the > package that contains it to OSGi: > > Public interface ServiceInterface > { > ..... > } > > Bundle B, provides an OSGi component/service that implement the > service interface > > @Component(immediate = true, metatype = true) > @Service(value = {ServiceInterface.class, ManagedService.class}) > @org.apache.felix.scr.annotations.Properties({ > @Property(name = Constants.SERVICE_PID, value = > "com.example.MyService"), > @Property(name = Constants.SERVICE_VENDOR, value = "Contoso"), > @Property(name = Constants.SERVICE_DESCRIPTION, value = "My Service"), > }) > public class MyService implements ServiceInterface > { > ... > } > > Bundle C, contains Sling model classes that needs to use the above > service, we inject it using @Inject or @Inject @Source("osgi-service") > as per Sling Model documentation > > @Model(adaptables = {Resource.class}) > public class MyModel > { > @Inject > private ServiceInterface serviceInterface; > ... > } > > The problem is that the service never get injected into the model as > it should be, the Exception we get is thrown by the > ModelAdapterFactory saying that it's unable to inject MyService into > ServiceInterface as if they were an incompatible types but they are > not. > > On Wed, Nov 19, 2014 at 9:24 AM, Sarwar Bhuiyan > <[email protected]> wrote: >> Could you paste that bit of code please? >> >> On Wednesday, November 19, 2014, Hass Joseph Khafaji <[email protected]> >> wrote: >> >>> The model is simply a sling model class, not an osgi service at all. >>> >>> The model is being looked up via slightly, thus it has to be fully >>> populated when that happen which require that the model invoke a service to >>> obtain data from. >>> >>> Sling model documentation says that you can inject osgi services into >>> sling models but that is not seem to be working. >>> >>> Sent from my iPhone >>> >>>> On 19 Nov 2014, at 09:09, Sarwar Bhuiyan <[email protected] >>> <javascript:;>> wrote: >>>> >>>> The model is not an OSGi service/component right? >>>> >>>> I'm not sure of why you need a reference to an osgi service in the model >>>> but you can probably use a setter by yourself but I still think you can >>>> just have another service which does the action on the model instead of >>> the >>>> model calling the service. >>>> >>>> On Wednesday, November 19, 2014, Hass Joseph Khafaji < >>> [email protected] <javascript:;>> >>>> wrote: >>>> >>>>> Hello, >>>>> >>>>> I am trying to inject OSGI service defined using scr annotation into a >>>>> sling model class using the @inject annotation. >>>>> >>>>> What we seem to be getting is that the ModelAdapterFactory is unable to >>>>> inject the service into the corresponding field as if it was an >>>>> incompatible type. We not doing anything fancy here, it's just a simple >>>>> service injection. >>>>> >>>>> Did anyone faced a similar issue in the past? Do we have to use custom >>>>> injectors for this? >>>>> >>>>> Note: tried to use the @inject @source with an osgi-service but getting >>>>> the same result. >>>>> >>>>> Cheers. >>>
