KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > barracuda > contrib > sam > xmlform > XmlFormFactory


1 /*
2  * Copyright (C) 2003 Stefan Armbruster [stefan@armbruster-it.de]
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * $Id: XmlFormFactory.java,v 1.3 2004/02/01 05:16:27 christianc Exp $
19  */

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 /**
30 * XmlFormFactory holds a map of parsed forms. This way, the number of xml parsings is reduced as much as possible
31 */

32 public class XmlFormFactory {
33
34     protected static Logger logger = Logger.getLogger(XmlFormFactory.class.getName());
35
36    /** Map holding all already parsed XMLForms */
37     protected static Map parsedXmlFiles = new Hashtable();
38
39    /** Hidden constructor to prevent any instantiazion */
40    protected XmlFormFactory() {}
41
42    /** If the requested Form is already stored in {@link #parsedXmlFiles} it is simply
43     * returned. Otherwise the XML file is stored in parsed form. Parsing is done by
44     * Zeus generated classes.
45     */

46     public static Form get(ControlEventContext context, String JavaDoc 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 JavaDoc ex) {
61             logger.error(ex.getMessage(),ex);
62             return null;
63         }
64     }
65
66 }
67
Popular Tags