001/** 002 * Logback: the reliable, generic, fast and flexible logging framework. 003 * Copyright (C) 1999-2015, QOS.ch. All rights reserved. 004 * 005 * This program and the accompanying materials are dual-licensed under 006 * either the terms of the Eclipse Public License v1.0 as published by 007 * the Eclipse Foundation 008 * 009 * or (per the licensee's choosing) 010 * 011 * under the terms of the GNU Lesser General Public License version 2.1 012 * as published by the Free Software Foundation. 013 */ 014package ch.qos.logback.core; 015 016import java.util.HashSet; 017import java.util.Set; 018 019import ch.qos.logback.core.spi.LifeCycle; 020 021/** 022 * An object that manages a collection of components that implement the 023 * {@link LifeCycle} interface. Each component that is added to the manager will 024 * be stopped and removed from the manager when the manager is reset. 025 * 026 * @author Carl Harris 027 */ 028public class LifeCycleManager { 029 030 private final Set<LifeCycle> components = new HashSet<LifeCycle>(); 031 032 /** 033 * Registers a component with this manager. 034 * <p> 035 * 036 * @param component the component whose life cycle is to be managed 037 */ 038 public void register(LifeCycle component) { 039 components.add(component); 040 } 041 042 /** 043 * Resets this manager. 044 * <p> 045 * All registered components are stopped and removed from the manager. 046 */ 047 public void reset() { 048 for (LifeCycle component : components) { 049 if (component.isStarted()) { 050 component.stop(); 051 } 052 } 053 components.clear(); 054 } 055 056}