Hi Scott,

Jira ticket raised at:

https://issues.apache.org/jira/browse/WOOKIE-424

And the patch file is there too.

Thanks,

Darren.

On 6 January 2014 14:29, Scott Wilson <[email protected]>wrote:

> Hi Darren,
>
> On 6 Jan 2014, at 14:10, Darren Jones wrote:
>
> > Hello,
> >
> > I've been trying to get Apache Wookie working on WildFly. After raising a
> > few defects against WildFly's new web server component called UnderTow
> > (which are now fixed), I think there may be a remaining issue in Wookie:
> >
> > In LocalizedResourceFilter, there is code that looks for a localized copy
> > of a resource. Here is an example snippet (around line 185):
> >
> >      String filePath =
> filterConfig.getServletContext().getRealPath(path);
> >      if (new File(filePath).exists())
> >        return context + path;
> >
> > According to the javadoc for ServletContext.getRealPath(), it is allowed
> to
> > return null if the file does not exist. As my widgets are not localized,
> > this is the case, and a NullPointerException occurs because null is then
> > passed to new File(filePath).
> >
> > I'm not sure why this has not been found before - perhaps other web
> servers
> > have not been returning null if a resource does not exist.
>
> You're right, it is odd. Most of the test widgets aren't localized either,
> so if it was purely an issue with that then we should have seen the error
> before. I wonder if its something to do with WildFly's implementation of
> Filter and/or ServletContext?  Whatever the cause, we need to make sure we
> catch this case and handle it properly.
>
> >
> > I've fixed it temporarily with a local patch that does an extra null
> check
> > before calling new File():
> >
> >      String filePath =
> filterConfig.getServletContext().getRealPath(path);
> >      if (filePath != null && new File(filePath).exists())
> >        return context + path;
> >
> > There are 3 places in LocalizedResourceFilter that needed this fix - and
> > may there be more in other Wookie classes?
> >
> > Should I raise a Jira ticket for this?
>
> Yes please. Can you attach your patch to the ticket as well? If it fixes
> the problem I'd be happy to review and apply it.
>
> Cheers,
>
> S
>
> >
> > Thanks,
> >
> > Darren.
> >
> > (Full exception from WildFly log is given below)
> >
> >     [exec] 13:58:02,558 ERROR [io.undertow.request] (default task-2)
> > UT005023: Exception handling request to /wookie/wservices/
> > abc.com/widgets/abc-tag-cloud/index.html: java.lang.RuntimeException:
> > Exception caught for transaction: java.lang.NullPointerException
> >     [exec] at
> > org.apache.wookie.server.MainFilter.doFilter(MainFilter.java:85)
> [classes:]
> >     [exec] at
> > io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:70)
> >     [exec] at
> >
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:67)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:70)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
> >     [exec] at
> >
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> > io.undertow.server.Connectors.executeRootHandler(Connectors.java:164)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> > io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:654)
> > [undertow-core-1.0.0.Beta31-SNAPSHOT.jar:1.0.0.Beta31-SNAPSHOT]
> >     [exec] at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > [rt.jar:1.7.0_21]
> >     [exec] at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > [rt.jar:1.7.0_21]
> >     [exec] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
> >     [exec] Caused by: java.lang.NullPointerException
> >     [exec] at java.io.File.<init>(File.java:251) [rt.jar:1.7.0_21]
> >     [exec] at
> >
> org.apache.wookie.server.LocalizedResourceFilter.getLocalizedResource(LocalizedResourceFilter.java:186)
> > [classes:]
> >     [exec] at
> >
> org.apache.wookie.server.LocalizedResourceFilter.doFilter(LocalizedResourceFilter.java:92)
> > [classes:]
> >     [exec] at
> > io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> >
> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
> > [undertow-servlet-1.0.0.Beta30.jar:1.0.0.Beta30]
> >     [exec] at
> > org.apache.wookie.server.MainFilter.doFilter(MainFilter.java:63)
> [classes:]
> >     [exec] ... 29 more
>
>

Reply via email to