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:
27: package org.cougaar.core.qos.ca;
28:
29: /**
30: * See the package javadoc for more details on
31: * CoordinationArtifactProviders. They provide a family of {@link
32: * CoordinationArtifact}s, all of which have the same set of roles and
33: * parameters.
34: */
35: public interface CoordinationArtifactProvider {
36: /**
37: * Returns the kind of Artifacts the Provider can make.
38: */
39: public String getArtifactKind();
40:
41: /**
42: * Returns true iff the Provider can handle the given spec. The
43: * default implementation in {@link
44: * CoordinationArtifactProviderPlugin} returns true iff the spec's
45: * ca_kind equals the Provider's artifact kind.
46: */
47: public boolean supports(ConnectionSpec spec);
48:
49: /**
50: * This method is used by the {@link CoordinationArtifactBroker}
51: * to request the Provider to provide a {@link Facet} for the
52: * given {@link RolePlayer}. The job of the provider is to find
53: * or make an appropriate {@link CoordinationArtifact}, given the
54: * spec. The artifact itself will do the actual linkage between
55: * the Facet and the RolePlayer.
56: *
57: */
58: public void provideFacet(ConnectionSpec spec, RolePlayer player);
59:
60: }
|