Any suggested workarounds? If I create a different parent type which artifact/workspace inherit from, would that help?

- Dan

Peeter Piegaze 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



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

Reply via email to