So. I am trying to write a Shale filter. This is how my chain.config.xml
looks like:
<catalog name="shale">
<!-- Disallow direct access to JSP and JSFP resources -->
<chain name="preprocess">
<command className=
"org.apache.shale.application.ContextRelativePathFilter"
includes=
"\S*\.faces,\S*\.html,\S*\.gif,\S*\.jpg,/index\.jsp"
excludes="\S*\.jsp,\S*\.jspf"/>
<command className=
"com.intellicare.shaleNShark.application.PreprocessFilter"
excludes="/index\.jsp,/logon.faces"/>
</chain>
</catalog>
My PreprocessFilter extends ContextRelativePathFilter and has the foll.
accept method:
public void accept(ShaleWebContext context) throws Exception {
ShaleWebContext webContext = (ShaleWebContext) context;
String value = value(webContext);
Map sessionScope = webContext.getSessionScope();
String user = (String) sessionScope.get("user");
String pw = (String) sessionScope.get("password");
//..etc. (the idea of course being if un/pw are
null/empty, the app gets seriously mad..)
}
>From what I can understand of the code in AbstractRegExpFilter,
implementing the "value" method will decide how the "includes" and
"excludes" patterns are understood by Shale. Since I extended
ContextRelativePathFilter, I would have thought that my /index.jsp as well
as /logon.faces would *not* make it to the PreprocessFilter. But I have a
breakpoint in the accept method and sadly *every* page seems to go through
this accept method. (What's more, the value of the String "value" above
comes out as "/index.jsp" and "/logon.faces" when I access my index page
and logon pages.) Which of course is not ok since I shouldn't be checking
for un/pw values in the logon page. Where am I going wrong?
Thank you again for your continued help.. doubtless this must be big time
boring for you..
Geeta