Dan,
Just to clarify: The SNS attribute belongs on the child node
definition *within* the node type of the parent node, not on the node
type proper of the parent node and not on the node type of the child
node.
Also, I noticed you are using "galaxy:artifact" as both a child node
name and a node type name. This is legal but confusing. In 2.0 we plan
to be suggest a convention whereby node type names are capitalized
("abc:BloopBlop") while item names are not (abc:bloopBlop). Though
this convention conflicts with our existing statndard node types :-)
it is something people should probably adopt.
Cheers,
Peeter
On 2/20/08, Peeter Piegaze <[EMAIL PROTECTED]> wrote:
> 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
> >
>