01: /*
02: * <copyright>
03: *
04: * Copyright 2000-2004 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26: package org.cougaar.core.component;
27:
28: import org.cougaar.util.GenericStateModel;
29: import java.beans.beancontext.*; /*make @see reference work*/
30:
31: /** A Component is the base class of the Component and
32: * Service Model. Components form a strict hierarchy
33: * via Container/Contained relationships and may have
34: * any number of additional (possibly mediated) client/server
35: * relationships.
36: * <p>
37: * A component must implement the childAPI required by it's container.
38: * <p>
39: * Construction of a component consists of the following steps:
40: * 1. zero-argument constructor is called.
41: * 2. if a ComponentDescription is being used to create the
42: * component, and it specifies a non-null parameter, the optional
43: * setParameter(Object) method is called with the parameter as the
44: * argument. A ComponentFactoryException will be thrown if the
45: * parameter is non-null, but no setParameter(Object) method is
46: * defined.
47: * 3. The binder (if capable) will use introspection to
48: * find setX(X) methods where X is a known service in the Context.
49: * Any such methods will be called with matching service instances
50: * or null if no such service was available. If the service
51: * is later revoked, the set methods will be called with null.
52: * Note that such methods should be very simple and only set
53: * data members: in particular, they should not invoke the service
54: * because it is undefined which thread of execution it will
55: * be invoked in and may not actually have permission to use
56: * the service instance passed.
57: * 4. the binder will call the initialize(BindingSite x) method
58: * where x is the binder chosen for this component.
59: * <p>
60: * Component is similar to BeanContextChild.
61: * @see BeanContextChild
62: **/
63: public interface Component extends GenericStateModel {
64: }
|