Search in sources :

Example 6 with QNodeTypeDefinitionBuilder

use of org.apache.jackrabbit.spi.commons.nodetype.QNodeTypeDefinitionBuilder in project jackrabbit by apache.

the class CyclicNodeTypeRegistrationTest method testRegisterCyclicChildNodeTypes.

/**
     * Tests, if it is possible to register node types with simple
     * cyclic dependencies.
     */
public void testRegisterCyclicChildNodeTypes() {
    /**
         * Constructs node types with the following structure:
         * [foo]
         * + myBarInFoo (bar)
         *
         * [bar]
         * + myFooInBar (foo)
         */
    final QNodeTypeDefinitionBuilder foo = new QNodeTypeDefinitionBuilder();
    foo.setName(nameFactory.create("", "foo"));
    foo.setSupertypes(new Name[] { NameConstants.NT_BASE });
    final QNodeTypeDefinitionBuilder bar = new QNodeTypeDefinitionBuilder();
    bar.setName(nameFactory.create("", "bar"));
    bar.setSupertypes(new Name[] { NameConstants.NT_BASE });
    QNodeDefinitionBuilder myBarInFoo = new QNodeDefinitionBuilder();
    myBarInFoo.setRequiredPrimaryTypes(new Name[] { bar.getName() });
    myBarInFoo.setName(nameFactory.create("", "myBarInFoo"));
    myBarInFoo.setDeclaringNodeType(foo.getName());
    QNodeDefinitionBuilder myFooInBar = new QNodeDefinitionBuilder();
    myFooInBar.setRequiredPrimaryTypes(new Name[] { foo.getName() });
    myFooInBar.setName(nameFactory.create("", "myFooInBar"));
    myFooInBar.setDeclaringNodeType(bar.getName());
    foo.setChildNodeDefs(new QNodeDefinition[] { myBarInFoo.build() });
    bar.setChildNodeDefs(new QNodeDefinition[] { myFooInBar.build() });
    ntDefCollection = new LinkedList<QNodeTypeDefinition>();
    ntDefCollection.add(foo.build());
    ntDefCollection.add(bar.build());
    try {
        ntreg.registerNodeTypes(ntDefCollection);
    } catch (InvalidNodeTypeDefException e) {
        assertFalse(e.getMessage(), true);
        e.printStackTrace();
    } catch (RepositoryException e) {
        assertFalse(e.getMessage(), true);
        e.printStackTrace();
    }
    boolean allNTsAreRegistered = ntreg.isRegistered(foo.getName()) && ntreg.isRegistered(bar.getName());
    assertTrue(allNTsAreRegistered);
}
Also used : QNodeTypeDefinition(org.apache.jackrabbit.spi.QNodeTypeDefinition) QNodeDefinitionBuilder(org.apache.jackrabbit.spi.commons.nodetype.QNodeDefinitionBuilder) RepositoryException(javax.jcr.RepositoryException) QNodeTypeDefinitionBuilder(org.apache.jackrabbit.spi.commons.nodetype.QNodeTypeDefinitionBuilder)

Example 7 with QNodeTypeDefinitionBuilder

use of org.apache.jackrabbit.spi.commons.nodetype.QNodeTypeDefinitionBuilder in project jackrabbit by apache.

the class CyclicNodeTypeRegistrationTest method testRegisterCyclicChildNodeTypesAndSupertypes.

/**
     * Basically a test of a Graffito use case.
     */
public void testRegisterCyclicChildNodeTypesAndSupertypes() {
    /**
         * Constructs node types with the following structure:
         * [Folder] > CmsObject
         * + folders (Folder)
         * + documents (Document)
         *
         * [CmsObject]
         * + parentFolder (Folder)
         *
         * [Document] > CmsObject
         * - size (long)
         *
         */
    final QNodeTypeDefinitionBuilder folder = new QNodeTypeDefinitionBuilder();
    folder.setName(nameFactory.create("", "Folder"));
    final QNodeTypeDefinitionBuilder cmsObject = new QNodeTypeDefinitionBuilder();
    cmsObject.setName(nameFactory.create("", "CmsObject"));
    cmsObject.setSupertypes(new Name[] { NameConstants.NT_BASE });
    QNodeDefinitionBuilder parentFolder = new QNodeDefinitionBuilder();
    parentFolder.setRequiredPrimaryTypes(new Name[] { folder.getName() });
    parentFolder.setName(nameFactory.create("", "parentFolder"));
    parentFolder.setDeclaringNodeType(cmsObject.getName());
    cmsObject.setChildNodeDefs(new QNodeDefinition[] { parentFolder.build() });
    final QNodeTypeDefinitionBuilder document = new QNodeTypeDefinitionBuilder();
    document.setName(nameFactory.create("", "Document"));
    document.setSupertypes(new Name[] { cmsObject.getName() });
    QPropertyDefinitionBuilder sizeProp = new QPropertyDefinitionBuilder();
    sizeProp.setName(nameFactory.create("", "size"));
    sizeProp.setRequiredType(PropertyType.LONG);
    sizeProp.setDeclaringNodeType(document.getName());
    document.setPropertyDefs(new QPropertyDefinition[] { sizeProp.build() });
    folder.setSupertypes(new Name[] { cmsObject.getName() });
    QNodeDefinitionBuilder folders = new QNodeDefinitionBuilder();
    folders.setRequiredPrimaryTypes(new Name[] { folder.getName() });
    folders.setName(nameFactory.create("", "folders"));
    folders.setDeclaringNodeType(folder.getName());
    QNodeDefinitionBuilder documents = new QNodeDefinitionBuilder();
    documents.setRequiredPrimaryTypes(new Name[] { document.getName() });
    documents.setName(nameFactory.create("", "documents"));
    documents.setDeclaringNodeType(folder.getName());
    folder.setChildNodeDefs(new QNodeDefinition[] { folders.build(), documents.build() });
    ntDefCollection = new LinkedList<QNodeTypeDefinition>();
    ntDefCollection.add(folder.build());
    ntDefCollection.add(document.build());
    ntDefCollection.add(cmsObject.build());
    try {
        ntreg.registerNodeTypes(ntDefCollection);
    } catch (InvalidNodeTypeDefException e) {
        assertFalse(e.getMessage(), true);
        e.printStackTrace();
    } catch (RepositoryException e) {
        assertFalse(e.getMessage(), true);
        e.printStackTrace();
    }
    boolean allNTsAreRegistered = ntreg.isRegistered(folder.getName()) && ntreg.isRegistered(document.getName()) && ntreg.isRegistered(cmsObject.getName());
    assertTrue(allNTsAreRegistered);
}
Also used : QNodeTypeDefinition(org.apache.jackrabbit.spi.QNodeTypeDefinition) QNodeDefinitionBuilder(org.apache.jackrabbit.spi.commons.nodetype.QNodeDefinitionBuilder) QPropertyDefinitionBuilder(org.apache.jackrabbit.spi.commons.nodetype.QPropertyDefinitionBuilder) RepositoryException(javax.jcr.RepositoryException) QNodeTypeDefinitionBuilder(org.apache.jackrabbit.spi.commons.nodetype.QNodeTypeDefinitionBuilder)

Aggregations

QNodeTypeDefinitionBuilder (org.apache.jackrabbit.spi.commons.nodetype.QNodeTypeDefinitionBuilder)7 QNodeTypeDefinition (org.apache.jackrabbit.spi.QNodeTypeDefinition)5 ArrayList (java.util.ArrayList)4 RepositoryException (javax.jcr.RepositoryException)4 QNodeDefinitionBuilder (org.apache.jackrabbit.spi.commons.nodetype.QNodeDefinitionBuilder)4 NodeTypeEvent (org.apache.jackrabbit.core.cluster.SimpleEventListener.NodeTypeEvent)2 Name (org.apache.jackrabbit.spi.Name)2 QNodeDefinition (org.apache.jackrabbit.spi.QNodeDefinition)2 QPropertyDefinition (org.apache.jackrabbit.spi.QPropertyDefinition)2 QPropertyDefinitionBuilder (org.apache.jackrabbit.spi.commons.nodetype.QPropertyDefinitionBuilder)2 NameException (org.apache.jackrabbit.spi.commons.conversion.NameException)1 ElementIterator (org.apache.jackrabbit.webdav.xml.ElementIterator)1 Element (org.w3c.dom.Element)1