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