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.metrics;
28:
29: import org.cougaar.core.component.ServiceBroker;
30: import org.cougaar.core.component.ServiceProvider;
31: import org.cougaar.core.node.NodeControlService;
32:
33: /**
34: * This Component provides trivial implementation of the
35: * MetricsService, MetricsUpdateService and
36: * DataFeedRegistrationService. Use this for a minimal COUGAAR in
37: * which a real MetricsService is not required.
38: */
39: public final class MetricsServiceProvider extends QosComponent
40: implements ServiceProvider {
41:
42: private MetricsService retriever;
43: private MetricsUpdateService updater;
44: private DataFeedRegistrationService registrar;
45:
46: public void load() {
47: super .load();
48: updater = new NullMetricsUpdateServiceImpl();
49: retriever = new NullMetricsServiceImpl();
50: // MetricService Implementation also implements Registration service
51: registrar = (DataFeedRegistrationService) retriever;
52:
53: ServiceBroker sb = getServiceBroker();
54: NodeControlService ncs = (NodeControlService) sb.getService(
55: this , NodeControlService.class, null);
56: ServiceBroker rootsb = ncs.getRootServiceBroker();
57:
58: rootsb.addService(MetricsUpdateService.class, this );
59: rootsb.addService(MetricsService.class, this );
60: sb.addService(DataFeedRegistrationService.class, this );
61: }
62:
63: // This is done before child-components are created
64:
65: public Object getService(ServiceBroker sb, Object requestor,
66: Class serviceClass) {
67: if (serviceClass == MetricsService.class) {
68: return retriever;
69: } else if (serviceClass == MetricsUpdateService.class) {
70: return updater;
71: } else if (serviceClass == DataFeedRegistrationService.class) {
72: return registrar;
73: } else {
74: return null;
75: }
76: }
77:
78: public void releaseService(ServiceBroker sb, Object requestor,
79: Class serviceClass, Object service) {
80: }
81:
82: }
|