1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mortbay.jetty.plus.naming;
17
18
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import javax.naming.Binding;
23 import javax.naming.Context;
24 import javax.naming.InitialContext;
25 import javax.naming.NameNotFoundException;
26 import javax.naming.NamingEnumeration;
27 import javax.naming.NamingException;
28
29 import org.mortbay.log.Log;
30 import org.mortbay.naming.NamingUtil;
31
32
33
34
35
36
37
38 public class EnvEntry extends NamingEntry
39 {
40 private boolean overrideWebXml;
41
42
43
44
45
46
47
48
49
50
51 public static void bindToENC (String name, Object value)
52 throws NamingException
53 {
54 if (name==null||name.trim().equals(""))
55 throw new NamingException("No name for EnvEntry");
56
57
58
59
60
61
62 EnvEntry envEntry = (EnvEntry)NamingEntryUtil.lookupNamingEntry(name);
63 if (envEntry!=null && envEntry.isOverrideWebXml())
64 envEntry.bindToENC(name);
65 else
66 {
67
68 InitialContext ic = new InitialContext();
69 Context envCtx = (Context)ic.lookup("java:comp/env");
70 NamingUtil.bind(envCtx, name, value);
71 }
72 }
73
74 public static List lookupGlobalEnvEntries ()
75 throws NamingException
76 {
77 ArrayList list = new ArrayList();
78 lookupEnvEntries(list, new InitialContext());
79 return list;
80 }
81
82 private static List lookupEnvEntries (List list, Context context)
83 throws NamingException
84 {
85 try
86 {
87 NamingEnumeration nenum = context.listBindings("");
88 while (nenum.hasMoreElements())
89 {
90 Binding binding = (Binding)nenum.next();
91 if (binding.getObject() instanceof Context)
92 lookupEnvEntries (list, (Context)binding.getObject());
93 else if (EnvEntry.class.isInstance(binding.getObject()))
94 list.add(binding.getObject());
95 }
96 }
97 catch (NameNotFoundException e)
98 {
99 Log.debug("No EnvEntries in context="+context);
100 }
101
102 return list;
103 }
104
105
106
107 public EnvEntry (String jndiName, Object objToBind)
108 throws NamingException
109 {
110 this(jndiName, objToBind, false);
111 }
112
113 public EnvEntry (String jndiName, Object objToBind, boolean overrideWebXml)
114 throws NamingException
115 {
116 super(jndiName, objToBind);
117 this.overrideWebXml = overrideWebXml;
118 }
119
120
121 public boolean isOverrideWebXml ()
122 {
123 return this.overrideWebXml;
124 }
125 }