[
https://issues.apache.org/jira/browse/FELIX-5867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16510129#comment-16510129
]
Carsten Ziegeler commented on FELIX-5867:
-----------------------------------------
Thanks for reporting, [~rotty3000] - is there any chance I can easily reproduce
this?
> 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)