Hi,

I must be missing something about how refresh() works.
The following is tested in Jackrabbit 1.3.3 and 1.4.2, and the last two assertions always fail. Could someone point me in the right direction? How do I refresh my node to get the persistent state?

Thanks,
Florent


import javax.jcr.Node;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import org.apache.jackrabbit.core.TransientRepository;
import junit.framework.TestCase;

public class TestRefresh extends TestCase {

    public static void testRefresh() throws Exception {
        Repository repository = new TransientRepository();
Session session = repository.login(new SimpleCredentials("username",
                "password".toCharArray()));
        try {
            Node root = session.getRootNode();

            Node hello = root.addNode("hello");
            hello.addNode("world");
            assertEquals(1, hello.getNodes().getSize());
            session.save();

            session.getWorkspace().copy("/hello/world", "/hello/foo");
            assertEquals(1, hello.getNodes().getSize());
            assertFalse(hello.hasNode("foo"));

            session.refresh(false); // following fails even if true
            assertEquals(2, hello.getNodes().getSize()); // FAILS!
            assertTrue(hello.hasNode("foo")); // FAILS!
        } finally {
            session.logout();
        }
    }
}

--
Florent Guillaume, Director of R&D, Nuxeo
Open Source Enterprise Content Management (ECM)
http://www.nuxeo.com   http://www.nuxeo.org   +33 1 40 33 79 87



Reply via email to