1 20 package org.enhydra.barracuda.contrib.sam.xmlform; 21 22 import java.util.*; 23 import java.io.*; 24 import javax.servlet.*; 25 import org.enhydra.barracuda.core.event.*; 26 import org.enhydra.barracuda.contrib.sam.xmlform.dtd.*; 27 import org.apache.log4j.*; 28 29 32 public class XmlFormFactory { 33 34 protected static Logger logger = Logger.getLogger(XmlFormFactory.class.getName()); 35 36 37 protected static Map parsedXmlFiles = new Hashtable(); 38 39 40 protected XmlFormFactory() {} 41 42 46 public static Form get(ControlEventContext context, String filename) 47 { 48 try { 49 Form form = (Form) parsedXmlFiles.get(filename); 50 if (form == null) { 51 if (logger.isDebugEnabled()) logger.debug(filename + " is currently not in map, trying to load"); 52 ServletConfig config = context.getConfig(); 53 ServletContext sc = config.getServletContext(); 54 if (logger.isDebugEnabled()) logger.debug( "URL is " + sc.getResource(filename)); 55 InputStream is = sc.getResourceAsStream(filename); 56 form = FormImpl.unmarshal(is); 57 parsedXmlFiles.put(filename, form); 58 } 59 return form; 60 } catch (Exception ex) { 61 logger.error(ex.getMessage(),ex); 62 return null; 63 } 64 } 65 66 } 67 | Popular Tags |