Hi Dan, The trouble is that you are using type nt:unstructured as the superclass of type galaxy:workspace. This adds the following child node definition to the effective (as opposed to declared) definition of galaxy:workspace:
<childNodeDefinition name="*" onParentVersion="VERSION" sameNameSiblings="true" /> This definition allows any number of child nodes of any type with any name, each any number of times. This is called a residual definition in JSR-170-speak. The interaction between two conflicting item defintions in a node type that arise due to subclassing is not well defined in JSR 170. As a result implementations are free to apply whatever resolution mechanism they see fit. In the case of Jackrabbit when you add a child node called "galaxy:artifact" to your galaxy:workspace node the first time it matches your original child node defintion: <childNodeDefinition name="galaxy:artifact" onParentVersion="COPY" sameNameSiblings="false" /> when you then add a second it matches the residual definition. I admit that this behavior is weird. It will be addressed in JCR 2.0 :-) Cheers, Peeter On 2/20/08, Dan Diephouse <[EMAIL PROTECTED]> wrote: > > Sorry, I didn't include the whole thing, but I changed it so it does: > > <nodeType name="galaxy:workspace" > isMixin="false" > hasOrderableChildNodes="false" > primaryItemName="" > sameNameSiblings="false"> > > <supertypes> > <supertype>nt:unstructured</supertype> > </supertypes> > <childNodeDefinition name="galaxy:artifact" onParentVersion="COPY" > sameNameSiblings="false" /> > </nodeType> > > <nodeType name="galaxy:artifact" > isMixin="false" > hasOrderableChildNodes="false" > primaryItemName="" > sameNameSiblings="false" > allowSameNameSiblings="false"> > > <supertypes> > <supertype>nt:unstructured</supertype> > </supertypes> > > </nodeType> > > - Dan > > > Tobias Bocanegra wrote: > as i said, the workspace nodetype must have SNS=false > regards, toby > > On 2/20/08, Dan Diephouse <[EMAIL PROTECTED]> wrote: > > > Hmmm... This doesn't seem to work either: > > <nodeType name="galaxy:artifact" > isMixin="false" > hasOrderableChildNodes="false" > primaryItemName="" > sameNameSiblings="false"> > > <supertypes> > <supertype>nt:unstructured</supertype> > </supertypes> > > </nodeType> > > I'm guessing I'm doing something stupid. :-) > - Dan > > > Tobias Bocanegra wrote: > hi, > the SNS works on the defining node, not on the child. i.e. your > galaxy:workspace must have the SNS=false, not the artifact. > > regards, toby > > On 2/20/08, Dan Diephouse <[EMAIL PROTECTED]> wrote: > > > 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 > > > > > > > > -- > Dan Diephouse > MuleSource > http://mulesource.com | http://netzooid.com/blog > > > > > > > -- > Dan Diephouse > MuleSource > http://mulesource.com | http://netzooid.com/blog >
