Yeah Werner, you should take holidays seriously :) Thanks!
Bruno
On 23 July 2010 13:28, Werner Punz <[email protected]
<mailto:[email protected]>> wrote:
Hi I have written a load of tests for the PPR responsewriter to have
it covered, but I will do some additional testing mid next week (and
will commit those tests) if the ppr responsewriter still behaves as
it should after the patch.
Since we are not in the middle of another release I can guess the
additional testing on the ppr responsewriter can wait a little bit.
If anything negative comes out I probably can fix it on the ppr
writers side.
Werner
Am 23.07.10 13:05, schrieb Matthias Wessendorf:
re-tested; works fine with your patch as well
On Fri, Jul 23, 2010 at 11:37 AM, Bruno
Aranda<[email protected] <mailto:[email protected]>> wrote:
Hi,
But the patch had not been checked it yet? Or did you patch
it before trying
the tests?
In any case, I have committed it just now, all myfaces tests
pass.
Cheers!
Bruno
On 23 July 2010 08:26, Matthias Wessendorf<[email protected]
<mailto:[email protected]>> wrote:
I just tested 2.0.2-SNAPSHOT with our internal version
of ADF Faces,
that runs on JSF2.
My jetty powered environment gives me no errors with our
latest trunk...
-Matthias
On Thu, Jul 22, 2010 at 9:36 PM, Werner
Punz<[email protected] <mailto:[email protected]>>
wrote:
Btw. one issue about this, check if your fix does
not break anything in
the
ppr case.
The problem is that the ppr responseWriter simply
delegates the
HtmlResponseWriterImpl, but the issue is
that CDATA blocks are automatically opened before
any html is rendered,
any
valid CDATA block inside should not be swallowed but
escaped in that
case.
So a ppr response looks like this
<changes>
<update id="bla"><![CDATA[<div id="bla"> ....</div>
]]></update>
The problem is that per spec definition the xhr
response must be xml
and any html must be embedded within CDATA blocks,
now if there is
another
CDATA block within the valid html it must be
preserved at all costs
because
it is vital that it is properly rendered at the ppr
update time (hence
the
complicated escaping in my code)
Werner
Am 22.07.10 21:31, schrieb Werner Punz:
Ok point taken, yes the HTMLResponseWriterImpl
definitely is html so a
fix there is valid.
Werner
Am 22.07.10 20:11, schrieb Bruno Aranda:
But we are talking about the
HtmlResponseWriterImpl, which outputs
HTML.
The fix I have done is in that class and it
only checks if there is a
CDATA already started before starting one
when writing the scripts. It
is slightly different to the original
problem (about the HtmlResponse,
which is different from the one in Mojarra).
The fix simply checks if
there is the CDATA around the script before
opening another one inside
the script. I think it is OK if we just do
not nest CDATAs in the HTML
response, even if it was allowed.
And this fixes the problems with PrimeFaces
too, without having to
change the ResponseWriter or the
PartialResponseWriterImpl...
Bruno
On 22 July 2010 16:59, Werner
Punz<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>> wrote:
Hia guys please also read up on my jira
response.
The entire thing is not as easy as it seems,
because there are
various ways a cdata block can be opened,
first you can do it via
startCDATA secondly you can do it via a
direct write.
I did some kind of double buffering in case
of a cdata block was
opened and then escaped the ]]> as multiple
cdata blocks (the jira
response explains the technique exactly)
And yes there is somewhat a speed hit
because of this, but in case
of the partial response writer I did not
have a chance because:
But the partial response writer is somewhat
different, because it
has to press html code in a valid xml
response format, so nested
cdata blocks can occur naturally, the normal
response writer is
somewhat different because nested cdata
blocks are only forbidden
for xmlish output dialects others might
allow it.
Werner
Am 22.07.10 17:47, schrieb Mark Struberg:
But isn't the patch of Marcus Büttner doing
this by maintaining
a reference
counter?
Another question: how is the performance of
all this
scanning/dynamic
replacement?
LieGrue,
strub
From: Bruno Aranda<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>>
To: MyFaces
Development<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>>
Sent: Thu, July 22, 2010 5:26:35 PM
Subject: Re: Fixing
ResponseWriter.startCDATA/endCDATA
Further investigation of this
incompatibility problem with
myfaces leads me to
the fact that in the HtmlResponseWriterImpl,
when we write
the content of a
script, we create a CDATA element without
checking if is
nested at all. That is
a problem, because if we use the standard
response writer
and we write a script
section inside a CDATA section, the problem
will be triggered...
We need a way in HtmlResponseWriterImpl to
check nested
CDATA calls to the
startCDATA or endCDATA methods I guess.
Cheers,
Bruno
On 22 July 2010 15:15, Bruno
Aranda<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>> wrote:
Just clicked on sent and Werner had answered
in the JIRA
issue explaining the
partial approach...
Cheers,
Bruno
On 22 July 2010 15:12, Bruno
Aranda<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>> wrote:
As you can see in my black box tests with
Mojarra, the
behaviour is different in
both implementations. In the base
ResponseWriter class,
they don't do anything
in the startCDATA method and throw an
undocumented
exception in the endCDATA.
In both implementations of the base class, they
throw an exception if the
startCDATA method is called and it had been
called
already...
I don't quite understand our implementation
of the
PartialResponseWriterImpl. We
do buffer nested CDATAs and write them when
closing
the parent one? This would
still create nested CDATAs... I still need to
understand this bit properly,
Cheers,
Bruno
On 22 July 2010 13:58, Bruno
Aranda<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>> wrote:
yeah, sorry, my problem was running only the API
tests :)
Bruno
On 22 July 2010 13:48, Matthias
Wessendorf<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>> wrote:
On Thu, Jul 22, 2010 at 2:14 PM, Matthias
Wessendorf<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>>
wrote:
so, maybe there are now regressions?
hrm. have you done some testing?
Ah, the discussion is on the JIRA..
please run tests, before committing ;-)
-M
On Thu, Jul 22, 2010 at 2:07 PM,
Matthias Wessendorf<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>>
wrote:
sounds right.
does blame say more why it does not
do nothing?
It is also kinda strange since the
TCK was successfully executed for
2.0.0 and 2.0.1;
-Matthias
On Thu, Jul 22, 2010 at 1:48 PM,
Bruno Aranda<[email protected]
<mailto:[email protected]>
<mailto:[email protected]
<mailto:[email protected]>>>
wrote:
Hi,
Having problems with Primefaces
again I have realised that something
was
working with Mojarra, but not
with MyFaces. Again, is the
ResponseWriter.startCDATA stuff
which Primefaces invokes directly on
its
main phase listener.
However, reading the javadocs:
https://javaserverfaces.dev.java.net/nonav/docs/2.0/javadocs/index.html
It says that method "should
take no action when invoked"...
which
means
that it should be completely
empty as far as I understand. If
that was
the
case, we would get the same
behaviour in both implementations...
Cheers,
Bruno
--
Matthias Wessendorf
blog:
http://matthiaswessendorf.wordpress.com/
sessions:
http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf
--
Matthias Wessendorf
blog:
http://matthiaswessendorf.wordpress.com/
sessions:
http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf
--
Matthias Wessendorf
blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf
--
Matthias Wessendorf
blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf