package org.jboss.seam.remoting.wrapper;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Type;
/**
* @author Shane Bryzak
*/
public class BooleanWrapper extends BaseWrapper implements Wrapper
{
private static final byte[] BOOL_TAG_OPEN = "<bool>".getBytes();
private static final byte[] BOOL_TAG_CLOSE = "</bool>".getBytes();
public void marshal(OutputStream out) throws IOException
{
out.write(BOOL_TAG_OPEN);
out.write(((Boolean) value).toString().getBytes());
out.write(BOOL_TAG_CLOSE);
}
public Object convert(Type type)
throws ConversionException
{
if (type.equals(Boolean.class) || type.equals(Object.class))
value = Boolean.valueOf(element.getStringValue());
else if (type.equals(Boolean.TYPE))
value = Boolean.parseBoolean(element.getStringValue());
else
throw new ConversionException(String.format(
"Parameter [%s] cannot be converted to type [%s].",
element.getStringValue(), type));
return value;
}
public ConversionScore conversionScore(Class cls)
{
if (cls.equals(Boolean.class) || cls.equals(Boolean.TYPE))
return ConversionScore.exact;
else if (cls.equals(Object.class))
return ConversionScore.compatible;
else
return ConversionScore.nomatch;
}
}