001/* 002 * Licensed under the Apache License, Version 2.0 (the "License"); 003 * you may not use this file except in compliance with the License. 004 * You may obtain a copy of the License at 005 * 006 * http://www.apache.org/licenses/LICENSE-2.0 007 * 008 * Unless required by applicable law or agreed to in writing, software 009 * distributed under the License is distributed on an "AS IS" BASIS, 010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 011 * See the License for the specific language governing permissions and 012 * limitations under the License. 013 */ 014package org.atteo.moonshine.firebuglogger; 015 016import java.io.IOException; 017 018import javax.servlet.Filter; 019import javax.servlet.FilterChain; 020import javax.servlet.FilterConfig; 021import javax.servlet.ServletException; 022import javax.servlet.ServletRequest; 023import javax.servlet.ServletResponse; 024import javax.servlet.http.HttpServletRequest; 025import javax.servlet.http.HttpServletResponse; 026 027import com.google.inject.Singleton; 028 029@Singleton 030public class FireBugFilter implements Filter { 031 032 @Override 033 public void init(FilterConfig filterConfig) throws ServletException { 034 } 035 036 @Override 037 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 038 throws IOException, ServletException { 039 040 try { 041 HttpServletRequest req = (HttpServletRequest) request; 042 String userAgent = req.getHeader("User-Agent"); 043 044 if (userAgent != null && userAgent.contains("FirePHP")) { 045 046 HttpServletResponse resp = (HttpServletResponse) response; 047 048 FireBugAppender.setServletResponse(resp); 049 resp.setHeader("X-Wf-Protocol-1", "http://meta.wildfirehq.org/Protocol/JsonStream/0.2"); 050 resp.setHeader("X-Wf-1-Plugin-1", 051 "http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3"); 052 resp.setHeader("X-Wf-1-Structure-1", 053 "http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1"); 054 } 055 056 chain.doFilter(request, response); 057 } finally { 058 FireBugAppender.setServletResponse(null); 059 } 060 } 061 062 @Override 063 public void destroy() { 064 } 065 066}