KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > services > jcr > impl > core > TestNodesModificationManager


1 /**
2  * Copyright 2001-2003 The eXo platform SARL All rights reserved.
3  * Please look at license.txt in info directory for more license detail.
4  **/

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 /**
18  * Created by The eXo Platform SARL .
19  *
20  * @author <a HREF="mailto:geaz@users.sourceforge.net">Gennady Azarenkov</a>
21  * @version $Id: TestNodesModificationManager.java,v 1.3 2004/09/16 15:28:52 geaz Exp $
22  */

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 JavaDoc {
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 JavaDoc {
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 // log.debug(">>>>>>>>>>>"+ticket.getRootNode().getNodes().getSize());
49

50       // just remove
51
ticket.getRootNode().remove("testNode");
52
53       ticket.save();
54 // log.debug("END SAVE");
55
assertNull(modificationManager.getNodeByPath("/testNode"));
56
57   }
58
59   public void testNodeChangesState() throws Exception JavaDoc {
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 JavaDoc {
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 JavaDoc {
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 // for(int i=0; i<modificationManager.getChildren("/").size();i++)
127
// log.debug("END SAVE"+ modificationManager.getChildren("/").get(i));
128

129       assertEquals(0, modificationManager.getChildren("/").size());
130
131   }
132
133   public void testReferences() throws Exception JavaDoc {
134
135
136     //prepare node
137
Node node = ticket.getRootNode().addNode("/testNode").addNode("childNode");
138      assertNotNull(modificationManager.getNodeByPath("/testNode/childNode"));
139      // make node mixin - so reference could be assigned
140
node.addMixin("mix:referenceable");
141      assertNotNull(modificationManager.getNodeByPath("/testNode/childNode").getProperty("jcr:mixinType"));
142      ticket.save();
143      node = modificationManager.getNodeByPath("/testNode/childNode");
144
145     //add reference
146
modificationManager.addReference(node.getProperty("jcr:uuid").getString(), "/refToChildNode");
147     String JavaDoc uuid = node.getProperty("jcr:uuid").getString();
148     assertNotNull(modificationManager.getPaths(uuid));
149     assertEquals(2, modificationManager.getPaths(uuid).size());
150
151     //commit reference
152
NodeImpl node1 = (NodeImpl)modificationManager.getNodeByPath("/refToChildNode");
153     assertNotNull(node1);
154     modificationManager.commit(node1, false);
155     assertEquals(2, modificationManager.getPaths(uuid).size());
156
157     //rollback reference (does not save)
158
modificationManager.addReference(node.getProperty("jcr:uuid").getString(), "/tempRefToChildNode");
159     NodeImpl node3 = (NodeImpl)modificationManager.getNodeByPath("/tempRefToChildNode");
160     assertNotNull(node3);
161     // ???
162
// modificationManager.rollback(node3);
163
// assertNull(node3);
164

165     //get node by reference
166
NodeImpl node2 = (NodeImpl)modificationManager.getNodeByPath("/refToChildNode");
167     assertNotNull(node2);
168
169     //change node
170

171     //save node
172

173     //get node by reference
174

175     //remove node
176
}
177
178 }
179
Popular Tags