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

Ben Zahler updated JCRVLT-388:
------------------------------
    Affects Version/s: 3.2.8

I tested this with 3.2.8, but I think 3.4.0 is also affected, I could not find 
any rleated code changes or Jira tickets

> Subpackage not installed in defined order
> -----------------------------------------
>
>                 Key: JCRVLT-388
>                 URL: https://issues.apache.org/jira/browse/JCRVLT-388
>             Project: Jackrabbit FileVault
>          Issue Type: Bug
>    Affects Versions: 3.2.8
>            Reporter: Ben Zahler
>            Priority: Minor
>
> I have a package with subpackages that need to be installed in a specific 
> order.
> In my case, one package contains the content and the other package contains 
> permissions to be installed on top of that content.
> My package has the following filter:
> <workspaceFilter version="1.0">
>  <filter 
> root="/etc/packages/com.axa.ch.aem/aem-apps-sites-content-3.57.2-SNAPSHOT.zip"
>  />
>  <filter 
> root="/etc/packages/com.axa.ch.aem/aem-permissions-author-3.57.2-SNAPSHOT.zip"
>  />
> </workspaceFilter>
>  
> *Expected*: aem-apps-sites-content is installed first, then 
> aem-permissions-author
> *Actual*: Installation order is not deterministic and not defined by the 
> filter definition.
> I did check the source code and found out that the order is defined from 
> reading the files in the zip file (using java.util.zip), so this cannot (and 
> probably should be) changed.
> My suggesion is to order the subpages by adding the following method to 
> Importer.java and calling it from here:
> [https://github.com/apache/jackrabbit-filevault/blob/60c66c3cb7fe456c6e1fd6599736afdddec862a4/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java#L472|https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java#L472]
>  
> {color:#808080}private List<String> getOrderedSubPackages(){{color}
>  List<String> orderedSubPackages = {color:#cc7832}new 
> {color}LinkedList<>(){color:#cc7832};
> {color}{color:#cc7832} if 
> {color}({color:#cc7832}this{color}.{color:#9876aa}filter {color}== 
> {color:#cc7832}null {color}|| 
> {color:#cc7832}this{color}.{color:#9876aa}subPackages {color}== 
> {color:#cc7832}null {color}|| 
> {color:#cc7832}this{color}.{color:#9876aa}subPackages{color}.isEmpty()) {
>  {color:#cc7832}return {color}orderedSubPackages{color:#cc7832};
> {color} }
>  {color:#cc7832}final {color}List<String> unOrderedSubPackages = 
> {color:#cc7832}new 
> {color}ArrayList<>({color:#cc7832}this{color}.{color:#9876aa}subPackages{color}){color:#cc7832};{color}{color:#cc7832}
> {color}{color:#cc7832}
> {color}{color:#cc7832} for {color}(PathFilterSet filterSet : 
> {color:#cc7832}this{color}.{color:#9876aa}filter{color}.getFilterSets()) {
>  {color:#cc7832}for {color}(String subPackage : unOrderedSubPackages) {
>  {color:#cc7832}if {color}(filterSet.contains(subPackage) && 
> !orderedSubPackages.contains(subPackage)) {
>  orderedSubPackages.add(subPackage){color:#cc7832};
> {color} }
>  }
>  }
>  {color:#cc7832}return {color}orderedSubPackages{color:#cc7832};
> {color}}
>  
> Let me know if you think this makes sense, if yes I'm happy to check out/ 
> build the code and provide a patch with unit tests.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to