package org.jboss.seam.ui.resource;
import static org.jboss.seam.ScopeType.APPLICATION;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.util.Resources;
import org.jboss.seam.web.AbstractResource;
@Scope(APPLICATION)
@Name("org.jboss.seam.ui.resource.webResource")
@Install(precedence = BUILT_IN)
@BypassInterceptors
public class WebResource extends AbstractResource
{
public static final String WEB_RESOURCE_PATH = "/seam/resource/web";
private static final String RESOURCE_PATH = "/web";
@Override
public String getResourcePath()
{
return RESOURCE_PATH;
}
@Override
public void getResource(HttpServletRequest request, HttpServletResponse response)
throws IOException
{
String pathInfo = request.getPathInfo().substring(getResourcePath().length());
InputStream in = Resources.getResourceAsStream( "/org/jboss/seam/ui/resource" + pathInfo, getServletContext() );
try {
if (in != null) {
byte[] buffer = new byte[1024];
int read = in.read(buffer);
while (read != -1) {
response.getOutputStream().write(buffer, 0, read);
read = in.read(buffer);
}
response.getOutputStream().flush();
} else {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
} finally {
Resources.closeStream(in);
}
}
}