You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ba...@apache.org on 2010/07/23 11:37:47 UTC
svn commit: r967014 -
/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
Author: baranda
Date: Fri Jul 23 09:37:47 2010
New Revision: 967014
URL: http://svn.apache.org/viewvc?rev=967014&view=rev
Log:
MYFACES-2836 - HtmlResponseWriterImpl does not check if a CDATA section is already opened when writing the content of a script
Modified:
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java?rev=967014&r1=967013&r2=967014&view=diff
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java Fri Jul 23 09:37:47 2010
@@ -94,6 +94,8 @@ public class HtmlResponseWriterImpl
private UIComponent _startElementUIComponent;
private boolean _startTagOpen;
+ private boolean _cdataOpen;
+
private static final Set<String> s_emptyHtmlElements = new HashSet<String>();
private static final String CDATA_START = "<![CDATA[ \n";
@@ -246,6 +248,22 @@ public class HtmlResponseWriterImpl
}
}
+ @Override
+ public void startCDATA() throws IOException {
+ if (!_cdataOpen) {
+ write(CDATA_START);
+ _cdataOpen = true;
+ }
+ }
+
+ @Override
+ public void endCDATA() throws IOException {
+ if (_cdataOpen) {
+ write(CDATA_END);
+ _cdataOpen = false;
+ }
+ }
+
private void closeStartTagIfNecessary() throws IOException
{
if (_startTagOpen)
@@ -371,6 +389,8 @@ public class HtmlResponseWriterImpl
resetStartedElement();
}
+
+
private void writeStyleContent() throws IOException
{
@@ -432,9 +452,26 @@ public class HtmlResponseWriterImpl
{
// In xhtml use xml comment to wrap is invalid, so it is only required to remove the <!--
// the ending //--> will be parsed as a comment, so it will not be a problem. Let it on the content.
- _outputWriter.write(CDATA_COMMENT_START);
+ if (_cdataOpen)
+ {
+ _outputWriter.write("//\n");
+ }
+ else
+ {
+ _outputWriter.write(CDATA_COMMENT_START);
+ }
+
_outputWriter.write(trimmedContent.substring(4));
- _outputWriter.write(CDATA_COMMENT_END);
+
+ if (_cdataOpen)
+ {
+ _outputWriter.write("\n");
+ }
+ else
+ {
+ _outputWriter.write(CDATA_COMMENT_END);
+ }
+
return;
}
else if (CommentUtils.isStartMatchWithCommentedCDATA(trimmedContent) && CommentUtils.isEndMatchWithCommentedCDATA(trimmedContent))
@@ -451,9 +488,26 @@ public class HtmlResponseWriterImpl
{
// <script> in xhtml has as content type PCDATA, but in html it is CDATA,
// so we need to wrap here to prevent problems.
- _outputWriter.write(CDATA_COMMENT_START);
+ if (_cdataOpen)
+ {
+ _outputWriter.write("//\n");
+ }
+ else
+ {
+ _outputWriter.write(CDATA_COMMENT_START);
+ }
+
_outputWriter.write(content);
- _outputWriter.write(CDATA_COMMENT_END);
+
+ if (_cdataOpen)
+ {
+ _outputWriter.write("\n");
+ }
+ else
+ {
+ _outputWriter.write(CDATA_COMMENT_END);
+ }
+
return;
}
}