Index: src/test/java/info/magnolia/nodebuilder/OpsTest.java =================================================================== --- src/test/java/info/magnolia/nodebuilder/OpsTest.java (revision 38716) +++ src/test/java/info/magnolia/nodebuilder/OpsTest.java (working copy) @@ -111,4 +111,18 @@ assertEquals("non-existing", e.getMessage()); } } + + public void testRenamePropertyAndCheckValueForString() throws Exception { + final HierarchyManager hm = MgnlContext.getHierarchyManager("config"); + hm.getRoot().createContent("hello").setNodeData("fooOld", "bar"); + hm.save(); + + final Content root = hm.getContent("/hello"); + final NodeOperation op = Ops.renameProperty("fooOld", "fooNew"); + op.exec(root, eh); + assertFalse(root.hasNodeData("fooOld")); + assertNotNull(root.getNodeData("fooNew")); + assertEquals("bar", root.getNodeData("fooNew").getString()); + } + } Index: src/test/java/info/magnolia/nodebuilder/NodeBuilderTest.java =================================================================== --- src/test/java/info/magnolia/nodebuilder/NodeBuilderTest.java (revision 38716) +++ src/test/java/info/magnolia/nodebuilder/NodeBuilderTest.java (working copy) @@ -70,7 +70,9 @@ ) ), addNode("other").then(addProperty("X", "Y")), - addProperty("lala", "lolo") + addProperty("lala", "lolo"), + addProperty("oldName", "some String value"), + renameProperty("oldName", "newName") ); nodeBuilder.exec(); @@ -84,6 +86,9 @@ assertFalse("Node should have been removed", hm.isExist("/MyRoot/hello/zing")); assertFalse("Property should have been removed", hm.isExist("/MyRoot/hello/world/foo")); assertEquals(0, messageTracker.getMessages().size()); + assertFalse(hm.getContent("/MyRoot").hasNodeData("oldName")); + assertNotNull(hm.getContent("/MyRoot").getNodeData("newName")); + assertEquals("some String value", hm.getNodeData("/MyRoot/newName").getString()); } public void testErrorMessages() throws Exception { Index: src/main/java/info/magnolia/nodebuilder/Ops.java =================================================================== --- src/main/java/info/magnolia/nodebuilder/Ops.java (revision 38742) +++ src/main/java/info/magnolia/nodebuilder/Ops.java (working copy) @@ -171,8 +171,15 @@ public static NodeOperation renameProperty(final String name, final String newName) { return new AbstractOp() { Content doExec(Content context, ErrorHandler errorHandler) throws RepositoryException { - Object value = context.getNodeData(name); - context.createNodeData(newName, value); + if (!context.hasNodeData(name)) { + throw new ItemNotFoundException(name); + } + if (context.hasNodeData(newName)) { + //throw new ItemExistsException("Property " + newName + " already exists at " + context.getHandle()); + throw new ItemExistsException(newName); + } + final Value value = context.getNodeData(name).getValue(); + context.setNodeData(newName, value); context.deleteNodeData(name); return context; } @@ -192,7 +199,7 @@ } /** - * Copies the node defined by the name parameter in the session. + * Copies the node defined by the name parameter in the session. */ public static NodeOperation copyNode(final String name, final String dest) { return new AbstractOp() {