svn commit: r1761214 - in /ofbiz/trunk/specialpurpose/solr: config/SolrUiLabels.xml src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java webapp/solr/WEB-INF/web.xml

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1761214 - in /ofbiz/trunk/specialpurpose/solr: config/SolrUiLabels.xml src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java webapp/solr/WEB-INF/web.xml

shijh
Author: shijh
Date: Sat Sep 17 13:02:36 2016
New Revision: 1761214

URL: http://svn.apache.org/viewvc?rev=1761214&view=rev
Log:
Implemented: To follow Jacopo's change (rev. 1760725) on ControlFilter, cleaned up the OFBizSolrContextFilter and setup a filter chain in web.xml.

Modified:
    ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml
    ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java
    ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml

Modified: ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml?rev=1761214&r1=1761213&r2=1761214&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml (original)
+++ ofbiz/trunk/specialpurpose/solr/config/SolrUiLabels.xml Sat Sep 17 13:02:36 2016
@@ -45,4 +45,29 @@ under the License.
     <property key="SolrMissingProductCategoryId">
         <value xml:lang="en">Missing product category id.</value>
     </property>
+    
+    <property key="SolrErrorManageLoginFirst">
+        <value xml:lang="en">To manage Solr in OFBiz, you have to login first and have the permission to do so.</value>
+    </property>
+    <property key="SolrErrorNoManagePermission">
+        <value xml:lang="en">To manage Solr in OFBiz, you should have the permission to do so.</value>
+    </property>
+    <property key="SolrErrorUpdateLoginFirst">
+        <value xml:lang="en">To update a Solr index in OFBiz, you have to login first and have the permission to do so.</value>
+    </property>
+    <property key="SolrErrorNoUpdatePermission">
+        <value xml:lang="en">To update Solr in OFBiz, you should have the permission to do so.</value>
+    </property>
+    <property key="SolrErrorReplicateLoginFirst">
+        <value xml:lang="en">To enable/disable replication of a Solr index in OFBiz, you have to login first and have the permission to do so.</value>
+    </property>
+    <property key="SolrErrorNoReplicatePermission">
+        <value xml:lang="en">To enable/disable replication of a Solr index in OFBiz, you should have the permission to do so.</value>
+    </property>
+    <property key="SolrErrorViewFileLoginFirst">
+        <value xml:lang="en">To view files of a Solr index in OFBiz, you have to login first and have the permission to do so.</value>
+    </property>
+    <property key="SolrErrorNoViewFilePermission">
+        <value xml:lang="en">To view files of a Solr index in OFBiz, you should have the permission to do so.</value>
+    </property>
 </resource>
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java?rev=1761214&r1=1761213&r2=1761214&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java (original)
+++ ofbiz/trunk/specialpurpose/solr/src/main/java/org/apache/ofbiz/solr/webapp/OFBizSolrContextFilter.java Sat Sep 17 13:02:36 2016
@@ -18,11 +18,10 @@
  *******************************************************************************/
 package org.apache.ofbiz.solr.webapp;
 
-import static org.apache.ofbiz.base.util.UtilGenerics.checkMap;
-
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
 import javax.servlet.FilterChain;
@@ -42,18 +41,15 @@ import org.apache.ofbiz.base.conversion.
 import org.apache.ofbiz.base.conversion.JSONConverters.MapToJSON;
 import org.apache.ofbiz.base.lang.JSON;
 import org.apache.ofbiz.base.util.Debug;
-import org.apache.ofbiz.base.util.StringUtil;
 import org.apache.ofbiz.base.util.UtilHttp;
 import org.apache.ofbiz.base.util.UtilMisc;
-import org.apache.ofbiz.base.util.UtilObject;
+import org.apache.ofbiz.base.util.UtilProperties;
 import org.apache.ofbiz.base.util.UtilTimer;
 import org.apache.ofbiz.base.util.UtilValidate;
 import org.apache.ofbiz.entity.GenericValue;
 import org.apache.ofbiz.security.Security;
 import org.apache.ofbiz.webapp.WebAppUtil;
-import org.apache.ofbiz.webapp.control.ContextFilter;
 import org.apache.ofbiz.webapp.control.LoginWorker;
-import org.apache.ofbiz.webapp.website.WebSiteWorker;
 
 /**
  * OFBizSolrContextFilter - Restricts access to solr urls.
@@ -61,18 +57,14 @@ import org.apache.ofbiz.webapp.website.W
 public class OFBizSolrContextFilter extends SolrDispatchFilter {
 
     public static final String module = OFBizSolrContextFilter.class.getName();
-
-    protected ContextFilter contextFilter = null;
-    protected FilterConfig config = null;
     
+    private static final String resource = "SolrUiLabels";
+
     /**
      * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
      */
     public void init(FilterConfig config) throws ServletException {
         super.init(config);
-        this.config = config;
-        contextFilter = new ContextFilter();
-        contextFilter.init(config);
     }
 
     /**
@@ -81,238 +73,95 @@ public class OFBizSolrContextFilter exte
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
         HttpServletRequest httpRequest = (HttpServletRequest) request;
         HttpServletResponse httpResponse = (HttpServletResponse) response;
-        
-        // set the ServletContext in the request for future use
-        httpRequest.setAttribute("servletContext", config.getServletContext());
+        Locale locale = UtilHttp.getLocale(httpRequest);
 
-        // set the webSiteId in the session
-        if (UtilValidate.isEmpty(httpRequest.getSession().getAttribute("webSiteId"))){
-            httpRequest.getSession().setAttribute("webSiteId", WebSiteWorker.getWebSiteId(httpRequest));
-        }
-
-        // set the filesystem path of context root.
-        httpRequest.setAttribute("_CONTEXT_ROOT_", config.getServletContext().getRealPath("/"));
-
-        // set the server root url
-        httpRequest.setAttribute("_SERVER_ROOT_URL_", UtilHttp.getServerRootUrl(httpRequest));
-
-        // request attributes from redirect call
-        String reqAttrMapHex = (String) httpRequest.getSession().getAttribute("_REQ_ATTR_MAP_");
-        if (UtilValidate.isNotEmpty(reqAttrMapHex)) {
-            byte[] reqAttrMapBytes = StringUtil.fromHexString(reqAttrMapHex);
-            Map<String, Object> reqAttrMap = checkMap(UtilObject.getObject(reqAttrMapBytes), String.class, Object.class);
-            if (reqAttrMap != null) {
-                for (Map.Entry<String, Object> entry: reqAttrMap.entrySet()) {
-                    httpRequest.setAttribute(entry.getKey(), entry.getValue());
+        // set the ServletContext in the request for future use
+        httpRequest.setAttribute("servletContext", request.getServletContext());
+        
+        // check if the request is from an authorized user
+        String servletPath = httpRequest.getServletPath();
+        if (UtilValidate.isNotEmpty(servletPath) && (servletPath.startsWith("/admin/") || servletPath.endsWith("/update")
+                || servletPath.endsWith("/update/json") || servletPath.endsWith("/update/csv") || servletPath.endsWith("/update/extract")
+                || servletPath.endsWith("/replication") || servletPath.endsWith("/file") || servletPath.endsWith("/file/"))) {
+            HttpSession session = httpRequest.getSession();
+            GenericValue userLogin = (GenericValue) session.getAttribute("userLogin");
+            Security security = (Security) request.getAttribute("security");
+            if (security == null) {
+                security = (Security) httpRequest.getServletContext().getAttribute("security");
+                if (security != null) {
+                    request.setAttribute("security", security);
                 }
             }
-            httpRequest.getSession().removeAttribute("_REQ_ATTR_MAP_");
-        }
-
-        // ----- Context Security -----
-        // check if we are disabled
-        String disableSecurity = config.getInitParameter("disableContextSecurity");
-        if (disableSecurity != null && "Y".equalsIgnoreCase(disableSecurity)) {
-            chain.doFilter(httpRequest, httpResponse);
-            return;
-        }
-
-        // check if we are told to redirect everthing
-        String redirectAllTo = config.getInitParameter("forceRedirectAll");
-        if (UtilValidate.isNotEmpty(redirectAllTo)) {
-            // little trick here so we don't loop on ourself
-            if (httpRequest.getSession().getAttribute("_FORCE_REDIRECT_") == null) {
-                httpRequest.getSession().setAttribute("_FORCE_REDIRECT_", "true");
-                Debug.logWarning("Redirecting user to: " + redirectAllTo, module);
-
-                if (!redirectAllTo.toLowerCase().startsWith("http")) {
-                    redirectAllTo = httpRequest.getContextPath() + redirectAllTo;
+            if (security == null) {
+                security = WebAppUtil.getSecurity(httpRequest.getServletContext());
+                if (security != null) {
+                    request.setAttribute("security", security);
                 }
-                httpResponse.sendRedirect(redirectAllTo);
-                return;
-            } else {
-                httpRequest.getSession().removeAttribute("_FORCE_REDIRECT_");
-                chain.doFilter(httpRequest, httpResponse);
-                return;
             }
-        }
-
-        String servletPath = httpRequest.getServletPath();
-        if (UtilValidate.isNotEmpty(servletPath) && servletPath.equals("/control")) {
-         contextFilter.doFilter(httpRequest, httpResponse, chain);
-         return;
-        } else {
-            // check if the request is from an authorized user
-            if (UtilValidate.isNotEmpty(servletPath) && (servletPath.startsWith("/admin/") || servletPath.endsWith("/update")
-                    || servletPath.endsWith("/update/json") || servletPath.endsWith("/update/csv") || servletPath.endsWith("/update/extract")
-                    || servletPath.endsWith("/replication") || servletPath.endsWith("/file") || servletPath.endsWith("/file/"))) {
-                HttpSession session = httpRequest.getSession();
-                GenericValue userLogin = (GenericValue) session.getAttribute("userLogin");
-                Security security = (Security) request.getAttribute("security");
-                if (security == null) {
-                    security = (Security) httpRequest.getServletContext().getAttribute("security");
-                    if (security != null) {
-                        request.setAttribute("security", security);
+            if (servletPath.startsWith("/admin/") && (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest))) {
+                response.setContentType("application/json");
+                MapToJSON mapToJson = new MapToJSON();
+                JSON json;
+                OutputStream os = null;
+                try {
+                    json = mapToJson.convert(UtilMisc.toMap("ofbizLogin", (Object) "true"));
+                    os = response.getOutputStream();
+                    os.write(json.toString().getBytes());
+                    os.flush();
+                    String message = "";
+                    if (UtilValidate.isEmpty(userLogin)) {
+                        message = UtilProperties.getMessage(resource, "SolrErrorManageLoginFirst", locale);
+                    } else {
+                        message = UtilProperties.getMessage(resource, "SolrErrorNoManagePermission", locale);
+                    }
+                    Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module);
+                } catch (ConversionException e) {
+                    Debug.logError("Error while converting Solr ofbizLogin map to JSON.", module);
+                } finally {
+                    if (os != null) {
+                        os.close();
                     }
                 }
-                if (security == null) {
-                    security = WebAppUtil.getSecurity(httpRequest.getServletContext());
-                    if (security != null) {
-                        request.setAttribute("security", security);
-                    }
+                return;
+            } else if (servletPath.endsWith("/update") || servletPath.endsWith("/update/json") || servletPath.endsWith("/update/csv") || servletPath.endsWith("/update/extract")) {
+                // NOTE: the update requests are defined in an index's solrconfig.xml
+                // get the Solr index name from the request
+                if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) {
+                 sendJsonHeaderMessage(httpRequest, httpResponse, userLogin, "SolrErrorUpdateLoginFirst", "SolrErrorNoUpdatePermission", locale);
+                    return;
                 }
-                if (servletPath.startsWith("/admin/") && (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest))) {
-                    response.setContentType("application/json");
-                    MapToJSON mapToJson = new MapToJSON();
-                    JSON json;
-                    OutputStream os = null;
-                    try {
-                        json = mapToJson.convert(UtilMisc.toMap("ofbizLogin", (Object) "true"));
-                        os = response.getOutputStream();
-                        os.write(json.toString().getBytes());
-                        os.flush();
-                        String message = "";
-                        if (UtilValidate.isEmpty(userLogin)) {
-                            message = "To manage Solr in OFBiz, you have to login first and have the permission to do so.";
-                        } else {
-                            message = "To manage Solr in OFBiz, you have to the permission to do so.";
-                        }
-                        Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module);
-                    } catch (ConversionException e) {
-                        Debug.logError("Error while converting Solr ofbizLogin map to JSON.", module);
-                    } finally {
-                        if (os != null) {
-                            os.close();
-                        }
-                    }
+            } else if (servletPath.endsWith("/replication")) {
+                // get the Solr index name from the request
+                if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) {
+                 sendJsonHeaderMessage(httpRequest, httpResponse, userLogin, "SolrErrorReplicateLoginFirst", "SolrErrorNoReplicatePermission", locale);
+                    return;
+                }
+            } else if (servletPath.endsWith("/file") || servletPath.endsWith("/file/")) {
+                // get the Solr index name from the request
+                if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) {
+                 sendJsonHeaderMessage(httpRequest, httpResponse, userLogin, "SolrErrorViewFileLoginFirst", "SolrErrorNoViewFilePermission", locale);
                     return;
-                } else if (servletPath.endsWith("/update") || servletPath.endsWith("/update/json") || servletPath.endsWith("/update/csv") || servletPath.endsWith("/update/extract")) {
-                    // NOTE: the update requests are defined in an index's solrconfig.xml
-                    // get the Solr index name from the request
-                    if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) {
-                        httpResponse.setContentType("application/json");
-                        MapToJSON mapToJson = new MapToJSON();
-                        Map<String, Object> responseHeader = new HashMap<String, Object>();
-                        JSON json;
-                        String message = "";
-                        OutputStream os = null;
-                        try {
-                            os = httpResponse.getOutputStream();
-                            if (UtilValidate.isEmpty(userLogin)) {
-                                httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-                                responseHeader.put("status", HttpServletResponse.SC_UNAUTHORIZED);
-                                message = "To update a Solr index in OFBiz, you have to login first and have the permission to do so.";
-                                responseHeader.put("message", message);
-                            } else {
-                                httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
-                                responseHeader.put("status", HttpServletResponse.SC_FORBIDDEN);
-                                message = "To update a Solr index in OFBiz, you have to have the permission to do so.";
-                                responseHeader.put("message", message);
-                            }
-                            json = mapToJson.convert(UtilMisc.toMap("responseHeader", (Object) responseHeader));
-                            os.write(json.toString().getBytes());
-                            os.flush();
-                            Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module);
-                        } catch (ConversionException e) {
-                            Debug.logError("Error while converting responseHeader map to JSON.", module);
-                        } finally {
-                            if (os != null) {
-                                os.close();
-                            }
-                        }
-                        return;
-                    }
-                } else if (servletPath.endsWith("/replication")) {
-                    // get the Solr index name from the request
-                    if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) {
-                        httpResponse.setContentType("application/json");
-                        MapToJSON mapToJson = new MapToJSON();
-                        Map<String, Object> responseHeader = new HashMap<String, Object>();
-                        JSON json;
-                        String message = "";
-                        OutputStream os = null;
-                        try {
-                            os = httpResponse.getOutputStream();
-                            if (UtilValidate.isEmpty(userLogin)) {
-                                httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-                                responseHeader.put("status", HttpServletResponse.SC_UNAUTHORIZED);
-                                message = "To enable/disable replication of a Solr index in OFBiz, you have to login first and have the permission to do so.";
-                                responseHeader.put("message", message);
-                            } else {
-                                httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
-                                responseHeader.put("status", HttpServletResponse.SC_FORBIDDEN);
-                                message = "To enable/disable replication of a Solr index in OFBiz, you have to have the permission to do so.";
-                                responseHeader.put("message", message);
-                            }
-                            json = mapToJson.convert(UtilMisc.toMap("responseHeader", (Object) responseHeader));
-                            os.write(json.toString().getBytes());
-                            os.flush();
-                            Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module);
-                        } catch (ConversionException e) {
-                            Debug.logError("Error while converting responseHeader map to JSON.", module);
-                        } finally {
-                            if (os != null) {
-                                os.close();
-                            }
-                        }
-                        return;
-                    }
-                } else if (servletPath.endsWith("/file") || servletPath.endsWith("/file/")) {
-                    // get the Solr index name from the request
-                    if (UtilValidate.isEmpty(userLogin) || !LoginWorker.hasBasePermission(userLogin, httpRequest)) {
-                        httpResponse.setContentType("application/json");
-                        MapToJSON mapToJson = new MapToJSON();
-                        Map<String, Object> responseHeader = new HashMap<String, Object>();
-                        JSON json;
-                        String message = "";
-                        OutputStream os = null;
-                        try {
-                            os = httpResponse.getOutputStream();
-                            if (UtilValidate.isEmpty(userLogin)) {
-                                httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-                                responseHeader.put("status", HttpServletResponse.SC_UNAUTHORIZED);
-                                message = "To view files of a Solr index in OFBiz, you have to login first and have the permission to do so.";
-                                responseHeader.put("message", message);
-                            } else {
-                                httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
-                                responseHeader.put("status", HttpServletResponse.SC_FORBIDDEN);
-                                message = "To view files of a Solr index in OFBiz, you have to have the permission to do so.";
-                                responseHeader.put("message", message);
-                            }
-                            json = mapToJson.convert(UtilMisc.toMap("responseHeader", (Object) responseHeader));
-                            os.write(json.toString().getBytes());
-                            os.flush();
-                            Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request error: " + message, module);
-                        } catch (ConversionException e) {
-                            Debug.logError("Error while converting responseHeader map to JSON.", module);
-                        } finally {
-                            if (os != null) {
-                                os.close();
-                            }
-                        }
-                        return;
-                    }
                 }
             }
-            
-            String charset = request.getCharacterEncoding();
-            String rname = null;
-            if (httpRequest.getRequestURI() != null) {
-                rname = httpRequest.getRequestURI().substring(1);
-            }
-            if (rname != null && (rname.endsWith(".css") || rname.endsWith(".js") || rname.endsWith(".ico") || rname.endsWith(".html") || rname.endsWith(".png") || rname.endsWith(".jpg") || rname.endsWith(".gif"))) {
-                rname = null;
-            }
-            UtilTimer timer = null;
-            if (Debug.timingOn() && rname != null) {
-                timer = new UtilTimer();
-                timer.setLog(true);
-                timer.timerString("[" + rname + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request Begun, encoding=[" + charset + "]", module);
-            }
-            // NOTE: there's a chain.doFilter in SolrDispatchFilter's doFilter
-            super.doFilter(request, response, chain);
-            if (Debug.timingOn() && rname != null) timer.timerString("[" + rname + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request Done", module);
         }
+        
+        String charset = request.getCharacterEncoding();
+        String rname = null;
+        if (httpRequest.getRequestURI() != null) {
+            rname = httpRequest.getRequestURI().substring(1);
+        }
+        if (rname != null && (rname.endsWith(".css") || rname.endsWith(".js") || rname.endsWith(".ico") || rname.endsWith(".html") || rname.endsWith(".png") || rname.endsWith(".jpg") || rname.endsWith(".gif"))) {
+            rname = null;
+        }
+        UtilTimer timer = null;
+        if (Debug.timingOn() && rname != null) {
+            timer = new UtilTimer();
+            timer.setLog(true);
+            timer.timerString("[" + rname + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request Begun, encoding=[" + charset + "]", module);
+        }
+        // NOTE: there's a chain.doFilter in SolrDispatchFilter's doFilter
+        super.doFilter(request, response, chain);
+        if (Debug.timingOn() && rname != null) timer.timerString("[" + rname + "(Domain:" + request.getScheme() + "://" + request.getServerName() + ")] Request Done", module);
     }
 
     /**
@@ -320,8 +169,6 @@ public class OFBizSolrContextFilter exte
      */
     public void destroy() {
         super.destroy();
-        contextFilter.destroy();
-        config = null;
     }
 
     /**
@@ -339,5 +186,39 @@ public class OFBizSolrContextFilter exte
         cores.load();
         return cores;
     }
+    
+    private void sendJsonHeaderMessage(HttpServletRequest httpRequest, HttpServletResponse httpResponse, GenericValue userLogin, String notLoginMessage, String noPermissionMessage, Locale locale) throws IOException {
+        httpResponse.setContentType("application/json");
+        MapToJSON mapToJson = new MapToJSON();
+        Map<String, Object> responseHeader = new HashMap<String, Object>();
+        JSON json;
+        String message = "";
+        OutputStream os = null;
+        
+        try {
+            os = httpResponse.getOutputStream();
+            if (UtilValidate.isEmpty(userLogin)) {
+                httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+                responseHeader.put("status", HttpServletResponse.SC_UNAUTHORIZED);
+                message = UtilProperties.getMessage(resource, notLoginMessage, locale);
+                responseHeader.put("message", message);
+            } else {
+                httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
+                responseHeader.put("status", HttpServletResponse.SC_FORBIDDEN);
+                message = UtilProperties.getMessage(resource, noPermissionMessage, locale);
+                responseHeader.put("message", message);
+            }
+            json = mapToJson.convert(UtilMisc.toMap("responseHeader", (Object) responseHeader));
+            os.write(json.toString().getBytes());
+            os.flush();
+            Debug.logInfo("[" + httpRequest.getRequestURI().substring(1) + "(Domain:" + httpRequest.getScheme() + "://" + httpRequest.getServerName() + ")] Request error: " + message, module);
+        } catch (ConversionException e) {
+            Debug.logError("Error while converting responseHeader map to JSON.", module);
+        } finally {
+            if (os != null) {
+                os.close();
+            }
+        }
+    }
 }
 

Modified: ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml?rev=1761214&r1=1761213&r2=1761214&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml (original)
+++ ofbiz/trunk/specialpurpose/solr/webapp/solr/WEB-INF/web.xml Sat Sep 17 13:02:36 2016
@@ -17,7 +17,6 @@
 -->
 <web-app version="3.0">
 
-
     <display-name>Apache OFBiz - Solr Component</display-name>
     <description>Solr Component of the Apache OFBiz Project</description>
 
@@ -43,15 +42,15 @@
     </context-param>
 
     <filter>
-        <filter-name>ContextFilter</filter-name>
-        <filter-class>org.apache.ofbiz.solr.webapp.OFBizSolrContextFilter</filter-class>
+        <filter-name>ControlFilter</filter-name>
+        <filter-class>org.apache.ofbiz.webapp.control.ControlFilter</filter-class>
         <init-param>
             <param-name>disableContextSecurity</param-name>
             <param-value>N</param-value>
         </init-param>
         <init-param>
             <param-name>allowedPaths</param-name>
-            <param-value>/control:/error:/css:/img:/js:/tpl:/favicon.ico:/admin:/admin.html:/#:/schema:/config</param-value>
+            <param-value>/control:/error:/css:/img:/js:/tpl:/favicon.ico:/admin:/admin.html:/#:/schema:/config:/:/solrdefault</param-value>
         </init-param>
         <init-param>
             <param-name>errorCode</param-name>
@@ -63,8 +62,28 @@
         </init-param>
     </filter>
 
+    <filter>
+        <filter-name>ContextFilter</filter-name>
+        <filter-class>org.apache.ofbiz.webapp.control.ContextFilter</filter-class>
+    </filter>
+
+    <filter>
+        <filter-name>SolrFilter</filter-name>
+        <filter-class>org.apache.ofbiz.solr.webapp.OFBizSolrContextFilter</filter-class>
+    </filter>
+
+    <filter-mapping>
+        <filter-name>ControlFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
     <filter-mapping>
         <filter-name>ContextFilter</filter-name>
+        <url-pattern>/control/*</url-pattern>
+    </filter-mapping>
+
+    <filter-mapping>
+        <filter-name>SolrFilter</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>