112 |
* The registered named loggers; maps the name of a Logger to |
* The registered named loggers; maps the name of a Logger to |
113 |
* a WeakReference to it. |
* a WeakReference to it. |
114 |
*/ |
*/ |
115 |
private Map loggers; |
private Map<String, WeakReference<Logger>> loggers; |
116 |
final Logger rootLogger; |
final Logger rootLogger; |
117 |
|
|
118 |
/** |
/** |
142 |
throw new IllegalStateException("there can be only one LogManager; use LogManager.getLogManager()"); |
throw new IllegalStateException("there can be only one LogManager; use LogManager.getLogManager()"); |
143 |
|
|
144 |
logManager = this; |
logManager = this; |
145 |
loggers = new java.util.HashMap(); |
loggers = new java.util.HashMap<String, WeakReference<Logger>>(); |
146 |
rootLogger = new Logger("", null); |
rootLogger = new Logger("", null); |
147 |
rootLogger.setLevel(Level.INFO); |
rootLogger.setLevel(Level.INFO); |
148 |
addLogger(rootLogger); |
addLogger(rootLogger); |
274 |
*/ |
*/ |
275 |
name = logger.getName(); |
name = logger.getName(); |
276 |
|
|
277 |
ref = (WeakReference) loggers.get(name); |
ref = loggers.get(name); |
278 |
if (ref != null) |
if (ref != null) |
279 |
{ |
{ |
280 |
if (ref.get() != null) |
if (ref.get() != null) |
291 |
checkAccess(); |
checkAccess(); |
292 |
|
|
293 |
Logger parent = findAncestor(logger); |
Logger parent = findAncestor(logger); |
294 |
loggers.put(name, new WeakReference(logger)); |
loggers.put(name, new WeakReference<Logger>(logger)); |
295 |
if (parent != logger.getParent()) |
if (parent != logger.getParent()) |
296 |
logger.setParent(parent); |
logger.setParent(parent); |
297 |
|
|
303 |
*/ |
*/ |
304 |
if (parent != rootLogger) |
if (parent != rootLogger) |
305 |
{ |
{ |
306 |
for (Iterator iter = loggers.keySet().iterator(); iter.hasNext();) |
for (Iterator<String> iter = loggers.keySet().iterator(); |
307 |
|
iter.hasNext(); ) |
308 |
{ |
{ |
309 |
Logger possChild = (Logger) ((WeakReference) loggers.get(iter.next())) |
Logger possChild = loggers.get(iter.next()).get(); |
|
.get(); |
|
310 |
if ((possChild == null) || (possChild == logger) |
if ((possChild == null) || (possChild == logger) |
311 |
|| (possChild.getParent() != parent)) |
|| (possChild.getParent() != parent)) |
312 |
continue; |
continue; |
354 |
if (child == rootLogger) |
if (child == rootLogger) |
355 |
return null; |
return null; |
356 |
|
|
357 |
for (Iterator iter = loggers.keySet().iterator(); iter.hasNext();) |
for (Iterator<String> iter = loggers.keySet().iterator(); iter.hasNext();) |
358 |
{ |
{ |
359 |
candName = (String) iter.next(); |
candName = iter.next(); |
360 |
candNameLength = candName.length(); |
candNameLength = candName.length(); |
361 |
|
|
362 |
if (candNameLength > bestNameLength |
if (candNameLength > bestNameLength |
364 |
&& childName.startsWith(candName) |
&& childName.startsWith(candName) |
365 |
&& childName.charAt(candNameLength) == '.') |
&& childName.charAt(candNameLength) == '.') |
366 |
{ |
{ |
367 |
cand = (Logger) ((WeakReference) loggers.get(candName)).get(); |
cand = loggers.get(candName).get(); |
368 |
if ((cand == null) || (cand == child)) |
if ((cand == null) || (cand == child)) |
369 |
continue; |
continue; |
370 |
|
|
389 |
*/ |
*/ |
390 |
public synchronized Logger getLogger(String name) |
public synchronized Logger getLogger(String name) |
391 |
{ |
{ |
392 |
WeakReference ref; |
WeakReference<Logger> ref; |
393 |
|
|
394 |
/* Throw a NullPointerException if name is null. */ |
/* Throw a NullPointerException if name is null. */ |
395 |
name.getClass(); |
name.getClass(); |
396 |
|
|
397 |
ref = (WeakReference) loggers.get(name); |
ref = loggers.get(name); |
398 |
if (ref != null) |
if (ref != null) |
399 |
return (Logger) ref.get(); |
return ref.get(); |
400 |
else |
else |
401 |
return null; |
return null; |
402 |
} |
} |
409 |
* @return an Enumeration with the names of the currently |
* @return an Enumeration with the names of the currently |
410 |
* registered Loggers. |
* registered Loggers. |
411 |
*/ |
*/ |
412 |
public synchronized Enumeration getLoggerNames() |
public synchronized Enumeration<String> getLoggerNames() |
413 |
{ |
{ |
414 |
return Collections.enumeration(loggers.keySet()); |
return Collections.enumeration(loggers.keySet()); |
415 |
} |
} |
432 |
|
|
433 |
properties = new Properties(); |
properties = new Properties(); |
434 |
|
|
435 |
Iterator iter = loggers.values().iterator(); |
Iterator<WeakReference<Logger>> iter = loggers.values().iterator(); |
436 |
while (iter.hasNext()) |
while (iter.hasNext()) |
437 |
{ |
{ |
438 |
WeakReference ref; |
WeakReference<Logger> ref; |
439 |
Logger logger; |
Logger logger; |
440 |
|
|
441 |
ref = (WeakReference) iter.next(); |
ref = iter.next(); |
442 |
if (ref != null) |
if (ref != null) |
443 |
{ |
{ |
444 |
logger = (Logger) ref.get(); |
logger = ref.get(); |
445 |
|
|
446 |
if (logger == null) |
if (logger == null) |
447 |
iter.remove(); |
iter.remove(); |