jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peeter Piegaze" <peeter.pieg...@day.com>
Subject Re: Problems disallowing same name siblings
Date Thu, 21 Feb 2008 01:53:56 GMT
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 <peeter.piegaze@day.com> 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 <dan.diephouse@mulesource.com> 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 <dan.diephouse@mulesource.com> 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 <dan.diephouse@mulesource.com> 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
>  >
>

Mime
View raw message