| 1 package com.protomatter.syslog.xml; 2 3 52 53 import java.io.*; 54 import java.net.*; 55 import java.util.*; 56 import java.text.MessageFormat ; 57 import com.protomatter.syslog.*; 58 import javax.servlet.*; 59 import javax.servlet.http.*; 60 61 155 156 public class SyslogInitServlet 157 extends HttpServlet 158 { 159 private boolean showConfigurationOnGet = false; 160 private boolean loadConfigAsResource = false; 161 162 private static final boolean WARNING_DEFAULT = true; 164 165 private static final String WARNING_OFF = "off"; 166 167 private static final String TRUE = "true"; 168 169 private static final String CONFIG_FILE_PARAM = "config.xml"; 170 171 private static final String SHOW_CONFIG_ON_GET_PARAM = "show.config.on.get"; 172 173 private static final String LOAD_CONFIG_AS_RESOURCE_PARAM = "load.config.as.resource"; 174 175 178 public SyslogInitServlet() 179 { 180 super(); 181 } 182 183 186 public void init(ServletConfig config) 187 throws ServletException 188 { 189 super.init(config); 190 191 try 192 { 193 if (TRUE.equalsIgnoreCase(config.getInitParameter(SHOW_CONFIG_ON_GET_PARAM))) 194 this.showConfigurationOnGet = true; 195 196 if (TRUE.equalsIgnoreCase(config.getInitParameter(LOAD_CONFIG_AS_RESOURCE_PARAM))) 197 this.loadConfigAsResource = true; 198 199 boolean showClassloaderWarning = WARNING_DEFAULT; 200 201 if (WARNING_OFF.equalsIgnoreCase(config.getInitParameter(Syslog.WARNING_PROPERTY))) 202 showClassloaderWarning = false; 203 204 String filename = config.getInitParameter(CONFIG_FILE_PARAM); 205 206 if (filename == null) 207 throw new IllegalArgumentException (MessageFormat.format( 208 Syslog.getResourceString(MessageConstants.MUST_SPECIFY_INIT_PARAM_MESSAGE), 209 new Object [] { CONFIG_FILE_PARAM } )); 210 211 String xmlParserClass = System.getProperty(SyslogXML.XML_PARSER_PROPERTY); 212 213 if (isValid(config.getInitParameter(SyslogXML.XML_PARSER_PROPERTY))) 214 { 215 xmlParserClass = config.getInitParameter(SyslogXML.XML_PARSER_PROPERTY).trim(); 216 } 217 218 if (loadConfigAsResource) 219 { 220 ClassLoader loader = this.getClass().getClassLoader(); 223 InputStream input = loader.getResourceAsStream(filename); 224 225 if (input != null) 226 { 227 SyslogXML.configure(input, xmlParserClass, showClassloaderWarning); 228 } 229 else 230 { 231 throw new SyslogInitException(MessageFormat.format( 232 Syslog.getResourceString(MessageConstants.RESOURCE_NOT_FOUND), 233 new Object [] { filename })); 234 } 235 236 } 237 else 238 { 239 File file = new File(filename); 240 SyslogXML.configure(file, xmlParserClass, showClassloaderWarning); 241 } 242 243 } 244 catch (SyslogInitException x) 245 { 246 throw new ServletException(Syslog.getResourceString(MessageConstants.CANNOT_CONFIGURE_MESSAGE), x); 247 } 248 } 249 250 253 public void destroy() 254 { 255 Syslog.shutdown(); 256 } 257 258 private static boolean isValid(String s) 259 { 260 if ((s == null) || (s.trim().length() == 0)) 261 return false; 262 263 return true; 264 } 265 266 public void doGet(HttpServletRequest req, HttpServletResponse resp) 267 throws ServletException, IOException 268 { 269 if (this.showConfigurationOnGet) 270 { 271 resp.setContentType("text/plain"); 272 OutputStream out = resp.getOutputStream(); 273 SyslogXML.writeConfiguration(out); 274 } 275 else 276 { 277 resp.setContentType("text/html"); 278 PrintWriter out = resp.getWriter(); 279 out.println(Syslog.getResourceString(MessageConstants.SERVLET_SNIPPY_RESPONSE)); 280 } 281 } 282 } 283 | Popular Tags |