01: /*
02:
03: * <copyright>
04: *
05: * Copyright 2002-2007 BBNT Solutions, LLC
06: * under sponsorship of the Defense Advanced Research Projects
07: * Agency (DARPA).
08: *
09: * You can redistribute this software and/or modify it under the
10: * terms of the Cougaar Open Source License as published on the
11: * Cougaar Open Source Website (www.cougaar.org).
12: *
13: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24: *
25: * </copyright>
26:
27: */
28:
29: package org.cougaar.qos.qrs;
30:
31: /**
32: * A context that deflects symbol lookups to some other context before it walks
33: * up the tree. The deflector is set via setDeflector.
34: */
35: abstract public class DeflectingContext extends ResourceContext {
36: private ResourceContext deflector;
37:
38: protected DeflectingContext(String[] parameters,
39: ResourceContext parent) throws ParameterError {
40: super (parameters, parent);
41: }
42:
43: protected void setDeflector(ResourceContext deflector) {
44: this .deflector = deflector;
45: }
46:
47: protected Object nextLookup(String symbol, String[] args,
48: boolean resolve) {
49: if (deflector != null) {
50: Object value = deflector
51: .lookupSymbol(symbol, args, resolve);
52: if (value != null) {
53: return value;
54: }
55: }
56:
57: // If we get here the deflector hasn't handled it
58: return super.nextLookup(symbol, args, resolve);
59: }
60:
61: }
|