You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Robert Munteanu (Jira)" <ji...@apache.org> on 2023/01/03 22:27:00 UTC

[jira] [Created] (SLING-11747) Unable to override the built-in content package feature model extension

Robert Munteanu created SLING-11747:
---------------------------------------

             Summary: Unable to override the built-in content package feature model extension
                 Key: SLING-11747
                 URL: https://issues.apache.org/jira/browse/SLING-11747
             Project: Sling
          Issue Type: Bug
          Components: Feature Model
    Affects Versions: Feature Model Launcher 1.2.2
            Reporter: Robert Munteanu
             Fix For: Feature Model Launcher 1.2.4


With SLING-10956 we now have an assembly which allows us to drop in additional extensions and/or dependencies in the lib directory and have them located by the Feature Launcher using the {{ServiceLoader}} mechanism.

That mechanism does not work for the [content extension|https://github.com/apache/sling-org-apache-sling-feature-extension-content]. This extension is special because the handler it provides - https://github.com/apache/sling-org-apache-sling-feature-extension-content/blob/master/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java  - is supposed to override the buit-in handler from https://github.com/apache/sling-org-apache-sling-feature-launcher/blob/master/src/main/java/org/apache/sling/feature/launcher/impl/extensions/handlers/ContentPackageHandler.java .

It seems that the way the classpath is created by the launcher script does not allow 'extension' jars to override classes provided by the main jar file. I have looked at the [ServiceLoader javadoc|https://docs.oracle.com/javase/8/docs/api/index.html?java/util/ServiceLoader.html] and it states that    

{quote}When adding providers to the cache, the Iterator processes resources in the order that the ClassLoader.getResources(String) method finds the service configuration files.{quote}

In practice, I was only able to make the extension override the build-in handled by prepending it to the classpath.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)