blob: d7e055a159bf4f1f499b3dad928cad8c5224878e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Oracle Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cameron Bateman/Oracle - initial API and implementation
*
********************************************************************************/
package org.eclipse.jst.jsf.designtime.internal.provisional.resolver;
import org.eclipse.jst.jsf.context.resolver.internal.provisional.IDocumentContextResolver;
import org.eclipse.jst.jsf.context.symbol.internal.provisional.IMethodSymbol;
import org.eclipse.jst.jsf.context.symbol.internal.provisional.IObjectSymbol;
import org.eclipse.jst.jsf.context.symbol.internal.provisional.ISymbol;
/**
* Resolves symbols and possible symbols in a given context
*
* May be sub-classed or implemented by clients
*
* @author cbateman
*
*/
public interface ISymbolContextResolver extends IDocumentContextResolver
{
/**
* Gets the most appropriate symbol in the current context
* based on name. Most "appropriate" may take into account
* scoping and other rules.
*
* @param name
* @return a symbol
*/
ISymbol getVariable(String name);
/**
* @return all valid symbols in the current context
*/
ISymbol[] getAllVariables();
/**
* @param symbol
* @param propertyName
* @return the property symbol called propertyName or null if not found
*/
ISymbol getProperty(ISymbol symbol, Object propertyName);
/**
* @param symbol
* @return all properties of symbol
*/
ISymbol[] getProperties(ISymbol symbol);
/**
* @param base
* @param methodName
* @return the method of base matching methodName or null if not found
*/
IMethodSymbol getMethod(IObjectSymbol base, Object methodName);
/**
* @param base
* @return all methods belonging to base
*/
ISymbol[] getMethods(IObjectSymbol base);
}