]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.server.jcr/ext/test/org/argeo/jcr/docbook/DocBookModelTest.java
Working Argeo 2 deployment (with UI)
[lgpl/argeo-commons.git] / org.argeo.server.jcr / ext / test / org / argeo / jcr / docbook / DocBookModelTest.java
1 package org.argeo.jcr.docbook;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.ByteArrayOutputStream;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7
8 import javax.jcr.RepositoryException;
9
10 import org.apache.commons.io.IOUtils;
11 import org.apache.commons.logging.Log;
12 import org.apache.commons.logging.LogFactory;
13 import org.apache.jackrabbit.commons.cnd.CndImporter;
14 import org.argeo.jackrabbit.unit.AbstractJackrabbitTestCase;
15 import org.argeo.jcr.JcrUtils;
16
17 public class DocBookModelTest extends AbstractJackrabbitTestCase {
18 private final static Log log = LogFactory.getLog(DocBookModelTest.class);
19
20 public void testLoadWikipediaSample() throws Exception {
21 importXml("WikipediaSample.dbk.xml");
22 }
23
24 public void XXXtestLoadHowTo() throws Exception {
25 importXml("howto.xml", false);
26 }
27
28 protected void importXml(String res) throws Exception {
29 importXml(res, true);
30 }
31
32 protected void importXml(String res, Boolean mini) throws Exception {
33 byte[] bytes;
34 try (InputStream in = getClass().getResourceAsStream(res)) {
35 bytes = IOUtils.toByteArray(in);
36 }
37
38 {// cnd
39 long begin = System.currentTimeMillis();
40 if (mini) {
41 InputStreamReader reader = new InputStreamReader(getClass()
42 .getResourceAsStream(
43 "/org/argeo/jcr/docbook/docbook.cnd"));
44 CndImporter.registerNodeTypes(reader, session());
45 reader.close();
46 } else {
47 InputStreamReader reader = new InputStreamReader(getClass()
48 .getResourceAsStream(
49 "/org/argeo/jcr/docbook/docbook-full.cnd"));
50 CndImporter.registerNodeTypes(reader, session());
51 reader.close();
52 }
53 long duration = System.currentTimeMillis() - begin;
54 if (log.isDebugEnabled())
55 log.debug(" CND loaded in " + duration + " ms");
56 }
57
58 String testPath = "/" + res;
59 // if (mini)
60 JcrUtils.mkdirs(session(), testPath, "dbk:set");
61 // else
62 // JcrUtils.mkdirs(session(), testPath, "dbk:book");
63
64 DocBookModel model = new DocBookModel(session());
65 try (InputStream in = new ByteArrayInputStream(bytes)) {
66 long begin = System.currentTimeMillis();
67 model.importXml(testPath, in);
68 long duration = System.currentTimeMillis() - begin;
69 if (log.isDebugEnabled())
70 log.debug("Imported " + res + " " + (bytes.length / 1024l)
71 + " kB in " + duration + " ms ("
72 + (bytes.length / duration) + " B/ms)");
73 }
74
75 saveSession();
76 // JcrUtils.debug(session().getRootNode());
77
78 try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
79 try {
80 model.exportXml(testPath + "/dbk:book", out);
81 } catch (Exception e) {
82 model.exportXml(testPath + "/dbk:article", out);
83 }
84 bytes = out.toByteArray();
85
86 session().logout();
87 model.setSession(session());
88
89 // log.debug(new String(bytes));
90 try (InputStream in = new ByteArrayInputStream(bytes)) {
91 long begin = System.currentTimeMillis();
92 model.importXml(testPath, in);
93 long duration = System.currentTimeMillis() - begin;
94 if (log.isDebugEnabled())
95 log.debug("Re-imported " + res + " "
96 + (bytes.length / 1024l) + " kB in " + duration
97 + " ms (" + (bytes.length / duration) + " B/ms)");
98 }
99 }
100 saveSession();
101 }
102
103 protected void saveSession() throws RepositoryException {
104 long begin = System.currentTimeMillis();
105 session().save();
106 long duration = System.currentTimeMillis() - begin;
107 if (log.isDebugEnabled())
108 log.debug(" Session save took " + duration + " ms");
109 }
110
111 // public static Test suite() {
112 // return defaultTestSuite(DocBookModelTest.class);
113 // }
114
115 }