1 11 package org.jboss.portal.test.cms; 12 13 import junit.framework.TestCase; 14 15 import javax.xml.parsers.DocumentBuilderFactory ; 16 import javax.transaction.TransactionManager ; 17 import javax.transaction.Status ; 18 import java.io.InputStream ; 19 import java.util.Arrays ; 20 21 import org.w3c.dom.Document ; 22 import org.w3c.dom.Element ; 23 import org.jboss.portal.cms.CMS; 24 import org.jboss.portal.cms.Node; 25 import org.jboss.portal.cms.NoSuchURIException; 26 import org.jboss.portal.cms.NodeFactory; 27 28 32 public class SimpleTestCase extends TestCase 33 { 34 35 public SimpleTestCase(String name) 36 { 37 super(name); 38 } 39 40 private CMS cms; 41 private NodeFactory factory; 42 43 protected void setUp() throws Exception 44 { 45 ClassLoader loader = Thread.currentThread().getContextClassLoader(); 46 InputStream in = loader.getResourceAsStream("test/domain.xml"); 47 Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); 48 Element elt = doc.getDocumentElement(); 49 cms = new CMS(); 50 cms.setConfig(elt); 51 cms.create(); 52 cms.start(); 53 54 factory = cms.getNodeFactory(); 55 } 56 57 protected void tearDown() throws Exception 58 { 59 cms.stop(); 60 cms.destroy(); 61 } 62 63 public void testRemoveNonExistingNode() throws Exception 64 { 65 try 66 { 67 begin(); 68 Node node = factory.getNode("/files/file"); 69 node.delete(); 70 fail("was expecting no such node exception"); 71 } 72 catch (NoSuchURIException e) 73 { 74 } 76 finally 77 { 78 terminate(false); 79 } 80 } 81 82 public void testRemoveContentNode() throws Exception 83 { 84 try 85 { 86 begin(); 87 Node file = factory.getNode("/files/file"); 88 file.createContent(new org.jboss.portal.cms.Content("blah1".getBytes("UTF-8"), "text/plain"), false); 89 } 90 finally 91 { 92 terminate(false); 93 } 94 95 try 96 { 97 begin(); 98 Node file = factory.getNode("/files/file"); 99 file.delete(); 100 assertFalse(file.exists()); 101 } 102 finally 103 { 104 terminate(false); 105 } 106 107 try 108 { 109 begin(); 110 Node file = factory.getNode("/files/file"); 111 assertFalse(file.exists()); 112 } 113 finally 114 { 115 terminate(false); 116 } 117 } 118 119 public void testAddRemoveDirNode() throws Exception 120 { 121 try 122 { 123 begin(); 124 factory.getNode("/files/file").createDir(false); 125 } 126 finally 127 { 128 terminate(false); 129 } 130 131 try 132 { 133 begin(); 134 factory.getNode("/files/file").delete(); 135 } 136 finally 137 { 138 terminate(false); 139 } 140 141 try 142 { 143 begin(); 144 Node fileNode = factory.getNode("/files/file"); 145 assertFalse(fileNode.exists()); 146 } 147 finally 148 { 149 terminate(false); 150 } 151 } 152 153 public void testAddContentNodeRecursive() throws Exception 154 { 155 try 156 { 157 begin(); 158 Node node = factory.getNode("/files/a/b/c"); 159 node.createContent(new org.jboss.portal.cms.Content("blah1".getBytes("UTF-8"), "text/plain"), true); 160 } 161 finally 162 { 163 terminate(false); 164 } 165 166 try 167 { 168 begin(); 169 factory.getNode("/files/d/e").createContent(new org.jboss.portal.cms.Content("blah".getBytes("UTF-8"), "text/plain"), false); 170 fail("was expecting no such node exception"); 171 } 172 catch (NoSuchURIException e) 173 { 174 } 175 finally 176 { 177 terminate(true); 178 } 179 } 180 181 public void testAddDirNodeRecursive() throws Exception 182 { 183 try 184 { 185 begin(); 186 Node node = factory.getNode("/files/a/b/c"); 187 node.createDir(true); 188 assertTrue(node.exists()); 189 assertTrue(node.isDir()); 190 } 191 finally 192 { 193 terminate(false); 194 } 195 196 try 197 { 198 begin(); 199 factory.getNode("/files/d/e").createDir(false); 200 fail("was expecting node exception"); 201 } 202 catch (NoSuchURIException e) 203 { 204 } 205 finally 206 { 207 terminate(false); 208 } 209 } 210 211 public void testOverwrite() throws Exception 212 { 213 try 215 { 216 begin(); 217 Node node = factory.getNode("/files/file1"); 218 node.createContent(new org.jboss.portal.cms.Content("blah1".getBytes("UTF-8"), "text/plain"), false); 219 node.createContent(new org.jboss.portal.cms.Content("blah2".getBytes("UTF-8"), "text/plain"), false); 220 assertTrue(node.exists()); 221 assertTrue(Arrays.equals("blah2".getBytes("UTF-8"), node.getContent().getBytes())); 222 } 223 finally 224 { 225 terminate(false); 226 } 227 228 try 230 { 231 begin(); 232 factory.getNode("/files/file2").createDir(false); 233 factory.getNode("/files/file2").createDir(false); 234 } 235 finally 236 { 237 terminate(false); 238 } 239 240 try 242 { 243 begin(); 244 factory.getNode("/files/file3").createDir(false); 245 factory.getNode("/files/file3").createContent(new org.jboss.portal.cms.Content("blah".getBytes("UTF-8"), "text/plain"), false); 246 } 247 finally 248 { 249 terminate(false); 250 } 251 252 try 254 { 255 begin(); 256 factory.getNode("/files/file4").createContent(new org.jboss.portal.cms.Content("blah".getBytes("UTF-8"), "text/plain"), false); 257 factory.getNode("/files/file4").createDir(false); 258 } 259 finally 260 { 261 terminate(false); 262 } 263 264 try 266 { 267 begin(); 268 269 Node file1 = factory.getNode("/files/file1"); 270 assertTrue(file1.exists()); 271 assertTrue(Arrays.equals("blah2".getBytes("UTF-8"), file1.getContent().getBytes())); 272 273 Node file2 = factory.getNode("/files/file2"); 274 assertTrue(file2.exists()); 275 assertTrue(file2.isDir()); 276 277 Node file3 = factory.getNode("/files/file3"); 278 assertTrue(file3.exists()); 279 assertTrue(Arrays.equals("blah".getBytes("UTF-8"), file3.getContent().getBytes())); 280 281 Node file4 = factory.getNode("/files/file4"); 282 assertTrue(file4.exists()); 283 assertTrue(file4.isDir()); 284 } 285 finally 286 { 287 terminate(false); 288 } 289 } 290 291 public void testAddFile() throws Exception 292 { 293 try 294 { 295 begin(); 296 Node node = factory.getNode("/files/file"); 297 node.createContent(new org.jboss.portal.cms.Content("blah".getBytes("UTF-8"), "text/plain"), false); 298 assertTrue(node.exists()); 299 } 300 finally 301 { 302 terminate(false); 303 } 304 305 try 306 { 307 begin(); 308 Node node = factory.getNode("/files/file"); 309 assertTrue(node.exists()); 310 assertFalse(node.isDir()); 311 assertTrue(Arrays.equals("blah".getBytes("UTF-8"), node.getContent().getBytes())); 312 assertEquals("text/plain", node.getContent().getMimeType()); 313 } 314 finally 315 { 316 terminate(false); 317 } 318 } 319 320 public void testAddDirNode() throws Exception 321 { 322 try 323 { 324 begin(); 325 Node node = factory.getNode("/files/dir"); 326 node.createDir(false); 327 } 328 finally 329 { 330 terminate(false); 331 } 332 333 try 334 { 335 begin(); 336 Node dirNode = factory.getNode("/files/dir"); 337 assertTrue(dirNode.exists()); 338 assertTrue(dirNode.isDir()); 339 } 340 finally 341 { 342 terminate(false); 343 } 344 } 345 346 370 371 public void begin() 372 { 373 try 374 { 375 TransactionManager tm = factory.getTransactionManager(); 376 tm.begin(); 377 } 378 catch (Exception e) 379 { 380 e.printStackTrace(); 381 fail("Exception during transaction begin"); 382 } 383 } 384 385 public void terminate(boolean markedRollback) 386 { 387 TransactionManager tm = factory.getTransactionManager(); 388 try 389 { 390 int status = tm.getStatus(); 391 switch(status) 392 { 393 case Status.STATUS_ACTIVE: 394 tm.commit(); 395 if (markedRollback) 396 { 397 System.err.println("Transaction was not marked for rollback"); 398 } 399 break; 400 case Status.STATUS_MARKED_ROLLBACK: 401 tm.rollback(); 402 if (!markedRollback) 403 { 404 System.err.println("Transaction was marked for rollback"); 405 } 406 break; 407 default: 408 System.err.println("Transaction unexpected status : " + status); 409 } 410 } 411 catch (Exception e) 412 { 413 e.printStackTrace(); 414 System.err.println("Exception during transaction commit"); 415 } 416 } 417 } 418 | Popular Tags |