I'm trying to disallow same name siblings. We have the concept of workspaces which hold artifacts and other workspaces. Very similar to a file system (we chose not to go with the built in file node types though as they didn't fit our application). We've defined our node types like this:

<nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0";
 xmlns:jcr="http://www.jcp.org/jcr/1.0";
 xmlns:galaxy="http://galaxy.mule.org";
 xmlns:mix="http://www.jcp.org/jcr/mix/1.0";>

 <nodeType name="galaxy:workspace"
   isMixin="false"
   hasOrderableChildNodes="false"
   primaryItemName="">
<supertypes>
     <supertype>nt:unstructured</supertype>
   </supertypes>
<childNodeDefinition name="galaxy:artifact" onParentVersion="COPY" sameNameSiblings="false" />
 </nodeType>

</nodeTypes>

When I dump the type registry I get this:

{http://galaxy.mule.org}workspace
   Supertypes
       {http://www.jcp.org/jcr/nt/1.0}unstructured
   Mixin    false
   OrderableChildNodes    false
   PrimaryItemName    <null>
NodeDefinition (declared in {http://galaxy.mule.org}workspace) id=801081333
       Name        {http://galaxy.mule.org}artifact
       RequiredPrimaryType    {http://www.jcp.org/jcr/nt/1.0}base
       AutoCreated    false
       Mandatory    false
       OnVersion    COPY
       Protected    false
       AllowsSameNameSiblings    false

But I'm still able to add multiple galaxy:artifact nodes with the same name as you see from this repository dump:

/workspaces/Default Workspace
/workspaces/Default Workspace/updated = 2008-02-20T11:17:21.920-08:00
/workspaces/Default Workspace/jcr:primaryType = galaxy:workspace
/workspaces/Default Workspace/jcr:mixinTypes = mix:referenceable
/workspaces/Default Workspace/jcr:uuid = de38a3e0-9bc1-4406-9618-5d9ccde3883d
/workspaces/Default Workspace/name = Default Workspace
/workspaces/Default Workspace/hello_world.wsdl
/workspaces/Default Workspace/hello_world.wsdl/lifecycle = Default
/workspaces/Default Workspace/hello_world.wsdl/updated = 2008-02-20T11:17:23.434-08:00
/workspaces/Default Workspace/hello_world.wsdl/phase = Created
/workspaces/Default Workspace/hello_world.wsdl/contentType = application/wsdl+xml /workspaces/Default Workspace/hello_world.wsdl/jcr:primaryType = galaxy:artifact /workspaces/Default Workspace/hello_world.wsdl/jcr:mixinTypes = mix:referenceable /workspaces/Default Workspace/hello_world.wsdl/jcr:uuid = 492fbb9f-ee45-4910-8907-8db107895bad
/workspaces/Default Workspace/hello_world.wsdl/name = hello_world.wsdl
/workspaces/Default Workspace/hello_world.wsdl/documentType = {http://schemas.xmlsoap.org/wsdl/}definitions
/workspaces/Default Workspace/hello_world.wsdl[2]
/workspaces/Default Workspace/hello_world.wsdl[2]/lifecycle = Default
/workspaces/Default Workspace/hello_world.wsdl[2]/updated = 2008-02-20T11:17:24.130-08:00
/workspaces/Default Workspace/hello_world.wsdl[2]/phase = Created
/workspaces/Default Workspace/hello_world.wsdl[2]/contentType = application/wsdl+xml /workspaces/Default Workspace/hello_world.wsdl[2]/jcr:primaryType = galaxy:artifact /workspaces/Default Workspace/hello_world.wsdl[2]/jcr:mixinTypes = mix:referenceable /workspaces/Default Workspace/hello_world.wsdl[2]/jcr:uuid = e21883eb-4f98-46b4-8868-1ce80355a1a9
/workspaces/Default Workspace/hello_world.wsdl[2]/name = hello_world.wsdl
/workspaces/Default Workspace/hello_world.wsdl[2]/documentType = {http://schemas.xmlsoap.org/wsdl/}definitions

As you can see, I have a parent node which is a galaxy:workspace and multiple nodes with the same name :(. Any ideas what in the world I'm doing wrong?

Also, as this is one of the best practices for JCR integration, it'd be great if the first hops guide detailed how to do this. Am I missing some obvious piece of documentation which explains all this?

Thanks
- Dan

--
Dan Diephouse
MuleSource
http://mulesource.com | http://netzooid.com/blog

Reply via email to