KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > mdr > test > DTDProducerTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.mdr.test;
21
22 import java.io.*;
23 import java.util.*;
24 import java.net.*;
25
26 import junit.extensions.*;
27 import junit.framework.*;
28
29 import org.netbeans.api.mdr.DTDProducer;
30 import org.netbeans.api.xmi.*;
31 import org.netbeans.api.xmi.sax.*;
32 import org.openide.util.Lookup;
33
34 import org.netbeans.mdr.util.*;
35 import org.netbeans.mdr.NBMDRepositoryImpl;
36 import org.netbeans.lib.jmi.xmi.*;
37 import org.netbeans.lib.jmi.mapping.*;
38
39 import org.xml.sax.*;
40 import org.xml.sax.helpers.DefaultHandler JavaDoc;
41 import javax.xml.parsers.*;
42
43 import javax.jmi.reflect.*;
44 import javax.jmi.model.*;
45
46 /**
47  * Test case verifying functionality of XmiReader and XmiWriter.
48  */

49 public class DTDProducerTest extends MDRTestCase {
50     
51     public DTDProducerTest(String JavaDoc testName) {
52         super (testName);
53     }
54     
55     public static void main (String JavaDoc[] args) {
56         junit.textui.TestRunner.run (suite ());
57     }
58     
59     public static Test suite () {
60         TestSuite suite = new TestSuite ();
61         suite.addTestSuite (DTDProducerTest.class);
62         
63         TestSetup setup = new TestSetup (suite) {
64             public void setUp () {
65             }
66             public void tearDown () {
67             }
68         };
69         return setup;
70     }
71     
72     // **************************************************************************
73

74     public void test () {
75         // doTest ("01-02-15_Diff.xml", "UML", "uml_inst");
76
doTest ("Text.xml", "Text", "text_inst");
77         doTest ("Java.xml", "Core", "java_inst");
78     }
79     
80     public void doTest (String JavaDoc xmlName, String JavaDoc packageName, String JavaDoc fileName) {
81         RefPackage pkg = instantiateModel (xmlName, packageName, packageName + "_1");
82         new RandomDataGenerator ().generate (pkg, 0, 12);
83         RefPackage pkg2 = instantiateModel (xmlName, packageName, packageName + "_2");
84         
85         Lookup lookup = Lookup.getDefault ();
86         DTDProducer producer = DTDProducer.getDefault ();
87         XMIWriter writer = XMIWriterFactory.getDefault ().createXMIWriter ();
88         XMIReader reader = XMIReaderFactory.getDefault ().createXMIReader ();
89
90         try {
91             OutputStream os = new FileOutputStream (getFile(fileName + ".dtd"));
92             producer.generate (os, pkg);
93             os.flush ();
94             os.close ();
95         } catch (Exception JavaDoc e) {
96             e.printStackTrace();
97             fail (e.getMessage ());
98         }
99
100         File file_temp = getFile (fileName + ".temp");
101         File file = getFile (fileName + ".xml");
102
103         try {
104             OutputStream os = new FileOutputStream (file_temp);
105             repository.beginTrans (true);
106             writer.write (os, fileName + ".temp", pkg, null);
107             os.flush ();
108             os.close ();
109         } catch (Exception JavaDoc e) {
110             e.printStackTrace();
111             fail (e.getMessage ());
112         } finally {
113             repository.endTrans ();
114         }
115         
116         addDTDTag (file_temp, file, fileName + ".dtd");
117
118         /*
119         try {
120             repository.beginTrans (true);
121             reader.read (file.toURL ().toExternalForm(), pkg2);
122         } catch (Exception e) {
123             e.printStackTrace ();
124             fail (e.getMessage ());
125         } finally {
126             repository.endTrans ();
127         }
128          */

129         
130         Validator validator = new Validator ();
131         validator.validate (file);
132      
133         deleteModel (pkg);
134         deleteModel (pkg2);
135     }
136     
137     private RefPackage instantiateModel (String JavaDoc docName, String JavaDoc mainPackageName, String JavaDoc extentName) {
138         ModelPackage pkg = loadMOFModel (docName, extentName + "_meta");
139         RefPackage result = createExtent (
140             findMofPackage (pkg, mainPackageName),
141             extentName
142         );
143         return result;
144     }
145     
146     private void deleteModel (RefPackage pkg) {
147         RefPackage meta = pkg.refMetaObject ().refOutermostPackage ();
148         pkg.refDelete ();
149         meta.refDelete ();
150     }
151
152     private void addDTDTag (File src, File dest, String JavaDoc dtdFileName) {
153         try {
154             InputStream in = new FileInputStream (src);
155             BufferedReader reader = new BufferedReader (new InputStreamReader(in));
156             PrintStream writer = new PrintStream (new FileOutputStream (dest));
157             String JavaDoc line = reader.readLine ();
158             writer.println (line);
159             writer.println ("<!DOCTYPE XMI SYSTEM \"" + dtdFileName + "\">");
160             line = reader.readLine ();
161             while (line != null) {
162                 writer.println (line);
163                 line = reader.readLine();
164             }
165             writer.close ();
166             writer.flush ();
167         } catch (IOException e) {
168             e.printStackTrace ();
169             fail (e.getMessage ());
170         }
171     }
172
173     // ..........................................................................
174

175     private class Validator extends DefaultHandler JavaDoc {
176
177         public void validate (File xmiFile) {
178             try {
179                 InputSource input = new InputSource (new FileInputStream (xmiFile));
180                 input.setSystemId(xmiFile.toURL().toString());
181                 SAXParserFactory factory = SAXParserFactory.newInstance ();
182                 factory.setValidating (true);
183                 SAXParser saxParser = factory.newSAXParser ();
184                 saxParser.parse (input, this);
185             } catch (Exception JavaDoc e) {
186                 e.printStackTrace ();
187                 fail (e.getMessage ());
188             }
189         }
190
191     }
192
193 }
194
Popular Tags