1 /** 2 * 3 * Copyright 2003-2004 The Apache Software Foundation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.geronimo.kernel; 19 20 import org.apache.geronimo.gbean.AbstractName; 21 22 import java.util.Set; 23 24 /** 25 * DependencyManager is the record keeper of the dependencies in Geronimo. The DependencyManager 26 * does not enforce any dependencies, it is simply a place where components can register their intent 27 * to be dependent on another component. 28 * <p/> 29 * The DependencyManager uses the nomenclature of parent-child where a child is dependent on a parent. 30 * The names parent and child have no other meaning are just a convience to make the code readable. 31 * 32 * @version $Rev: 384141 $ $Date: 2006-03-07 23:30:08 -0800 (Tue, 07 Mar 2006) $ 33 */ 34 public interface DependencyManager { 35 /** 36 * Closes the dependency manager releasing all resources 37 */ 38 public void close(); 39 40 /** 41 * Declares a dependency from a child to a parent. 42 * 43 * @param child the dependent component 44 * @param parent the component the child is depending on 45 */ 46 public void addDependency(AbstractName child, AbstractName parent); 47 48 /** 49 * Removes a dependency from a child to a parent 50 * 51 * @param child the dependnet component 52 * @param parent the component that the child wil no longer depend on 53 */ 54 public void removeDependency(AbstractName child, AbstractName parent); 55 56 /** 57 * Removes all dependencies for a child 58 * 59 * @param child the component that will no longer depend on anything 60 */ 61 public void removeAllDependencies(AbstractName child); 62 63 /** 64 * Adds dependencies from the child to every parent in the parents set 65 * 66 * @param child the dependent component 67 * @param parents the set of components the child is depending on 68 */ 69 public void addDependencies(AbstractName child, Set parents); 70 71 /** 72 * Gets the set of parents that the child is depending on 73 * 74 * @param child the dependent component 75 * @return a collection containing all of the components the child depends on; will never be null 76 */ 77 public Set getParents(AbstractName child); 78 79 /** 80 * Gets all of the MBeans that have a dependency on the specified startParent. 81 * 82 * @param parent the component the returned childen set depend on 83 * @return a collection containing all of the components that depend on the parent; will never be null 84 */ 85 public Set getChildren(AbstractName parent); 86 87 }