Raymond Augé created FELIX-5867:
-----------------------------------
Summary: 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é
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)