Couldn't you just define a default-request in the controller that points to a request uri which does nothing? i.e. no event and a response type of "none"
Regards Scott On 28/09/2012, at 7:33 PM, Jacques Le Roux wrote: >> 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 >>>> >>>> >>> >> >>
