1 package com.quadcap.http.server22; 2 3 40 41 import java.io.Reader ; 42 import java.io.IOException ; 43 44 import java.util.Hashtable ; 45 46 import javax.servlet.ServletException ; 47 48 import org.xml.sax.AttributeList ; 49 import org.xml.sax.DocumentHandler ; 50 import org.xml.sax.ErrorHandler ; 51 import org.xml.sax.InputSource ; 52 import org.xml.sax.Parser ; 53 import org.xml.sax.Locator ; 54 import org.xml.sax.SAXException ; 55 import org.xml.sax.SAXParseException ; 56 57 import org.xml.sax.helpers.ParserFactory ; 58 59 import com.quadcap.text.sax.Handler; 60 import com.quadcap.util.Debug; 61 62 67 public class DDParser extends Handler { 68 WebApplication app; 69 WebServlet servlet; 70 int state = INIT; 71 72 final static int INIT = 0; 73 final static int APP = 1; 74 final static int SERVLET = 2; 75 76 79 public DDParser() throws SAXException { 80 super(); 81 } 82 83 90 public void parse(Reader dd, WebApplication app) 91 throws SAXException 92 { 93 this.app = app; 94 this.state = INIT; 95 super.parse(dd, app); 96 } 97 98 104 192 public void endElement(String name) throws SAXException { 193 switch (state) { 194 case SERVLET: 195 if (name.equals("servlet")) { 196 app.addServlet(servlet); 197 servlet = null; 198 state = APP; 199 } else if (name.equals("servlet-name")) { 200 servlet.setServletName(consumeData()); 201 } else if (name.equals("servlet-class")) { 202 servlet.setServletClass(consumeData()); 203 } else if (name.equals("init-param")) { 204 servlet.addInitParam(consume("param-name"), 205 consume("param-value")); 206 } else if (name.equals("load-on-startup")) { 207 servlet.setLoadOnStartup(Integer.parseInt(consumeData())); 208 } else { 209 env.put(name, consumeData()); 210 } 211 break; 212 case APP: 213 if (name.equals("context-param")) { 214 app.addInitParam(consume("param-name"), 215 consume("param-value")); 216 } else if (name.equals("session-timeout")) { 217 app.setSessionTimeout(60 * Integer.parseInt(consumeData())); 218 } else if (name.equals("context-param")) { 219 app.addInitParam(consume("param-name"), 220 consume("param-value")); 221 } else if (name.equals("servlet-mapping")) { 222 app.addServletMapping(consume("servlet-name"), 223 consume("url-pattern")); 224 } else if (name.equals("error-page")) { 225 app.setErrorPage(consumeData()); 226 } else if (name.equals("mime-mapping")) { 227 app.addMimeMapping(consume("extension"), 228 consume("mime-type")); 229 } else if (name.equals("display-name")) { 230 app.setDisplayName(consumeData()); 231 } else if (name.equals("welcome-file")) { 232 app.addWelcomeFile(consumeData()); 233 } else { 234 env.put(name, consumeData()); 235 } 236 break; 237 } 238 } 239 240 248 public void startElement(String name, AttributeList attrs) 249 throws SAXException 250 { 251 data.setLength(0); 252 if (name.equals("servlet")) { 253 servlet = new WebServlet(); 254 servlet.setWebApplication(app); 255 state = SERVLET; 256 } else if (name.equals("web-app")) { 257 state = APP; 258 } 259 } 260 261 } 262 | Popular Tags |