JSFServlet.java
package org.andromda.cartridges.jsf;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* A servlet allowing us to load resources from a jar and make them available to
* the web application.
*/
public class JSFServlet
extends HttpServlet
{
private static final long serialVersionUID = 34L;
/**
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
public void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
final String uri = request.getRequestURI();
final String path =
'/' + uri.substring(uri.indexOf(Constants.RESOURCE_CONTEXT) + Constants.RESOURCE_CONTEXT.length() + 1);
final InputStream resource = JSFServlet.class.getResourceAsStream(path);
if (resource == null)
{
throw new ServletException("Could not load resource from path '" + path + '\'');
}
// - write resource to the output stream
final OutputStream out = response.getOutputStream();
final byte[] buffer = new byte[2048];
BufferedInputStream inputStream = new BufferedInputStream(resource);
int read = 0;
read = inputStream.read(buffer);
while (read != -1)
{
out.write(
buffer,
0,
read);
read = inputStream.read(buffer);
}
inputStream.close();
out.flush();
out.close();
}
}