You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Kaizer <Ka...@mastek.com> on 2007/09/03 17:29:39 UTC

Re: Problem adding a child node

I am getting a similar exception on adding nodes. 

Node hello = root.addNode("hello","nt:base");
Node world = hello.addNode("world","nt:base");

javax.jcr.nodetype.ConstraintViolationException: no definition found in
parent node's node type for new node: no matching child node definition
found for {}world: no matching child node definition found for {}world

What should i do in this case?

Thanks.




JavaJ wrote:
> 
> Given the following node types:
> 
> [cm:myAppContainer] > nt:base,mix:referenceable,mix:versionable
> + cm:myApp (cm:myApp) = cm:myApp multiple version
> 
> [cm:myApp] > nt:base,mix:referenceable,mix:versionable
> - cm:size (long) mandatory
> - cm:rules mandatory
> - cm:locale mandatory
> - cm:address mandatory
> 
> I'm getting an error when I try to add a "myApp" child node to
> "myAppContainer".
> 
> For example:
> 
> // get the "myAppContainer" node
> Node container = rootNode.get("/nodes/myAppContainer");
> 
> // get the child node definitions to make sure it contains "myApp" child
> node definition
> NodeDefinition[] defs =
> container.getPrimaryNodeType().getDeclaredChildNodeDefinitions();
> 
> // add a new "myApp" node
> newNode = container.addNode("myNewAppNode", "cm:myApp");
> 
> I get this error on this call:
> 
> javax.jcr.nodetype.ConstraintViolationException: no definition found in
> parent node's node type for new node: 
> no matching child node definition found for {}myNewAppNode: 
> 
> Is there something I'm doing wrong???
> 
> 

-- 
View this message in context: http://www.nabble.com/Problem-adding-a-child-node-tf2065497.html#a12463572
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.


Re: Problem adding a child node

Posted by Stefan Guggisberg <st...@gmail.com>.
On 9/4/07, Kaizer <Ka...@mastek.com> wrote:
>
> Hi,
>
> Thanks a lot. Actually earlier I was trying to add the node under nt:folder
> and was getting the same exception, thats why i tried using the base node
> type. Why cant i add the nodes with nt:folder as the node type and what
> exactly is the cause of this exception?

please read "6.7 Node Types" in the JSR-170 specification which can be
downloaded here:
http://jcp.org/aboutJava/communityprocess/final/jsr170/index.html

you'll also find good introductory articles covering JCR and node type
basics here:
http://wiki.apache.org/jackrabbit/JcrLinks

cheers
stefan

>
> Thanks!
>
>
>
>
> Stefan Guggisberg wrote:
> >
> > On 9/3/07, Kaizer <Ka...@mastek.com> wrote:
> >>
> >> I am getting a similar exception on adding nodes.
> >>
> >> Node hello = root.addNode("hello","nt:base");
> >> Node world = hello.addNode("world","nt:base");
> >>
> >> javax.jcr.nodetype.ConstraintViolationException: no definition found in
> >> parent node's node type for new node: no matching child node definition
> >> found for {}world: no matching child node definition found for {}world
> >>
> >> What should i do in this case?
> >
> > nt:base is not intended to be used directly as a node type. it serves as
> > the
> > root of the node type hierarchy and just defines the 2 properties common
> > to all nodes: jcr:primaryType and jcr:mixinTypes.
> >
> > in your example, you could either omit the 2nd parameter (assuming the
> > default)
> > or specify an appropriate node type. nt:unstructured is the most
> > generic node type,
> > it allows any child nodes and any property of any type.
> >
> > Node hello = root.addNode("hello");
> > Node world = hello.addNode("world");
> >
> > or
> >
> > Node hello = root.addNode("hello","nt:unstructured");
> > Node world = hello.addNode("world","nt:unstructured");
> >
> > cheers
> > stefan
> >
> >>
> >> Thanks.
> >>
> >>
> >>
> >>
> >> JavaJ wrote:
> >> >
> >> > Given the following node types:
> >> >
> >> > [cm:myAppContainer] > nt:base,mix:referenceable,mix:versionable
> >> > + cm:myApp (cm:myApp) = cm:myApp multiple version
> >> >
> >> > [cm:myApp] > nt:base,mix:referenceable,mix:versionable
> >> > - cm:size (long) mandatory
> >> > - cm:rules mandatory
> >> > - cm:locale mandatory
> >> > - cm:address mandatory
> >> >
> >> > I'm getting an error when I try to add a "myApp" child node to
> >> > "myAppContainer".
> >> >
> >> > For example:
> >> >
> >> > // get the "myAppContainer" node
> >> > Node container = rootNode.get("/nodes/myAppContainer");
> >> >
> >> > // get the child node definitions to make sure it contains "myApp"
> >> child
> >> > node definition
> >> > NodeDefinition[] defs =
> >> > container.getPrimaryNodeType().getDeclaredChildNodeDefinitions();
> >> >
> >> > // add a new "myApp" node
> >> > newNode = container.addNode("myNewAppNode", "cm:myApp");
> >> >
> >> > I get this error on this call:
> >> >
> >> > javax.jcr.nodetype.ConstraintViolationException: no definition found in
> >> > parent node's node type for new node:
> >> > no matching child node definition found for {}myNewAppNode:
> >> >
> >> > Is there something I'm doing wrong???
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Problem-adding-a-child-node-tf2065497.html#a12463572
> >> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
> >>
> >>
> >
> >
>
> --
> View this message in context: http://www.nabble.com/Problem-adding-a-child-node-tf2065497.html#a12471478
> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>
>

Re: Problem adding a child node

Posted by Kaizer <Ka...@mastek.com>.
Hi,

Thanks a lot. Actually earlier I was trying to add the node under nt:folder
and was getting the same exception, thats why i tried using the base node
type. Why cant i add the nodes with nt:folder as the node type and what
exactly is the cause of this exception?

Thanks!




Stefan Guggisberg wrote:
> 
> On 9/3/07, Kaizer <Ka...@mastek.com> wrote:
>>
>> I am getting a similar exception on adding nodes.
>>
>> Node hello = root.addNode("hello","nt:base");
>> Node world = hello.addNode("world","nt:base");
>>
>> javax.jcr.nodetype.ConstraintViolationException: no definition found in
>> parent node's node type for new node: no matching child node definition
>> found for {}world: no matching child node definition found for {}world
>>
>> What should i do in this case?
> 
> nt:base is not intended to be used directly as a node type. it serves as
> the
> root of the node type hierarchy and just defines the 2 properties common
> to all nodes: jcr:primaryType and jcr:mixinTypes.
> 
> in your example, you could either omit the 2nd parameter (assuming the
> default)
> or specify an appropriate node type. nt:unstructured is the most
> generic node type,
> it allows any child nodes and any property of any type.
> 
> Node hello = root.addNode("hello");
> Node world = hello.addNode("world");
> 
> or
> 
> Node hello = root.addNode("hello","nt:unstructured");
> Node world = hello.addNode("world","nt:unstructured");
> 
> cheers
> stefan
> 
>>
>> Thanks.
>>
>>
>>
>>
>> JavaJ wrote:
>> >
>> > Given the following node types:
>> >
>> > [cm:myAppContainer] > nt:base,mix:referenceable,mix:versionable
>> > + cm:myApp (cm:myApp) = cm:myApp multiple version
>> >
>> > [cm:myApp] > nt:base,mix:referenceable,mix:versionable
>> > - cm:size (long) mandatory
>> > - cm:rules mandatory
>> > - cm:locale mandatory
>> > - cm:address mandatory
>> >
>> > I'm getting an error when I try to add a "myApp" child node to
>> > "myAppContainer".
>> >
>> > For example:
>> >
>> > // get the "myAppContainer" node
>> > Node container = rootNode.get("/nodes/myAppContainer");
>> >
>> > // get the child node definitions to make sure it contains "myApp"
>> child
>> > node definition
>> > NodeDefinition[] defs =
>> > container.getPrimaryNodeType().getDeclaredChildNodeDefinitions();
>> >
>> > // add a new "myApp" node
>> > newNode = container.addNode("myNewAppNode", "cm:myApp");
>> >
>> > I get this error on this call:
>> >
>> > javax.jcr.nodetype.ConstraintViolationException: no definition found in
>> > parent node's node type for new node:
>> > no matching child node definition found for {}myNewAppNode:
>> >
>> > Is there something I'm doing wrong???
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Problem-adding-a-child-node-tf2065497.html#a12463572
>> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/Problem-adding-a-child-node-tf2065497.html#a12471478
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.


Re: Problem adding a child node

Posted by Stefan Guggisberg <st...@gmail.com>.
On 9/3/07, Kaizer <Ka...@mastek.com> wrote:
>
> I am getting a similar exception on adding nodes.
>
> Node hello = root.addNode("hello","nt:base");
> Node world = hello.addNode("world","nt:base");
>
> javax.jcr.nodetype.ConstraintViolationException: no definition found in
> parent node's node type for new node: no matching child node definition
> found for {}world: no matching child node definition found for {}world
>
> What should i do in this case?

nt:base is not intended to be used directly as a node type. it serves as the
root of the node type hierarchy and just defines the 2 properties common
to all nodes: jcr:primaryType and jcr:mixinTypes.

in your example, you could either omit the 2nd parameter (assuming the default)
or specify an appropriate node type. nt:unstructured is the most
generic node type,
it allows any child nodes and any property of any type.

Node hello = root.addNode("hello");
Node world = hello.addNode("world");

or

Node hello = root.addNode("hello","nt:unstructured");
Node world = hello.addNode("world","nt:unstructured");

cheers
stefan

>
> Thanks.
>
>
>
>
> JavaJ wrote:
> >
> > Given the following node types:
> >
> > [cm:myAppContainer] > nt:base,mix:referenceable,mix:versionable
> > + cm:myApp (cm:myApp) = cm:myApp multiple version
> >
> > [cm:myApp] > nt:base,mix:referenceable,mix:versionable
> > - cm:size (long) mandatory
> > - cm:rules mandatory
> > - cm:locale mandatory
> > - cm:address mandatory
> >
> > I'm getting an error when I try to add a "myApp" child node to
> > "myAppContainer".
> >
> > For example:
> >
> > // get the "myAppContainer" node
> > Node container = rootNode.get("/nodes/myAppContainer");
> >
> > // get the child node definitions to make sure it contains "myApp" child
> > node definition
> > NodeDefinition[] defs =
> > container.getPrimaryNodeType().getDeclaredChildNodeDefinitions();
> >
> > // add a new "myApp" node
> > newNode = container.addNode("myNewAppNode", "cm:myApp");
> >
> > I get this error on this call:
> >
> > javax.jcr.nodetype.ConstraintViolationException: no definition found in
> > parent node's node type for new node:
> > no matching child node definition found for {}myNewAppNode:
> >
> > Is there something I'm doing wrong???
> >
> >
>
> --
> View this message in context: http://www.nabble.com/Problem-adding-a-child-node-tf2065497.html#a12463572
> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>
>