1 package org.naftulin.configmgr.content;
2
3 import java.util.LinkedList;
4 import java.util.List;
5
6 import org.naftulin.configmgr.ConfigurationManagerException;
7 import org.naftulin.configmgr.parsers.ConfigEntryParser;
8 import org.naftulin.configmgr.parsers.JndiParserImpl;
9
10 /***
11 * Represents a jndi entry, with it's key, name-value pairs and parser class.
12 * Intended to mirror master configuration rules for external configuration.
13 * The external configuraton xml is:
14 * <pre>
15 * <jndi key="the key"
16 initialContextFactory="optional contenxt factory"
17 jndiName="jdni name"
18 *
19 * >
20 <param name="key1" value="value1" />
21 .....
22 <param name="keyn" value="valuen" />
23 </jndi>
24 * </pre>
25 *
26 * @author Henry Henry
27 * @since 1.3
28 */
29 public class JndiRecordImpl extends AbstractRecordImpl {
30 private String initialContextFactory;
31 private String jndiName;
32 private final List<NameValuePairImpl> nameValuePairs = new LinkedList<NameValuePairImpl>();
33 private ConfigEntryParser parser;
34
35
36 public List<NameValuePairImpl> getNameValuePairs() {
37 return nameValuePairs;
38 }
39
40 /***
41 * Adds a name-value pair as it is read from the master configuration.
42 * @param nv the name value pair.
43 */
44 public void addNameValuePair(final NameValuePairImpl nv) {
45 nameValuePairs.add(nv);
46 }
47
48 public String getInitialContextFactory() {
49 return initialContextFactory;
50 }
51
52 public void setInitialContextFactory(final String initialContextFactory) {
53 this.initialContextFactory = initialContextFactory;
54 }
55
56 public String getJndiName() {
57 return jndiName;
58 }
59
60 public void setJndiName(final String jndiName) {
61 this.jndiName = jndiName;
62 }
63
64
65 public synchronized ConfigEntryParser getParser() throws ConfigurationManagerException {
66 if (parser == null) {
67 parser = new JndiParserImpl(jndiName, initialContextFactory, nameValuePairs);
68 }
69 return parser;
70 }
71
72
73
74 /***
75 * Since it is not a file-based cofiguration, we need to overwrite the method.
76 * @return false
77 */
78 public boolean isGetUrlForFile() {
79 return false;
80 }
81
82 public String getFileName() {
83 return "jndi name : " + jndiName + " initial Context Factory " + initialContextFactory;
84 }
85 }