KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > dom4j > TestEmbeddedHandler


1 /*
2  * (c) Copyright 2001 MyCorporation.
3  * All Rights Reserved.
4  */

5 package test.dom4j;
6
7 import junit.framework.Test;
8 import junit.framework.TestSuite;
9 import junit.textui.TestRunner;
10 import org.dom4j.Element;
11 import org.dom4j.ElementHandler;
12 import org.dom4j.ElementPath;
13 import org.dom4j.io.SAXReader;
14 import org.ozoneDB.xml.dom4j.io.O3SAXReader;
15
16 import java.io.File JavaDoc;
17
18 /**
19  * TestEmbeddedHandler
20  *
21  *
22  * Created: Thu Mar 21 15:45:59 2002
23  *
24  * @author <a HREF="mailto:franz.beil@temis-group.com">FB</a>
25  * @version
26  */

27 public class TestEmbeddedHandler extends AbstractTestCase {
28
29    protected String JavaDoc[] testDocuments = { "xml/test/FranzBeilMain.xml", };
30    final int MAIN_READER = 0;
31    final int ON_END_READER = 1;
32    private StringBuffer JavaDoc[] _results =
33       { new StringBuffer JavaDoc(), new StringBuffer JavaDoc()};
34    protected int _test;
35
36    public static void main(String JavaDoc[] args) {
37       TestRunner.run(suite());
38    }
39
40    public static Test suite() {
41       return new TestSuite(TestEmbeddedHandler.class);
42    }
43
44    /**
45     * Constructor for TestEmbeddedHandler.
46     * @param name
47     */

48    public TestEmbeddedHandler(String JavaDoc name) {
49       super(name);
50    }
51
52    //---------------------------------------------
53
// Handler classes
54
//---------------------------------------------
55

56    class MainHandler implements ElementHandler {
57
58       SAXReader _mainReader;
59       String JavaDoc _mainDir;
60
61       public MainHandler(String JavaDoc dir) {
62          _mainReader = new SAXReader();
63          _mainDir = dir;
64          _mainReader.addHandler("/import/stuff", new EmbeddedHandler());
65       }
66
67       public void onStart(ElementPath path) {}
68
69       public void onEnd(ElementPath path) {
70          String JavaDoc href = path.getCurrent().attribute("href").getValue();
71          Element importRef = path.getCurrent();
72          Element parentElement = importRef.getParent();
73          SAXReader onEndReader = new SAXReader();
74          onEndReader.addHandler("/import/stuff", new EmbeddedHandler());
75
76          File JavaDoc file = new File JavaDoc(_mainDir + File.separator + href);
77          Element importElement = null;
78          try {
79             if (_test == MAIN_READER)
80                importElement = _mainReader.read(file).getRootElement();
81             else if (_test == ON_END_READER)
82                importElement = onEndReader.read(file).getRootElement();
83          } catch (Exception JavaDoc e) {
84             // too bad that it's not possible to throw the exception at the caller
85
e.printStackTrace();
86          }
87
88          // prune and replace
89
importRef.detach();
90          parentElement.add(importElement);
91       }
92    }
93
94    public class EmbeddedHandler implements ElementHandler {
95       public void onStart(ElementPath path) {
96          _results[_test].append(
97             path.getCurrent().attribute("name").getValue() + "\n");
98       }
99       public void onEnd(ElementPath path) {}
100    }
101
102    //---------------------------------------------
103
// Test case(s)
104
//---------------------------------------------
105

106    public void testMainReader() throws Exception JavaDoc {
107       _test = MAIN_READER;
108       readDocuments();
109       // System.out.println("testMainReader()\n"+_results[_test].toString());
110
}
111
112    public void testOnEndReader() throws Exception JavaDoc {
113       _test = ON_END_READER;
114       readDocuments();
115       // System.out.println("testOnEndReader()\n"+_results[_test].toString());
116
}
117
118 /*
119
120    TEMPORARILY DISABLED UNTIL THE BUG IS FIXED-----
121
122    public void testBothReaders() throws Exception {
123       testMainReader();
124       testOnEndReader();
125       if (!_results[MAIN_READER]
126          .toString()
127          .equals(_results[ON_END_READER].toString())) {
128          StringBuffer msg = new StringBuffer();
129          msg.append("Results of tests should be equal!\n");
130          msg.append("Results testMainReader():\n" + _results[MAIN_READER].toString());
131          msg.append(
132             "Results testOnEndReader():\n" + _results[ON_END_READER].toString());
133          throw new Exception(msg.toString());
134       }
135    }
136 */

137
138       //---------------------------------------------
139
// Implementation methods
140
//---------------------------------------------
141

142       private void readDocuments() throws Exception JavaDoc {
143          for (int i = 0; i < testDocuments.length; i++) {
144             String JavaDoc mainDir = new File JavaDoc(testDocuments[i]).getParent();
145             SAXReader reader = new O3SAXReader(db());
146             ElementHandler mainHandler = new MainHandler(mainDir);
147             reader.addHandler("/main/import", mainHandler);
148             reader.read(testDocuments[i]);
149          }
150       }
151
152    }
153
Popular Tags