jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Harris" <michael.e.har...@gmail.com>
Subject Re: newb transient repository questions
Date Mon, 21 Jul 2008 15:00:49 GMT
So I ran my tests a bunch of times without the delete code.  asset[x]
instances accumulated.  I then tried adding the cleanup code in and thought
that it wasn't cleaning up.

however, I deleted the repo root, and now when i run the tests they clean
up.  So the problem has gone away....

On Mon, Jul 21, 2008 at 4:07 AM, Marcel Reutegger <marcel.reutegger@gmx.net>
wrote:

> Hi Florian,
>
> ah, of course, you are right.
>
> Michael, can you tell us what nodes remain in the workspace after you
> removed the assets node and called save?
>
> regards
>  marcel
>
>
> Florian Holeczek wrote:
>
>> Hallo Marcel,
>>
>> are you sure about this? I thought Michael's code produced the
>> following tree:
>>
>>      root
>>       |
>>     assets
>>    /      \
>> asset[1] asset[2]
>>
>> Regards,
>>  Florian
>>
>> Urspr√ľngliche Nachricht vom 21.07.2008 um 09:07:
>>
>>> Hi Michael,
>>>
>>
>>  Michael Harris wrote:
>>>
>>>> another noob question.  I have the following codes
>>>>
>>>>                Node root = session.getRootNode();
>>>>                Node assets = root.addNode("assets");
>>>>
>>>>                // Store content
>>>>                Node asset = assets.addNode("asset");
>>>>                asset.setProperty("url", "http://asset1url.org");
>>>>                asset.setProperty("name", "Asset 1");
>>>>                asset.setProperty("typetype", "image");
>>>>
>>>>                Node asset2 = assets.addNode("asset");
>>>>
>>>
>>  this creates a same named sibling /asset[2]
>>>
>>
>>                 asset2.setProperty("url", "http://asset2url.org");
>>>>                asset2.setProperty("name", "Asset 2");
>>>>                asset2.setProperty("type", "image");
>>>>                session.save();
>>>>
>>>> and then
>>>>
>>>>        Node root = session.getRootNode();
>>>>        Node assets = root.getNode("assets");
>>>>
>>>
>>  this will only return the first asset node but not the second one.
>>>
>>
>>         assets.remove();
>>>>        session.save();
>>>>
>>>> the more I run the test, the more nodes I get.  Seems like the data in
>>>> the
>>>> TransientRepo is being stored on the disk.  The remove is not cleaning
>>>> it
>>>> up.  For why?
>>>>
>>>
>>  to remove all asset nodes you need to do the following:
>>>
>>
>>  for (NodeIterator assets = root.getNodes("assets"); assets.hasNext(); ) {
>>>     assets.nextNode().remove();
>>> }
>>> session.save();
>>>
>>
>>  regards
>>>  marcel
>>>
>>
>>
>


-- 
---------------------
Michael Harris

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message