[ https://issues.apache.org/jira/browse/SLING-7687?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stefan Seifert reassigned SLING-7687: ------------------------------------- Assignee: Stefan Seifert > Some Adapters don't work during service deactivation > ---------------------------------------------------- > > Key: SLING-7687 > URL: https://issues.apache.org/jira/browse/SLING-7687 > Project: Sling > Issue Type: Bug > Components: Testing > Affects Versions: Testing Sling Mock 2.2.18 > Reporter: Arneh Jain > Assignee: Stefan Seifert > Priority: Major > Labels: mocks > Attachments: patch.txt > > > If we have an AdapterFactory and a Service registered by the following code: > > {code:java} > // code placeholder > SlingContext context = new SlingContext(); > context.registerInjectActivateService(new TestAdapterFactory()); > context.registerInjectActivateService(new TestService());{code} > it turns out that adapting a Resource to another Class (defined by the > TestAdapterFactory) returns null when done in the deactivate method of the > TestService, i.e. > > {code:java} > resource.adaptTo(TestClass.class) // returns null in the deactivate method. > resource.adaptTo(TestClass.class) // works correctly in any other > method.{code} > > Reason: > It looks like the registered adapters are cleaned up before registered > services are deactivated in the tearDown method of SlingContextImpl. > > {code:java} > // SlingContextImpl > void tearDown() { > ... > MockSling.clearAdapterManagerBundleContext(); > ... > super.tearDown(); // calls the deactivate of the registered services. > }{code} > > > Cleaning up the registered adapters after deactivating the services seems to > solve the issue. > {code:java} > // SlingContextImpl > void tearDown() { > ... > super.tearDown(); > MockSling.clearAdapterManagerBundleContext(); > } > {code} > but I'm not sure about any other potential impacts of this change (attached > patch). > > -- This message was sent by Atlassian JIRA (v7.6.3#76005)