You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by bu...@apache.org on 2004/03/29 17:42:58 UTC
DO NOT REPLY [Bug 28017] New: -
xsp: generating a XSP computed attribute does not work for ROOT element
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=28017>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=28017
xsp: generating a XSP computed attribute does not work for ROOT element
Summary: xsp: generating a XSP computed attribute does not work
for ROOT element
Product: Cocoon 2
Version: 2.1.4
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: Normal
Priority: Other
Component: core
AssignedTo: dev@cocoon.apache.org
ReportedBy: wouter.deruyck@cec.eu.int
I have experienced some problems generating xml with some computed attributes
in the root element.
If I try to execute this:
<?xml version="1.0" encoding="UTF-8"?>
<xsp:page xmlns:xsp="http://apache.org/xsp"
xmlns:xsp-request="http://apache.org/xsp/request/2.0"
xmlns:esql="http://apache.org/cocoon/SQL/v2"
xmlns:xsp-session="http://apache.org/xsp/session/2.0"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
create-session="true">
<!-- this is working fine -->
<xsp:logic>
String dummy = "aaa";
String s = (String)(request.getParameter("test"));
</xsp:logic>
<dum2>
<xsp:attribute name="key"><xsp:expr>s</xsp:expr>
</xsp:attribute>
</dum2>
</xsp:page>
Execution result is an error because if you look at generated code, the
request String object is generated as a class attibute and can't be initialize
because the request object is null.
:
Internal Server Error
Message: Language Exception
Description: org.apache.cocoon.ProcessingException: Language Exception:
org.apache.cocoon.components.language.LanguageException: Error while
instantiating org\apache\cocoon\www\dummy_xsp: java.lang.NullPointerException
Sender: org.apache.cocoon.servlet.CocoonServlet
Source: Cocoon Servlet
Request URI
dummy/bb
cause
java.lang.NullPointerException
request-uri
/cocoon/dummy/bb
full exception chain stacktrace
Original Exception: org.apache.cocoon.components.language.LanguageException:
Error while instantiating org\apache\cocoon\www\dummy_xsp:
java.lang.NullPointerException
Second try:
Then I thought about moving the logic code after the root tag, and hoped my
logic being moved in the generate method:
<?xml version="1.0" encoding="UTF-8"?>
<xsp:page xmlns:xsp="http://apache.org/xsp"
xmlns:xsp-request="http://apache.org/xsp/request/2.0"
xmlns:esql="http://apache.org/cocoon/SQL/v2"
xmlns:xsp-session="http://apache.org/xsp/session/2.0"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
create-session="true">
<!-- this is working fine -->
<dum2>
<xsp:logic>
String dummy = "aaa";
String s = (String)(request.getParameter("test"));
</xsp:logic>
<xsp:attribute name="key"><xsp:expr>s</xsp:expr>
</xsp:attribute>
</dum2>
</xsp:page>
This failed with a compilig error:
Internal Server Error
Message: Language Exception
Description: org.apache.cocoon.ProcessingException: Language Exception:
org.apache.cocoon.components.language.LanguageException: Error compiling
dummy_xsp: ERROR 1
(org\apache\cocoon\www\dummy_xsp.java): ... "", "key", "key", "CDATA", //
start error (lines 298-298) "s cannot be resolved" String.valueOf(s) + " " //
end error ); this.contentHandler.startElement( ... Line 298, column 0: s
cannot be resolved
Sender: org.apache.cocoon.servlet.CocoonServlet
Source: Cocoon Servlet
Request URI
dummy/bb
cause
org.apache.cocoon.components.language.LanguageException: Error compiling
dummy_xsp:
ERROR 1 (org\apache\cocoon\www\dummy_xsp.java):
...
"",
"key",
"key",
"CDATA",
// start error (lines 298-298) "s cannot be resolved"
String.valueOf(s) + " "
// end error
);
this.contentHandler.startElement(
...
Line 298, column 0: s cannot be resolved
This is because the generation of the attibute
xspAttr.addAttribute(
"",
"key",
"key",
"CDATA",
String.valueOf(s) + " "
);
is done after the declaration of the s variable!!!
If I move the code a little bit forward in the attribute tag I also
experienced that problem.
The only "turnaround" I found is putting an "artificial" root element like
here under and remove it afterword but it causes other troubles
in my following treatments:
<?xml version="1.0" encoding="UTF-8"?>
<xsp:page xmlns:xsp="http://apache.org/xsp"
xmlns:xsp-request="http://apache.org/xsp/request/2.0"
xmlns:esql="http://apache.org/cocoon/SQL/v2"
xmlns:xsp-session="http://apache.org/xsp/session/2.0"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
create-session="true">