[ 
https://issues.apache.org/jira/browse/SLING-8483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Schaefer updated SLING-8483:
------------------------------------
    Description: 
There are two issues with the Feature Launcher to support Package Content 
installation:
 # The feature extension content needs to be added before the launcher in the 
class path
 # For the Content Package deployment to work JCR Package Init needs to be 
installed

In the Feature Processor the Content Package Handler from the launcher is 
called first if the launcher is ahead of the content extension in the class 
path:

 
{code:java}
extensions: for(final Extension ext : app.getExtensions()) {
 for (ExtensionHandler handler : ServiceLoader.load(ExtensionHandler.class, 
FeatureProcessor.class.getClassLoader()))
 {
 if (handler.handle(new ExtensionContextImpl(ctx, config.getInstallation(), 
loadedFeatures), ext)) {
 continue extensions;
{code}
Because this handle() method returns true the content extension's Content 
Handler is never invoked and hence there is no Execution Plan making the 
Content Package fail later.

I think the Extension Handler should issue a priority to select the appropriate 
one at runtime.

The Content Package deployment will not work anyhow if the JCR Package Init 
bundle is not installed prior to deployment. I would suggest that the Launcher 
should deploy that bundle as it does deploy the Sling Launcher as well. 

  was:
There are two issues with the Feature Launcher to support Package Content 
installation:
 # The feature extension content needs to be added before the launcher in the 
class path
 # For the Content Package deployment to work JCR Package Init needs to be 
installed

In the Feature Processor the Content Package Handler from the launcher is 
called first if the launcher is ahead of the content extension in the class 
path:

 
{code:java}
extensions: for(final Extension ext : app.getExtensions()) {
 for (ExtensionHandler handler : ServiceLoader.load(ExtensionHandler.class, 
FeatureProcessor.class.getClassLoader()))
 {
 if (handler.handle(new ExtensionContextImpl(ctx, config.getInstallation(), 
loadedFeatures), ext)) {
 continue extensions;
{code}
Because this will handle() method returns true the content extension's Content 
Handler is never invoked and hence there is not Execution Plan making the 
Content Package fail later.

I think the Extension Handler should issue a priority to select the appropriate 
one at runtime.

The Content Package deployment will not work anyhow if the JCR Package Init 
bundle is not installed prior to deployment. I would suggest that the Launcher 
should deploy that bundle as it does deploy the Sling Launcher as well. 


> Sling Feature Launcher with Content Package depends on Classpath Order and 
> Needs Package Init Bundle
> ----------------------------------------------------------------------------------------------------
>
>                 Key: SLING-8483
>                 URL: https://issues.apache.org/jira/browse/SLING-8483
>             Project: Sling
>          Issue Type: Bug
>          Components: Feature Model
>    Affects Versions: Feature Model Launcher 1.0.2
>         Environment: Java 8, Sling 11, Feature Model 1.0.2
>            Reporter: Andreas Schaefer
>            Priority: Major
>             Fix For: Feature Model Launcher 1.0.6
>
>
> There are two issues with the Feature Launcher to support Package Content 
> installation:
>  # The feature extension content needs to be added before the launcher in the 
> class path
>  # For the Content Package deployment to work JCR Package Init needs to be 
> installed
> In the Feature Processor the Content Package Handler from the launcher is 
> called first if the launcher is ahead of the content extension in the class 
> path:
>  
> {code:java}
> extensions: for(final Extension ext : app.getExtensions()) {
>  for (ExtensionHandler handler : ServiceLoader.load(ExtensionHandler.class, 
> FeatureProcessor.class.getClassLoader()))
>  {
>  if (handler.handle(new ExtensionContextImpl(ctx, config.getInstallation(), 
> loadedFeatures), ext)) {
>  continue extensions;
> {code}
> Because this handle() method returns true the content extension's Content 
> Handler is never invoked and hence there is no Execution Plan making the 
> Content Package fail later.
> I think the Extension Handler should issue a priority to select the 
> appropriate one at runtime.
> The Content Package deployment will not work anyhow if the JCR Package Init 
> bundle is not installed prior to deployment. I would suggest that the 
> Launcher should deploy that bundle as it does deploy the Sling Launcher as 
> well. 



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to