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