diff --git a/src/main/java/org/codelibs/fess/filter/DIFilter.java b/src/main/java/org/codelibs/fess/filter/DIFilter.java new file mode 100644 index 000000000..8a67f81f2 --- /dev/null +++ b/src/main/java/org/codelibs/fess/filter/DIFilter.java @@ -0,0 +1,31 @@ +package org.codelibs.fess.filter; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Deque; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.lastaflute.web.LastaFilter; +import org.lastaflute.web.servlet.filter.listener.FilterHook; + +public class DIFilter extends LastaFilter { + + @Override + protected void resolveCharacterEncoding(HttpServletRequest request) throws UnsupportedEncodingException { + // nothing + } + + @Override + protected void viaInsideHookDeque(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Deque deque) + throws IOException, ServletException { + if (!deque.isEmpty()) { + super.viaInsideHookDeque(request, response, chain, deque); + } else { + routingFilter.doFilter(request, response, prepareFinalChain(chain)); /* #to_action */ + } + } +} diff --git a/src/main/java/org/codelibs/fess/filter/EncodingFilter.java b/src/main/java/org/codelibs/fess/filter/EncodingFilter.java index d0c3ca5bf..e5e9c32d1 100644 --- a/src/main/java/org/codelibs/fess/filter/EncodingFilter.java +++ b/src/main/java/org/codelibs/fess/filter/EncodingFilter.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; @@ -38,8 +39,7 @@ import org.apache.commons.codec.net.URLCodec; import org.codelibs.core.lang.StringUtil; import org.lastaflute.web.LastaFilter; -// TODO parent filter -public class FessEncodingFilter extends LastaFilter { +public class EncodingFilter implements Filter { public static String ENCODING_MAP = "encodingRules"; protected Map encodingMap = new ConcurrentHashMap<>(); @@ -52,12 +52,11 @@ public class FessEncodingFilter extends LastaFilter { @Override public void init(final FilterConfig config) throws ServletException { - super.init(config); servletContext = config.getServletContext(); - encoding = config.getInitParameter(ENCODING_KEY); + encoding = config.getInitParameter(LastaFilter.ENCODING_KEY); if (encoding == null) { - encoding = DEFAULT_ENCODING; + encoding = LastaFilter.DEFAULT_ENCODING; } // ex. sjis:Shift_JIS,eucjp:EUC-JP @@ -118,7 +117,7 @@ public class FessEncodingFilter extends LastaFilter { } } - super.doFilter(request, response, chain); + chain.doFilter(request, response); } protected Map getParameterMapFromQueryString(final HttpServletRequest request, final String enc) throws IOException { @@ -169,4 +168,9 @@ public class FessEncodingFilter extends LastaFilter { } return paramMap; } + + @Override + public void destroy() { + // nothing + } } diff --git a/src/main/java/org/codelibs/fess/filter/RoutingFilter.java b/src/main/java/org/codelibs/fess/filter/RoutingFilter.java new file mode 100644 index 000000000..eedf3e438 --- /dev/null +++ b/src/main/java/org/codelibs/fess/filter/RoutingFilter.java @@ -0,0 +1,19 @@ +package org.codelibs.fess.filter; + +import java.io.IOException; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import org.lastaflute.web.LastaFilter; + +public class RoutingFilter extends LastaFilter { + + @Override + public void doFilter(ServletRequest servReq, ServletResponse servRes, FilterChain chain) throws IOException, ServletException { + routingFilter.doFilter(servReq, servRes, prepareFinalChain(chain)); /* #to_action */ + } + +} diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index a5c8d4428..7ccd69a63 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -24,7 +24,7 @@ encodingfilter - org.codelibs.fess.filter.FessEncodingFilter + org.codelibs.fess.filter.EncodingFilter encoding UTF-8 @@ -57,6 +57,16 @@ org.codelibs.fess.filter.WebApiFilter + + diFilter + org.codelibs.fess.filter.DIFilter + + + + routingFilter + org.codelibs.fess.filter.RoutingFilter + + + + + + diFilter + /* + REQUEST @@ -161,8 +177,9 @@ - lastaFilter + routingFilter /* + REQUEST