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