Stefan Seifert created SLING-12578:
--------------------------------------
Summary: Sling Models Impl: Fix Injector and Implementation Picker
service ranking order again
Key: SLING-12578
URL: https://issues.apache.org/jira/browse/SLING-12578
Project: Sling
Issue Type: Bug
Components: Sling Models
Affects Versions: Models Implementation 1.7.6, Models Implementation 1.7.4
Reporter: Stefan Seifert
Assignee: Stefan Seifert
Fix For: Models Implementation 1.7.8
in SLING-12472 i fixed an service ranking order problem for handling Injector
and Implementation Picker rankings introduced by SLING-12374. but this was
based on a false assumption, and the fix actually introduced the bug and did
not fix it.
background:
* for historical reasons, Sling Models interprets the service ranking for
Injector and ImplementaitonPickers "the wrong way", ranking lower service
ranking as higher priority when looking for the best matching service
implementation. we can never change this behavior without breaking lots
existing code.
* in SLING-12374 with models impl 1.7.2 the code was modernized getting rid of
the custom "RankedServices" implementation in favor of DS-based collection
injection
* i realized that unit tests that depending on the correct ordering of
implementation pickers started to fail once updating to models impl 1.7.2,
identified the code changes from SLING-12374 as the root cause, and implemented
the bug fix in SLING-12472 and released it as models impl 1.7.4 - unit tests
are all green again.
* however, the impression that SLING-12374 broke the logic was wrong, and i was
fooled by a bug in osgi-mock, which did not preserve the DS-based injection
list order correctly if new services are registered after the service holding
the list of references. this bug in osgi-mock was fixed in SLING-12413, and
released as osgi-mock 3.5.2.
* once updating the affected to osgi-mock the unit tests depending on
implementation picker order started to fail again!
so, this ticket actually reverts all implementation changes from the wrong
bugfix SLING-12472, but keeps the added more fine-grained unit tests from it
which check the correct order handling of Injector and ImplementationPickers in
detail. additionally, we update to latest osgi-mock version to test the correct
service list order.
(sorry for the confusion with SLING-12472)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)