KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > parser > dom > FISAXXercesDOMBuilderDriver


1 /*
2  * Japex ver. 0.1 software ("Software")
3  *
4  * Copyright, 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
5  *
6  * This Software is distributed under the following terms:
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, is permitted provided that the following conditions are met:
10  *
11  * Redistributions of source code must retain the above copyright notice,
12  * this list of conditions and the following disclaimer.
13  *
14  * Redistribution in binary form must reproduce the above copyright notice,
15  * this list of conditions and the following disclaimer in the
16  * documentation and/or other materials provided with the distribution.
17  *
18  * Neither the name of Sun Microsystems, Inc., 'Java', 'Java'-based names,
19  * nor the names of contributors may be used to endorse or promote products
20  * derived from this Software without specific prior written permission.
21  *
22  * The Software is provided "AS IS," without a warranty of any kind. ALL
23  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
24  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25  * PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS
26  * SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE
27  * AS A RESULT OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE
28  * SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE
29  * LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
30  * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED
31  * AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
32  * INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGES.
34  *
35  * You acknowledge that the Software is not designed, licensed or intended
36  * for use in the design, construction, operation or maintenance of any
37  * nuclear facility.
38  */

39
40 package parser.dom;
41
42 import com.sun.japex.JapexDriverBase;
43 import com.sun.japex.TestCase;
44 import com.sun.org.apache.xml.internal.utils.DOMBuilder;
45 import com.sun.xml.fastinfoset.sax.Features;
46 import com.sun.xml.fastinfoset.sax.SAXDocumentParser;
47 import com.sun.xml.fastinfoset.sax.SAXDocumentSerializer;
48 import java.io.File JavaDoc;
49 import java.io.ByteArrayInputStream JavaDoc;
50 import java.io.ByteArrayOutputStream JavaDoc;
51 import java.io.FileInputStream JavaDoc;
52 import javax.xml.parsers.DocumentBuilder JavaDoc;
53 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
54
55 import javax.xml.parsers.SAXParserFactory JavaDoc;
56 import javax.xml.parsers.SAXParser JavaDoc;
57
58
59
60 public class FISAXXercesDOMBuilderDriver extends JapexDriverBase {
61     ByteArrayInputStream JavaDoc _inputStream;
62
63     SAXDocumentParser _fidp;
64     DocumentBuilder JavaDoc _db;
65     
66     public void initializeDriver() {
67     }
68
69
70     public void prepare(TestCase testCase) {
71         String JavaDoc xmlFile = testCase.getParam("xmlfile");
72         if (xmlFile == null) {
73             throw new RuntimeException JavaDoc("xmlfile not specified");
74         }
75         
76         // Load file into byte array to factor out IO
77
try {
78         SAXParserFactory JavaDoc spf = SAXParserFactory.newInstance();
79             spf.setNamespaceAware(true);
80             SAXParser JavaDoc parser = spf.newSAXParser();
81
82         ByteArrayOutputStream JavaDoc baos = new ByteArrayOutputStream JavaDoc();
83         SAXDocumentSerializer ds = new SAXDocumentSerializer();
84             
85             ds.setOutputStream(baos);
86
87             // TODO must use URL here
88
FileInputStream JavaDoc fis = new FileInputStream JavaDoc(new File JavaDoc(xmlFile));
89             parser.parse(fis, ds);
90             fis.close();
91
92             _inputStream = new ByteArrayInputStream JavaDoc(baos.toByteArray());
93             _fidp = new SAXDocumentParser();
94             _fidp.setFeature(Features.NAMESPACE_PREFIXES_FEATURE, true);
95             
96             DocumentBuilderFactory JavaDoc dbf = DocumentBuilderFactory.newInstance();
97             dbf.setNamespaceAware(true);
98             _db = dbf.newDocumentBuilder();
99         }
100         catch (Exception JavaDoc e) {
101         }
102     }
103
104     public void warmup(TestCase testCase) {
105         try {
106             _inputStream.reset();
107             _fidp.setInputStream(_inputStream);
108             DOMBuilder db = new DOMBuilder(_db.newDocument());
109             _fidp.setContentHandler(db);
110             _fidp.setLexicalHandler(db);
111             _fidp.parse();
112         }
113         catch (Exception JavaDoc e) {
114             e.printStackTrace();
115         }
116     }
117     
118     public void run(TestCase testCase) {
119         try {
120             _inputStream.reset();
121             _fidp.setInputStream(_inputStream);
122             DOMBuilder db = new DOMBuilder(_db.newDocument());
123             _fidp.setContentHandler(db);
124             _fidp.setLexicalHandler(db);
125             _fidp.parse();
126         }
127         catch (Exception JavaDoc e) {
128             e.printStackTrace();
129         }
130     }
131     
132     public void finish(TestCase testCase) {
133     }
134     
135     public void terminateDriver() {
136     }
137 }
138
Popular Tags