1 5 6 package org.exoplatform.services.jcr.impl.core; 7 8 9 import javax.jcr.Credentials; 10 import javax.jcr.Node; 11 import javax.jcr.Property; 12 import javax.jcr.SimpleCredentials; 13 import javax.jcr.StringValue; 14 15 import org.exoplatform.services.jcr.BaseTest; 16 17 23 public class TestNodesModificationManager extends BaseTest { 24 25 26 private NodesModificationManager modificationManager; 27 private RepositoryImpl repository; 28 private TicketImpl ticket; 29 30 public void setUp() throws Exception { 31 super.setUp(); 32 repository = (RepositoryImpl) repositoryService.getRepository("mock"); 33 Credentials cred = new SimpleCredentials("user", "psw".toCharArray()); 34 ticket = (TicketImpl)repository.login(cred, "ws"); 35 modificationManager = ticket.getNodesManager(); 36 37 } 38 39 40 public void testTicketGetsNodesFromNodesManager() throws Exception { 41 42 ticket.getRootNode().addNode("/testNode"); 43 assertNotNull(modificationManager.getNodeByPath("/testNode")); 44 Node testNode = modificationManager.getNodeByPath("/testNode"); 45 assertEquals(ticket.getNodeByAbsPath("/testNode"), testNode); 46 ticket.save(); 47 assertEquals(ticket.getNodeByAbsPath("/testNode"), testNode); 48 50 ticket.getRootNode().remove("testNode"); 52 53 ticket.save(); 54 assertNull(modificationManager.getNodeByPath("/testNode")); 56 57 } 58 59 public void testNodeChangesState() throws Exception { 60 61 assertNull(modificationManager.getNodeChange("/testNode")); 62 ticket.getRootNode().addNode("/testNode"); 63 assertEquals(NodeChangeState.ADDED, modificationManager.getNodeChange("/testNode").getState()); 64 Node testNode = ticket.getNodeByAbsPath("/testNode"); 65 assertNotNull(testNode); 66 testNode.setProperty("testProperty", "testValue"); 67 assertEquals(NodeChangeState.ADDED, modificationManager.getNodeChange("/testNode").getState()); 68 ticket.save(); 69 assertEquals(NodeChangeState.UNCHANGED, modificationManager.getNodeChange("/testNode").getState()); 70 testNode = ticket.getNodeByAbsPath("/testNode"); 71 testNode.setProperty("testProperty", "testChangedValue"); 72 assertEquals(NodeChangeState.UPDATED, modificationManager.getNodeChange("/testNode").getState()); 73 ticket.getRootNode().remove("testNode"); 74 assertEquals(NodeChangeState.DELETED, modificationManager.getNodeChange("/testNode").getState()); 75 ticket.save(); 76 assertNull(modificationManager.getNodeChange("/testNode")); 77 } 78 79 public void testIfPropertiesSaved() throws Exception { 80 Node node = ticket.getRootNode().addNode("/testNode"); 81 assertNotNull(modificationManager.getNodeByPath("/testNode").getProperty("jcr:primaryType")); 82 assertEquals(modificationManager.getNodeByPath("/testNode").getProperty("jcr:primaryType").getString(), "nt:default"); 83 Property prop = node.setProperty("test", "test"); 84 assertNotNull(modificationManager.getNodeByPath("/testNode").getProperty("test")); 85 assertEquals("test", node.getProperty("test").getString()); 86 prop.setValue("test NEW"); 87 assertEquals("test NEW", node.getProperty("test").getString()); 88 StringValue val = new StringValue("this is the NEW content"); 89 prop.setValue(val); 90 assertEquals("this is the NEW content", node.getProperty("test").getString()); 91 92 93 ticket.save(); 94 95 log.debug("MODI MAN----"+modificationManager.getNodeByPath("/testNode").getPermanentProperty("test").hashCode()); 96 log.debug("CONTAINER----"+ticket.getContainer().getNodeByPath("/testNode").getPermanentProperty("test").hashCode()); 97 log.debug("PROP----"+((NodeImpl)node).getPermanentProperty("test").hashCode()); 98 99 node.remove("test"); 100 101 assertNull(modificationManager.getNodeByPath("/testNode").getPermanentProperty("test")); 102 node = ticket.getNodeByAbsPath("/testNode"); 103 assertNotNull(ticket.getContainer().getNodeByPath("/testNode").getPermanentProperty("test")); 104 105 ticket.getRootNode().remove("testNode"); 106 ticket.save(); 107 108 } 109 110 public void testChildren() throws Exception { 111 Node node = ticket.getRootNode().addNode("/testNode"); 112 assertEquals(1, modificationManager.getChildren("/").size()); 113 114 node.save(false); 115 assertEquals(1, modificationManager.getChildren("/").size()); 116 node = ticket.getNodeByAbsPath("/testNode").addNode("testNode1"); 117 assertEquals(1, modificationManager.getChildren("/testNode").size()); 118 node.addNode("node11"); 119 assertEquals(1, modificationManager.getChildren("/testNode/testNode1").size()); 120 node.save(false); 121 122 node = ticket.getNodeByAbsPath("/testNode"); 123 ticket.getRootNode().remove("/testNode"); 124 node.save(false); 125 126 129 assertEquals(0, modificationManager.getChildren("/").size()); 130 131 } 132 133 public void testReferences() throws Exception { 134 135 136 Node node = ticket.getRootNode().addNode("/testNode").addNode("childNode"); 138 assertNotNull(modificationManager.getNodeByPath("/testNode/childNode")); 139 node.addMixin("mix:referenceable"); 141 assertNotNull(modificationManager.getNodeByPath("/testNode/childNode").getProperty("jcr:mixinType")); 142 ticket.save(); 143 node = modificationManager.getNodeByPath("/testNode/childNode"); 144 145 modificationManager.addReference(node.getProperty("jcr:uuid").getString(), "/refToChildNode"); 147 String uuid = node.getProperty("jcr:uuid").getString(); 148 assertNotNull(modificationManager.getPaths(uuid)); 149 assertEquals(2, modificationManager.getPaths(uuid).size()); 150 151 NodeImpl node1 = (NodeImpl)modificationManager.getNodeByPath("/refToChildNode"); 153 assertNotNull(node1); 154 modificationManager.commit(node1, false); 155 assertEquals(2, modificationManager.getPaths(uuid).size()); 156 157 modificationManager.addReference(node.getProperty("jcr:uuid").getString(), "/tempRefToChildNode"); 159 NodeImpl node3 = (NodeImpl)modificationManager.getNodeByPath("/tempRefToChildNode"); 160 assertNotNull(node3); 161 165 NodeImpl node2 = (NodeImpl)modificationManager.getNodeByPath("/refToChildNode"); 167 assertNotNull(node2); 168 169 171 173 175 } 177 178 } 179 | Popular Tags |