How to control the order of sibling nodes in JCR packages? | Community
Skip to main content
gordonstretch
October 16, 2015
Solved

How to control the order of sibling nodes in JCR packages?

  • October 16, 2015
  • 4 replies
  • 2515 views

Hi,

I'm moving content from a legacy CMS to AEM using JCR packages. My .content.xml, by way of example, looks like this:

... </jcr:content><Android/><BlackBerry/><Chrome/><Doc Finder/><HTML5/><iOS/><Java/><Linux/><Mac/><Mobility Pack/><Offline Plug-in/><Online Plug-in/><Playbook/><Windows/><Windows 8/RT/><Windows CE/><Windows Phone 8/><Updater for Windows/></jcr:root>

The order of the subfolder siblings (<Java/><Linux/><Mac/> etc.), when the packages are imported to AEM, seems randomly changed. I know that the order of the files in the JCR zip is different, as I write the files to a directory structure on disk before I zip them up.

I guess my question is, how does AEM determine the order of the sibling nodes when a package is imported? I'm kinda tearing my hair out here, so would certainly appreciate any idea sharing!

 

Cheers,

Gordon

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by joerghoh

Hi Gordon,

The support for same name siblings in Oak is deprecated. See [1]. I would recommend to create unique names for nodes beneath a common parent node.

kind regards,
Jörg

[1] http://jackrabbit.apache.org/oak/docs/differences.html

4 replies

joerghoh
Adobe Employee
joerghohAdobe EmployeeAccepted solution
Adobe Employee
October 16, 2015

Hi Gordon,

The support for same name siblings in Oak is deprecated. See [1]. I would recommend to create unique names for nodes beneath a common parent node.

kind regards,
Jörg

[1] http://jackrabbit.apache.org/oak/docs/differences.html

Adobe Employee
October 16, 2015

Hi Gordon,

What is the jcr:primaryType of the jcr:root element?

For nodes to be ordered in a consistent fashion, you need to use a node type which has orderable child nodes. Examples include nt:unstructured, sling:OrderedFolder, and cq:Page. 

Please post the full .content.xml file (preferably using the code formatting so that it doesn't all get lumped onto a single line).

Regards,

Justin

gordonstretch
October 16, 2015

Hi Justin, thank you! Here is a sample .content.xml - I normally use the jcr:primaryType:cg:ContentPage, I was experimenting here to use cq:Page.

<?xml version="1.0" ?> <jcr:root jcr:primaryType="cq:Page" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:sling="http://sling.apache.org/jcr/sling/1.0"> <jcr:content cq:lastModified="{Date}2014-11-12T15:28:26.216Z" cq:lastModifiedBy="admin" cq:template="/apps/xxxxedocs/templates/content" jcr:isCheckedOut="{Boolean}true" jcr:mixinTypes="[mix:versionable]" jcr:primaryType="cq:Page" jcr:title="xxxx Receiver" jcr:uuid="feaa6f06-a4d9-4428-844c-c1969e0c9808" navTitle="" pageTitle="" sling:resourceType="xxxxedocs/components/page/contentpage"> <par jcr:primaryType="nt:unstructured" sling:resourceType="foundation/components/parsys"> <richtext jcr:created="{Date}2014-06-12T12:43:30.918-04:00" jcr:createdBy="admin" jcr:lastModified="{Date}2014-06-12T12:45:26.449-04:00" jcr:lastModifiedBy="admin" jcr:primaryType="nt:unstructured" sling:resourceType="xxxxedocs/components/section/richtext" text="xxxx" textIsRich="true"/> <richtext_0 jcr:created="{Date}2014-06-12T12:43:30.918-04:00" jcr:createdBy="admin" jcr:lastModified="{Date}2014-06-12T12:45:26.449-04:00" jcr:lastModifiedBy="admin" jcr:primaryType="nt:unstructured" sling:resourceType="xxxxedocs/components/section/richtext" text="xxxx" textIsRich="true"/> <richtext_1 jcr:created="{Date}2014-06-12T12:43:30.918-04:00" jcr:createdBy="admin" jcr:lastModified="{Date}2014-06-12T12:45:26.449-04:00" jcr:lastModifiedBy="admin" jcr:primaryType="nt:unstructured" sling:resourceType="xxxxedocs/components/section/richtext" text="xxxxx" textIsRich="true"/> <richtext_2 jcr:created="{Date}2014-06-12T12:43:30.918-04:00" jcr:createdBy="admin" jcr:lastModified="{Date}2014-06-12T12:45:26.449-04:00" jcr:lastModifiedBy="admin" jcr:primaryType="nt:unstructured" sling:resourceType="xxxxedocs/components/section/richtext" text="xxxxx" textIsRich="true"/> </par> </jcr:content> <receivers-android/> <blackberry-receiver-22-admin-wrapper/> <receivers-chrome-os/> <receivers-html5/> <receivers-ios/> <receivers-java-landing-page-version-101/> <receivers-linux-wrapper/> <receivers-mac-wrapper/> <mobility-pack-wrapper/> <receivers-offline-plugin-wrapper/> <online-plugin-wrapper/> <playbook-receiver-wrapper/> <rec-receiver-for-win/> <rec-8rt-14-wrapper/> <wince-wbt-receiver1102-wrapper/> <rec-winphone8-wrapper/> <rec-receiver-updater-windows/> </jcr:root>
smacdonald2008
Level 10
October 16, 2015

See this AEM doc topic - you can define filter and rules in packages:

http://docs.adobe.com/docs/en/cq/current/administering/package_manager.html