< prev index next >

src/java.logging/share/classes/java/util/logging/Logger.java

Print this page

2343         if (parent == null) {
2344             throw new NullPointerException();
2345         }
2346 
2347         ensureManagerInitialized();
2348 
2349         doSetParent(parent);
2350     }
2351 
2352     // Private method to do the work for parenting a child
2353     // Logger onto a parent logger.
2354     private void doSetParent(Logger newParent) {
2355 
2356         // System.err.println("doSetParent \"" + getName() + "\" \""
2357         //                              + newParent.getName() + "\"");
2358 
2359         synchronized (treeLock) {
2360 
2361             // Remove ourself from any previous parent.
2362             LogManager.LoggerWeakRef ref = null;

2363             if (parent != null) {
2364                 // assert parent.kids != null;
2365                 for (Iterator<LogManager.LoggerWeakRef> iter = parent.kids.iterator(); iter.hasNext(); ) {
2366                     ref = iter.next();
2367                     if (ref.refersTo(this)) {
2368                         // ref is used down below to complete the reparenting
2369                         iter.remove();
2370                         break;
2371                     } else {
2372                         ref = null;
2373                     }
2374                 }
2375                 // We have now removed ourself from our parents' kids.
2376             }
2377 
2378             // Set our new parent.
2379             parent = newParent;
2380             if (parent.kids == null) {
2381                 parent.kids = new ArrayList<>(2);
2382             }
2383             if (ref == null) {
2384                 // we didn't have a previous parent
2385                 ref = manager.new LoggerWeakRef(this);
2386             }
2387             ref.setParentRef(new WeakReference<>(parent));
2388             parent.kids.add(ref);
2389 
2390             // As a result of the reparenting, the effective level
2391             // may have changed for us and our children.
2392             updateEffectiveLevel();
2393 
2394         }
2395     }
2396 
2397     // Package-level method.
2398     // Remove the weak reference for the specified child Logger from the
2399     // kid list. We should only be called from LoggerWeakRef.dispose().

2343         if (parent == null) {
2344             throw new NullPointerException();
2345         }
2346 
2347         ensureManagerInitialized();
2348 
2349         doSetParent(parent);
2350     }
2351 
2352     // Private method to do the work for parenting a child
2353     // Logger onto a parent logger.
2354     private void doSetParent(Logger newParent) {
2355 
2356         // System.err.println("doSetParent \"" + getName() + "\" \""
2357         //                              + newParent.getName() + "\"");
2358 
2359         synchronized (treeLock) {
2360 
2361             // Remove ourself from any previous parent.
2362             LogManager.LoggerWeakRef ref = null;
2363             Logger parent = this.parent;
2364             if (parent != null) {
2365                 // assert parent.kids != null;
2366                 for (Iterator<LogManager.LoggerWeakRef> iter = parent.kids.iterator(); iter.hasNext(); ) {
2367                     ref = iter.next();
2368                     if (ref.refersTo(this)) {
2369                         // ref is used down below to complete the reparenting
2370                         iter.remove();
2371                         break;
2372                     } else {
2373                         ref = null;
2374                     }
2375                 }
2376                 // We have now removed ourself from our parents' kids.
2377             }
2378 
2379             // Set our new parent.
2380             this.parent = parent = newParent;
2381             if (parent.kids == null) {
2382                 parent.kids = new ArrayList<>(2);
2383             }
2384             if (ref == null) {
2385                 // we didn't have a previous parent
2386                 ref = manager.new LoggerWeakRef(this);
2387             }
2388             ref.setParentRef(new WeakReference<>(parent));
2389             parent.kids.add(ref);
2390 
2391             // As a result of the reparenting, the effective level
2392             // may have changed for us and our children.
2393             updateEffectiveLevel();
2394 
2395         }
2396     }
2397 
2398     // Package-level method.
2399     // Remove the weak reference for the specified child Logger from the
2400     // kid list. We should only be called from LoggerWeakRef.dispose().
< prev index next >