WW-5288 Export exempt classes as part of ConstantConfig

This commit is contained in:
Kusal Kithul-Godage
2023-03-02 18:14:54 +11:00
parent ff19dfee6f
commit acf68be1ee
2 changed files with 45 additions and 11 deletions
@@ -18,6 +18,10 @@
*/
package org.apache.struts2.config.entities;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.dispatcher.StaticContentLoader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -27,10 +31,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.dispatcher.StaticContentLoader;
public class ConstantConfig {
private Boolean devMode;
private Boolean i18nReload;
@@ -127,9 +127,11 @@ public class ConstantConfig {
private Set<Class<?>> excludedClasses;
private List<Pattern> excludedPackageNamePatterns;
private Set<String> excludedPackageNames;
private Set<Class<?>> excludedPackageExemptClasses;
private Set<Class<?>> devModeExcludedClasses;
private List<Pattern> devModeExcludedPackageNamePatterns;
private Set<String> devModeExcludedPackageNames;
private Set<Class<?>> devModeExcludedPackageExemptClasses;
private BeanConfig excludedPatternsChecker;
private BeanConfig acceptedPatternsChecker;
private BeanConfig notExcludedAcceptedPatternsChecker;
@@ -258,9 +260,11 @@ public class ConstantConfig {
map.put(StrutsConstants.STRUTS_EXCLUDED_CLASSES, classesToString(excludedClasses));
map.put(StrutsConstants.STRUTS_EXCLUDED_PACKAGE_NAME_PATTERNS, StringUtils.join(excludedPackageNamePatterns, ','));
map.put(StrutsConstants.STRUTS_EXCLUDED_PACKAGE_NAMES, StringUtils.join(excludedPackageNames, ','));
map.put(StrutsConstants.STRUTS_EXCLUDED_PACKAGE_EXEMPT_CLASSES, classesToString(excludedPackageExemptClasses));
map.put(StrutsConstants.STRUTS_DEV_MODE_EXCLUDED_CLASSES, classesToString(devModeExcludedClasses));
map.put(StrutsConstants.STRUTS_DEV_MODE_EXCLUDED_PACKAGE_NAME_PATTERNS, StringUtils.join(devModeExcludedPackageNamePatterns, ','));
map.put(StrutsConstants.STRUTS_DEV_MODE_EXCLUDED_PACKAGE_NAMES, StringUtils.join(devModeExcludedPackageNames, ','));
map.put(StrutsConstants.STRUTS_DEV_MODE_EXCLUDED_PACKAGE_EXEMPT_CLASSES, classesToString(devModeExcludedPackageExemptClasses));
map.put(StrutsConstants.STRUTS_EXCLUDED_PATTERNS_CHECKER, beanConfToString(excludedPatternsChecker));
map.put(StrutsConstants.STRUTS_ACCEPTED_PATTERNS_CHECKER, beanConfToString(acceptedPatternsChecker));
map.put(StrutsConstants.STRUTS_NOT_EXCLUDED_ACCEPTED_PATTERNS_CHECKER, beanConfToString(notExcludedAcceptedPatternsChecker));
@@ -1185,6 +1189,14 @@ public class ConstantConfig {
this.excludedPackageNames = excludedPackageNames;
}
public Set<Class<?>> getExcludedPackageExemptClasses() {
return excludedPackageExemptClasses;
}
public void setExcludedPackageExemptClasses(Set<Class<?>> excludedPackageExemptClasses) {
this.excludedPackageExemptClasses = excludedPackageExemptClasses;
}
public Set<Class<?>> getDevModeExcludedClasses() {
return devModeExcludedClasses;
}
@@ -1209,6 +1221,14 @@ public class ConstantConfig {
this.devModeExcludedPackageNames = devModeExcludedPackageNames;
}
public Set<Class<?>> getDevModeExcludedPackageExemptClasses() {
return devModeExcludedPackageExemptClasses;
}
public void setDevModeExcludedPackageExemptClasses(Set<Class<?>> devModeExcludedPackageExemptClasses) {
this.devModeExcludedPackageExemptClasses = devModeExcludedPackageExemptClasses;
}
public BeanConfig getExcludedPatternsChecker() {
return excludedPatternsChecker;
}
@@ -18,21 +18,14 @@
*/
package org.apache.struts2.config.entities;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.TestBean;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.util.ValueStack;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.components.TextField;
import org.apache.struts2.dispatcher.StaticContentLoader;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Locale;
import java.util.Map;
@@ -83,9 +76,11 @@ public class ConstantConfigTest {
constantConfig.setExcludedClasses(null);
constantConfig.setExcludedPackageNamePatterns(null);
constantConfig.setExcludedPackageNames(null);
constantConfig.setExcludedPackageExemptClasses(null);
constantConfig.setDevModeExcludedClasses(null);
constantConfig.setDevModeExcludedPackageNamePatterns(null);
constantConfig.setDevModeExcludedPackageNames(null);
constantConfig.setDevModeExcludedPackageExemptClasses(null);
Map<String, String> map = constantConfig.getAllAsStringsMap();
Assert.assertNull(map.get(StrutsConstants.STRUTS_EXCLUDED_CLASSES));
@@ -115,6 +110,25 @@ public class ConstantConfigTest {
map.get(StrutsConstants.STRUTS_DEV_MODE_EXCLUDED_CLASSES));
}
@Test
public void testExemptClassesToString() {
ConstantConfig constantConfig = new ConstantConfig();
Set<Class<?>> exemptClasses = new LinkedHashSet<>();
exemptClasses.add(Object.class);
exemptClasses.add(Runtime.class);
exemptClasses.add(System.class);
constantConfig.setExcludedPackageExemptClasses(exemptClasses);
constantConfig.setDevModeExcludedPackageExemptClasses(exemptClasses);
Map<String, String> map = constantConfig.getAllAsStringsMap();
Assert.assertEquals("java.lang.Object,java.lang.Runtime,java.lang.System",
map.get(StrutsConstants.STRUTS_EXCLUDED_PACKAGE_EXEMPT_CLASSES));
Assert.assertEquals("java.lang.Object,java.lang.Runtime,java.lang.System",
map.get(StrutsConstants.STRUTS_DEV_MODE_EXCLUDED_PACKAGE_EXEMPT_CLASSES));
}
@Test
public void testSettingStaticContentPath() {
// given