WW-4891 PrepareOperations overrideDevMode for explicitly switch on for this action only

This commit is contained in:
Hedju Hor
2018-01-18 23:10:25 +01:00
parent 02b61b2c05
commit 17b598433d
5 changed files with 42 additions and 28 deletions
@@ -0,0 +1,30 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.struts2.showcase.tag.nonui.debugtag;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.dispatcher.PrepareOperations;
public class DebugTagAction extends ActionSupport {
public String execute() throws Exception {
PrepareOperations.overrideDevMode(true); // Just for Showcase, explicitly switch on for this action only
return SUCCESS;
}
}
@@ -151,7 +151,7 @@
<action name="date">
<result>/WEB-INF/tags/non-ui/date.jsp</result>
</action>
<action name="debugTagDemo">
<action name="debugTagDemo" class="org.apache.struts2.showcase.tag.nonui.debugtag.DebugTagAction">
<result>/WEB-INF/tags/non-ui/debug.jsp</result>
</action>
</package>
@@ -42,7 +42,7 @@
<p>
Just click on the Debug label to see the Struts ValueStack Debug information.
<p/>
<s:debug disabled="false" />
<s:debug />
</div>
</div>
</div>
@@ -30,11 +30,12 @@ import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.dispatcher.PrepareOperations;
import org.apache.struts2.views.annotations.StrutsTag;
import org.apache.struts2.StrutsException;
@StrutsTag(name="debug", tldTagClass="org.apache.struts2.views.jsp.ui.DebugTag",
description="Prints debugging information (Only if 'struts.devMode' enabled or disable tag is set 'false')")
description="Prints debugging information (Only if 'struts.devMode' is enabled)")
public class Debug extends UIBean {
public static final String TEMPLATE = "debug";
@@ -88,7 +89,7 @@ public class Debug extends UIBean {
}
protected boolean showDebug() {
return (devMode || "false".equalsIgnoreCase(disabled));
return (devMode || Boolean.TRUE == PrepareOperations.getDevModeOverride());
}
private static class DebugMapEntry implements Map.Entry {
@@ -25,6 +25,7 @@ import com.opensymphony.xwork2.test.StubConfigurationProvider;
import com.opensymphony.xwork2.util.location.LocatableProperties;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.dispatcher.PrepareOperations;
import org.apache.struts2.views.jsp.AbstractUITagTest;
import java.util.HashMap;
@@ -63,44 +64,26 @@ public class DebugTagTest extends AbstractUITagTest {
assertTrue("nothing to see here, devMode=false", StringUtils.isEmpty(writer.toString()));
}
public void testTagAttributeDisableEmpty() throws Exception {
public void testTagAttributeOverrideDevModeTrue() throws Exception {
setDevMode(false);
tag.doStartTag();
tag.doEndTag();
assertTrue("nothing to see here, devMode=false and Tag<disable> not set", StringUtils.isEmpty(writer.toString()));
}
public void testTagAttributeDisableFalse() throws Exception {
setDevMode(false);
tag.setDisabled("false");
PrepareOperations.overrideDevMode(true);
tag.doStartTag();
tag.doEndTag();
String result = writer.toString();
assertTrue("devMode=false but Tag<disable> is set 'false'", StringUtils.isNotEmpty(result));
assertTrue(StringUtils.isNotEmpty(result));
assertTrue("Property 'checkStackProperty' should be in Debug Tag output", StringUtils.contains(result, "<td>checkStackProperty</td>"));
}
public void testTagAttributeDisableTrue() throws Exception {
public void testTagAttributeOverrideDevModeFalse() throws Exception {
setDevMode(false);
tag.setDisabled("true");
PrepareOperations.overrideDevMode(false);
tag.doStartTag();
tag.doEndTag();
assertTrue("nothing to see here, devMode=false and Tag<disable> is set 'true", StringUtils.isEmpty(writer.toString()));
assertTrue("nothing to see here, devMode=false and overrideDevMode=false", StringUtils.isEmpty(writer.toString()));
}
public void testTagAttributeDisableAny() throws Exception {
setDevMode(false);
tag.setDisabled("rubbish");
tag.doStartTag();
tag.doEndTag();
assertTrue("nothing to see here, devMode=false and Tag<disable> is set 'rubbish", StringUtils.isEmpty(writer.toString()));
}
private void setDevMode(final boolean devMode) {
setStrutsConstant(new HashMap<String, String>() {{
put(StrutsConstants.STRUTS_DEVMODE, Boolean.toString(devMode));