/*
* Mibble MIB Parser (www.mibble.org)
*
* See LICENSE.txt for licensing information.
*
* Copyright (c) 2004-2017 Per Cederberg. All rights reserved.
*/
package net.percederberg.mibble;
/**
* A compound MIB context. This class attempts to resolve all symbols
* with either one of two MIB contexts, one of which will have
* priority.
*
* @author Per Cederberg
* @version 2.4
* @since 2.0
*/
class CompoundContext implements MibContext {
/**
* The first MIB context.
*/
private MibContext first;
/**
* The second MIB context.
*/
private MibContext second;
/**
* Creates a new compound MIB context.
*
* @param first the primary MIB context
* @param second the secondary MIB context
*/
public CompoundContext(MibContext first, MibContext second) {
this.first = first;
this.second = second;
}
/**
* Searches for a named MIB symbol. This method may search outside
* the normal (or strict) scope, thereby allowing a form of
* relaxed search. Note that the results from the normal and
* expanded search may not be identical, due to the context
* chaining and the same symbol name appearing in various
* contexts.<p>
*
* <strong>NOTE:</strong> This is an internal method that should
* only be called by the MIB loader.
*
* @param name the symbol name
* @param expanded the expanded scope flag
*
* @return the MIB symbol, or null if not found
*
* @since 2.4
*/
public MibSymbol findSymbol(String name, boolean expanded) {
MibSymbol symbol;
symbol = first.findSymbol(name, expanded);
if (symbol == null) {
symbol = second.findSymbol(name, expanded);
}
return symbol;
}
/**
* Returns a string representation of this object.
*
* @return a string representation of this object
*/
public String toString() {
return first.toString() + ", " + second.toString();
}
}