2
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4
* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
6
* The contents of this file are subject to the terms of either the GNU
7
* General Public License Version 2 only ("GPL") or the Common
8
* Development and Distribution License("CDDL") (collectively, the
9
* "License"). You may not use this file except in compliance with the
10
* License. You can obtain a copy of the License at
11
* http://www.netbeans.org/cddl-gplv2.html
12
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
* specific language governing permissions and limitations under the
14
* License. When distributing the software, include this License Header
15
* Notice in each file and include the License file at
16
* nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
17
* particular file as subject to the "Classpath" exception as provided
18
* by Sun in the GPL Version 2 section of the License file that
19
* accompanied this code. If applicable, add the following below the
20
* License Header, with the fields enclosed by brackets [] replaced by
21
* your own identifying information:
22
* "Portions Copyrighted [year] [name of copyright owner]"
26
* The Original Software is NetBeans. The Initial Developer of the Original
27
* Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
28
* Microsystems, Inc. All Rights Reserved.
30
* If you wish your version of this file to be governed by only the CDDL
31
* or only the GPL Version 2, indicate your decision by adding
32
* "[Contributor] elects to include this software in this distribution
33
* under the [CDDL or GPL Version 2] license." If you do not indicate a
34
* single choice of license, a recipient has the option to distribute
35
* your version of this file under either the CDDL, the GPL Version 2 or
36
* to extend the choice of license to its licensees as provided above.
37
* However, if you add GPL Version 2 code and therefore, elected the GPL
38
* Version 2 license, then the option applies only if the new code is
39
* made subject to such option by the copyright holder.
42
package org.netbeans.tax.dom;
44
import java.io.ByteArrayOutputStream;
46
import java.io.InputStreamReader;
47
import java.io.OutputStream;
48
import java.lang.reflect.Constructor;
50
import junit.framework.*;
51
import org.netbeans.junit.*;
52
import org.netbeans.modules.xml.tax.parser.ParserLoader;
55
import org.netbeans.tax.*;
56
import org.netbeans.tax.io.*;
57
import org.openide.xml.XMLUtil;
58
import org.apache.tools.ant.AntClassLoader;
61
* Sorry, complicated test setup. It requires OpenIDE and Ant libs.
62
* There is also hardcoded path to isolated jars.
66
public class WrapperTest extends NbTestCase {
69
* Can anybody resolve it dynamically at runtime?
71
private static String AUTOLOAD_PREFIX =
72
System.getProperty("netbeans.test.xml.autoloadLibrariesPath",
73
"/jungle/prj/netbeans/40/nb_all/xml/netbeans/modules/autoload/ext/"
76
public WrapperTest(java.lang.String testName) {
80
public static void main(java.lang.String[] args) {
81
junit.textui.TestRunner.run(suite());
84
public static Test suite() {
85
TestSuite suite = new NbTestSuite(WrapperTest.class);
90
/** Test of wrap method, of class org.netbeans.tax.dom.Wrapper. */
91
public void testWrap() throws Exception {
92
System.out.println("testWrap");
94
URL prototype = getClass().getResource("data/Prototype.xml");
95
InputSource in = new InputSource(prototype.toExternalForm());
96
ByteArrayOutputStream out;
98
// prepare golden serialized XML
100
Document goldenDocument = XMLUtil.parse(in, false, false, null, null);
101
out = new ByteArrayOutputStream(2000);
102
XMLUtil.write(goldenDocument, out, "UTF-8");
103
String golden = out.toString("UTF-8");
105
// prepare the same for tax
106
in = new InputSource(prototype.toExternalForm());
107
in.setCharacterStream(new InputStreamReader(prototype.openStream(), "UTF8"));
108
//ClassLoader loader = ParserLoader.getInstance();
109
AntClassLoader loader = new AntClassLoader(getClass().getClassLoader(), true);
110
String path = AUTOLOAD_PREFIX + "xerces2.jar";
111
if (new File(path).exists() == false) {
112
throw new IllegalStateException("Xerces file not found! " + path);
114
loader.addPathElement(path);
116
String taxpath = AUTOLOAD_PREFIX + "tax.jar";
117
if (new File(taxpath).exists() == false) {
118
throw new IllegalStateException("TAX file not found! " + taxpath);
120
loader.addPathElement(taxpath);
122
loader.forceLoadClass("org.netbeans.tax.io.XNIBuilder");
123
loader.forceLoadClass("org.netbeans.tax.io.XNIBuilder$XMLBuilder");
124
loader.forceLoadClass("org.netbeans.tax.io.XNIBuilder$DTDStopException");
125
loader.forceLoadClass("org.netbeans.tax.io.XNIBuilder$DTDEntityResolver");
126
loader.forceLoadClass("org.netbeans.tax.io.XNIBuilder$1");
127
loader.addLoaderPackageRoot("org.apache.xerces");
130
Class builderClass = loader.loadClass("org.netbeans.tax.io.XNIBuilder");
131
Constructor builderConstructor = builderClass.getConstructor(new Class[] {
134
EntityResolver.class,
135
TreeStreamBuilderErrorHandler.class
137
TreeBuilder builder = (TreeBuilder) builderConstructor.newInstance(new Object[] {
141
new TreeStreamBuilderErrorHandler() {
142
public void message(int type, SAXParseException e) {
147
TreeDocumentRoot taxDocument = builder.buildDocument();
148
Document wrappedDocument = Wrapper.wrap(taxDocument);
150
out = new ByteArrayOutputStream(2000);
151
XMLUtil.write(wrappedDocument, out, "UTF-8");
152
String serializedWrapped = out.toString("UTF-8");
154
if (golden.equals(serializedWrapped) == false) {
155
System.out.println("Golden:\n" + golden);
156
System.out.println("====\nWrapped TAX:\n" + serializedWrapped);
157
String serializedTax = Convertors.treeToString(taxDocument);
158
System.out.println("====\nSerilized TAX:\n" + serializedTax);
159
System.out.println("====");
160
assertTrue("Serialized documents are different!", false);