package org.jboss.seam.remoting.wrapper;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Type;
import org.dom4j.Element;
import org.jboss.seam.remoting.CallContext;
/**
* Acts as a wrapper around parameter values passed within an AJAX call.
*
* @author Shane Bryzak
*/
public interface Wrapper
{
/**
* Sets the path of the wrapped object within the resulting object graph
*
* @param path String
*/
public void setPath(String path);
public void setCallContext(CallContext context);
/**
* Extracts a value from a DOM4J Element
*
* @param element Element
*/
public void setElement(Element element);
/**
*
* @param value Object
*/
public void setValue(Object value);
/**
*
* @return Object
*/
public Object getValue();
/**
*
*/
public void unmarshal();
/**
* Convert the wrapped parameter value to the specified target class.
*
*/
public Object convert(Type type) throws ConversionException;
public void marshal(OutputStream out) throws IOException;
public void serialize(OutputStream out) throws IOException;
/**
* Returns a score indicating whether this parameter value can be converted
* to the specified type. This helper method is used to determine which
* (possibly overloaded) method of a component can/should be called.
*
* 0 - Cannot be converted
* 1 - Can be converted to this type
* 2 - Param is this exact type
*
*/
public ConversionScore conversionScore(Class cls);
}