/projects/exoportal-v1.0.2/services/jcr/impl/src/test/org/exoplatform/services/jcr/api/reading/NodeTest.java

https://gitlab.com/essere.lab.public/qualitas.class-corpus · Java · 436 lines · 352 code · 64 blank · 20 comment · 40 complexity · 49fea04986aeae0fce003410c71b7311 MD5 · raw file

  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. package org.exoplatform.services.jcr.api.reading;
  6. import javax.jcr.*;
  7. import javax.jcr.nodetype.NodeType;
  8. import org.exoplatform.services.jcr.BaseTest;
  9. import org.exoplatform.services.jcr.impl.core.NodeImpl;
  10. import java.util.Calendar;
  11. import java.util.Date;
  12. import java.util.GregorianCalendar;
  13. import java.io.ByteArrayInputStream;
  14. /**
  15. * Created y the eXo platform team
  16. * User: Benjamin Mestrallet
  17. * Date: 19 juil. 2004
  18. */
  19. public class NodeTest extends BaseTest{
  20. public void initRepository() throws RepositoryException {
  21. Node root = ticket.getRootNode();
  22. Node file = root.addNode("childNode", "nt:folder").addNode("childNode2", "nt:file");
  23. Node contentNode = file.getNode("jcr:content");
  24. contentNode.setProperty("exo:content", new StringValue("this is the content"));
  25. ticket.save();
  26. }
  27. public void tearDown() throws RepositoryException {
  28. // log.debug("START DOWN");
  29. // NodeImpl root = (NodeImpl)ticket.getRootNode();
  30. // log.debug("START DOWN "+root.getNodes().hasNext());
  31. Node root = ticket.getRootNode();
  32. root.remove("childNode");
  33. ticket.save();
  34. // log.debug("END DOWN "+root.getNodes().hasNext());
  35. }
  36. public void testGetNode() throws RepositoryException {
  37. Node root = ticket.getRootNode();
  38. Node node = root.getNode("/childNode/childNode2");
  39. assertNotNull(node);
  40. assertEquals("nt:file", node.getPrimaryNodeType().getName());
  41. Property property = node.getNode("jcr:content").getProperty("exo:content");
  42. property.setValue(new StringValue("this is the NEW content"));
  43. node = root.getNode("/childNode");
  44. node.addNode("childNode3", "nt:file");
  45. ticket = repository.login(credentials, WORKSPACE);
  46. root = ticket.getRootNode();
  47. try {
  48. root.getNode("/childNode/childNode3");
  49. fail("exception should have been thrown");
  50. } catch (RepositoryException e) {
  51. }
  52. property = root.getNode("/childNode/childNode2/jcr:content").
  53. getProperty("exo:content");
  54. assertEquals("this is the content", property.getString());
  55. Value val = new StringValue("this is the NEW content");
  56. property.setValue(val);
  57. // System.out.println("PROP----------"+property+" "+property.getString()+" "+val.getString()+" "+val);
  58. node = root.getNode("/childNode");
  59. // node.addNode("childNode3", "nt:file");
  60. System.out.println("SAVE");
  61. ticket.save();
  62. System.out.println("END SAVE");
  63. root = repository.login(credentials, WORKSPACE).getRootNode();
  64. // assertNotNull(root.getNode("/childNode/childNode3"));
  65. property = root.getNode("/childNode/childNode2/jcr:content").
  66. getProperty("exo:content");
  67. assertEquals("this is the NEW content", property.getString());
  68. ticket = repository.login(credentials, WORKSPACE);
  69. root = ticket.getRootNode();
  70. node = root.getNode("/childNode");
  71. assertEquals(node, root.getNode("/childNode"));
  72. root.getNode("childNode/childNode2/jcr:content").setProperty("myapp:temp", new StringValue("Temp"));
  73. Ticket ticket2 = repository.login(credentials, WORKSPACE);
  74. Node root2 = ticket2.getRootNode();
  75. Node node2 = root2.getNode("childNode/childNode2/jcr:content");
  76. node2.setProperty("exo:content", new StringValue("Temp"));
  77. ticket2.save();
  78. ticket.revert();
  79. root = ticket.getRootNode();
  80. node = root.getNode("childNode/childNode2/jcr:content");
  81. assertNotNull(node);
  82. assertNotNull(node.getProperty("exo:content"));
  83. assertEquals("Temp", node.getProperty("exo:content").getString());
  84. try {
  85. node.getProperty("myapp:temp");
  86. fail("exception should have been thrown");
  87. } catch (RepositoryException e) {
  88. }
  89. }
  90. public void testGetNodes() throws RepositoryException {
  91. ticket = repository.login(credentials, WORKSPACE);
  92. Node root = ticket.getRootNode();
  93. Node node = root.getNode("/childNode");
  94. node.addNode("childNode4", "nt:folder");
  95. NodeIterator nodeIterator = node.getNodes();
  96. while(nodeIterator.hasNext()){
  97. node = (Node) nodeIterator.next();
  98. assertNotNull(node.getTicket());
  99. if(!("childNode4".equals(node.getName()) || "childNode2".equals(node.getName())))
  100. fail("returned non expected nodes");
  101. }
  102. Ticket ticket2 = repository.login(credentials, WORKSPACE);
  103. Node root2 = ticket2.getRootNode();
  104. Node node2 = root2.getNode("/childNode");
  105. node2.addNode("childNode5", "nt:folder");
  106. ticket2.save();
  107. ticket.revert();
  108. node = root.getNode("/childNode");
  109. nodeIterator = node.getNodes();
  110. while(nodeIterator.hasNext()){
  111. node = (Node) nodeIterator.next();
  112. //System.out.println("NODE (getNodes)-------- "+node);
  113. if(!("childNode5".equals(node.getName()) || "childNode2".equals(node.getName())))
  114. fail("returned non expected nodes "+node.getName());
  115. }
  116. }
  117. public void testGetNodesWithNamePattern() throws RepositoryException{
  118. ticket = repository.login(credentials, WORKSPACE);
  119. Node root = ticket.getRootNode();
  120. Node node = root.getNode("/childNode");
  121. node.addNode("childNode4", "nt:folder");
  122. node.addNode("otherNode", "nt:folder");
  123. node.addNode("lastNode", "nt:folder");
  124. Node result = (Node) node.getNodes("lastNode").next();
  125. assertEquals("lastNode", result.getName());
  126. NodeIterator iterator = node.getNodes("otherNode | lastNode");
  127. if(!iterator.hasNext())
  128. fail("nodes should have been found");
  129. while(iterator.hasNext()){
  130. Node nodeTmp = iterator.nextNode();
  131. if(!("otherNode".equals(nodeTmp.getName()) || "lastNode".equals(nodeTmp.getName())))
  132. fail("returned non expected nodes");
  133. }
  134. iterator = node.getNodes("childNode*");
  135. if(!iterator.hasNext())
  136. fail("nodes should have been found");
  137. while(iterator.hasNext()){
  138. Node nodeTmp = iterator.nextNode();
  139. if(!("childNode2".equals(nodeTmp.getName()) || "childNode4".equals(nodeTmp.getName())))
  140. fail("returned non expected nodes");
  141. }
  142. Ticket ticket2 = repository.login(credentials, WORKSPACE);
  143. Node root2 = ticket2.getRootNode();
  144. Node node2 = root2.getNode("/childNode");
  145. node2.addNode("childNode5", "nt:folder");
  146. ticket2.save();
  147. ticket.revert();
  148. node = root.getNode("/childNode");
  149. iterator = node.getNodes("childNode*");
  150. if(!iterator.hasNext())
  151. fail("nodes should have been found");
  152. while(iterator.hasNext()){
  153. Node nodeTmp = iterator.nextNode();
  154. if(!("childNode2".equals(nodeTmp.getName()) || "childNode5".equals(nodeTmp.getName())))
  155. fail("returned non expected nodes");
  156. }
  157. }
  158. public void testGetProperty() throws RepositoryException {
  159. ticket = repository.login(credentials, WORKSPACE);
  160. Node root = ticket.getRootNode();
  161. Node node = root.getNode("/childNode/childNode2/jcr:content");
  162. Property property = node.getProperty("exo:content");
  163. assertEquals("this is the content", property.getString());
  164. Ticket ticket2 = repository.login(credentials, WORKSPACE);
  165. Node root2 = ticket2.getRootNode();
  166. Node node2 = root2.getNode("/childNode/childNode2/jcr:content");
  167. node2.getProperty("exo:content").setValue("this is the NEW value");
  168. ticket2.save();
  169. ticket.revert();
  170. property = root.getNode("/childNode/childNode2/jcr:content").getProperty("exo:content");
  171. assertEquals("/childNode/childNode2/jcr:content/exo:content", property.getPath());
  172. assertEquals("this is the NEW value", property.getString());
  173. }
  174. public void testGetProperties() throws RepositoryException {
  175. ticket = repository.login(credentials, WORKSPACE);
  176. Node root = ticket.getRootNode();
  177. Node node = root.getNode("/childNode");
  178. PropertyIterator iterator = node.getProperties();
  179. while(iterator.hasNext()){
  180. Property property = iterator.nextProperty();
  181. if(!("jcr:primaryType".equals(property.getName()) || "jcr:created".equals(property.getName()) ||
  182. "jcr:lastModified".equals(property.getName())))
  183. fail("returned non expected nodes");
  184. }
  185. Ticket ticket2 = repository.login(credentials, WORKSPACE);
  186. Node root2 = ticket2.getRootNode();
  187. Node node2 = root2.getNode("/childNode/childNode2/jcr:content");
  188. node2.setProperty("exo:prop", new StringValue("hehe"));
  189. ticket2.save();
  190. ticket.revert();
  191. node = root.getNode("/childNode/childNode2/jcr:content");
  192. iterator = node.getProperties();
  193. while(iterator.hasNext()){
  194. Property property = iterator.nextProperty();
  195. if(!("jcr:primaryType".equals(property.getName()) || "jcr:created".equals(property.getName()) ||
  196. "jcr:lastModified".equals(property.getName()) || "exo:prop".equals(property.getName()) ||
  197. "exo:content".equals(property.getName()) || "jcr:uuid".equals(property.getName())))
  198. fail("returned non expected properties");
  199. }
  200. }
  201. public void testGetPropertiesWithNamePattern() throws RepositoryException {
  202. ticket = repository.login(credentials, WORKSPACE);
  203. Node root = ticket.getRootNode();
  204. Node node = root.getNode("/childNode/childNode2/jcr:content");
  205. node.setProperty("property1", "prop1Value");
  206. node.setProperty("property2", "prop2Value");
  207. PropertyIterator iterator = node.getProperties("property1 | property2");
  208. while(iterator.hasNext()){
  209. Property property = iterator.nextProperty();
  210. if(!("property1".equals(property.getName()) || "property2".equals(property.getName())))
  211. fail("returned non expected properties");
  212. }
  213. iterator = node.getProperties("property1 | jcr:*");
  214. while(iterator.hasNext()){
  215. Property property = iterator.nextProperty();
  216. if(!("property1".equals(property.getName()) || "jcr:primaryType".equals(property.getName())
  217. || "jcr:created".equals(property.getName()) || "jcr:lastModified".equals(property.getName()) ||
  218. "exo:content".equals(property.getName()) || "jcr:uuid".equals(property.getName()) ))
  219. fail("returned non expected properties");
  220. }
  221. Ticket ticket2 = repository.login(credentials, WORKSPACE);
  222. Node root2 = ticket2.getRootNode();
  223. Node node2 = root2.getNode("/childNode/childNode2/jcr:content");
  224. node2.setProperty("exo:prop", new StringValue("hehe"));
  225. ticket2.save();
  226. ticket.revert();
  227. node = root.getNode("/childNode/childNode2/jcr:content");
  228. iterator = node.getProperties("exo:* | property1");
  229. while(iterator.hasNext()){
  230. Property property = iterator.nextProperty();
  231. if(!("property1".equals(property.getName()) || "exo:prop".equals(property.getName()) ||
  232. "exo:content".equals(property.getName()) ))
  233. fail("returned non expected properties");
  234. }
  235. }
  236. public void testFindProperty() throws RepositoryException {
  237. ticket = repository.login(credentials, WORKSPACE);
  238. Node root = ticket.getRootNode();
  239. Node node = root.getNode("/childNode/childNode2/jcr:content");
  240. node.setProperty("property1", "prop1Value");
  241. assertEquals("property1", node.findProperty(new StringValue("prop1Value")).getName());
  242. assertNull(node.findProperty(new StringValue("prop2Value")));
  243. node.setProperty("property2", "prop2Value");
  244. assertEquals("property1", node.findProperty(new StringValue("prop1Value")).getName());
  245. ticket.save();
  246. ticket = repository.login(credentials, WORKSPACE);
  247. root = ticket.getRootNode();
  248. node = root.getNode("/childNode/childNode2/jcr:content");
  249. assertNotNull(node.findProperty(new StringValue("prop1Value")));
  250. assertEquals("property1", node.findProperty(new StringValue("prop1Value")).getName());
  251. assertNull(node.findProperty(new LongValue(15)));
  252. node.setProperty("longProp", new LongValue(15));
  253. assertEquals("longProp", node.findProperty(new LongValue(15)).getName());
  254. assertNull(node.findProperty(new DoubleValue(16)));
  255. node.setProperty("doubleProp", new DoubleValue(16));
  256. assertEquals("doubleProp", node.findProperty(new DoubleValue(16)).getName());
  257. Calendar calendar = new GregorianCalendar();
  258. DateValue dateValue = new DateValue(calendar);
  259. assertNull(node.findProperty(dateValue));
  260. node.setProperty("dateProp", dateValue);
  261. // log.debug("DATE PROP"+node.getProperty("dateProp"));
  262. assertEquals("dateProp", node.findProperty(dateValue).getName());
  263. BooleanValue booleanValue = new BooleanValue(true);
  264. assertNull(node.findProperty(booleanValue));
  265. node.setProperty("booleanProp", booleanValue);
  266. assertEquals("booleanProp", node.findProperty(booleanValue).getName());
  267. SoftLinkValue softLinkValue = new SoftLinkValue("/childNode");
  268. assertNull(node.findProperty(softLinkValue));
  269. node.setProperty("softLinkProp", softLinkValue);
  270. assertEquals("softLinkProp", node.findProperty(softLinkValue).getName());
  271. BinaryValue binaryValue = new BinaryValue(new String("binaryValue").getBytes());
  272. node.setProperty("binaryProp", binaryValue);
  273. System.out.println("Binary PRRRROP --"+node.getProperty("binaryProp")+" "/*+binaryValue.getString()*/);
  274. // Does not work. Possible bug in Binary Value implementation!!!!
  275. // assertEquals("binaryProp", node.findProperty(binaryValue).getName());
  276. Ticket ticket2 = repository.login(credentials, WORKSPACE);
  277. Node root2 = ticket2.getRootNode();
  278. Node node2 = root2.getNode("/childNode/childNode2/jcr:content");
  279. node2.setProperty("exo:prop", new StringValue("hehe"));
  280. ticket2.save();
  281. ticket.revert();
  282. node = root.getNode("/childNode/childNode2/jcr:content");
  283. PropertyIterator iterator = node.getProperties();
  284. while(iterator.hasNext()){
  285. Property property = iterator.nextProperty();
  286. if(!("property1".equals(property.getName()) || "property2".equals(property.getName())
  287. || "jcr:created".equals(property.getName()) || "jcr:lastModified".equals(property.getName())
  288. || "jcr:primaryType".equals(property.getName()) || "exo:prop".equals(property.getName()) ||
  289. "exo:content".equals(property.getName()) || "jcr:uuid".equals(property.getName())))
  290. fail("returned non expected properties");
  291. }
  292. }
  293. public void testFindProperties() throws RepositoryException {
  294. Node root = ticket.getRootNode();
  295. Node node = root.getNode("/childNode/childNode2/jcr:content");
  296. node.setProperty("property1", "prop1Value");
  297. node.setProperty("property2", "prop1Value");
  298. node.setProperty("property3", "prop1Value");
  299. int i = 0;
  300. PropertyIterator iterator = node.findProperties(new StringValue("prop1Value"));
  301. while(iterator.hasNext()){
  302. Property property = iterator.nextProperty();
  303. if(!("property1".equals(property.getName()) || "property2".equals(property.getName())
  304. || "property3".equals(property.getName()) ))
  305. fail("returned non expected properties");
  306. i++;
  307. }
  308. assertEquals(3, i);
  309. Ticket ticket2 = repository.login(credentials, WORKSPACE);
  310. Node root2 = ticket2.getRootNode();
  311. Node node2 = root2.getNode("/childNode/childNode2/jcr:content");
  312. node2.setProperty("exo:prop", new StringValue("prop1Value"));
  313. node2.setProperty("exo:prop1", new StringValue("prop1Value"));
  314. ticket2.save();
  315. ticket.revert();
  316. node = root.getNode("/childNode/childNode2/jcr:content");
  317. i = 0;
  318. iterator = node.findProperties(new StringValue("prop1Value"));
  319. while(iterator.hasNext()){
  320. Property property = iterator.nextProperty();
  321. if(!("exo:prop".equals(property.getName()) || "exo:prop1".equals(property.getName()) ))
  322. fail("returned non expected properties");
  323. i++;
  324. }
  325. assertEquals(2, i);
  326. }
  327. public void testGetPrimaryItem() throws RepositoryException {
  328. Node root = ticket.getRootNode();
  329. try {
  330. root.getPrimaryItem();
  331. fail("exception should have been thrown");
  332. } catch (RepositoryException e) {
  333. assertTrue(e instanceof ItemNotFoundException);
  334. }
  335. Node node = root.getNode("/childNode/childNode2");
  336. Item item = node.getPrimaryItem();
  337. assertNotNull(item);
  338. assertEquals("jcr:content", item.getName());
  339. }
  340. public void testGetUUID() throws RepositoryException {
  341. Node root = ticket.getRootNode();
  342. try {
  343. root.getUUID();
  344. fail("exception should have been thrown");
  345. } catch (UnsupportedRepositoryOperationException e) {
  346. }
  347. Node node = root.getNode("/childNode/childNode2/jcr:content");
  348. assertNotNull(node.getUUID());
  349. }
  350. public void testHasNode() throws RepositoryException {
  351. Node root = ticket.getRootNode();
  352. assertFalse(root.hasNode("/dummyNode"));
  353. assertTrue(root.hasNode("/childNode"));
  354. }
  355. public void testHasNodes() throws RepositoryException {
  356. Node root = ticket.getRootNode();
  357. assertTrue(root.hasNodes());
  358. Node node = root.getNode("/childNode/childNode2/jcr:content");
  359. node = node.addNode("tempNode");
  360. assertFalse(node.hasNodes());
  361. }
  362. public void testHasProperty() throws RepositoryException {
  363. Node root = ticket.getRootNode();
  364. assertFalse(root.hasProperty("dummyProperty"));
  365. assertTrue(root.getNode("/childNode").hasProperty("jcr:created"));
  366. }
  367. public void testHasProperties() throws RepositoryException {
  368. Node root = ticket.getRootNode();
  369. Node node = root.getNode("/childNode");
  370. assertTrue(root.hasProperties());
  371. }
  372. }