You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by th...@apache.org on 2024/02/09 10:21:46 UTC
(wicket) branch WICKET-6890-debug-strategy created (now 5ae5697fbf)
This is an automated email from the ASF dual-hosted git repository.
theigl pushed a change to branch WICKET-6890-debug-strategy
in repository https://gitbox.apache.org/repos/asf/wicket.git
at 5ae5697fbf WICKET-6890 Introduce strategy for class name debug output
This branch includes the following new commits:
new 5ae5697fbf WICKET-6890 Introduce strategy for class name debug output
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(wicket) 01/01: WICKET-6890 Introduce strategy for class name debug output
Posted by th...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
theigl pushed a commit to branch WICKET-6890-debug-strategy
in repository https://gitbox.apache.org/repos/asf/wicket.git
commit 5ae5697fbfc2d978e8b8ef4525484207b057b88d
Author: Thomas Heigl <th...@gmail.com>
AuthorDate: Fri Feb 9 11:18:19 2024 +0100
WICKET-6890 Introduce strategy for class name debug output
---
...OutputMarkupContainerClassNameBehaviorTest.java | 26 +++++++++--
.../java/org/apache/wicket/MarkupContainer.java | 23 ++++++++--
.../src/main/java/org/apache/wicket/Page.java | 3 +-
.../OutputMarkupContainerClassNameBehavior.java | 4 +-
.../org/apache/wicket/settings/DebugSettings.java | 53 ++++++++++++++++++++--
.../org/apache/wicket/jmx/DebugSettingsMBean.java | 2 +
6 files changed, 97 insertions(+), 14 deletions(-)
diff --git a/wicket-core-tests/src/test/java/org/apache/wicket/behavior/OutputMarkupContainerClassNameBehaviorTest.java b/wicket-core-tests/src/test/java/org/apache/wicket/behavior/OutputMarkupContainerClassNameBehaviorTest.java
index 77de9af69c..782ff1186d 100644
--- a/wicket-core-tests/src/test/java/org/apache/wicket/behavior/OutputMarkupContainerClassNameBehaviorTest.java
+++ b/wicket-core-tests/src/test/java/org/apache/wicket/behavior/OutputMarkupContainerClassNameBehaviorTest.java
@@ -21,15 +21,16 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import org.apache.wicket.MockPanelWithLink;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.settings.DebugSettings;
import org.apache.wicket.util.tester.WicketTestCase;
import org.junit.jupiter.api.Test;
class OutputMarkupContainerClassNameBehaviorTest extends WicketTestCase {
@Test
- void whenDebugIsEnabled_thenRenderAttribute()
+ void whenDebugIsEnabledWithAttribute_thenRenderAttribute()
{
- tester.getApplication().getDebugSettings().setOutputMarkupContainerClassName(true);
+ tester.getApplication().getDebugSettings().setOutputMarkupContainerClassNameStrategy(DebugSettings.ClassOutputStrategy.TAG_ATTRIBUTE);
MockPanelWithLink component = new MockPanelWithLink("test") {
@Override
@@ -43,9 +44,25 @@ class OutputMarkupContainerClassNameBehaviorTest extends WicketTestCase {
}
@Test
- void whenDebugIsDisabled_thenDontRenderAttribute()
+ void whenDebugIsEnabledWithComment_thenRenderComment()
{
- tester.getApplication().getDebugSettings().setOutputMarkupContainerClassName(false);
+ tester.getApplication().getDebugSettings().setOutputMarkupContainerClassNameStrategy(DebugSettings.ClassOutputStrategy.HTML_COMMENT);
+
+ MockPanelWithLink component = new MockPanelWithLink("test") {
+ @Override
+ protected void onLinkClick(AjaxRequestTarget target) {
+
+ }
+ };
+ tester.startComponentInPage(component);
+
+ assertTrue(tester.getLastResponseAsString().contains("<!-- MARKUP FOR org.apache.wicket.MockPanelWithLink BEGIN -->"));
+ }
+
+ @Test
+ void whenDebugIsDisabled_thenDontRenderAttributeOrComment()
+ {
+ tester.getApplication().getDebugSettings().setOutputMarkupContainerClassNameStrategy(DebugSettings.ClassOutputStrategy.NONE);
MockPanelWithLink component = new MockPanelWithLink("test") {
@Override
@@ -56,5 +73,6 @@ class OutputMarkupContainerClassNameBehaviorTest extends WicketTestCase {
tester.startComponentInPage(component);
assertFalse(tester.getLastResponseAsString().contains("<wicket:panel wicket:className=\"org.apache.wicket.MockPanelWithLink\">"));
+ assertFalse(tester.getLastResponseAsString().contains("<!-- MARKUP FOR org.apache.wicket.MockPanelWithLink BEGIN -->"));
}
}
diff --git a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
index 8703c61635..fbd83ea012 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -787,9 +787,10 @@ public abstract class MarkupContainer extends Component implements Iterable<Comp
try
{
setIgnoreAttributeModifier(true);
- final boolean outputClassName = getApplication().getDebugSettings()
- .isOutputMarkupContainerClassName();
- if (outputClassName)
+
+ final DebugSettings.ClassOutputStrategy outputClassName = getApplication().getDebugSettings()
+ .getOutputMarkupContainerClassNameStrategy();
+ if (outputClassName == DebugSettings.ClassOutputStrategy.TAG_ATTRIBUTE)
{
associatedMarkupOpenTag.addBehavior(OutputMarkupContainerClassNameBehavior.INSTANCE);
}
@@ -797,8 +798,24 @@ public abstract class MarkupContainer extends Component implements Iterable<Comp
renderComponentTag(associatedMarkupOpenTag);
associatedMarkupStream.next();
+ String className = null;
+ if (outputClassName == DebugSettings.ClassOutputStrategy.HTML_COMMENT)
+ {
+ className = Classes.name(getClass());
+ getResponse().write("<!-- MARKUP FOR ");
+ getResponse().write(className);
+ getResponse().write(" BEGIN -->");
+ }
+
renderComponentTagBody(associatedMarkupStream, associatedMarkupOpenTag);
+ if (outputClassName == DebugSettings.ClassOutputStrategy.HTML_COMMENT)
+ {
+ getResponse().write("<!-- MARKUP FOR ");
+ getResponse().write(className);
+ getResponse().write(" END -->");
+ }
+
renderClosingComponentTag(associatedMarkupStream, associatedMarkupOpenTag, false);
}
finally
diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java b/wicket-core/src/main/java/org/apache/wicket/Page.java
index 956b9b59af..51e689bfd6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Page.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Page.java
@@ -827,9 +827,10 @@ public abstract class Page extends MarkupContainer
getSession().getPageManager().touchPage(this);
}
+ //TODO WICKET-6890 What about TAG_ATTRIBUTE?
if (getApplication().getDebugSettings().isOutputMarkupContainerClassName())
{
- String className = Classes.name(getClass());
+ final String className = Classes.name(getClass());
getResponse().write("<!-- Page Class ");
getResponse().write(className);
getResponse().write(" END -->\n");
diff --git a/wicket-core/src/main/java/org/apache/wicket/behavior/OutputMarkupContainerClassNameBehavior.java b/wicket-core/src/main/java/org/apache/wicket/behavior/OutputMarkupContainerClassNameBehavior.java
index 8783d01533..3ffa2da88e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/behavior/OutputMarkupContainerClassNameBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/behavior/OutputMarkupContainerClassNameBehavior.java
@@ -28,9 +28,9 @@ import org.apache.wicket.util.lang.Classes;
* the markup element of {@link ComponentTag} with value the fully
* qualified class name of the markup container.</p>
*
- * <p>It is used internally by Wicket when {@link DebugSettings#isOutputMarkupContainerClassName()} is active.</p>
+ * <p>It is used internally by Wicket when {@link org.apache.wicket.settings.DebugSettings.ClassOutputStrategy#TAG_ATTRIBUTE} is active.</p>
*
- * @see DebugSettings#setOutputMarkupContainerClassName(boolean)
+ * @see DebugSettings#setOutputMarkupContainerClassNameStrategy(DebugSettings.ClassOutputStrategy)
*/
public class OutputMarkupContainerClassNameBehavior extends Behavior {
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/DebugSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/DebugSettings.java
index 92d393ea3a..1ac0c6a63b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/settings/DebugSettings.java
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/DebugSettings.java
@@ -54,7 +54,7 @@ public class DebugSettings
/**
* Whether the container's class name should be printed to response (in a html comment).
*/
- private boolean outputMarkupContainerClassName = false;
+ private ClassOutputStrategy outputMarkupContainerClassNameStrategy = ClassOutputStrategy.NONE;
private String componentPathAttributeName = null;
@@ -104,14 +104,26 @@ public class DebugSettings
}
/**
- * Returns whether the output of markup container's should be wrapped by comments containing the
+ * Returns whether the output of markup container's should contain the
* container's class name.
*
* @return true if the markup container's class name should be written to response
+ * @deprecated use {@link #getOutputMarkupContainerClassNameStrategy()} instead
*/
+ @Deprecated(forRemoval = true)
public boolean isOutputMarkupContainerClassName()
{
- return outputMarkupContainerClassName;
+ return outputMarkupContainerClassNameStrategy != ClassOutputStrategy.NONE;
+ }
+
+ /**
+ * Returns the strategy for outputting the class of a markup
+ *
+ * @return the strategy for outputting the class of a markup
+ */
+ public ClassOutputStrategy getOutputMarkupContainerClassNameStrategy()
+ {
+ return outputMarkupContainerClassNameStrategy;
}
/**
@@ -173,10 +185,24 @@ public class DebugSettings
*
* @param enable
* @return {@code this} object for chaining
+ * @deprecated use {@link #setOutputMarkupContainerClassNameStrategy(ClassOutputStrategy)} instead
*/
+ @Deprecated(forRemoval = true)
public DebugSettings setOutputMarkupContainerClassName(boolean enable)
{
- outputMarkupContainerClassName = enable;
+ outputMarkupContainerClassNameStrategy = enable ? ClassOutputStrategy.HTML_COMMENT : ClassOutputStrategy.NONE;
+ return this;
+ }
+
+ /**
+ * Sets the strategy for outputting the class of a markup
+ *
+ * @param stategy
+ * @@return {@code this} object for chaining
+ */
+ public DebugSettings setOutputMarkupContainerClassNameStrategy(ClassOutputStrategy stategy)
+ {
+ outputMarkupContainerClassNameStrategy = stategy;
return this;
}
@@ -233,4 +259,23 @@ public class DebugSettings
{
return developmentUtilitiesEnabled;
}
+
+ /**
+ * Strategy for outputting the class of a markup container
+ */
+ public enum ClassOutputStrategy
+ {
+ /**
+ * Output the container's class name in an HTML comment
+ */
+ HTML_COMMENT,
+ /**
+ * Output the container's class name in a tag attribute
+ */
+ TAG_ATTRIBUTE,
+ /**
+ * Do not output the container's class name
+ */
+ NONE
+ }
}
diff --git a/wicket-jmx/src/main/java/org/apache/wicket/jmx/DebugSettingsMBean.java b/wicket-jmx/src/main/java/org/apache/wicket/jmx/DebugSettingsMBean.java
index 283f5ed6e4..28eac71bc5 100644
--- a/wicket-jmx/src/main/java/org/apache/wicket/jmx/DebugSettingsMBean.java
+++ b/wicket-jmx/src/main/java/org/apache/wicket/jmx/DebugSettingsMBean.java
@@ -71,6 +71,8 @@ public interface DebugSettingsMBean
* Enables wrapping output of markup container in html comments that contain markup container's
* class name. (Useful for determining which part of page belongs to which markup file).
*
+ * //TODO WICKET-6890 JMX Probably does not work with enum, What do we do here?
+ *
* @param enable
*/
void setOutputMarkupContainerClassName(boolean enable);