1 package net.sf.invicta.type; 2 3 import java.io.File ; 4 import java.io.FileInputStream ; 5 import java.io.FileNotFoundException ; 6 7 import net.sf.invicta.util.BetterDigester; 8 import net.sf.invicta.util.DTDEntityResolver; 9 10 14 public class TypeDefinitionLoader { 15 16 protected BetterDigester reader = new BetterDigester(); 17 18 21 public TypeDefinitionLoader() { 22 super(); 23 24 this.reader.setValidating(true); 26 27 28 this.reader.addRuleSet(new TypeDefinitionRuleSet()); 30 31 this.reader.setEntityResolver(new DTDEntityResolver()); 32 } 33 34 42 public TypeDefinition load(String fileName) throws InvictaTypeException { 43 44 FileInputStream inputStream; 46 File resourceFile = new File (fileName); 47 try { 48 inputStream = new FileInputStream (resourceFile); 49 } catch (FileNotFoundException e) { 50 throw new InvictaTypeException("Type Definition file not found:" + fileName); 51 } 52 53 this.reader.clearWithErrors(); 54 55 TypeDefinition result; 57 try { 58 result = (TypeDefinition) reader.parse(inputStream); 59 } catch (Exception 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 |