View Javadoc
1 package org.jellyfish.implementation;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Iterator;
6
7 import javax.jdo.Extent;
8 import javax.jdo.PersistenceManagerFactory;
9 import javax.jdo.Query;
10 import javax.jdo.Transaction;
11 import javax.naming.InvalidNameException;
12 import javax.naming.NameNotFoundException;
13 import javax.naming.NamingEnumeration;
14 import javax.naming.NamingException;
15 import javax.naming.directory.Attributes;
16 import javax.naming.directory.DirContext;
17 import javax.naming.directory.SearchResult;
18
19 import org.apache.avalon.framework.logger.LogEnabled;
20 import org.apache.avalon.framework.logger.Logger;
21 import org.apache.avalon.framework.service.ServiceException;
22 import org.apache.avalon.framework.service.ServiceManager;
23 import org.apache.avalon.framework.service.Serviceable;
24 import org.jellyfish.ConnectionManager;
25 import org.jellyfish.DirectoryManager;
26 import org.jellyfish.MappingManager;
27 import org.jellyfish.ObjectMapNotFoundException;
28
29 public class DirectoryManagerDefault
30 implements DirectoryManager, Serviceable, LogEnabled {
31 private static DirectoryManagerDefault instance;
32 private ServiceManager serviceManager;
33 private Logger logger;
34 private ConnectionManager connectionManager;
35 private MappingManager mappingManager;
36
37 public DirectoryManagerDefault() {
38 }
39
40 public void service(ServiceManager serviceManager)
41 throws ServiceException {
42 this.serviceManager = serviceManager;
43 try {
44 mappingManager =
45 (MappingManager) serviceManager.lookup(MappingManager.ROLE);
46 connectionManager =
47 (ConnectionManager) serviceManager.lookup(
48 ConnectionManager.ROLE);
49 } catch (ServiceException e) {
50 logger.fatalError(e.getMessage(), e);
51 throw new RuntimeException(e);
52 }
53 }
54
55 public void enableLogging(Logger logger) {
56 this.logger = logger;
57 }
58
59 public void store(Object object) {
60 DirContext dirContext = null;
61 String objectDn = null;
62 Attributes attributes = null;
63 try {
64 dirContext = connectionManager.getContext();
65 objectDn = mappingManager.getObjectDn(object);
66 attributes = mappingManager.mapToAttributes(object);
67 try {
68 dirContext.modifyAttributes(
69 objectDn,
70 DirContext.REPLACE_ATTRIBUTE,
71 attributes);
72 } catch (NameNotFoundException exception) {
73 createSubContext(dirContext, object, objectDn, attributes);
74 }
75 } catch (NamingException e) {
76 // LDAPd hack:
77 // look for NameNotFound here and createSubContext() if necessary
78 if (e.getMessage().indexOf("javax.naming.NameNotFoundException")
79 > 0) {
80 createSubContext(dirContext, object, objectDn, attributes);
81 } else {
82 logger.fatalError(e.toString());
83 }
84 }
85 }
86
87 private void createSubContext(
88 DirContext dirContext,
89 Object object,
90 String objectDn,
91 Attributes attributes) {
92 try {
93 attributes.put(
94 "objectclass",
95 mappingManager.getObjectMapping(object).getLdapName());
96 dirContext.createSubcontext(objectDn, attributes);
97 } catch (ObjectMapNotFoundException e) {
98 logger.fatalError(e.toString());
99 } catch (NamingException e) {
100 logger.fatalError(e.toString());
101 }
102 }
103
104 public Object lookup(Object object) {
105 try {
106 return mappingManager.mapFromAttributes(
107 connectionManager.getContext().getAttributes(
108 mappingManager.getObjectDn(object)));
109 } catch (NamingException e) {
110 logger.fatalError(e.toString());
111 }
112
113 return object;
114 }
115
116 public void delete(Object object) {
117 try {
118 connectionManager.getContext().destroySubcontext(
119 mappingManager.getObjectDn(object));
120 } catch (InvalidNameException exception) {
121 logger.debug("(This doesn't matter since it's for a delete): " + exception.getMessage());
122 } catch (NamingException e) {
123 logger.fatalError(e.toString());
124 }
125 }
126
127 public Collection search(Object object) {
128 Collection searchResults = new ArrayList();
129 try {
130 NamingEnumeration resultEnumeration =
131 connectionManager.getContext().search(
132 getParentDn(mappingManager.getObjectDn(object)),
133 mappingManager.mapToAttributes(object));
134 while (resultEnumeration.hasMore()) {
135 SearchResult searchResult =
136 (SearchResult) resultEnumeration.next();
137 searchResults.add(
138 mappingManager.mapFromAttributes(
139 searchResult.getAttributes()));
140 }
141 } catch (NamingException namingException) {
142 logger.fatalError(
143 "Exception while searching for ." + object,
144 namingException);
145 }
146 return searchResults;
147 }
148
149 private String getParentDn(String dn) {
150 if (dn != null && dn.trim().length() > 0) {
151 int firstComma = dn.indexOf(',');
152 dn = dn.substring(firstComma + 1);
153 }
154
155 return dn;
156 }
157
158 public boolean isClosed() {
159 throw new UnsupportedOperationException("Implement me.");
160 }
161
162 public void close() {
163 throw new UnsupportedOperationException("Implement me.");
164 }
165
166 public Transaction currentTransaction() {
167 throw new UnsupportedOperationException("Implement me.");
168 }
169
170 public void evict(Object arg0) {
171 throw new UnsupportedOperationException("Implement me.");
172 }
173
174 public void evictAll(Object[] arg0) {
175 throw new UnsupportedOperationException("Implement me.");
176 }
177
178 public void evictAll(Collection arg0) {
179 throw new UnsupportedOperationException("Implement me.");
180 }
181
182 public void evictAll() {
183 throw new UnsupportedOperationException("Implement me.");
184 }
185
186 public void refresh(Object arg0) {
187 throw new UnsupportedOperationException("Implement me.");
188 }
189
190 public void refreshAll(Object[] arg0) {
191 throw new UnsupportedOperationException("Implement me.");
192 }
193
194 public void refreshAll(Collection arg0) {
195 throw new UnsupportedOperationException("Implement me.");
196 }
197
198 public void refreshAll() {
199 throw new UnsupportedOperationException("Implement me.");
200 }
201
202 public Query newQuery() {
203 throw new UnsupportedOperationException("Implement me.");
204 }
205
206 public Query newQuery(Object arg0) {
207 throw new UnsupportedOperationException("Implement me.");
208 }
209
210 public Query newQuery(String arg0, Object arg1) {
211 throw new UnsupportedOperationException("Implement me.");
212 }
213
214 public Query newQuery(Class arg0) {
215 throw new UnsupportedOperationException("Implement me.");
216 }
217
218 public Query newQuery(Extent arg0) {
219 throw new UnsupportedOperationException("Implement me.");
220 }
221
222 public Query newQuery(Class arg0, Collection arg1) {
223 throw new UnsupportedOperationException("Implement me.");
224 }
225
226 public Query newQuery(Class arg0, String arg1) {
227 throw new UnsupportedOperationException("Implement me.");
228 }
229
230 public Query newQuery(Class arg0, Collection arg1, String arg2) {
231 throw new UnsupportedOperationException("Implement me.");
232 }
233
234 public Query newQuery(Extent arg0, String arg1) {
235 throw new UnsupportedOperationException("Implement me.");
236 }
237
238 public Extent getExtent(Class arg0, boolean arg1) {
239 throw new UnsupportedOperationException("Implement me.");
240 }
241
242 public Object getObjectById(Object arg0, boolean arg1) {
243 throw new UnsupportedOperationException("Implement me.");
244 }
245
246 public Object getObjectId(Object arg0) {
247 throw new UnsupportedOperationException("Implement me.");
248 }
249
250 public Object getTransactionalObjectId(Object arg0) {
251 throw new UnsupportedOperationException("Implement me.");
252 }
253
254 public Object newObjectIdInstance(Class arg0, String arg1) {
255 throw new UnsupportedOperationException("Implement me.");
256 }
257
258 public void makePersistent(Object object) {
259 store(object);
260 }
261
262 public void makePersistentAll(Object[] objects) {
263 for (int index = 0; index < objects.length; index++) {
264 makePersistent(objects[index]);
265 }
266 }
267
268 public void makePersistentAll(Collection objects) {
269 for (Iterator iterator = objects.iterator(); iterator.hasNext();) {
270 makePersistent(iterator.next());
271 }
272 }
273
274 public void deletePersistent(Object object) {
275 delete(object);
276 }
277
278 public void deletePersistentAll(Object[] objects) {
279 for (int index = 0; index < objects.length; index++) {
280 deletePersistent(objects[index]);
281 }
282 }
283
284 public void deletePersistentAll(Collection objects) {
285 for (Iterator iterator = objects.iterator(); iterator.hasNext();) {
286 deletePersistent(iterator.next());
287 }
288 }
289
290 public void makeTransient(Object arg0) {
291 throw new UnsupportedOperationException("Implement me.");
292 }
293
294 public void makeTransientAll(Object[] arg0) {
295 throw new UnsupportedOperationException("Implement me.");
296 }
297
298 public void makeTransientAll(Collection arg0) {
299 throw new UnsupportedOperationException("Implement me.");
300 }
301
302 public void makeTransactional(Object arg0) {
303 throw new UnsupportedOperationException("Implement me.");
304 }
305
306 public void makeTransactionalAll(Object[] arg0) {
307 throw new UnsupportedOperationException("Implement me.");
308 }
309
310 public void makeTransactionalAll(Collection arg0) {
311 throw new UnsupportedOperationException("Implement me.");
312 }
313
314 public void makeNontransactional(Object arg0) {
315 throw new UnsupportedOperationException("Implement me.");
316 }
317
318 public void makeNontransactionalAll(Object[] arg0) {
319 throw new UnsupportedOperationException("Implement me.");
320 }
321
322 public void makeNontransactionalAll(Collection arg0) {
323 throw new UnsupportedOperationException("Implement me.");
324 }
325
326 public void retrieve(Object arg0) {
327 throw new UnsupportedOperationException("Implement me.");
328 }
329
330 public void retrieveAll(Collection arg0) {
331 throw new UnsupportedOperationException("Implement me.");
332 }
333
334 public void retrieveAll(Object[] arg0) {
335 throw new UnsupportedOperationException("Implement me.");
336 }
337
338 public void setUserObject(Object arg0) {
339 throw new UnsupportedOperationException("Implement me.");
340 }
341
342 public Object getUserObject() {
343 throw new UnsupportedOperationException("Implement me.");
344 }
345
346 public PersistenceManagerFactory getPersistenceManagerFactory() {
347 throw new UnsupportedOperationException("Implement me.");
348 }
349
350 public Class getObjectIdClass(Class arg0) {
351 throw new UnsupportedOperationException("Implement me.");
352 }
353
354 public void setMultithreaded(boolean arg0) {
355 throw new UnsupportedOperationException("Implement me.");
356 }
357
358 public boolean getMultithreaded() {
359 throw new UnsupportedOperationException("Implement me.");
360 }
361
362 public void setIgnoreCache(boolean arg0) {
363 throw new UnsupportedOperationException("Implement me.");
364 }
365
366 public boolean getIgnoreCache() {
367 throw new UnsupportedOperationException("Implement me.");
368 }
369 }
This page was automatically generated by Maven