1 57 package org.enhydra.apache.wml.dom; 58 59 import java.lang.reflect.Constructor ; 60 import java.util.Hashtable ; 61 62 import org.enhydra.apache.wml.WMLDocument; 63 import org.enhydra.apache.xerces.dom.DocumentImpl; 64 import org.w3c.dom.DOMException ; 65 import org.w3c.dom.DocumentType ; 66 import org.w3c.dom.Element ; 67 68 72 73 public class WMLDocumentImpl extends DocumentImpl implements WMLDocument { 74 75 private static Hashtable _elementTypesWML; 76 private static final Class [] _elemClassSigWML = 77 new Class [] { WMLDocumentImpl.class, String .class }; 78 79 public Element createElement( String tagName ) throws DOMException 80 { 81 Class elemClass; 82 Constructor cnst; 83 84 elemClass = (Class ) _elementTypesWML.get( tagName ); 85 if ( elemClass != null ) { 86 try { 87 cnst = elemClass.getConstructor( _elemClassSigWML ); 88 return (Element ) cnst.newInstance( new Object [] { this, tagName } ); 89 } catch ( Exception except ) { 90 Throwable thrw; 91 92 if ( except instanceof java.lang.reflect.InvocationTargetException ) 93 thrw = ( (java.lang.reflect.InvocationTargetException ) except ).getTargetException(); 94 else 95 thrw = except; 96 97 System.out.println( "Exception " + thrw.getClass().getName() ); 98 System.out.println( thrw.getMessage() ); 99 100 throw new IllegalStateException ( "Tag '" + tagName + "' associated with an Element class that failed to construct." ); 101 } 102 } 103 return new WMLElementImpl( this, tagName ); 104 } 105 106 static { 107 _elementTypesWML = new Hashtable (); 108 _elementTypesWML.put("b", WMLBElementImpl.class); 109 _elementTypesWML.put("noop", WMLNoopElementImpl.class); 110 _elementTypesWML.put("a", WMLAElementImpl.class); 111 _elementTypesWML.put("setvar", WMLSetvarElementImpl.class); 112 _elementTypesWML.put("access", WMLAccessElementImpl.class); 113 _elementTypesWML.put("strong", WMLStrongElementImpl.class); 114 _elementTypesWML.put("postfield", WMLPostfieldElementImpl.class); 115 _elementTypesWML.put("do", WMLDoElementImpl.class); 116 _elementTypesWML.put("wml", WMLWmlElementImpl.class); 117 _elementTypesWML.put("tr", WMLTrElementImpl.class); 118 _elementTypesWML.put("go", WMLGoElementImpl.class); 119 _elementTypesWML.put("big", WMLBigElementImpl.class); 120 _elementTypesWML.put("anchor", WMLAnchorElementImpl.class); 121 _elementTypesWML.put("timer", WMLTimerElementImpl.class); 122 _elementTypesWML.put("small", WMLSmallElementImpl.class); 123 _elementTypesWML.put("optgroup", WMLOptgroupElementImpl.class); 124 _elementTypesWML.put("head", WMLHeadElementImpl.class); 125 _elementTypesWML.put("td", WMLTdElementImpl.class); 126 _elementTypesWML.put("fieldset", WMLFieldsetElementImpl.class); 127 _elementTypesWML.put("img", WMLImgElementImpl.class); 128 _elementTypesWML.put("refresh", WMLRefreshElementImpl.class); 129 _elementTypesWML.put("onevent", WMLOneventElementImpl.class); 130 _elementTypesWML.put("input", WMLInputElementImpl.class); 131 _elementTypesWML.put("prev", WMLPrevElementImpl.class); 132 _elementTypesWML.put("table", WMLTableElementImpl.class); 133 _elementTypesWML.put("meta", WMLMetaElementImpl.class); 134 _elementTypesWML.put("template", WMLTemplateElementImpl.class); 135 _elementTypesWML.put("br", WMLBrElementImpl.class); 136 _elementTypesWML.put("option", WMLOptionElementImpl.class); 137 _elementTypesWML.put("u", WMLUElementImpl.class); 138 _elementTypesWML.put("p", WMLPElementImpl.class); 139 _elementTypesWML.put("select", WMLSelectElementImpl.class); 140 _elementTypesWML.put("em", WMLEmElementImpl.class); 141 _elementTypesWML.put("i", WMLIElementImpl.class); 142 _elementTypesWML.put("card", WMLCardElementImpl.class); 143 } 144 145 146 147 public WMLDocumentImpl(DocumentType doctype) { 148 super(doctype, false); 149 } 150 } 151 | Popular Tags |