You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/07/11 00:37:50 UTC
svn commit: r962932 - in /myfaces/shared/trunk/core/src:
main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
test/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImplTest.java
Author: lu4242
Date: Sat Jul 10 22:37:50 2010
New Revision: 962932
URL: http://svn.apache.org/viewvc?rev=962932&view=rev
Log:
MYFACES-1353 HtmlResponseWriterImpl - Prematurely Closes HTML Elements
Modified:
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImplTest.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=962932&r1=962931&r2=962932&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 Sat Jul 10 22:37:50 2010
@@ -50,6 +50,9 @@ public class HtmlResponseWriterImpl
private static final String DEFAULT_CHARACTER_ENCODING = "ISO-8859-1";
private static final String UTF8 = "UTF-8";
+ private static String APPLICATION_XML_CONTENT_TYPE = "application/xml";
+ private static String TEXT_XML_CONTENT_TYPE = "text/xml";
+
//private boolean _writeDummyForm = false;
//private Set _dummyFormParams = null;
@@ -75,6 +78,12 @@ public class HtmlResponseWriterImpl
*/
private boolean _isXhtmlContentType;
+ /**
+ * Indicate the current response writer should not close automatically html elements
+ * and let the writer close them.
+ */
+ private boolean _useStraightXml;
+
private String _characterEncoding;
private boolean _wrapScriptContentWithXmlCommentTag;
@@ -135,6 +144,9 @@ public class HtmlResponseWriterImpl
}
_isXhtmlContentType = HtmlRendererUtils.isXHTMLContentType(_contentType);
+ _useStraightXml = contentType.indexOf(APPLICATION_XML_CONTENT_TYPE) != -1 ||
+ contentType.indexOf(TEXT_XML_CONTENT_TYPE) != -1;
+
if (characterEncoding == null)
{
if (log.isLoggable(Level.FINE)) log.fine("No character encoding given, using default character encoding " + DEFAULT_CHARACTER_ENCODING);
@@ -238,7 +250,7 @@ public class HtmlResponseWriterImpl
{
if (_startTagOpen)
{
- if (s_emptyHtmlElements.contains(_startElementName.toLowerCase()))
+ if (!_useStraightXml && s_emptyHtmlElements.contains(_startElementName.toLowerCase()))
{
_currentWriter.write(" />");
// make null, this will cause NullPointer in some invalid element nestings
@@ -332,7 +344,7 @@ public class HtmlResponseWriterImpl
}
else
{
- if (s_emptyHtmlElements.contains(name.toLowerCase()))
+ if (!_useStraightXml && s_emptyHtmlElements.contains(name.toLowerCase()))
{
/*
Should this be here? It warns even when you have an x:htmlTag value="br", it should just close.
Modified: myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImplTest.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImplTest.java?rev=962932&r1=962931&r2=962932&view=diff
==============================================================================
--- myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImplTest.java (original)
+++ myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImplTest.java Sat Jul 10 22:37:50 2010
@@ -307,7 +307,6 @@ public class HtmlResponseWriterImplTest
*
* @throws IOException
*/
- /* Test not valid because backward compatibility
public void testEmptyTagNotRenderEndOnXml() throws IOException
{
_writer = new HtmlResponseWriterImpl(_stringWriter, "application/xml", "UTF-8", false);
@@ -326,14 +325,12 @@ public class HtmlResponseWriterImplTest
assertTrue(output.contains("<br>"));
assertTrue(output.contains("</br>"));
}
- */
/**
* In html, it is not valid to have an empty tag with content
*
* @throws IOException
*/
- /* Test not valid because backward compatibility
public void testEmptyTagNotRenderEndUppercase() throws IOException
{
_writer.startDocument();
@@ -349,14 +346,13 @@ public class HtmlResponseWriterImplTest
assertNotNull(output);
assertTrue(output.contains("<BR />"));
assertFalse(output.contains("</BR>"));
- }*/
+ }
/**
* In xhtml, it is valid to have an html empty tag with content.
*
* @throws IOException
*/
- /* Test not valid because backward compatibility
public void testEmptyTagNotRenderEndOnXhtmlUppercase() throws IOException
{
_writer = new HtmlResponseWriterImpl(_stringWriter, "application/xml", "UTF-8", false);
@@ -374,5 +370,5 @@ public class HtmlResponseWriterImplTest
assertNotNull(output);
assertTrue(output.contains("<BR>"));
assertTrue(output.contains("</BR>"));
- }*/
+ }
}
\ No newline at end of file