Thank you for you quick response.

I'll get the same test case set up with tomcat and see how it goes.

Thanks!

-Mark

At 09:16 PM 10/7/2003 -0700, David Graham wrote:
--- Mark McBride <[EMAIL PROTECTED]> wrote:
> I may have found a problem using Struts/StrutsTestCase with OC4J(9.0.4).
>
> Background: I'm running a StrutsTestCase that works in Resin 2.x but
> when
> ran in OC4J I get a NullPointerException from
> org.apache.struts.util.RequestUtils.java line 1806. The problem I found
> with both the RequestUtils.java and CactusStrutsTestCase.java are
> illustrated below.
>
> The problem can be found in two places. The first is in
> CactusStrutsTestCase.java line 417:
> String moduleName = (String)
> request.getAttribute(Common.INCLUDE_SERVLET_PATH);
> if (moduleName.endsWith("/"))
>      moduleName = moduleName.substring(0,moduleName.lastIndexOf("/"));
>
> In resin 2.X this runs correctly with moduleName being initialized to ""
>
> even if the attribute is not found.
> In oc4j 9.0.4 request.getAttribute returns "null" when an attribute is
> not
> found. When moduleName.endsWith gets executed a NullPointerException is
> thrown.
>
> The second is in org.apache.struts.util.RequestUtils.java introduced in
> line 1783 blows up on line 1806:
> On line 1783 (same fundamental problem as the first error):
> String matchPath = (String)
> request.getAttribute(RequestProcessor.INCLUDE_SERVLET_PATH);
> // matchPath is set to "" in resin matchPath is null in oc4j
> if (matchPath == null) {
>      matchPath = request.getServletPath();
>     }
>   return getModuleName( matchPath, context);
>
> Both calls to request.getXXX return an empty string in resin. In oc4j
> null
> is returned.
> The error is surfaced on line 1806:
> while (prefix.equals("") && ((lastSlash = matchPath.lastIndexOf("/")) >
> 0)) {
>
> Since the call to getModuleName passes in null, matchPath.lastIndexOf
> throws a NullPointerException.
>
> Good news is that this is open-source and I can hack the code for myself
>
> =). I'm curious of all the other sections of code in struts that make
> the
> assumption that the request object will return an instantiated object
> and
> not "null".? It appears that the servlet 2.3 specification specifies
> that
> returning null is the correct servlet implementation.
>
http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#getAttribute(java.lang.String)
>
> What is the best way to file bugs for both struts and strutstestcase?

Struts bugs are entered into bugzilla: http://nagoya.apache.org/bugzilla/

StrutsTestCase is an independent SourceForge project.

Both of the containers you mentioned are non-free which really limits what
we can do to test the problem.  I believe the majority of us are using
Tomcat because it's the free reference implementation of the Servlet and
JSP specs.  Tomcat should implement the specs *exactly* so if it fails
there, it's most likely a Struts bug.

David

>
> Thanks in advance!
>
> -Mark
>


__________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Mark T. McBride Computer Scientist Lawrence Livermore National Laboratory http://www.llnl.gov

Office: (925) 423-1627
Fax: (925) 423-3140

Reply via email to