I hope the proposal for actionable items will materialise rather sooner
than later in our JIRA.

Best regards,

Pierre Smits

ORRTIZ.COM <http://www.orrtiz.com>
OFBiz based solutions & services

OFBiz Extensions Marketplace
http://oem.ofbizci.net/oci-2/

On Fri, Sep 9, 2016 at 10:23 AM, Jacopo Cappellato <
jacopo.cappell...@hotwaxsystems.com> wrote:

> And here is a proposal for some actionable items to contribute to this
> effort:
>
> 1) review and document the current usage (by application) of filters
> (classes and their order)
> 2) review the logic in the filters and compare it to the one of
> ContextFilter (what is different, what is added, what is duplicated etc...)
> 3) identify the filters that "extends" the ContextFilter class and figure
> out how to refactor their code to work in a filter chain where the first
> filter is ContextFilter
>
> Jacopo
>
> On Fri, Sep 9, 2016 at 10:07 AM, Jacopo Cappellato <
> jacopo.cappell...@hotwaxsystems.com> wrote:
>
> > A web application, in order to leverage the OFBiz framework, requires
> that
> > a series of objects are in its contexts (servlet context, session and
> > request) such as "delegator", "delegatorName", "dispatcher", "security"
> > etc. etc...
> > This setup is performed by the logic contained in the servlet filter
> > implemented by the following class:
> >
> > org.apache.ofbiz.webapp.control.ContextFilter
> >
> > The execution of this logic is required for the application to run
> > properly.
> > However, this filter is deployed in most but not all the web application
> > in the OFBiz codebase: there are few exceptions due to the fact that a
> few
> > web applications require the execution of other filters (e.g.
> > CatalogUrlFilter, etc...).
> >
> > Unfortunately the way these filters have been implemented have issues
> > including:
> > * some of them extend the ContextFilter and override its behavior by
> > copying some logic and adding new one; in these cases the ContextFilter
> is
> > also deployed but after the execution of the extended filter
> > * some of them have been copied from ContextFilter and then adapted,
> > introducing a lot of redundant code difficult to maintain; in these cases
> > the ContextFilter is not deployed
> >
> > There is now a chance for the community to help cleaning up these classes
> > and I am proposing the following guidelines:
> >
> > 1) servlet filters should be chained (rather than extended or replaced)
> > 2) ContextFilter should always be used and should always be the first
> > (OFBiz) filter in the chain
> > 3) if some of the behavior/logic of ContextFilter conflicts with the ones
> > of other filters, then ContextFilter should be enhanced to prevent that
> > (e.g. we can improve the code, move some of its logic in a separate
> filter
> > that can be executed after etc...)
> > 4) the other filters should work well after the ContextFilter and add
> > behavior rather than overriding behavior or duplicating behavior
> >
> > As a beneficial side effect of this effort, we will get a cleaner picture
> > (documented by the logic of ContextFilter) of all the context objects
> > required by OFBiz web applications.
> >
> > I hope it helps
> >
> > Jacopo
> >
>

Reply via email to