jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Torsten Curdt" <tcu...@apache.org>
Subject Re: versioning test
Date Thu, 11 Dec 2008 13:03:38 GMT
For one I did not use the proper path on addNode :-p

But the versioning part was a little more tricky to get right. Still
find the checkin/checkout/save semantics quite confusing. But this
seems to work as expected:

	private Node write(Session session, String path, String content)
throws RepositoryException {
		
		Node root = session.getRootNode();
		Node node;

		boolean isNew;
		
		if (root.hasNode(path)) {
			node = root.getNode(path);
			node.checkout();
			isNew = false;
		} else {
			node = root.addNode(path, "nt:resource");
			node.setProperty("jcr:mimeType", "text/plain");
		    node.setProperty("jcr:encoding", "utf-8");	    	
		    node.addMixin("mix:versionable");
			isNew = true;
		}
		
		node.setProperty("jcr:data", content);

		Calendar lastModified = Calendar.getInstance();
	    lastModified.setTimeInMillis(System.currentTimeMillis());
	    node.setProperty("jcr:lastModified", lastModified);

	    session.save();

	    if (!isNew) {
	    	node.checkin();
	    }

		return node;
	}

..

	public void testVersioning() throws Exception {
		
		Node node;
		
		node = write(session, "test", "test1");
		assertEquals(1, versions(node));
		assertEquals("test1", read(session, "test"));
		
		node = write(session, "test", "test2");
		assertEquals(2, versions(node));
		assertEquals("test2", read(session, "test"));

		node = write(session, "test", "test3");
		assertEquals(3, versions(node));
		assertEquals("test3", read(session, "test"));

		node = write(session, "test", "test4");
		assertEquals(4, versions(node));
		assertEquals("test4", read(session, "test"));
	}


Would have hoped for such an example in the docs.

cheers
--
Torsten

Mime
View raw message