/*******************************************************************************
 * Copyright (c) 2005 IBM Corporation and others.
 * 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
/*
 *  $RCSfile: IProxyBeanType.java,v $
 *  $Revision: 1.1 $  $Date: 2005/05/11 19:01:12 $ 
 */
package org.eclipse.jem.internal.proxy.core;
 

/**
 * This interface is for IBeanTypeProxy's and BeanTypeExpressionProxy's so that we can lazily
 * get the beantype proxy and have the expression process it when needed.
 * 
 * @since 1.1.0
 */
public interface IProxyBeanType extends IProxy {

	/**
	 * Answer the name of the type we are proxying This is the fully qualified name. For arrays it will return the format: [Lclassname; 
	 * @return
	 * 
	 * @since 1.1.0
	 */
	public String getTypeName();
	
	/**
	 * Get the IProxyMethod for the method from this beantype. It may be either a resolved method proxy (if already resolved) or
	 * it may be an ExpressionProxy if not yet resolved.
	 * 
	 * @param expression
	 * @param methodName
	 * @param parameterTypes array of parameter types or <code>null</code> if no parameters.
	 * @return
	 * 
	 * @since 1.1.0
	 */
	public IProxyMethod getMethodProxy(IExpression expression, String methodName, IProxyBeanType[] parameterTypes);
	
	/**
	 * Get the IProxyMethod for the method from this beantype. It may be either a resolved method proxy (if already resolved) or
	 * it may be an ExpressionProxy if not yet resolved.
	 * 
	 * @param expression
	 * @param methodName
	 * @param parameterTypes array of parameter types or <code>null</code> if no parameters.
	 * @return
	 * 
	 * @since 1.1.0
	 */
	public IProxyMethod getMethodProxy(IExpression expression, String methodName, String[] parameterTypes);
	
	/**
	 * Get the IProxyyField for the field from this beantype. It may be either a resolved field proxy (if already resolved) or
	 * it may be an ExpressionProxy if not yet resolved.
	 * 
	 * @param expression
	 * @param fieldName
	 * @return
	 * 
	 * @since 1.1.0
	 */
	public IProxyField getFieldProxy(IExpression expression, String fieldName);
}
