If you need to be able to add arbitrary child nodes and properties to nodes of type galaxy:workspace then you can include residual child item defs directly within the definition of galaxy:workspace as opposed to inheriting them.
If you know what a galaxy:workspace is allowed to contain then just add child item defs for those particular items or inherit from some non-unstructured standard type. If the problem is, as I suspect, the behavior of Jackrabbit wrt inheritence then doing any of these should fix it. On 2/20/08, Dan Diephouse <[EMAIL PROTECTED]> wrote: > Thinking about this some more: so is the workaround to not have a > superType and then define all my properties/child node types? > > > - Dan > > > Dan Diephouse wrote: > > 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 > >
