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, jler...@apache.org 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