blob: 46c84de413beb60c7bd47a347f5ea22e515dd9f5 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1999-2004 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package javax.naming.spi;
27
28import java.util.Hashtable;
29import javax.naming.*;
30
31/**
32 * This class is for dealing with federations/continuations.
33 *
34 * @author Rosanna Lee
35 * @author Scott Seligman
36 * @since 1.3
37 */
38
39class ContinuationContext implements Context, Resolver {
40 protected CannotProceedException cpe;
41 protected Hashtable env;
42 protected Context contCtx = null;
43
44 protected ContinuationContext(CannotProceedException cpe,
45 Hashtable env) {
46 this.cpe = cpe;
47 this.env = env;
48 }
49
50 protected Context getTargetContext() throws NamingException {
51 if (contCtx == null) {
52 if (cpe.getResolvedObj() == null)
53 throw (NamingException)cpe.fillInStackTrace();
54
55 contCtx = NamingManager.getContext(cpe.getResolvedObj(),
56 cpe.getAltName(),
57 cpe.getAltNameCtx(),
58 env);
59 if (contCtx == null)
60 throw (NamingException)cpe.fillInStackTrace();
61 }
62 return contCtx;
63 }
64
65 public Object lookup(Name name) throws NamingException {
66 Context ctx = getTargetContext();
67 return ctx.lookup(name);
68 }
69
70 public Object lookup(String name) throws NamingException {
71 Context ctx = getTargetContext();
72 return ctx.lookup(name);
73 }
74
75 public void bind(Name name, Object newObj) throws NamingException {
76 Context ctx = getTargetContext();
77 ctx.bind(name, newObj);
78 }
79
80 public void bind(String name, Object newObj) throws NamingException {
81 Context ctx = getTargetContext();
82 ctx.bind(name, newObj);
83 }
84
85 public void rebind(Name name, Object newObj) throws NamingException {
86 Context ctx = getTargetContext();
87 ctx.rebind(name, newObj);
88 }
89 public void rebind(String name, Object newObj) throws NamingException {
90 Context ctx = getTargetContext();
91 ctx.rebind(name, newObj);
92 }
93
94 public void unbind(Name name) throws NamingException {
95 Context ctx = getTargetContext();
96 ctx.unbind(name);
97 }
98 public void unbind(String name) throws NamingException {
99 Context ctx = getTargetContext();
100 ctx.unbind(name);
101 }
102
103 public void rename(Name name, Name newName) throws NamingException {
104 Context ctx = getTargetContext();
105 ctx.rename(name, newName);
106 }
107 public void rename(String name, String newName) throws NamingException {
108 Context ctx = getTargetContext();
109 ctx.rename(name, newName);
110 }
111
112 public NamingEnumeration list(Name name) throws NamingException {
113 Context ctx = getTargetContext();
114 return ctx.list(name);
115 }
116 public NamingEnumeration list(String name) throws NamingException {
117 Context ctx = getTargetContext();
118 return ctx.list(name);
119 }
120
121
122 public NamingEnumeration listBindings(Name name)
123 throws NamingException
124 {
125 Context ctx = getTargetContext();
126 return ctx.listBindings(name);
127 }
128
129 public NamingEnumeration listBindings(String name) throws NamingException {
130 Context ctx = getTargetContext();
131 return ctx.listBindings(name);
132 }
133
134 public void destroySubcontext(Name name) throws NamingException {
135 Context ctx = getTargetContext();
136 ctx.destroySubcontext(name);
137 }
138 public void destroySubcontext(String name) throws NamingException {
139 Context ctx = getTargetContext();
140 ctx.destroySubcontext(name);
141 }
142
143 public Context createSubcontext(Name name) throws NamingException {
144 Context ctx = getTargetContext();
145 return ctx.createSubcontext(name);
146 }
147 public Context createSubcontext(String name) throws NamingException {
148 Context ctx = getTargetContext();
149 return ctx.createSubcontext(name);
150 }
151
152 public Object lookupLink(Name name) throws NamingException {
153 Context ctx = getTargetContext();
154 return ctx.lookupLink(name);
155 }
156 public Object lookupLink(String name) throws NamingException {
157 Context ctx = getTargetContext();
158 return ctx.lookupLink(name);
159 }
160
161 public NameParser getNameParser(Name name) throws NamingException {
162 Context ctx = getTargetContext();
163 return ctx.getNameParser(name);
164 }
165
166 public NameParser getNameParser(String name) throws NamingException {
167 Context ctx = getTargetContext();
168 return ctx.getNameParser(name);
169 }
170
171 public Name composeName(Name name, Name prefix)
172 throws NamingException
173 {
174 Context ctx = getTargetContext();
175 return ctx.composeName(name, prefix);
176 }
177
178 public String composeName(String name, String prefix)
179 throws NamingException {
180 Context ctx = getTargetContext();
181 return ctx.composeName(name, prefix);
182 }
183
184 public Object addToEnvironment(String propName, Object value)
185 throws NamingException {
186 Context ctx = getTargetContext();
187 return ctx.addToEnvironment(propName, value);
188 }
189
190 public Object removeFromEnvironment(String propName)
191 throws NamingException {
192 Context ctx = getTargetContext();
193 return ctx.removeFromEnvironment(propName);
194 }
195
196 public Hashtable getEnvironment() throws NamingException {
197 Context ctx = getTargetContext();
198 return ctx.getEnvironment();
199 }
200
201 public String getNameInNamespace() throws NamingException {
202 Context ctx = getTargetContext();
203 return ctx.getNameInNamespace();
204 }
205
206 public ResolveResult
207 resolveToClass(Name name, Class<? extends Context> contextType)
208 throws NamingException
209 {
210 if (cpe.getResolvedObj() == null)
211 throw (NamingException)cpe.fillInStackTrace();
212
213 Resolver res = NamingManager.getResolver(cpe.getResolvedObj(),
214 cpe.getAltName(),
215 cpe.getAltNameCtx(),
216 env);
217 if (res == null)
218 throw (NamingException)cpe.fillInStackTrace();
219 return res.resolveToClass(name, contextType);
220 }
221
222 public ResolveResult
223 resolveToClass(String name, Class<? extends Context> contextType)
224 throws NamingException
225 {
226 if (cpe.getResolvedObj() == null)
227 throw (NamingException)cpe.fillInStackTrace();
228
229 Resolver res = NamingManager.getResolver(cpe.getResolvedObj(),
230 cpe.getAltName(),
231 cpe.getAltNameCtx(),
232 env);
233 if (res == null)
234 throw (NamingException)cpe.fillInStackTrace();
235 return res.resolveToClass(name, contextType);
236 }
237
238 public void close() throws NamingException {
239 cpe = null;
240 env = null;
241 if (contCtx != null) {
242 contCtx.close();
243 contCtx = null;
244 }
245 }
246}