package org.jboss.seam.example.restbay.resteasy.provider;
import org.jboss.seam.ScopeType;
import org.jboss.seam.example.restbay.resteasy.TestComponent;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.In;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
/**
* @author Christian Bauer
*/
@Name("interfaceApplicationComponentTestProvider")
@Scope(ScopeType.APPLICATION)
public class InterfaceApplicationComponenTestProviderBean implements InterfaceApplicationComponentTestProvider
{
@In
TestComponent testComponent;
public boolean isWriteable(Class aClass, Type type, Annotation[] annotations, MediaType mediaType)
{
return aClass.isArray() && (aClass.getComponentType().equals(Integer.class)) ;
}
public long getSize(Object o, Class aClass, Type type, Annotation[] annotations, MediaType mediaType)
{
return -1;
}
public void writeTo(Object o, Class aClass, Type type, Annotation[] annotations, MediaType mediaType,
MultivaluedMap httpHeaders, OutputStream outputStream) throws IOException, WebApplicationException
{
Integer[] integers = (Integer[])o;
StringBuilder line = new StringBuilder();
line.append(testComponent.getTestString()).append(",");
for (Integer integer : integers)
{
line.append(integer).append(",");
}
if (line.length()>0) {
line.deleteCharAt(line.length() - 1);
}
outputStream.write(line.toString().getBytes());
}
}