01: /*
02: * Copyright 2003-2006 Rick Knowles <winstone-devel at lists sourceforge net>
03: * Distributed under the terms of either:
04: * - the common development and distribution license (CDDL), v1.0; or
05: * - the GNU Lesser General Public License, v2.1 or later
06: */
07: package winstone.jndi;
08:
09: import java.util.Iterator;
10: import java.util.List;
11: import java.util.Map;
12:
13: import org.w3c.dom.Node;
14:
15: import winstone.Logger;
16: import winstone.WebAppConfiguration;
17:
18: /**
19: * Implements a simple web.xml + command line arguments style jndi manager
20: *
21: * @author <a href="mailto:rick_knowles@hotmail.com">Rick Knowles</a>
22: * @version $Id: WebAppJNDIManager.java,v 1.9 2006/02/28 07:32:48 rickknowles Exp $
23: */
24: public class WebAppJNDIManager extends ContainerJNDIManager {
25: final static String ELEM_ENV_ENTRY = "env-entry";
26: final static String ELEM_ENV_ENTRY_NAME = "env-entry-name";
27: final static String ELEM_ENV_ENTRY_TYPE = "env-entry-type";
28: final static String ELEM_ENV_ENTRY_VALUE = "env-entry-value";
29:
30: /**
31: * Gets the relevant list of objects from the args, validating against the
32: * web.xml nodes supplied. All node addresses are assumed to be relative to
33: * the java:/comp/env context
34: */
35: public WebAppJNDIManager(Map args, List webXMLNodes,
36: ClassLoader loader) {
37: super (args, webXMLNodes, loader);
38:
39: // If the webXML nodes are not null, validate that all the entries we
40: // wanted have been created
41: if (webXMLNodes != null)
42: for (Iterator i = webXMLNodes.iterator(); i.hasNext();) {
43: Node node = (Node) i.next();
44:
45: // Extract the env-entry nodes and create the objects
46: if (node.getNodeType() != Node.ELEMENT_NODE)
47: continue;
48: else if (node.getNodeName().equals(ELEM_ENV_ENTRY)) {
49: String name = null;
50: String type = null;
51: String value = null;
52: for (int m = 0; m < node.getChildNodes()
53: .getLength(); m++) {
54: Node envNode = node.getChildNodes().item(m);
55: if (envNode.getNodeType() != Node.ELEMENT_NODE)
56: continue;
57: else if (envNode.getNodeName().equals(
58: ELEM_ENV_ENTRY_NAME))
59: name = WebAppConfiguration
60: .getTextFromNode(envNode);
61: else if (envNode.getNodeName().equals(
62: ELEM_ENV_ENTRY_TYPE))
63: type = WebAppConfiguration
64: .getTextFromNode(envNode);
65: else if (envNode.getNodeName().equals(
66: ELEM_ENV_ENTRY_VALUE))
67: value = WebAppConfiguration
68: .getTextFromNode(envNode);
69: }
70: if ((name != null) && (type != null)
71: && (value != null)) {
72: Logger
73: .log(
74: Logger.FULL_DEBUG,
75: JNDI_RESOURCES,
76: "WebAppJNDIManager.CreatingResourceWebXML",
77: name);
78: Object obj = createObject(name, type, value,
79: args, loader);
80: if (obj != null)
81: this.objectsToCreate.put(name, obj);
82: }
83: }
84: }
85: }
86:
87: }
|