KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > invicta > type > TypeDefinitionLoader


1 package net.sf.invicta.type;
2
3 import java.io.File JavaDoc;
4 import java.io.FileInputStream JavaDoc;
5 import java.io.FileNotFoundException JavaDoc;
6
7 import net.sf.invicta.util.BetterDigester;
8 import net.sf.invicta.util.DTDEntityResolver;
9
10 /**
11  * Loads a type definition from a file and creates an unresolved
12  * TypeDefinition using Digester.
13  */

14 public class TypeDefinitionLoader {
15
16     protected BetterDigester reader = new BetterDigester();
17
18     /**
19      *
20      */

21     public TypeDefinitionLoader() {
22         super();
23     
24         // Enable DTD validation
25
this.reader.setValidating(true);
26
27     
28         // Use the rule set of the type definition.
29
this.reader.addRuleSet(new TypeDefinitionRuleSet());
30
31         this.reader.setEntityResolver(new DTDEntityResolver());
32     }
33
34     /**
35      * Loads and parses a type definition from the given file name.
36      * Returns an unresolved TypeDefinition object.
37      *
38      * @param fileName
39      * @return TypeDefinition
40      * @throws InvictaTypeException
41      */

42     public TypeDefinition load(String JavaDoc fileName) throws InvictaTypeException {
43         
44         // Open the file for reading
45
FileInputStream JavaDoc inputStream;
46         File JavaDoc resourceFile = new File JavaDoc(fileName);
47         try {
48             inputStream = new FileInputStream JavaDoc(resourceFile);
49         } catch (FileNotFoundException JavaDoc e) {
50             throw new InvictaTypeException("Type Definition file not found:" + fileName);
51         }
52         
53         this.reader.clearWithErrors();
54
55         // Load the type definition file while parsing it.
56
TypeDefinition result;
57         try {
58             result = (TypeDefinition) reader.parse(inputStream);
59         } catch (Exception JavaDoc e) {
60             throw new InvictaTypeException("Type definition error: " + e.getMessage());
61         }
62                                   
63         if (reader.getNumberOfErrors() > 0)
64             throw new InvictaTypeException("Error in loading type definition file '" + fileName +"'");
65                                             
66         return result;
67     }
68 }
69
Popular Tags