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 19:47:38 GMT
>   <nodeType name="galaxy:workspace"
>     isMixin="false"
>     hasOrderableChildNodes="false"
>     primaryItemName=""
>     sameNameSiblings="false">

this SNS attribute does not belong here. As I said, SNS status is
indicated per child node definition

>     <propertyDefinition name="*" requiredType="undefined"
>  onParentVersion="COPY" sameNameSiblings="false" />

this SNS attribute does not belong here. SNS does not apply to properties

>     <childNodeDefinition name="*" defaultPrimaryType="nt:unstructured"
>    onParentVersion="COPY" sameNameSiblings="false" />

this SNS is ok. this definition  allowing nodes of type
galaxy:workspace to have any number of child nodes with any names all
of which are must be distinct(i.e., no SNS). However, this defintion
specifies that all these child nodes must be of type nt:unstructured.
I thought you wanted the child nodes of a galaxy:worksapce node to be
of type galaxy:artifact?

>   </nodeType>
>
>   <nodeType name="galaxy:artifact"
>     isMixin="false"
>     hasOrderableChildNodes="false"
>     primaryItemName=""
>     sameNameSiblings="false">

SNS doesnt belong here

>     <propertyDefinition name="*" requiredType="undefined"
>  onParentVersion="COPY" sameNameSiblings="false" />

nor here

>     <childNodeDefinition name="*" defaultPrimaryType="nt:unstructured"
>  onParentVersion="COPY" sameNameSiblings="true" />

this is ok, if thats what you want.

>
>   </nodeType>
>
>  Once again, it'd be great if things like residual item definitions and
>  what not were documented somewhere.

They are. As mentioned on the front page of the Jackrabbit website the
spec is the best doc right now

http://jcp.org/aboutJava/communityprocess/final/jsr170/index.html

> Along with a schema for the XML
>  file. I fooled around with the CND notation as well, but found it a
>  little confusing and short on real examples (well so is the XML for that
>  matter). I think I could probably figure it out now that I have a
>  working XML version, but not much point any more. :-)
>
>  Thanks for the help Peter,
>
>
>  - Dan
>
>
>  Peeter Piegaze wrote:
>  > 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 <dan.diephouse@mulesource.com> 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 <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
>  >>  >>>
>  >>  >>>
>  >>  >
>  >>  >
>  >>
>  >>
>  >>  --
>  >>  Dan Diephouse
>  >>  MuleSource
>  >>  http://mulesource.com | http://netzooid.com/blog
>  >>
>  >>
>  >>
>
>
>
> --
>
> Dan Diephouse
>  MuleSource
>  http://mulesource.com | http://netzooid.com/blog
>
>

Mime
View raw message