[ 
https://issues.apache.org/jira/browse/SLING-2612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13467487#comment-13467487
 ] 

Carsten Ziegeler commented on SLING-2612:
-----------------------------------------

I think the service way (InstallRule) doesn't work as at the point of 
installation the required InstallRule service might not be available.
Although I would like to have this pluggable, I think we need to code this 
separately for each InstallTaskFactory (not ResourceTransformer).

I first thought of adding a new state to ResourceState which indicates that 
this resource is processed by actually not installed because of a matching 
rule. However this would require major changes to the core of the installer and 
also in some cases to the plugins as they currently don't expect such a new 
state.
Therefore I think, if a task installer factory decides to not install an 
artifact, it just sets the state to "INSTALLED". This ensures that we don't 
have to change any resource handling in the core and this use case works out of 
the box.
The only disadvantage is that the artifact is marked as "installed" although it 
is not. I think we should simply add a well defined attribute which contains 
additional information. So in the case of not installing, the factory sets the 
resource as installed and adds something to this attribute. This can then be 
evaluated/displayed.

                
> Installer needs "install rules" to make certain operations optional
> -------------------------------------------------------------------
>
>                 Key: SLING-2612
>                 URL: https://issues.apache.org/jira/browse/SLING-2612
>             Project: Sling
>          Issue Type: Improvement
>          Components: Installer
>    Affects Versions: Installer Core 3.3.8
>            Reporter: Bertrand Delacretaz
>
> The installer currently executes all its operations without checking if they 
> make sense in the current environment, we need more granularity for a few use 
> cases like the ones below.
> 1) SLING-2569: do not install some bundles depending on their headers and the 
> current environment.
> 2) Depending on the current state of the world, a ResourceTransformer needs 
> to behave differently. For example, do not activate a RegisteredResource that 
> contains demo content, but just upload it to the content repository.
> Note that just ignoring resources would not cover case 2), where the "upload" 
> operation happens but not the "activate" operation.
> We might use a new InstallRule interface for that, something like:
> // Service that provides a specific rule
> public interface InstallRule {
>   public boolean shouldExecute(String operation, RegisteredResource r);
> }
> The installer can then have a master InstallRule that queries all InstallRule 
> services in sequence (ordered by service ranking) and ANDs the results.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to