private void setLevel(final Level level, final boolean singleContext) { synchronized (childrenLock) { this.levelObj = level; updateLevelNum(singleContext); } }
private void setParent(final TruffleLogger newParent, final boolean singleContext) { Objects.requireNonNull(newParent, "Parent must be non null."); synchronized (childrenLock) { ChildLoggerRef found = null; if (parent != null) { for (Iterator<ChildLoggerRef> it = parent.children.iterator(); it.hasNext();) { final ChildLoggerRef childRef = it.next(); final TruffleLogger childLogger = childRef.get(); if (childLogger == this) { found = childRef; it.remove(); break; } } } this.parent = newParent; if (found == null) { found = new ChildLoggerRef(this); } found.setParent(parent); if (parent.children == null) { parent.children = new ArrayList<>(2); } parent.children.add(found); updateLevelNum(singleContext); } }
private void updateLevelNum(boolean singleContext) { int value; if (levelObj != null) { value = levelObj.intValue(); if (parent != null && !singleContext) { value = Math.min(value, parent.getLevelNum()); } } else if (parent != null) { value = parent.getLevelNum(); } else { value = DEFAULT_VALUE; } setLevelNum(value); if (children != null) { for (ChildLoggerRef ref : children) { final TruffleLogger logger = ref.get(); if (logger != null) { logger.updateLevelNum(singleContext); } } } }