Thanks Remi,

I was confused considering that a linked object is that was supposed to
return and set "true", but it was on the contrary, the case of a regular
SubjectNode, I could be notice it myself.

Now everything work fine.

Regards,

Valeriy
-----Original Message-----
From: Remy Maucherat [mailto:[EMAIL PROTECTED]]
Sent: Monday, May 07, 2001 5:29 PM
To: [EMAIL PROTECTED]
Subject: Re: Removing LinkNode objects


Quoting Valeriy Podkolzin <[EMAIL PROTECTED]>:

> I tried to cleanup objects in the end of examples\xml\Test.
>
> With regular SubjectNodes everything is fine:
>
> subject4 = (SubjectNode)structure.retrieve(slideToken, "/toto/1.txt");
> structure.remove(slideToken, subject4);
> subject4 = (SubjectNode)structure.retrieve(slideToken, "/toto/2.txt");
> structure.remove(slideToken, subject4);
> subject4 = (SubjectNode)structure.retrieve(slideToken,
> "/toto/2/3/4/5");
> structure.remove(slideToken, subject4);
> subject4 = (SubjectNode)structure.retrieve(slideToken, "/toto/2/3/4");
> structure.remove(slideToken, subject4);
> subject4 = (SubjectNode)structure.retrieve(slideToken, "/toto/2/3");
> structure.remove(slideToken, subject4);
> subject4 = (SubjectNode)structure.retrieve(slideToken, "/toto/2");
>
> But whatever I try to delete LinkObject:
>
> subject4 = (SubjectNode)structure.retrieve(slideToken,
> "/toto/test.lnk",
> true);

If I remember the example well, that call will return the SubjectNode
at "/toto".

> structure.remove(slideToken, subject4);
> // still return /toto subject in subject4

Yes, that's correct.
It's illegal to remove an object which has children so you get an exception.
Note : There is a delete macro from the Macro helper which you can use to
remove an entire branch of the namespace wich a single call.

If you want to remove the link itself, do :
subject4 = (SubjectNode)structure.retrieve(slideToken,
"/toto/test.lnk",
false);
structure.remove(slideToken, subject4);

> or
>
> //doesn't work either!        structure.remove(slideToken, link);// link is
ref
> to
> LinkNode
>
> or
>
> subject4 = (SubjectNode)structure.retrieve(slideToken,
> "/toto/test.lnk");
> structure.remove(slideToken, subject4);
>
>
> I got on
>               subject4 = (SubjectNode)structure.retrieve(slideToken, "/toto");
>               structure.remove(slideToken, subject4);
>
> org.apache.slide.structure.ObjectHasChildrenException: Object /toto has
> children      at
> org.apache.slide.structure.StructureImpl.remove(StructureImpl.java:640)
>
> And I see that /toto is still in SQL database.
>
> Am I wrong in deleteing LinkNode, or is it a BUG?

I think you may be wrong here, since all the retrieve you mentioned will
return
the node at "/toto".

Remy

Reply via email to