[
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)