<mode = "http://www.modeshape.org/1.0"> // My CND type [mode:example] mixin - mode:name (string) multiple copy + mode:child (mode:example) = mode:example version
This sequencer processes JCR Compact Node Definition (CND) files to extract the node definitions with their property definitions, and inserts these into the repository using JCR built-in types. The node structure generated by this sequencer is equivalent to the node structure used in /jcr:system/jcr:nodeTypes.
ExampleThis sequencer generates a graph structure that corresponds to what can be found in the /jcr:system/jcr:nodeTypes subtree. As an example, the CND file below:
<mode = "http://www.modeshape.org/1.0"> // My CND type [mode:example] mixin - mode:name (string) multiple copy + mode:child (mode:example) = mode:example version
The resulting graph structure (listed in the JCR document view) contains the node type information from the CND file above. Note that comments are not sequenced.
<mode:example jcr:primaryType="nt:nodeType" jcr:mixinTypes="mode:derived" mode:derivedAt="2011-05-13T13:12:03.925Z" mode:derivedFrom="/files/docForReferenceGuide.xml" jcr:nodeTypeName="mode:example" jcr:supertypes="nt:base" jcr:isAbstract="false" jcr:isMixin="true" jcr:isQueryable="true" jcr:hasOrderableChildNodes="false"> <nt:propertyDefinition jcr:name="mode:name" jcr:autoCreated="false" jcr:mandatory="false" jcr:isFullTextSearchable="true" jcr:isQueryOrderable="true" jcr:onParentVersion="copy" jcr:protected="false" jcr:requiredType="STRING" jcr:availableQueryOperators="= > >= < <= <> LIKE" jcr:multiple="true" /> <nt:childNodeDefinition jcr:name="mode:child" jcr:autoCreated="false" jcr:mandatory="false" jcr:onParentVersion="VERSION" jcr:protected="false" jcr:requiredPrimaryTypes="mode:example" jcr:defaultPrimaryType="mode:example" jcr:sameNameSiblings="false" /> </mode:example>
This sequencer can be added to the repository configuration like so:
JcrConfiguration config = ... config.sequencer("CND Sequencer") .usingClass("org.modeshape.sequencer.cnd.CndSequencer") .loadedFromClasspath() .setDescription("Sequences CND files to extract the node type definitions") .sequencingFrom("//(*.cnd[*])/jcr:content[@jcr:data]") .andOutputtingTo("/nodeTypes/$1");