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);