[
https://issues.apache.org/jira/browse/JCRVLT-388?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16959710#comment-16959710
]
Konrad Windszus commented on JCRVLT-388:
----------------------------------------
Order needs to be ensured via package dependencies:
https://jackrabbit.apache.org/filevault/properties.html
> 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)