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.mts.std;
28:
29: import org.cougaar.core.component.Component;
30: import org.cougaar.core.component.ServiceAvailableEvent;
31: import org.cougaar.core.component.ServiceAvailableListener;
32: import org.cougaar.core.component.ServiceBroker;
33: import org.cougaar.core.service.BlackboardService;
34: import org.cougaar.util.GenericStateModelAdapter;
35:
36: /**
37: * This Component loads the {@link DestinationQueueMonitorServlet}.
38: */
39: public class DestinationQueueMonitorPlugin extends
40: GenericStateModelAdapter implements Component {
41: private ServiceBroker sb;
42:
43: public void setServiceBroker(ServiceBroker sb) {
44: this .sb = sb;
45: }
46:
47: public void load() {
48: super .load();
49:
50: // we want the servlet service, but it's loaded after the MTS.
51: // Also, we want the agent's proxy to the node-level
52: // ServletService. The blackboard is loaded late enough, so we
53: // wait 'til then...
54: if (sb.hasService(BlackboardService.class)) {
55: registerServlet();
56: } else {
57: ServiceAvailableListener sal = new ServiceAvailableListener() {
58: public void serviceAvailable(ServiceAvailableEvent ae) {
59: Class cl = ae.getService();
60: if (BlackboardService.class.isAssignableFrom(cl)) {
61: registerServlet();
62: }
63: }
64: };
65: sb.addServiceListener(sal);
66: }
67: }
68:
69: private void registerServlet() {
70: new DestinationQueueMonitorServlet(sb);
71: }
72: }
|