view src/nabble/view/lib/NabbleErrorFilter.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line source

package nabble.view.lib;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class NabbleErrorFilter implements Filter {
	public static final String WORK_AROUND_ERROR_EXCEPTION = "work-around.error.exception";

	public void destroy() { }

	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		
		try {
			chain.doFilter(req, res);
		} catch(Exception e) {
			req.setAttribute(WORK_AROUND_ERROR_EXCEPTION, e);
			
			if(e instanceof RuntimeException) {
				RuntimeException th = (RuntimeException)e;
				throw th;
			} 
			else if(e instanceof IOException) {
				IOException th = (IOException)e;
				throw th;
			} else {
				ServletException th = (ServletException)e;
				if( MinorServletException.isIn(th) )
					throw new IOException(th);
				throw th;
			}
		} 
	}
	
	public void init(FilterConfig arg0) throws ServletException { }

}