Sylvain Wallez wrote:
>
> There's a CPU/memory eater in ServerPagesGenerator : each startElement
> is stored in a stack in order to properly close all opened elements in
> case of premature end of the XSP (return statement or exception). Cocoon
> 1 didn't have this because of the use of DOM : even if partially
> generated, the DOM is always a valid XML document.
>
> This stack is a LinkedList to which EventData objects are appended. This
> means for each element, 2 objects are allocated : the EventData object,
> and a LinkedList node. We can change this stuff to use a single
> ArrayStack (from excalibur.collections) and no EventData object, which
> should significantly reduce CPU consumption.
>
> But the real question is : can an XSP be considered valid if it contains
> a "return" statement ? I personnaly never saw such XSPs. Also, this
> stuff is only a half protection against bogus code in the XSP : it will
> take care of having as much closed elements as opened ones, but doesn't
> check proper balancing nor do anything for constructs like a "break" in
> a loop inside an XML element.
>
> So my opinion is remove this costly stuff and forbid return statements
> in xsp:logic. This will make a speedy XSP engine.
>
> Your thoughts ?
Before you throw out the baby with the bath water, we have to consider the
creation of methods in XSP. If a method is created by the <xsp:logic>
section outside of the root element, then you must allow a return statement.
for example:
<xsp:page>
<xsp:logic>
/** should be legal */
private int getUserId() {
return ((Integer) request.getSession().getAttribute("userid")).intValue();
}
</xsp:logic>
<mypage>
<xsp:logic>
int userid = getUserId();
return; // should be Illegal
</xsp:logic>
</mypage>
</xsl:page>
Do you notice the key distinction?
--
"They that give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety."
- Benjamin Franklin
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]