package hirondelle.fish.exercise.fileupload;
import java.io.*;
import java.util.logging.*;
import hirondelle.web4j.util.Util;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public final class FileUploadFilter implements Filter {
public void init(FilterConfig aConfig) throws ServletException {
}
public void destroy() {
}
public void doFilter(
ServletRequest aRequest, ServletResponse aResponse, FilterChain aChain
) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) aRequest;
if ( isFileUploadRequest(request) ) {
fLogger.fine("START - Wrapping request for file upload.");
FileUploadWrapper wrapper = new FileUploadWrapper(request);
aChain.doFilter(wrapper, aResponse);
}
else {
fLogger.fine("START - NOT wrapping request for file upload.");
aChain.doFilter(aRequest, aResponse);
}
fLogger.fine("Finished.");
}
private static final Logger fLogger = Util.getLogger(FileUploadFilter.class);
private boolean isFileUploadRequest(HttpServletRequest aRequest){
return
aRequest.getMethod().equalsIgnoreCase("POST") &&
aRequest.getContentType().startsWith("multipart/form-data")
;
}
}