we talking about two servlets mapped to the same path?

Actually not the same <servlet-mapping> than control  which is
<url-pattern>/control/*</url-pattern>

The external one is
<url-pattern>/*</url-pattern>
There is a proper filter for external mapping

They use both
<load-on-startup>1</load-on-startup>

It's a bit like CatalogUrlServlet in eCommerce web.xml

Not directly related but we also use Tuckey. So yes it's about Servlets

Jacques

From: "Scott Gray" <[email protected]>
I'm equally confused and the jira hasn't helped much.  Could someone define an 
"external request in controllers" for me?

Typically if you want flexible request handling on the control path you use the 
<default-request/> element to point to a uri that
will handle the request within an event.

I'm not sure I understand what type of setup would work when the 
ControlServlet/RequestHandler can't find something to render, are
we talking about two servlets mapped to the same path?

Thanks
Scott

On 28/09/2012, at 9:58 AM, Adrian Crum wrote:

I'm confused. I want to have external requests and I want to throw exceptions 
when I have missing controller entries. How does
this change accommodate that?

-Adrian


On 9/27/2012 3:49 PM, [email protected] wrote:
Author: jleroux
Date: Thu Sep 27 14:49:20 2012
New Revision: 1391037

URL: http://svn.apache.org/viewvc?rev=1391037&view=rev
Log:
Closes "ControlServlet - Exception thrown for requests not defined by 
controller.xml"
https://issues.apache.org/jira/browse/OFBIZ-5037

This has been tested in a custom project and work as expected it does not add 
any functional features for OFBiz if you don't use
external requests in controllers. So should have any impacts OOTB

Added:
    
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandlerExceptionAllowExternalRequests.java
   (with props)
Modified:
    ofbiz/trunk/framework/common/config/general.properties
    
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
    
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java

Modified: ofbiz/trunk/framework/common/config/general.properties
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/config/general.properties?rev=1391037&r1=1391036&r2=1391037&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/config/general.properties (original)
+++ ofbiz/trunk/framework/common/config/general.properties Thu Sep 27 14:49:20 
2012
@@ -143,3 +143,6 @@ multitenant=N
 # -- Y if you use a cluster. Most of the time this should not be needed. Setting 
distributed-cache-clear-enabled="true" is
enough
 # -- to guarantee no sequenceIds duplicates. See OFBIZ-2353 for details
 cluster=N
+
+# -- N if you want to use external requests (not in available in current 
controller), see OFBIZ-5037
+throwRequestHandlerExceptionOnMissingLocalRequest=Y
\ No newline at end of file

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java?rev=1391037&r1=1391036&r2=1391037&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java 
(original)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java 
Thu Sep 27 14:49:20 2012
@@ -225,6 +225,9 @@ public class ControlServlet extends Http
                 request.setAttribute("_ERROR_MESSAGE_", 
encoder.encode(throwable.toString()));
                 errorPage = requestHandler.getDefaultErrorPage(request);
             }
+         } catch (RequestHandlerExceptionAllowExternalRequests e) {
+              errorPage = requestHandler.getDefaultErrorPage(request);
+              Debug.logInfo("Going to external page: " + 
request.getPathInfo(), module);
         } catch (Exception e) {
             Debug.logError(e, "Error in request handler: ", module);
             StringUtil.HtmlEncoder encoder = new StringUtil.HtmlEncoder();

Modified: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=1391037&r1=1391036&r2=1391037&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java 
(original)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java 
Thu Sep 27 14:49:20 2012
@@ -65,6 +65,8 @@ import org.ofbiz.webapp.website.WebSiteW
 public class RequestHandler {
       public static final String module = RequestHandler.class.getName();
+    private static final Boolean 
THROW_REQUEST_HANDLER_EXCEPTION_ON_MISSING_LOCAL_REQUEST =
+        UtilProperties.propertyValueEqualsIgnoreCase("general.properties", 
"throwRequestHandlerExceptionOnMissingLocalRequest",
"Y");
       public static RequestHandler getRequestHandler(ServletContext 
servletContext) {
         RequestHandler rh = (RequestHandler) 
servletContext.getAttribute("_REQUEST_HANDLER_");
@@ -96,7 +98,7 @@ public class RequestHandler {
         return ConfigXMLReader.getControllerConfig(this.controllerConfigURL);
     }
 -    public void doRequest(HttpServletRequest request, HttpServletResponse 
response, String requestUri) throws
RequestHandlerException {
+    public void doRequest(HttpServletRequest request, HttpServletResponse 
response, String requestUri) throws
RequestHandlerException, RequestHandlerExceptionAllowExternalRequests {
         HttpSession session = request.getSession();
         Delegator delegator = (Delegator) request.getAttribute("delegator");
         GenericValue userLogin = (GenericValue) 
session.getAttribute("userLogin");
@@ -104,7 +106,7 @@ public class RequestHandler {
     }
       public void doRequest(HttpServletRequest request, HttpServletResponse 
response, String chain,
-            GenericValue userLogin, Delegator delegator) throws 
RequestHandlerException {
+            GenericValue userLogin, Delegator delegator) throws 
RequestHandlerException,
RequestHandlerExceptionAllowExternalRequests {
           long startTime = System.currentTimeMillis();
         HttpSession session = request.getSession();
@@ -152,10 +154,13 @@ public class RequestHandler {
             }
         }
 -        // still not found so stop
+        // if no matching request is found in the controller, depending on
THROW_REQUEST_HANDLER_EXCEPTION_ON_MISSING_LOCAL_REQUEST
+        //  we throw a RequestHandlerException or 
RequestHandlerExceptionAllowExternalRequests
         if (requestMap == null) {
-            throw new RequestHandlerException(requestMissingErrorMessage);
-        }
+            if (THROW_REQUEST_HANDLER_EXCEPTION_ON_MISSING_LOCAL_REQUEST) 
throw new
RequestHandlerException(requestMissingErrorMessage);
+            else throw new RequestHandlerExceptionAllowExternalRequests();
+         }
+
         String eventReturn = null;
         if (requestMap.metrics != null && requestMap.metrics.getThreshold() != 0.0 
&& requestMap.metrics.getTotalEvents() > 3
&& requestMap.metrics.getThreshold() < requestMap.metrics.getServiceRate()) {
             eventReturn = "threshold-exceeded";

Added: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandlerExceptionAllowExternalRequests.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandlerExceptionAllowExternalRequests.java?rev=1391037&view=auto
==============================================================================
--- 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandlerExceptionAllowExternalRequests.java
 (added)
+++ 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandlerExceptionAllowExternalRequests.java
 Thu Sep 27
14:49:20 2012
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ 
*******************************************************************************/
+package org.ofbiz.webapp.control;
+
+/**
+ * RequestHandlerExceptionAllowExternalRequests
+ */
+@SuppressWarnings("serial")
+public class RequestHandlerExceptionAllowExternalRequests extends 
org.ofbiz.base.util.GeneralException {
+
+    public RequestHandlerExceptionAllowExternalRequests(String str, Throwable 
t) {
+        super(str, t);
+    }
+
+    public RequestHandlerExceptionAllowExternalRequests(String str) {
+        super(str);
+    }
+
+    public RequestHandlerExceptionAllowExternalRequests() {
+        super();
+    }
+}
+

Propchange: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandlerExceptionAllowExternalRequests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandlerExceptionAllowExternalRequests.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: 
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandlerExceptionAllowExternalRequests.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain





Reply via email to