You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2016/04/26 15:44:17 UTC

svn commit: r1741027 - in /myfaces/tobago/trunk/tobago-core/src: main/java/org/apache/myfaces/tobago/internal/webapp/ main/java/org/apache/myfaces/tobago/renderkit/html/ test/java/org/apache/myfaces/tobago/webapp/

Author: lofwyr
Date: Tue Apr 26 13:44:17 2016
New Revision: 1741027

URL: http://svn.apache.org/viewvc?rev=1741027&view=rev
Log:
TOBAGO-1556: Better readable HTML source code, whitespaces from TobagoResponseWriter

Modified:
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/JsonResponseWriter.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/TobagoResponseWriterBase.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
    myfaces/tobago/trunk/tobago-core/src/test/java/org/apache/myfaces/tobago/webapp/TobagoResponseWriterUnitTest.java

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/JsonResponseWriter.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/JsonResponseWriter.java?rev=1741027&r1=1741026&r2=1741027&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/JsonResponseWriter.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/JsonResponseWriter.java Tue Apr 26 13:44:17 2016
@@ -27,7 +27,6 @@ import org.apache.myfaces.tobago.util.Fa
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.faces.component.UIComponent;
 import javax.faces.context.ResponseWriter;
 import java.io.IOException;
 import java.io.Writer;
@@ -100,9 +99,8 @@ public class JsonResponseWriter extends
   }
 
   @Override
-  protected void startElementInternal(final Writer writer, final String name, final UIComponent currentComponent)
+  protected void startElementInternal(final Writer writer, final String name, final boolean inline)
       throws IOException {
-    setComponent(currentComponent);
     if (isStartStillOpen()) {
       writer.write(">");
     }

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/TobagoResponseWriterBase.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/TobagoResponseWriterBase.java?rev=1741027&r1=1741026&r2=1741027&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/TobagoResponseWriterBase.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/webapp/TobagoResponseWriterBase.java Tue Apr 26 13:44:17 2016
@@ -28,6 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 import java.io.IOException;
 import java.io.Writer;
 import java.net.URI;
@@ -42,6 +43,8 @@ public abstract class TobagoResponseWrit
 
   private int i = 0;
 
+  private int inlineStack = 0;
+
   private UIComponent component;
 
   private boolean startStillOpen;
@@ -52,10 +55,13 @@ public abstract class TobagoResponseWrit
 
   private final String characterEncoding;
 
+  private final boolean ajax;
+
   protected TobagoResponseWriterBase(final Writer writer, final String contentType, final String characterEncoding) {
     this.writer = writer;
     this.contentType = contentType;
     this.characterEncoding = characterEncoding != null ? characterEncoding : "UTF-8";
+    this.ajax = FacesContext.getCurrentInstance().getPartialViewContext().isPartialRequest();
   }
 
   protected final Writer getWriter() {
@@ -189,57 +195,78 @@ public abstract class TobagoResponseWrit
 
   @Override
   public void startElement(final String name, final UIComponent currentComponent) throws IOException {
-    startElementInternal(writer, name, currentComponent);
+    this.component = currentComponent;
+    startElementInternal(writer, name, HtmlElements.isInline(name));
   }
 
   @Override
   public void startElement(final HtmlElements name) throws IOException {
-    startElementInternal(writer, name.getValue(), null);
+    startElementInternal(writer, name.getValue(), name.isInline());
     if (!name.isVoid()) {
       i++;
     }
   }
 
-  protected void startElementInternal(final Writer writer, final String name, final UIComponent currentComponent)
+  protected void startElementInternal(final Writer writer, final String name, final boolean inline)
       throws IOException {
-    this.component = currentComponent;
 //    closeOpenTag();
     if (startStillOpen) {
       writer.write(">");
     }
-    writer.write("\n" + StringUtils.repeat("  ", i) + "<");
+    if (!ajax && inlineStack <= 0) {
+      writer.write("\n");
+      writer.write(StringUtils.repeat("  ", i));
+    }
+    writer.write("<");
     writer.write(name);
     startStillOpen = true;
+    if (inline) {
+      inlineStack++;
+    }
   }
 
   @Override
   public void endElement(final String name) throws IOException {
+    final boolean inline = HtmlElements.isInline(name);
     if (HtmlElements.isVoid(name)) {
       closeEmptyTag();
     } else {
-      endElementInternal(writer, name, false);
+      endElementInternal(writer, name, inline);
     }
     startStillOpen = false;
+    if (inline) {
+      inlineStack--;
+      assert inlineStack >= 0;
+    }
   }
 
   @Override
   public void endElement(final HtmlElements name) throws IOException {
+    final boolean inline = name.isInline();
     if (name.isVoid()) {
       closeEmptyTag();
     } else {
       if (!name.isVoid()) {
         i--;
       }
-      endElementInternal(writer, name.getValue(), name.isInline());
+      endElementInternal(writer, name.getValue(), inline);
     }
     startStillOpen = false;
+    if (inline) {
+      inlineStack--;
+      assert inlineStack >= 0;
+    }
   }
 
   @Override
   public void writeComment(final Object obj) throws IOException {
     closeOpenTag();
     final String comment = obj.toString();
-    write("\n" + StringUtils.repeat("  ", i) + "<!--");
+    if (!ajax) {
+      writer.write("\n");
+      writer.write(StringUtils.repeat("  ", i));
+    }
+    write("<!--");
     write(comment);
     write("-->");
   }
@@ -302,7 +329,7 @@ public abstract class TobagoResponseWrit
     if (startStillOpen) {
       writer.write(">");
     }
-    if (inline) {
+    if (inline || ajax) {
       writer.write("</");
     } else {
       writer.write("\n" + StringUtils.repeat("  ", i) + "</");

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java?rev=1741027&r1=1741026&r2=1741027&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java Tue Apr 26 13:44:17 2016
@@ -43,7 +43,7 @@ public enum HtmlElements {
   CANVAS("canvas"),
   CAPTION("caption"),
   CITE("cite", Qualifier.INLINE),
-  CODE("code"),
+  CODE("code", Qualifier.INLINE),
   COL("col", Qualifier.VOID),
   COLGROUP("colgroup"),
   COMMAND("command", Qualifier.VOID),
@@ -97,7 +97,7 @@ public enum HtmlElements {
   OPTION("option"),
   P("p"),
   PARAM("param", Qualifier.VOID),
-  PRE("pre"),
+  PRE("pre", Qualifier.INLINE),
   PROGRESS("progress"),
   Q("q"),
   RP("rp"),
@@ -138,6 +138,7 @@ public enum HtmlElements {
   private final boolean inlineElement;
 
   private static final Set<String> VOIDS = new HashSet<String>();
+  private static final Set<String> INLINES = new HashSet<String>();
 
   HtmlElements(final String value, final Qualifier... qualifiers) {
     this.value = value;
@@ -150,6 +151,9 @@ public enum HtmlElements {
       if (htmlElement.isVoid()) {
         VOIDS.add(htmlElement.getValue());
       }
+      if (htmlElement.isInline()) {
+        INLINES.add(htmlElement.getValue());
+      }
     }
   }
 
@@ -174,5 +178,9 @@ public enum HtmlElements {
     return VOIDS.contains(name);
   }
 
+  public static boolean isInline(final String name) {
+    return INLINES.contains(name);
+  }
+
   private enum Qualifier {VOID, INLINE}
 }

Modified: myfaces/tobago/trunk/tobago-core/src/test/java/org/apache/myfaces/tobago/webapp/TobagoResponseWriterUnitTest.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/test/java/org/apache/myfaces/tobago/webapp/TobagoResponseWriterUnitTest.java?rev=1741027&r1=1741026&r2=1741027&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/test/java/org/apache/myfaces/tobago/webapp/TobagoResponseWriterUnitTest.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/test/java/org/apache/myfaces/tobago/webapp/TobagoResponseWriterUnitTest.java Tue Apr 26 13:44:17 2016
@@ -19,6 +19,7 @@
 
 package org.apache.myfaces.tobago.webapp;
 
+import org.apache.myfaces.test.base.junit4.AbstractJsfTestCase;
 import org.apache.myfaces.tobago.internal.webapp.HtmlResponseWriter;
 import org.apache.myfaces.tobago.internal.webapp.XmlResponseWriter;
 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
@@ -30,13 +31,14 @@ import org.junit.Test;
 import java.io.IOException;
 import java.io.StringWriter;
 
-public class TobagoResponseWriterUnitTest {
+public class TobagoResponseWriterUnitTest extends AbstractJsfTestCase {
 
   private StringWriter stringWriter;
   private TobagoResponseWriter writer;
 
   @Before
   public void setUp() throws Exception {
+    super.setUp();
     stringWriter = new StringWriter();
     writer = new HtmlResponseWriter(stringWriter, "", "UTF-8");
   }
@@ -70,7 +72,7 @@ public class TobagoResponseWriterUnitTes
     writer.endElement(HtmlElements.SELECT);
     Assert.assertEquals("attr tag", "\n<select value='0'></select>", stringWriter.toString());
   }
-  
+
   @Test
   public void testURIAttribute() throws IOException {
     writer.startElement(HtmlElements.A);