package org.richfaces.demo.mediaOutput;
import java.io.BufferedInputStream;
import java.io.OutputStream;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
@ManagedBean(name = "mediaBean")
@RequestScoped
public class MediaBean {
private static final int BUFFER_SIZE = 8192;
private static final String RICHFACES_MEDIA_OUTPUT_IMAGE_SOURCE = "/resources/org.richfaces.showcase/img/source.png";
private Color[] colors;
private MediaReader mr = new MediaReader();
public void process(OutputStream outStream, Object data) throws Exception {
colors = ((MediaData) data).getNewColors();
ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
BufferedInputStream inStream = new BufferedInputStream(
extContext.getResourceAsStream(RICHFACES_MEDIA_OUTPUT_IMAGE_SOURCE), BUFFER_SIZE);
try {
// skip 8-bytes of header
byte[] bs = new byte[8];
if (inStream.read(bs) < bs.length) {
throw new IllegalArgumentException();
}
outStream.write(bs);
mr.write(colors, outStream, inStream);
} finally {
inStream.close();
outStream.close();
}
}
}