/* JFox, the OpenSource J2EE Application Server
 *
 * Distributable under GNU LGPL license by gun.org
 * more details please visit http://www.huihoo.org/jfox
 */
package org.jfox.framework;

/**
 * use to inject a comopnent, Constructor or Properties
 *
 * @author <a href="mailto:young_yy@hotmail.com">Young Yang</a>
 */

public interface Parameter {

    /**
     * the parameter's class type
     *
     * @return
     */
    Class getType();

    /**
     * get the literal value
     * ComponentRefParameter is the ref name String
     * ComponentInstanceParameter is the String value
     *
     * @return
     */
    String getLiteralValue();

    /**
     * result the Object value
     * for ComponentRefParameter, return the ComponentInstance
     * for ComponentInstanceParameter, is the actual Object value
     *
     * @return
     */
    Object resolveValue(Registry registry) throws ComponentException;

}