01: /*
02: * <copyright>
03: *
04: * Copyright 1997-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:
30: /** A Binder is an implementation of a BindingSite: that is
31: * an implementation of the Service-like relationship API
32: * between a child component and its parent. A Binder
33: * is the only view of the Parent that a child component
34: * will start with - any other services, methods, etc required
35: * must be requested via the child's binder.
36: * <p>
37: * Most Binder implementations will know
38: * both the plugin (client) that they are "Binding" and the
39: * ServiceProvider for which they are implementing the BindingSite.
40: * <p>
41: * Binders must implement whatever Binder control interface required by the
42: * associated Container and implement or delegate a refinement of BindingSite
43: * to be called by the bound component.
44: **/
45:
46: public interface Binder extends GenericStateModel, StateObject // BindingSite
47: {
48: /** Get the ComponentDescription of the bound component.
49: * The returned value may be null if the component was
50: * loaded as an instance rather than from a ComponentDescription
51: * or if an intervening Binder declines to pass this information
52: * up to parents.
53: */
54: ComponentDescription getComponentDescription();
55:
56: }
|