/*******************************************************************************
 * 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.el;

import org.eclipse.jst.jsf.context.symbol.ISymbol;

/**
 * Super-class of all design time property resolvers
 * 
 * @author cbateman
 *
 */
public abstract class AbstractDTPropertyResolver 
{
    /**
     * Returns a symbol encapsulating the property on base with the name
     * properyId.  Note that getProperty may return *more* property symbols
     * for the same 'base' because some ISymbol's have unconstrained type
     * descriptors.  For example, a bean that implements java.util.Map,
     * may have any number of possible properties added at runtime that cannot
     * be determined at design time.  It is up to implementers of this interface
     * to decide how (whether) to return these objects at design time 
     * 
     * @param base
     * @param propertyId
     * @return the symbol for the named propertyId or null if not found
     */
    public abstract ISymbol getProperty(ISymbol base, Object propertyId);
    
    /**
     * @param base
     * @param offset
     * @return the symbol for the property referred to by the offset 
     * into base when it is treated as either an array or a list.
     * The symbol returned is *not* found in the getAllProperties list.
     */
    public abstract ISymbol getProperty(ISymbol base, int offset);
    
    /**
     * @param base
     * @return all properties of base that can be determined concretely
     * at designtime.  Note that getProperty(base, x) may return non-null
     * for objects not found in the return from this method. @see getProperty
     */
    public abstract ISymbol[] getAllProperties(ISymbol base);
}
