[ https://issues.apache.org/jira/browse/FELIX-5867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16510176#comment-16510176 ]
ASF GitHub Bot commented on FELIX-5867: --------------------------------------- GitHub user rotty3000 opened a pull request: https://github.com/apache/felix/pull/141 FELIX-5867 reference field of type Logger for service LoggerFactory i… …s always null Signed-off-by: Raymond Auge <rotty3...@apache.org> You can merge this pull request into a Git repository by running: $ git pull https://github.com/rotty3000/felix FELIX-5867 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/felix/pull/141.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #141 ---- commit ef4dbf7629f7264f1311d3c2b3548c7c8feb21dc Author: Raymond Auge <rotty3000@...> Date: 2018-06-12T20:30:30Z FELIX-5867 reference field of type Logger for service LoggerFactory is always null Signed-off-by: Raymond Auge <rotty3...@apache.org> ---- > reference field of type Logger for service LoggerFactory is always null > ----------------------------------------------------------------------- > > Key: FELIX-5867 > URL: https://issues.apache.org/jira/browse/FELIX-5867 > Project: Felix > Issue Type: Bug > Components: Declarative Services (SCR) > Reporter: Raymond Augé > Priority: Major > > When trying the following snippet as defined in the r7 spec: > {code} > import org.osgi.service.component.annotations.Activate; > import org.osgi.service.component.annotations.Component; > import org.osgi.service.component.annotations.Reference; > import org.osgi.service.log.Logger; > import org.osgi.service.log.LoggerFactory; > @Component > public class WithLogger { > @Reference(service = LoggerFactory.class) > private Logger logger; > @Activate > void activate() { > logger.info(l -> l.info("TESTING")); > } > } > {code} > the logger field is always null with no obvious errors in the logs. > There's an obvious error due to the NPE in the activate method, but not why > the reference field is null. > The SCR logs as follows: > {code} > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) BundleComponentActivator : > Bundle active > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)BundleComponentActivator : > Descriptor locations > OSGI-INF/org.apache.aries.cdi.test.components.WithLogger.xml > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) BundleComponentActivator : > ComponentHolder created. > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)BundleComponentActivator : May > enable component holder org.apache.aries.cdi.test.components.WithLogger > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)BundleComponentActivator > :Enabling component holder org.apache.aries.cdi.test.components.WithLogger > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state disabled > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state disabled > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Component can not be activated > since it is in state disabled > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state disabled > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) Updating target filters > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)No change in target property > for dependency logger: currently registered: false > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) No existing service listener > to unregister for dependency logger > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Setting target property for > dependency logger to null > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)New service tracker for > logger, initial active: false, previous references: {}, classFilter: > (objectClass=org.osgi.service.log.LoggerFactory), eventFilter null, > initialReferenceFilter (objectClass=org.osgi.service.log.LoggerFactory) > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)dm logger tracker reset > (closed) > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)classNameFilter: > (objectClass=org.osgi.service.log.LoggerFactory) event filter: null > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)dm logger tracking 1 > SingleStatic added \{org.osgi.service.log.LogService, > org.osgi.service.log.LoggerFactory, > org.eclipse.equinox.log.ExtendedLogService}=\{service.id=2, > service.bundleid=0, service.scope=bundle} (enter) > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)dm logger tracking 1 > SingleStatic active: false trackerOpened: false optional: false > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)dm logger tracking 1 > SingleStatic added \{org.osgi.service.log.LogService, > org.osgi.service.log.LoggerFactory, > org.eclipse.equinox.log.ExtendedLogService}=\{service.id=2, > service.bundleid=0, service.scope=bundle} (exit) > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)dm logger tracker opened > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)registering service listener > for dependency logger > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Changed state from disabled to > unsatisfiedReference > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) Component enabled > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) ActivateInternal > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state > unsatisfiedReference > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state > unsatisfiedReference > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Activating component from > state unsatisfiedReference > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state > unsatisfiedReference > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state > unsatisfiedReference > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Changed state from > unsatisfiedReference to satisfied > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Checking constructor public > org.apache.aries.cdi.test.components.WithLogger() > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Found constructor with 0 > arguments : public org.apache.aries.cdi.test.components.WithLogger() > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)getting field: logger > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Locating field logger in class > org.apache.aries.cdi.test.components.WithLogger > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Found field: private > org.osgi.service.log.Logger > org.apache.aries.cdi.test.components.WithLogger.logger > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) This thread collected > dependencies > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) getService (single component > manager) dependencies collected. > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state satisfied > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Querying state satisfied > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)For dependency logger, > optional: false; to bind: [[RefPair: ref: [\{org.osgi.service.log.LogService, > org.osgi.service.log.LoggerFactory, > org.eclipse.equinox.log.ExtendedLogService}=\{service.id=2, > service.bundleid=0, service.scope=bundle}] service: [null]]] > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)getting activate: activate > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Found activate method: void > org.apache.aries.cdi.test.components.WithLogger.activate() > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)invoking activate: activate: > parameters [] > [main] ERROR o.a.a.cdi.test.components.WithLogger:67 - bundle > cdi-itests.services-one:0.0.2.201806121839 > (37)[org.apache.aries.cdi.test.components.WithLogger(0)] : The activate > method has thrown an exception > java.lang.NullPointerException: null > at > org.apache.aries.cdi.test.components.WithLogger.activate(WithLogger.java:17) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228) > at > org.apache.felix.scr.impl.inject.methods.BaseMethod.access$1(BaseMethod.java:218) > at > org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664) > at > org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510) > at > org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317) > at > org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:334) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:750) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) > at > org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) > at > org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) > at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) > at org.apache.felix.scr.impl.Activator.access$2(Activator.java:312) > at > org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) > at > org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) > at > org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) > at > org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:1) > at > org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488) > at > org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:1) > at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) > at > org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) > at > org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) > at > org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) > at > org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) > at > org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:230) > at > org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:137) > at > org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:129) > at > org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:191) > at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) > at org.eclipse.osgi.container.Module.start(Module.java:467) > at > org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:428) > at > org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:447) > at > org.apache.aries.cdi.test.cases.AbstractTestCase.installBundle(AbstractTestCase.java:143) > at > org.apache.aries.cdi.test.cases.AbstractTestCase.installBundle(AbstractTestCase.java:136) > at > org.apache.aries.cdi.test.cases.AbstractTestCase.beforeClass(AbstractTestCase.java:69) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) > at > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) > at org.junit.runners.ParentRunner.run(ParentRunner.java:363) > at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:38) > at junit.framework.TestSuite.runTest(TestSuite.java:252) > at junit.framework.TestSuite.run(TestSuite.java:247) > at aQute.junit.Activator.test(Activator.java:351) > at aQute.junit.Activator.run(Activator.java:187) > at aQute.launcher.Launcher.lambda$serviceChanged$0(Launcher.java:1345) > at aQute.launcher.Launcher.run(Launcher.java:347) > at aQute.launcher.Launcher.main(Launcher.java:147) > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)DependencyManager: logger > close component unbinding from > org.apache.felix.scr.impl.manager.ComponentContextImpl@46b695ec at tracking > count 1 refpairs: [[RefPair: ref: [\{org.osgi.service.log.LogService, > org.osgi.service.log.LoggerFactory, > org.eclipse.equinox.log.ExtendedLogService}=\{service.id=2, > service.bundleid=0, service.scope=bundle}] service: [null]]] > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37) Failed creating the component > instance; see log for reason > [main] DEBUG LogService.cdi-itests.services-one:? - bundle > cdi-itests.services-one:0.0.2.201806121839 (37)Changed state from satisfied > to failed > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)