diff --git a/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java b/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java
index 08a5ffa50..91601b359 100644
--- a/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java
+++ b/plugins/cdi/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java
@@ -21,8 +21,8 @@ package org.apache.struts2.cdi;
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.inject.Inject;
-import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.BeanManager;
@@ -114,14 +114,10 @@ public class CdiObjectFactory extends ObjectFactory {
bm = lookup(initialContext, CDI_JNDIKEY_BEANMANAGER_COMP_ENV);
}
if (bm == null) {
- if (LOG.isErrorEnabled()) {
- LOG.error("[findBeanManager]: Could not find BeanManager instance for any given JNDI key, giving up");
- }
+ LOG.error("[findBeanManager]: Could not find BeanManager instance for any given JNDI key, giving up");
}
} catch ( NamingException e ) {
- if (LOG.isErrorEnabled()) {
- LOG.error("[findBeanManager]: Unable to get InitialContext for BeanManager lookup", e);
- }
+ LOG.error("[findBeanManager]: Unable to get InitialContext for BeanManager lookup", e);
}
return bm;
}
@@ -135,16 +131,12 @@ public class CdiObjectFactory extends ObjectFactory {
* @return the BeanManager, if found; null if not found or {@link javax.naming.NamingException} was thrown.
*/
protected BeanManager lookup( Context context, String jndiKeyToCheck ) {
- if (LOG.isInfoEnabled()) {
- LOG.info("[lookup]: Checking for BeanManager under JNDI key " + jndiKeyToCheck);
- }
+ LOG.info("[lookup]: Checking for BeanManager under JNDI key {}", jndiKeyToCheck);
BeanManager result = null;
try {
result = (BeanManager) context.lookup(jndiKeyToCheck);
} catch ( NamingException e ) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("[lookup]: BeanManager lookup failed for JNDI key " + jndiKeyToCheck, e);
- }
+ LOG.debug("[lookup]: BeanManager lookup failed for JNDI key {}", jndiKeyToCheck, e);
}
return result;
}
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java
index 71ec481d8..0d45590a8 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/ActionConfigBuilder.java
@@ -32,7 +32,7 @@ package org.apache.struts2.convention;
public interface ActionConfigBuilder {
/**
* Builds all the action configurations and stores them into the XWork configuration instance
- * via XWork dependency injetion.
+ * via XWork dependency injection.
*/
void buildActionConfigs();
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java b/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java
index 153986e8e..f5e79730f 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/ClasspathConfigurationProvider.java
@@ -23,13 +23,14 @@ package org.apache.struts2.convention;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationException;
import com.opensymphony.xwork2.config.ConfigurationProvider;
+import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.ContainerBuilder;
import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.util.location.LocatableProperties;
-import org.apache.struts2.dispatcher.DispatcherListener;
-import org.apache.struts2.dispatcher.Dispatcher;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.struts2.StrutsConstants;
+import org.apache.struts2.dispatcher.Dispatcher;
+import org.apache.struts2.dispatcher.DispatcherListener;
/**
*
@@ -49,20 +50,21 @@ public class ClasspathConfigurationProvider implements ConfigurationProvider, Di
@Inject(StrutsConstants.STRUTS_DEVMODE)
public void setDevMode(String mode) {
- this.devMode = "true".equals(mode);
+ this.devMode = BooleanUtils.toBoolean(mode);
}
@Inject("struts.convention.classes.reload")
public void setReload(String reload) {
- this.reload = "true".equals(reload);
+ this.reload = BooleanUtils.toBoolean(reload);
}
/**
* Not used.
*/
public void destroy() {
- if (this.listeningToDispatcher)
+ if (this.listeningToDispatcher) {
Dispatcher.removeDispatcherListener(this);
+ }
actionConfigBuilder.destroy();
}
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
index 4ba807b8f..bacc30d25 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionUnknownHandler.java
@@ -20,34 +20,21 @@
*/
package org.apache.struts2.convention;
-import com.opensymphony.xwork2.Action;
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionSupport;
-import com.opensymphony.xwork2.ObjectFactory;
-import com.opensymphony.xwork2.Result;
-import com.opensymphony.xwork2.UnknownHandler;
-import com.opensymphony.xwork2.XWorkException;
+import com.opensymphony.xwork2.*;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationException;
-import com.opensymphony.xwork2.config.entities.ActionConfig;
-import com.opensymphony.xwork2.config.entities.InterceptorMapping;
-import com.opensymphony.xwork2.config.entities.PackageConfig;
-import com.opensymphony.xwork2.config.entities.ResultConfig;
-import com.opensymphony.xwork2.config.entities.ResultTypeConfig;
+import com.opensymphony.xwork2.config.entities.*;
import com.opensymphony.xwork2.config.providers.InterceptorBuilder;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import org.apache.logging.log4j.Logger;
+import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import javax.servlet.ServletContext;
import java.net.MalformedURLException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
*
@@ -172,7 +159,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
// try to find index action in current namespace or in default one
if (actionConfig == null) {
- LOG.trace("Looking for action named [index] in namespace [#0] or in default namespace", namespace);
+ LOG.trace("Looking for action named [index] in namespace [{}] or in default namespace", namespace);
actionConfig = configuration.getRuntimeConfiguration().getActionConfig(namespace, "index");
}
}
@@ -197,9 +184,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
return new Resource(canonicalPath, ext);
}
} catch (MalformedURLException e) {
- if (LOG.isErrorEnabled()) {
- LOG.error("Unable to parse path to the web application resource {} skipping...", canonicalPath);
- }
+ LOG.error("Unable to parse path to the web application resource {} skipping...", canonicalPath);
}
}
@@ -215,8 +200,8 @@ public class ConventionUnknownHandler implements UnknownHandler {
}
protected ActionConfig buildActionConfig(String path, ResultTypeConfig resultTypeConfig) {
- Map results = new HashMap();
- HashMap params = new HashMap();
+ Map results = new HashMap<>();
+ HashMap params = new HashMap<>();
if (resultTypeConfig.getParams() != null) {
params.putAll(resultTypeConfig.getParams());
}
@@ -240,7 +225,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
if (LOG.isTraceEnabled()) {
String fqan = ns + "/" + actionName;
LOG.trace("Trying to locate the correct result for the FQ action [{}]"
- + " with an file extension of [#1] in the directory [{}] " + "and a result code of [{}]",
+ + " with an file extension of [{}] in the directory [{}] " + "and a result code of [{}]",
fqan, ext, pathPrefix, resultCode);
}
@@ -306,10 +291,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
String chainedTo = actionName + nameSeparator + resultCode;
ActionConfig chainedToConfig = pkg.getActionConfigs().get(chainedTo);
if (chainedToConfig != null) {
- if (LOG.isTraceEnabled()) {
- LOG.trace("Action [{}] used as chain result for [{}] and result [{}]", chainedTo, actionName, resultCode);
- }
-
+ LOG.trace("Action [{}] used as chain result for [{}] and result [{}]", chainedTo, actionName, resultCode);
ResultTypeConfig chainResultType = pkg.getAllResultTypeConfigs().get("chain");
result = buildResult(chainedTo, resultCode, chainResultType, actionContext);
}
@@ -321,28 +303,22 @@ public class ConventionUnknownHandler implements UnknownHandler {
protected Result findResult(String path, String resultCode, String ext, ActionContext actionContext,
Map resultsByExtension) {
try {
- boolean traceEnabled = LOG.isTraceEnabled();
- if (traceEnabled)
- LOG.trace("Checking ServletContext for {}", path);
+ LOG.trace("Checking ServletContext for {}", path);
if (servletContext.getResource(path) != null) {
- if (traceEnabled)
- LOG.trace("Found");
+ LOG.trace("Found");
return buildResult(path, resultCode, resultsByExtension.get(ext), actionContext);
}
- if (traceEnabled)
- LOG.trace("Checking ClasLoader for {}", path);
+ LOG.trace("Checking ClassLoader for {}", path);
String classLoaderPath = path.startsWith("/") ? path.substring(1, path.length()) : path;
if (ClassLoaderUtil.getResource(classLoaderPath, getClass()) != null) {
- if (traceEnabled)
- LOG.trace("Found");
+ LOG.trace("Found");
return buildResult(path, resultCode, resultsByExtension.get(ext), actionContext);
}
} catch (MalformedURLException e) {
- if (LOG.isErrorEnabled())
- LOG.error("Unable to parse template path: {} skipping...", path);
+ LOG.error("Unable to parse template path: {} skipping...", path);
}
return null;
@@ -351,7 +327,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
protected Result buildResult(String path, String resultCode, ResultTypeConfig config, ActionContext invocationContext) {
String resultClass = config.getClassName();
- Map params = new LinkedHashMap();
+ Map params = new LinkedHashMap<>();
if (config.getParams() != null) {
params.putAll(config.getParams());
}
@@ -389,7 +365,7 @@ public class ConventionUnknownHandler implements UnknownHandler {
finalPrefix += "/";
}
- if (namespace == null || "/".equals(namespace)) {
+ if (StringUtils.equals(namespace,"/" )) {
namespace = "";
}
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java
index 56815a6d9..1a8af90fb 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/ConventionsServiceImpl.java
@@ -107,7 +107,7 @@ public class ConventionsServiceImpl implements ConventionsService {
public Map getResultTypesByExtension(PackageConfig packageConfig) {
Map results = packageConfig.getAllResultTypeConfigs();
- Map resultsByExtension = new HashMap();
+ Map resultsByExtension = new HashMap<>();
resultsByExtension.put("jsp", results.get("dispatcher"));
resultsByExtension.put("jspf", results.get("dispatcher"));
resultsByExtension.put("jspx", results.get("dispatcher"));
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
index 0e9edd82b..6ebce88a1 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
@@ -27,8 +27,8 @@ import com.opensymphony.xwork2.config.entities.PackageConfig;
import com.opensymphony.xwork2.config.providers.InterceptorBuilder;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.util.AnnotationUtils;
-import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
@@ -50,7 +50,7 @@ public class DefaultInterceptorMapBuilder implements InterceptorMapBuilder {
public List build(Class> actionClass, PackageConfig.Builder builder,
String actionName, Action annotation) {
- List interceptorList = new ArrayList(
+ List interceptorList = new ArrayList<>(
10);
//from @InterceptorRefs annotation
@@ -75,27 +75,19 @@ public class DefaultInterceptorMapBuilder implements InterceptorMapBuilder {
}
protected List build(InterceptorRef[] interceptors, String actionName, PackageConfig.Builder builder) {
- List interceptorList = new ArrayList(
- 10);
+ List interceptorList = new ArrayList<>(10);
for (InterceptorRef interceptor : interceptors) {
- if (LOG.isTraceEnabled())
- LOG.trace("Adding interceptor [{}] to [{}]",
- interceptor.value(), actionName);
- Map params = StringTools.createParameterMap(interceptor
- .params());
- interceptorList.addAll(buildInterceptorList(builder,
- interceptor, params));
+ LOG.trace("Adding interceptor [{}] to [{}]", interceptor.value(), actionName);
+ Map params = StringTools.createParameterMap(interceptor.params());
+ interceptorList.addAll(buildInterceptorList(builder, interceptor, params));
}
return interceptorList;
}
- protected List buildInterceptorList(
- PackageConfig.Builder builder, InterceptorRef ref, Map params) {
- return InterceptorBuilder.constructInterceptorReference(builder, ref
- .value(), params, builder.build().getLocation(),
- configuration.getContainer().getInstance(
- ObjectFactory.class));
+ protected List buildInterceptorList(PackageConfig.Builder builder, InterceptorRef ref, Map params) {
+ return InterceptorBuilder.constructInterceptorReference(builder, ref.value(), params, builder.build().getLocation(),
+ configuration.getContainer().getInstance(ObjectFactory.class));
}
@Inject
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
index d27381df1..767b53432 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java
@@ -32,21 +32,17 @@ import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
import com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate;
import com.opensymphony.xwork2.util.finder.ResourceFinder;
import com.opensymphony.xwork2.util.finder.Test;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import javax.servlet.ServletContext;
import java.io.IOException;
import java.net.URL;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
/**
*
@@ -135,7 +131,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
public DefaultResultMapBuilder(ServletContext servletContext, Container container,
@Inject("struts.convention.relative.result.types") String relativeResultTypes) {
this.servletContext = servletContext;
- this.relativeResultTypes = new HashSet(Arrays.asList(relativeResultTypes.split("\\s*[,]\\s*")));
+ this.relativeResultTypes = new HashSet<>(Arrays.asList(relativeResultTypes.split("\\s*[,]\\s*")));
this.conventionsService = container.getInstance(ConventionsService.class, container.getInstance(String.class, ConventionConstants.CONVENTION_CONVENTIONS_SERVICE));
}
@@ -184,7 +180,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
String resultPrefix = defaultResultPath + actionName;
//results from files
- Map results = new HashMap();
+ Map results = new HashMap<>();
Map resultsByExtension = conventionsService.getResultTypesByExtension(packageConfig);
createFromResources(actionClass, results, defaultResultPath, resultPrefix, actionName,
packageConfig, resultsByExtension);
@@ -318,7 +314,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
if (ctx != null)
classLoaderInterface = (ClassLoaderInterface) ctx.get(ClassLoaderInterface.CLASS_LOADER_INTERFACE);
- return (ClassLoaderInterface) ObjectUtils.defaultIfNull(classLoaderInterface, new ClassLoaderInterfaceDelegate(Thread.currentThread().getContextClassLoader()));
+ return ObjectUtils.defaultIfNull(classLoaderInterface, new ClassLoaderInterfaceDelegate(Thread.currentThread().getContextClassLoader()));
}
@@ -448,7 +444,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder {
}
// Add the default parameters for the result type config (if any)
- HashMap params = new HashMap();
+ HashMap params = new HashMap<>();
if (resultTypeConfig.getParams() != null) {
params.putAll(resultTypeConfig.getParams());
}
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
index 702e1d3a4..cac356644 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
@@ -26,52 +26,28 @@ import com.opensymphony.xwork2.FileManagerFactory;
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationException;
-import com.opensymphony.xwork2.config.entities.ActionConfig;
-import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
-import com.opensymphony.xwork2.config.entities.InterceptorMapping;
-import com.opensymphony.xwork2.config.entities.PackageConfig;
-import com.opensymphony.xwork2.config.entities.ResultConfig;
+import com.opensymphony.xwork2.config.entities.*;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.util.AnnotationUtils;
import com.opensymphony.xwork2.util.TextParseUtil;
import com.opensymphony.xwork2.util.WildcardHelper;
import com.opensymphony.xwork2.util.classloader.ReloadingClassLoader;
-import com.opensymphony.xwork2.util.finder.ClassFinder;
-import com.opensymphony.xwork2.util.finder.ClassFinderFactory;
-import com.opensymphony.xwork2.util.finder.DefaultClassFinder;
-import com.opensymphony.xwork2.util.finder.ClassLoaderInterface;
-import com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate;
-import com.opensymphony.xwork2.util.finder.Test;
-import com.opensymphony.xwork2.util.finder.UrlSet;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
+import com.opensymphony.xwork2.util.finder.*;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.StrutsException;
-import org.apache.struts2.convention.annotation.Action;
-import org.apache.struts2.convention.annotation.Actions;
-import org.apache.struts2.convention.annotation.DefaultInterceptorRef;
-import org.apache.struts2.convention.annotation.ExceptionMapping;
-import org.apache.struts2.convention.annotation.ExceptionMappings;
-import org.apache.struts2.convention.annotation.Namespace;
-import org.apache.struts2.convention.annotation.Namespaces;
-import org.apache.struts2.convention.annotation.ParentPackage;
+import org.apache.struts2.convention.annotation.*;
import java.io.IOException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.regex.Pattern;
/**
@@ -101,7 +77,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
private String actionSuffix = "Action";
private boolean checkImplementsAction = true;
private boolean mapAllMatches = false;
- private Set loadedFileUrls = new HashSet();
+ private Set loadedFileUrls = new HashSet<>();
private boolean devMode;
private ReloadingClassLoader reloadingClassLoader;
private boolean reload;
@@ -151,7 +127,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
@Inject(StrutsConstants.STRUTS_DEVMODE)
public void setDevMode(String mode) {
- this.devMode = "true".equals(mode);
+ this.devMode = BooleanUtils.toBoolean(mode);
}
/**
@@ -160,13 +136,13 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
@Inject("struts.convention.classes.reload")
public void setReload(String reload) {
- this.reload = "true".equals(reload);
+ this.reload = BooleanUtils.toBoolean(reload);
}
@Inject(StrutsConstants.STRUTS_ENABLE_SLASHES_IN_ACTION_NAMES)
public void setSlashesInActionNames(String slashesInActionNames) {
- this.slashesInActionNames = "true".equals(slashesInActionNames);
+ this.slashesInActionNames = BooleanUtils.toBoolean(slashesInActionNames);
}
/**
@@ -174,7 +150,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
@Inject("struts.convention.exclude.parentClassLoader")
public void setExcludeParentClassLoader(String exclude) {
- this.excludeParentClassLoader = "true".equals(exclude);
+ this.excludeParentClassLoader = BooleanUtils.toBoolean(exclude);
}
/**
@@ -183,7 +159,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
@Inject("struts.convention.action.alwaysMapExecute")
public void setAlwaysMapExecute(String alwaysMapExecute) {
- this.alwaysMapExecute = "true".equals(alwaysMapExecute);
+ this.alwaysMapExecute = BooleanUtils.toBoolean(alwaysMapExecute);
}
/**
@@ -202,7 +178,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
@Inject(value = "struts.convention.action.disableScanning", required = false)
public void setDisableActionScanning(String disableActionScanning) {
- this.disableActionScanning = "true".equals(disableActionScanning);
+ this.disableActionScanning = BooleanUtils.toBoolean(disableActionScanning);
}
/**
@@ -219,7 +195,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
@Inject(value = "struts.convention.package.locators.disable", required = false)
public void setDisablePackageLocatorsScanning(String disablePackageLocatorsScanning) {
- this.disablePackageLocatorsScanning = "true".equals(disablePackageLocatorsScanning);
+ this.disablePackageLocatorsScanning = BooleanUtils.toBoolean(disablePackageLocatorsScanning);
}
/**
@@ -239,7 +215,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
@Inject(value = "struts.convention.action.checkImplementsAction", required = false)
public void setCheckImplementsAction(String checkImplementsAction) {
- this.checkImplementsAction = "true".equals(checkImplementsAction);
+ this.checkImplementsAction = BooleanUtils.toBoolean(checkImplementsAction);
}
/**
@@ -288,7 +264,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
@Inject(value = "struts.convention.action.mapAllMatches", required = false)
public void setMapAllMatches(String mapAllMatches) {
- this.mapAllMatches = "true".equals(mapAllMatches);
+ this.mapAllMatches = BooleanUtils.toBoolean(mapAllMatches);
}
/**
@@ -297,7 +273,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
@Inject(value = "struts.convention.action.eagerLoading", required = false)
public void setEagerLoading(String eagerLoading) {
- this.eagerLoading = "true".equals(eagerLoading);
+ this.eagerLoading = BooleanUtils.toBoolean(eagerLoading);
}
@Inject
@@ -343,12 +319,15 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
if (LOG.isTraceEnabled()) {
LOG.trace("Loading action configurations");
- if (actionPackages != null)
- LOG.trace("Actions being loaded from action packages " + Arrays.asList(actionPackages));
- if (packageLocators != null)
- LOG.trace("Actions being loaded using package locators " + Arrays.asList(packageLocators));
- if (excludePackages != null)
- LOG.trace("Excluding actions from packages " + Arrays.asList(excludePackages));
+ if (actionPackages != null) {
+ LOG.trace("Actions being loaded from action packages: {}", actionPackages);
+ }
+ if (packageLocators != null) {
+ LOG.trace("Actions being loaded using package locator's: {}", packageLocators);
+ }
+ if (excludePackages != null) {
+ LOG.trace("Excluding actions from packages: {}", excludePackages);
+ }
}
Set classes = findActions();
@@ -357,8 +336,9 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
}
protected ClassLoaderInterface getClassLoaderInterface() {
- if (isReloadEnabled())
+ if (isReloadEnabled()) {
return new ClassLoaderInterfaceDelegate(this.reloadingClassLoader);
+ }
else {
/*
if there is a ClassLoaderInterface in the context, use it, otherwise
@@ -370,9 +350,9 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
ClassLoaderInterface classLoaderInterface = null;
ActionContext ctx = ActionContext.getContext();
- if (ctx != null)
+ if (ctx != null) {
classLoaderInterface = (ClassLoaderInterface) ctx.get(ClassLoaderInterface.CLASS_LOADER_INTERFACE);
-
+ }
return ObjectUtils.defaultIfNull(classLoaderInterface, new ClassLoaderInterfaceDelegate(getClassLoader()));
}
}
@@ -383,7 +363,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
@SuppressWarnings("unchecked")
protected Set findActions() {
- Set classes = new HashSet();
+ Set classes = new HashSet<>();
try {
if (actionPackages != null || (packageLocators != null && !disablePackageLocatorsScanning)) {
@@ -400,8 +380,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
classes.addAll(finder.findClasses(test));
}
} catch (Exception ex) {
- if (LOG.isErrorEnabled())
- LOG.error("Unable to scan named packages", ex);
+ LOG.error("Unable to scan named packages", ex);
}
return classes;
@@ -418,7 +397,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
}
private List readUrls() throws IOException {
- List resourceUrls = new ArrayList();
+ List resourceUrls = new ArrayList<>();
// Usually the "classes" dir.
ArrayList classesList = Collections.list(getClassLoaderInterface().getResources(""));
for (URL url : classesList) {
@@ -437,7 +416,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
//exclude parent of classloaders
ClassLoaderInterface parent = classLoaderInterface.getParent();
//if reload is enabled, we need to step up one level, otherwise the UrlSet will be empty
- //this happens because the parent of the realoding class loader is the web app classloader
+ //this happens because the parent of the reloading class loader is the web app classloader
if (parent != null && isReloadEnabled())
parent = parent.getParent();
@@ -450,8 +429,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
urlSet = urlSet.exclude(new ClassLoaderInterfaceDelegate(systemClassLoader.getParent()));
} catch (SecurityException e) {
- if (LOG.isWarnEnabled())
- LOG.warn("Could not get the system classloader due to security constraints, there may be improper urls left to scan");
+ LOG.warn("Could not get the system classloader due to security constraints, there may be improper urls left to scan");
}
}
@@ -469,8 +447,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
urlSet = urlSet.excludeJavaHome();
} catch (NullPointerException e) {
// This happens in GAE since the sandbox contains no java.home directory
- if (LOG.isWarnEnabled())
- LOG.warn("Could not exclude JAVA_HOME, is this a sandbox jvm?");
+ LOG.warn("Could not exclude JAVA_HOME, is this a sandbox jvm?");
}
urlSet = urlSet.excludePaths(System.getProperty("sun.boot.class.path", ""));
urlSet = urlSet.exclude(".*/JavaVM.framework/.*");
@@ -482,12 +459,12 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
LOG.debug("jar urls regexes were specified: {}", Arrays.asList(includeJars));
}
List rawIncludedUrls = urlSet.getUrls();
- Set includeUrls = new HashSet();
+ Set includeUrls = new HashSet<>();
boolean[] patternUsed = new boolean[includeJars.length];
for (URL url : rawIncludedUrls) {
if (fileProtocols.contains(url.getProtocol())) {
- //it is a jar file, make sure it macthes at least a url regex
+ //it is a jar file, make sure it matches at least a url regex
for (int i = 0; i < includeJars.length; i++) {
String includeJar = includeJars[i];
if (Pattern.matches(includeJar, url.toExternalForm())) {
@@ -544,7 +521,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
WildcardHelper wildcardHelper = new WildcardHelper();
//we really don't care about the results, just the boolean
- Map matchMap = new HashMap();
+ Map matchMap = new HashMap<>();
for(String packageExclude : excludePackages) {
int[] packagePattern = wildcardHelper.compilePattern(packageExclude);
@@ -566,9 +543,9 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
if (actionPackages != null) {
for (String packageName : actionPackages) {
String strictPackageName = packageName + ".";
- if (classPackageName.equals(packageName)
- || classPackageName.startsWith(strictPackageName))
+ if (classPackageName.equals(packageName) || classPackageName.startsWith(strictPackageName)) {
return true;
+ }
}
}
return false;
@@ -587,8 +564,9 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
for (String packageLocator : packageLocators) {
String[] splitted = classPackageName.split("\\.");
- if (StringTools.contains(splitted, packageLocator, false))
+ if (StringTools.contains(splitted, packageLocator, false)) {
return true;
+ }
}
}
return false;
@@ -638,7 +616,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
try {
return inPackage && (nameMatches || (checkImplementsAction && com.opensymphony.xwork2.Action.class.isAssignableFrom(classInfo.get())));
} catch (ClassNotFoundException ex) {
- LOG.error("Unable to load class [{}]", ex, classInfo.getName());
+ LOG.error("Unable to load class [{}]", classInfo.getName(), ex);
return false;
}
}
@@ -647,7 +625,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
@SuppressWarnings("unchecked")
protected void buildConfiguration(Set classes) {
- Map packageConfigs = new HashMap();
+ Map packageConfigs = new HashMap<>();
for (Class> actionClass : classes) {
Actions actionsAnnotation = actionClass.getAnnotation(Actions.class);
@@ -664,16 +642,14 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
try {
objectFactory.getClassInstance(actionClass.getName());
} catch (ClassNotFoundException e) {
- LOG.error("Object Factory was unable to load class [{}]", e, actionClass.getName());
+ LOG.error("Object Factory was unable to load class [{}]", actionClass.getName(), e);
throw new StrutsException("Object Factory was unable to load class " + actionClass.getName(), e);
}
}
// Determine the action package
String actionPackage = actionClass.getPackage().getName();
- if (LOG.isDebugEnabled()) {
- LOG.debug("Processing class [{}] in package [{}]", actionClass.getName(), actionPackage);
- }
+ LOG.debug("Processing class [{}] in package [{}]", actionClass.getName(), actionPackage);
// Determine the default namespace and action name
List namespaces = determineActionNamespace(actionClass);
@@ -685,7 +661,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
// Verify that the annotations have no errors and also determine if the default action
// configuration should still be built or not.
Map> map = getActionAnnotations(actionClass);
- Set actionNames = new HashSet();
+ Set actionNames = new HashSet<>();
boolean hasDefaultMethod = ReflectionTools.containsMethod(actionClass, DEFAULT_METHOD);
if (!map.containsKey(DEFAULT_METHOD)
&& hasDefaultMethod
@@ -781,7 +757,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
* @return The namespace or an empty string.
*/
protected List determineActionNamespace(Class> actionClass) {
- List namespaces = new ArrayList();
+ List namespaces = new ArrayList<>();
// Check if there is a class or package level annotation for the namespace
//single namespace
@@ -803,8 +779,9 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
LOG.trace("Using non-default action namespaces from Namespaces annotation of [{}]", sb.toString());
}
- for (Namespace namespace : namespacesAnnotation.value())
+ for (Namespace namespace : namespacesAnnotation.value()) {
namespaces.add(namespace.value());
+ }
}
//don't use default if there are annotations
@@ -869,7 +846,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
*/
protected Map> getActionAnnotations(Class> actionClass) {
Method[] methods = actionClass.getMethods();
- Map> map = new HashMap>();
+ Map> map = new HashMap<>();
for (Method method : methods) {
Actions actionsAnnotation = method.getAnnotation(Actions.class);
if (actionsAnnotation != null) {
@@ -894,13 +871,12 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
protected List checkActionsAnnotation(Actions actionsAnnotation) {
Action[] actionArray = actionsAnnotation.value();
boolean valuelessSeen = false;
- List actions = new ArrayList();
+ List actions = new ArrayList<>();
for (Action ann : actionArray) {
if (ann.value().equals(Action.DEFAULT_VALUE) && !valuelessSeen) {
valuelessSeen = true;
} else if (ann.value().equals(Action.DEFAULT_VALUE)) {
- throw new ConfigurationException("You may only add a single Action " +
- "annotation that has no value parameter.");
+ throw new ConfigurationException("You may only add a single Action annotation that has no value parameter.");
}
actions.add(ann);
@@ -980,7 +956,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
}
protected List buildExceptionMappings(ExceptionMapping[] exceptions, String actionName) {
- List exceptionMappings = new ArrayList();
+ List exceptionMappings = new ArrayList<>();
for (ExceptionMapping exceptionMapping : exceptions) {
LOG.trace("Mapping exception [{}] to result [{}] for action [{}]", exceptionMapping.exception(),
@@ -1062,7 +1038,7 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
* @param packageConfigs Used to store the actions.
*/
protected void buildIndexActions(Map packageConfigs) {
- Map byNamespace = new HashMap();
+ Map byNamespace = new HashMap<>();
Collection values = packageConfigs.values();
for (PackageConfig.Builder packageConfig : values) {
byNamespace.put(packageConfig.getNamespace(), packageConfig);
@@ -1095,18 +1071,15 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
if (parent.build().getAllActionConfigs().get(parentAction) == null) {
parent.addActionConfig(parentAction, indexActionConfig);
}
- } else if (LOG.isTraceEnabled()) {
- LOG.trace("The parent namespace [{}] already contains " +
- "an action [{}]", parentNamespace, parentAction);
+ } else {
+ LOG.trace("The parent namespace [{}] already contains an action [{}]", parentNamespace, parentAction);
}
}
}
// Step #3
if (pkgConfig.build().getAllActionConfigs().get("") == null) {
- LOG.trace("Creating index ActionConfig with an action name of [] for the action " +
- "class [{}]", indexActionConfig.getClassName());
-
+ LOG.trace("Creating index ActionConfig with an action name of [] for the action class [{}]", indexActionConfig.getClassName());
pkgConfig.addActionConfig("", indexActionConfig);
}
}
@@ -1120,15 +1093,15 @@ public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
if (devMode && reload) {
for (String url : loadedFileUrls) {
if (fileManager.fileNeedsReloading(url)) {
- if (LOG.isDebugEnabled())
- LOG.debug("File [{}] changed, configuration will be reloaded", url);
+ LOG.debug("File [{}] changed, configuration will be reloaded", url);
return true;
}
}
return false;
- } else
+ } else {
return false;
+ }
}
}
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/ReflectionTools.java b/plugins/convention/src/main/java/org/apache/struts2/convention/ReflectionTools.java
index 1128635cd..7140fe91b 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/ReflectionTools.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/ReflectionTools.java
@@ -22,8 +22,8 @@ package org.apache.struts2.convention;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
/**
*
@@ -34,14 +34,14 @@ public class ReflectionTools {
/**
* Determines if the class given contains the method.
*
- * @param klass The class to check for the method.
+ * @param clazz The class to check for the method.
* @param method The method name.
* @param parameterTypes The parameter types of the method.
* @return True if the method exists, false if not.
*/
- public static boolean containsMethod(Class> klass, String method, Class>... parameterTypes) {
+ public static boolean containsMethod(Class> clazz, String method, Class>... parameterTypes) {
try {
- klass.getMethod(method, parameterTypes);
+ clazz.getMethod(method, parameterTypes);
return true;
} catch (NoSuchMethodException e) {
return false;
@@ -51,14 +51,14 @@ public class ReflectionTools {
/**
* Retrieves the annotation from the given method in the given class.
*
- * @param klass The class.
+ * @param clazz The class.
* @param methodName The method.
* @param annotationClass The annotation to get.
* @return The annotation or null if it doesn't exist.
*/
- public static T getAnnotation(Class> klass, String methodName, Class annotationClass) {
+ public static T getAnnotation(Class> clazz, String methodName, Class annotationClass) {
try {
- Method method = klass.getMethod(methodName);
+ Method method = clazz.getMethod(methodName);
return method.getAnnotation(annotationClass);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
@@ -71,7 +71,7 @@ public class ReflectionTools {
* @return hierarchy of classes
*/
public static List> getClassHierarchy(Class> clazz) {
- List> classes = new ArrayList>();
+ List> classes = new ArrayList<>();
while (clazz != null) {
classes.add(0, clazz);
clazz = clazz.getSuperclass();
diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/StringTools.java b/plugins/convention/src/main/java/org/apache/struts2/convention/StringTools.java
index 651575afe..dbe53bb61 100644
--- a/plugins/convention/src/main/java/org/apache/struts2/convention/StringTools.java
+++ b/plugins/convention/src/main/java/org/apache/struts2/convention/StringTools.java
@@ -42,9 +42,9 @@ public class StringTools {
return false;
}
- public static Map createParameterMap(String[] parms) {
- Map map = new HashMap();
- int subtract = parms.length % 2;
+ public static Map createParameterMap(String[] params) {
+ Map map = new HashMap<>();
+ int subtract = params.length % 2;
if (subtract != 0) {
throw new ConfigurationException(
"'params' is a string array "
@@ -53,9 +53,9 @@ public class StringTools {
+ " (e.g. params = {\"key\", \"value\"})");
}
- for (int i = 0; i < parms.length; i = i + 2) {
- String key = parms[i];
- String value = parms[i + 1];
+ for (int i = 0; i < params.length; i = i + 2) {
+ String key = params[i];
+ String value = params[i + 1];
map.put(key, value);
}
diff --git a/plugins/convention/src/test/java/org/apache/struts2/convention/ConventionUnknownHandlerTest.java b/plugins/convention/src/test/java/org/apache/struts2/convention/ConventionUnknownHandlerTest.java
index e3a51c8b9..10733af21 100644
--- a/plugins/convention/src/test/java/org/apache/struts2/convention/ConventionUnknownHandlerTest.java
+++ b/plugins/convention/src/test/java/org/apache/struts2/convention/ConventionUnknownHandlerTest.java
@@ -38,11 +38,7 @@ import java.util.Map;
import java.util.Set;
import static org.easymock.EasyMock.expect;
-import static org.easymock.classextension.EasyMock.createMock;
-import static org.easymock.classextension.EasyMock.createNiceMock;
-import static org.easymock.classextension.EasyMock.createStrictMock;
-import static org.easymock.classextension.EasyMock.replay;
-import static org.easymock.classextension.EasyMock.verify;
+import static org.easymock.classextension.EasyMock.*;
public class ConventionUnknownHandlerTest extends TestCase {
@@ -161,7 +157,7 @@ public class ConventionUnknownHandlerTest extends TestCase {
ActionConfig actionConfig = null;
expect(service.determineResultPath(actionConfig)).andReturn("");
- Map results = new HashMap();
+ Map results = new HashMap<>();
results.put("jsp", new ResultTypeConfig.Builder("dispatcher", ServletDispatcherResult.class.getName()).build());
expect(service.getResultTypesByExtension(packageConfiguration)).andReturn(results);
diff --git a/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java b/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java
index de7ab1639..502b202f2 100644
--- a/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java
+++ b/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java
@@ -26,16 +26,7 @@ import com.opensymphony.xwork2.config.entities.ResultTypeConfig;
import com.opensymphony.xwork2.inject.Container;
import junit.framework.TestCase;
import org.apache.struts2.convention.actions.NoAnnotationAction;
-import org.apache.struts2.convention.actions.result.ActionLevelResultAction;
-import org.apache.struts2.convention.actions.result.ActionLevelResultsAction;
-import org.apache.struts2.convention.actions.result.ClassLevelResultAction;
-import org.apache.struts2.convention.actions.result.ClassLevelResultsAction;
-import org.apache.struts2.convention.actions.result.GlobalResultAction;
-import org.apache.struts2.convention.actions.result.GlobalResultOverrideAction;
-import org.apache.struts2.convention.actions.result.InheritedResultExtends;
-import org.apache.struts2.convention.actions.result.InheritedResultsExtends;
-import org.apache.struts2.convention.actions.result.OverrideInheritedResultExtends;
-import org.apache.struts2.convention.actions.result.OverrideResultAction;
+import org.apache.struts2.convention.actions.result.*;
import org.apache.struts2.convention.actions.resultpath.ClassLevelResultPathAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.dispatcher.ServletDispatcherResult;
@@ -121,7 +112,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
String resultPath = "/WEB-INF/location";
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
resources.add(resultPath + "/namespace/action.jsp");
resources.add(resultPath + "/namespace/action-success.jsp");
resources.add(resultPath + "/namespace/action-error.jsp");
@@ -179,7 +170,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
resources.add("/WEB-INF/location/namespace/.something");
resources.add("/WEB-INF/location/namespace/.somethingelse/");
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
@@ -199,7 +190,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
resources.add("/WEB-INF/location/namespace/no-annotation.ftl");
resources.add("/WEB-INF/location/namespace/no-annotation-success.jsp");
resources.add("/WEB-INF/location/namespace/no-annotation-failure.jsp");
@@ -233,7 +224,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
resources.add("/WEB-INF/location/namespace/no-annotation/index.ftl");
resources.add("/WEB-INF/location/namespace/no-annotation/success.jsp");
resources.add("/WEB-INF/location/namespace/no-annotation/failure.jsp");
@@ -269,7 +260,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
resources.add("/WEB-INF/location/namespace/no-annotation/.svn");
resources.add("/WEB-INF/location/namespace/no-annotation-success.jsp");
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
@@ -293,7 +284,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
EasyMock.replay(context);
@@ -316,7 +307,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
EasyMock.replay(context);
@@ -339,7 +330,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
EasyMock.replay(context);
@@ -364,7 +355,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
EasyMock.replay(context);
@@ -403,7 +394,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
EasyMock.replay(context);
@@ -442,7 +433,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
EasyMock.replay(context);
@@ -465,7 +456,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/")).andReturn(resources);
EasyMock.replay(context);
@@ -544,7 +535,7 @@ public class DefaultResultMapBuilderTest extends TestCase {
ServletContext context = EasyMock.createStrictMock(ServletContext.class);
// Setup some mock jsps
- Set resources = new HashSet();
+ Set resources = new HashSet<>();
resources.add(resultPath + "/namespace/action.jsp");
resources.add(resultPath + "/namespace/action-success.jsp");
resources.add(resultPath + "/namespace/action-failure.jsp");
diff --git a/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java b/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
index 76d232ea5..7fbd420a3 100644
--- a/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
+++ b/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
@@ -20,21 +20,9 @@
*/
package org.apache.struts2.convention;
-import com.opensymphony.xwork2.ActionChainResult;
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.FileManager;
-import com.opensymphony.xwork2.FileManagerFactory;
-import com.opensymphony.xwork2.ObjectFactory;
-import com.opensymphony.xwork2.Result;
+import com.opensymphony.xwork2.*;
import com.opensymphony.xwork2.config.Configuration;
-import com.opensymphony.xwork2.config.entities.ActionConfig;
-import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
-import com.opensymphony.xwork2.config.entities.InterceptorConfig;
-import com.opensymphony.xwork2.config.entities.InterceptorMapping;
-import com.opensymphony.xwork2.config.entities.InterceptorStackConfig;
-import com.opensymphony.xwork2.config.entities.PackageConfig;
-import com.opensymphony.xwork2.config.entities.ResultConfig;
-import com.opensymphony.xwork2.config.entities.ResultTypeConfig;
+import com.opensymphony.xwork2.config.entities.*;
import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
import com.opensymphony.xwork2.factory.DefaultInterceptorFactory;
import com.opensymphony.xwork2.factory.DefaultResultFactory;
@@ -48,16 +36,7 @@ import junit.framework.TestCase;
import org.apache.struts2.convention.actions.DefaultResultPathAction;
import org.apache.struts2.convention.actions.NoAnnotationAction;
import org.apache.struts2.convention.actions.Skip;
-import org.apache.struts2.convention.actions.action.ActionNameAction;
-import org.apache.struts2.convention.actions.action.ActionNamesAction;
-import org.apache.struts2.convention.actions.action.ClassLevelAnnotationAction;
-import org.apache.struts2.convention.actions.action.ClassLevelAnnotationDefaultMethodAction;
-import org.apache.struts2.convention.actions.action.ClassLevelAnnotationsAction;
-import org.apache.struts2.convention.actions.action.ClassLevelAnnotationsDefaultMethodAction;
-import org.apache.struts2.convention.actions.action.ClassNameAction;
-import org.apache.struts2.convention.actions.action.SingleActionNameAction;
-import org.apache.struts2.convention.actions.action.TestAction;
-import org.apache.struts2.convention.actions.action.TestExtends;
+import org.apache.struts2.convention.actions.action.*;
import org.apache.struts2.convention.actions.chain.ChainedAction;
import org.apache.struts2.convention.actions.defaultinterceptor.SingleActionNameAction2;
import org.apache.struts2.convention.actions.exception.ExceptionsActionLevelAction;
@@ -78,14 +57,7 @@ import org.apache.struts2.convention.actions.parentpackage.ClassLevelParentPacka
import org.apache.struts2.convention.actions.parentpackage.PackageLevelParentPackageAction;
import org.apache.struts2.convention.actions.parentpackage.sub.ClassLevelParentPackageChildAction;
import org.apache.struts2.convention.actions.parentpackage.sub.PackageLevelParentPackageChildAction;
-import org.apache.struts2.convention.actions.result.ActionLevelResultAction;
-import org.apache.struts2.convention.actions.result.ActionLevelResultsAction;
-import org.apache.struts2.convention.actions.result.ClassLevelResultAction;
-import org.apache.struts2.convention.actions.result.ClassLevelResultsAction;
-import org.apache.struts2.convention.actions.result.GlobalResultAction;
-import org.apache.struts2.convention.actions.result.GlobalResultOverrideAction;
-import org.apache.struts2.convention.actions.result.InheritedResultExtends;
-import org.apache.struts2.convention.actions.result.OverrideResultAction;
+import org.apache.struts2.convention.actions.result.*;
import org.apache.struts2.convention.actions.resultpath.ClassLevelResultPathAction;
import org.apache.struts2.convention.actions.resultpath.PackageLevelResultPathAction;
import org.apache.struts2.convention.actions.skip.Index;
@@ -98,18 +70,10 @@ import org.easymock.EasyMock;
import javax.servlet.ServletContext;
import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import static org.apache.struts2.convention.ReflectionTools.getAnnotation;
-import static org.easymock.EasyMock.checkOrder;
-import static org.easymock.EasyMock.createStrictMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.verify;
+import static org.easymock.EasyMock.*;
/**
*
@@ -144,13 +108,13 @@ public class PackageBasedActionConfigBuilderTest extends TestCase {
private void run(String actionPackages, String packageLocators, String excludePackages) throws MalformedURLException {
//setup interceptors
- List defaultInterceptors = new ArrayList();
+ List defaultInterceptors = new ArrayList<>();
defaultInterceptors.add(makeInterceptorConfig("interceptor-1"));
defaultInterceptors.add(makeInterceptorConfig("interceptor-2"));
defaultInterceptors.add(makeInterceptorConfig("interceptor-3"));
//setup interceptor stacks
- List defaultInterceptorStacks = new ArrayList();
+ List defaultInterceptorStacks = new ArrayList<>();
InterceptorMapping interceptor1 = new InterceptorMapping("interceptor-1", new TestInterceptor());
InterceptorMapping interceptor2 = new InterceptorMapping("interceptor-2", new TestInterceptor());
defaultInterceptorStacks.add(makeInterceptorStackConfig("stack-1", interceptor1, interceptor2));
@@ -224,7 +188,7 @@ public class PackageBasedActionConfigBuilderTest extends TestCase {
ResultMapBuilder resultMapBuilder = createStrictMock(ResultMapBuilder.class);
checkOrder(resultMapBuilder, false);
- Map results = new HashMap();
+ Map results = new HashMap<>();
/* org.apache.struts2.convention.actions.action */
expect(resultMapBuilder.build(ActionNameAction.class, getAnnotation(ActionNameAction.class, "run1", Action.class), "action1", actionPkg)).andReturn(results);
diff --git a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
index f5794f8d2..d113a39d5 100644
--- a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
+++ b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/JasperReportsResult.java
@@ -23,25 +23,12 @@ package org.apache.struts2.views.jasperreports;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.util.ValueStack;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
-import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JRExporter;
-import net.sf.jasperreports.engine.JRExporterParameter;
-import net.sf.jasperreports.engine.JRParameter;
-import net.sf.jasperreports.engine.JasperFillManager;
-import net.sf.jasperreports.engine.JasperPrint;
-import net.sf.jasperreports.engine.JasperReport;
-import net.sf.jasperreports.engine.export.JRCsvExporter;
-import net.sf.jasperreports.engine.export.JRCsvExporterParameter;
-import net.sf.jasperreports.engine.export.JRHtmlExporter;
-import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
-import net.sf.jasperreports.engine.export.JRPdfExporter;
-import net.sf.jasperreports.engine.export.JRRtfExporter;
-import net.sf.jasperreports.engine.export.JRXlsExporter;
-import net.sf.jasperreports.engine.export.JRXmlExporter;
+import net.sf.jasperreports.engine.*;
+import net.sf.jasperreports.engine.export.*;
import net.sf.jasperreports.engine.util.JRLoader;
import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.StrutsResultSupport;
@@ -249,9 +236,7 @@ public class JasperReportsResult extends StrutsResultSupport implements JasperRe
// Will throw a runtime exception if no "datasource" property. TODO Best place for that is...?
initializeProperties(invocation);
- if (LOG.isDebugEnabled()) {
- LOG.debug("Creating JasperReport for dataSource = " + dataSource + ", format = " + format);
- }
+ LOG.debug("Creating JasperReport for dataSource = {}, format = {}", dataSource, format);
HttpServletRequest request = (HttpServletRequest) invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) invocation.getInvocationContext().get(ServletActionContext.HTTP_RESPONSE);
@@ -311,9 +296,7 @@ public class JasperReportsResult extends StrutsResultSupport implements JasperRe
// Add any report parameters from action to param map.
Map reportParams = (Map) stack.findValue(reportParameters);
if (reportParams != null) {
- if (LOG.isDebugEnabled()) {
LOG.debug("Found report parameters; adding to parameters...");
- }
parameters.putAll(reportParams);
}
@@ -323,12 +306,14 @@ public class JasperReportsResult extends StrutsResultSupport implements JasperRe
// Fill the report and produce a print object
try {
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(systemId);
- if (conn == null)
+ if (conn == null) {
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, stackDataSource);
- else
+ }
+ else {
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
+ }
} catch (JRException e) {
- LOG.error("Error building report for uri " + systemId, e);
+ LOG.error("Error building report for uri {}", systemId, e);
throw new ServletException(e.getMessage(), e);
}
@@ -386,16 +371,13 @@ public class JasperReportsResult extends StrutsResultSupport implements JasperRe
Map exportParams = (Map) stack.findValue(exportParameters);
if (exportParams != null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found export parameters; adding to exporter parameters...");
- }
+ LOG.debug("Found export parameters; adding to exporter parameters...");
exporter.getParameters().putAll(exportParams);
}
output = exportReportToBytes(jasperPrint, exporter);
} catch (JRException e) {
- String message = "Error producing " + format + " report for uri " + systemId;
- LOG.error(message, e);
+ LOG.error("Error producing {} report for uri {}", format, systemId, e);
throw new ServletException(e.getMessage(), e);
}
diff --git a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackShadowMap.java b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackShadowMap.java
index 204f6a67b..fa9c35f0b 100644
--- a/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackShadowMap.java
+++ b/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackShadowMap.java
@@ -60,7 +60,7 @@ public class ValueStackShadowMap extends HashMap {
* Implementation of containsKey(), overriding HashMap implementation.
*
* @param key - The key to check in HashMap and if not found to check on valueStack.
- * @return true, if conatins key, false otherwise.
+ * @return true, if contains key, false otherwise.
* @see java.util.HashMap#containsKey
*/
public boolean containsKey(Object key) {
diff --git a/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java b/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java
index 46d2e9981..026a4f048 100644
--- a/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java
+++ b/plugins/junit/src/main/java/org/apache/struts2/StrutsJUnit4TestCase.java
@@ -21,16 +21,11 @@
package org.apache.struts2;
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionProxy;
-import com.opensymphony.xwork2.ActionProxyFactory;
-import com.opensymphony.xwork2.ValidationAware;
-import com.opensymphony.xwork2.XWorkJUnit4TestCase;
+import com.opensymphony.xwork2.*;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.interceptor.annotations.After;
import com.opensymphony.xwork2.interceptor.annotations.Before;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
-import org.apache.logging.log4j.LogManager;
import com.opensymphony.xwork2.util.logging.jdk.JdkLoggerFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.dispatcher.Dispatcher;
@@ -53,11 +48,7 @@ import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Formatter;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
+import java.util.logging.*;
import static org.junit.Assert.assertNotNull;
@@ -242,7 +233,7 @@ public abstract class StrutsJUnit4TestCase extends XWorkJUnit4TestCase {
protected void initDispatcherParams() {
if (StringUtils.isNotBlank(getConfigPath())) {
- dispatcherInitParams = new HashMap();
+ dispatcherInitParams = new HashMap<>();
dispatcherInitParams.put("config", "struts-default.xml," + getConfigPath());
}
}
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java b/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java
index b1bcffce7..2e3201aeb 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java
@@ -42,9 +42,9 @@ import java.util.Set;
public class DefaultContentTypeHandlerManager implements ContentTypeHandlerManager {
/** ContentTypeHandlers keyed by the extension */
- Map handlersByExtension = new HashMap();
+ Map handlersByExtension = new HashMap<>();
/** ContentTypeHandlers keyed by the content-type */
- Map handlersByContentType = new HashMap();
+ Map handlersByContentType = new HashMap<>();
private String defaultExtension;
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/HttpHeaders.java b/plugins/rest/src/main/java/org/apache/struts2/rest/HttpHeaders.java
index 83a928c34..454167690 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/HttpHeaders.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/HttpHeaders.java
@@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
- * Type-safe rest-related informtion to apply to a response
+ * Type-safe rest-related information to apply to a response
*/
public interface HttpHeaders {
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java b/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
index 6574cbeef..06f52a819 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
@@ -21,19 +21,15 @@
package org.apache.struts2.rest;
-import com.opensymphony.xwork2.Action;
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.DefaultActionInvocation;
-import com.opensymphony.xwork2.ModelDriven;
-import com.opensymphony.xwork2.Result;
-import com.opensymphony.xwork2.ValidationAware;
+import com.opensymphony.xwork2.*;
import com.opensymphony.xwork2.config.ConfigurationException;
import com.opensymphony.xwork2.config.entities.ActionConfig;
import com.opensymphony.xwork2.config.entities.ResultConfig;
import com.opensymphony.xwork2.inject.Inject;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.HttpHeaderResult;
import org.apache.struts2.rest.handler.ContentTypeHandler;
@@ -71,29 +67,29 @@ public class RestActionInvocation extends DefaultActionInvocation {
}
@Inject("struts.rest.logger")
- public void setLogger(String value) {
- logger = Boolean.valueOf(value);
+ public void setLogger(String logger) {
+ this.logger = BooleanUtils.toBoolean(logger);
}
@Inject("struts.rest.defaultErrorResultName")
- public void setDefaultErrorResultName(String value) {
- defaultErrorResultName = value;
+ public void setDefaultErrorResultName(String defaultErrorResultName) {
+ this.defaultErrorResultName = defaultErrorResultName;
}
/**
* If set to true (by default) blocks returning content from any other methods than GET,
* if set to false, the content can be returned for any kind of method
*
- * @param value true or false
+ * @param restrictToGet true or false
*/
@Inject(value = "struts.rest.content.restrictToGET", required = false)
- public void setRestrictToGet(String value) {
- restrictToGet = "true".equalsIgnoreCase(value);
+ public void setRestrictToGet(String restrictToGet) {
+ this.restrictToGet = BooleanUtils.toBoolean(restrictToGet);
}
@Inject
- public void setMimeTypeHandlerSelector(ContentTypeHandlerManager sel) {
- this.handlerSelector = sel;
+ public void setMimeTypeHandlerSelector(ContentTypeHandlerManager selector) {
+ this.handlerSelector = selector;
}
/**
@@ -149,7 +145,7 @@ public class RestActionInvocation extends DefaultActionInvocation {
} catch (Exception e) {
- // Error proccesing the result
+ // Error processing the result
LOG.error("Exception processing the result.", e);
if (!ServletActionContext.getResponse().isCommitted()) {
@@ -196,9 +192,7 @@ public class RestActionInvocation extends DefaultActionInvocation {
if (httpHeaders.getStatus() != HttpServletResponse.SC_NOT_MODIFIED ) {
executeResult();
} else {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Result not processed because the status code is not modified.");
- }
+ LOG.debug("Result not processed because the status code is not modified.");
}
} finally {
@@ -229,20 +223,15 @@ public class RestActionInvocation extends DefaultActionInvocation {
if (handler != null && !(handler instanceof HtmlHandler)) {
// Specific representation (json, xml...)
- resultCode = handlerSelector.handleResult(
- this.getProxy().getConfig(), httpHeaders, target);
-
+ resultCode = handlerSelector.handleResult(this.getProxy().getConfig(), httpHeaders, target);
} else {
-
// Normal struts execution (html o other struts result)
findResult();
if (result != null) {
this.result.execute(this);
-
} else {
if (LOG.isDebugEnabled()) {
- LOG.debug("No result returned for action " + getAction().getClass().getName()
- + " at " + proxy.getConfig().getLocation());
+ LOG.debug("No result returned for action {} at {}", getAction().getClass().getName(), proxy.getConfig().getLocation());
}
}
}
@@ -289,9 +278,7 @@ public class RestActionInvocation extends DefaultActionInvocation {
ResultConfig resultConfig = this.proxy.getConfig().getResults().get(defaultErrorResultName);
if (resultConfig != null) {
this.result = objectFactory.buildResult(resultConfig, invocationContext.getContextMap());
- if (LOG.isDebugEnabled()) {
- LOG.debug("Found default error result.");
- }
+ LOG.debug("Found default error result.");
}
}
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java b/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java
index e637f20d8..1a2cac250 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionMapper.java
@@ -25,8 +25,9 @@ import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.ConfigurationManager;
import com.opensymphony.xwork2.config.entities.PackageConfig;
import com.opensymphony.xwork2.inject.Inject;
-import org.apache.logging.log4j.Logger;
+import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.RequestUtils;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
@@ -97,7 +98,15 @@ import java.util.HashMap;
public class RestActionMapper extends DefaultActionMapper {
protected static final Logger LOG = LogManager.getLogger(RestActionMapper.class);
+
public static final String HTTP_METHOD_PARAM = "_method";
+
+ private static final String GET = "get";
+ private static final String POST = "post";
+ private static final String PUT = "put";
+ private static final String DELETE = "delete";
+ private static final String OPTIONS = "options";
+
private String idParameterName = "id";
private String indexMethodName = "index";
private String getMethodName = "show";
@@ -201,7 +210,7 @@ public class RestActionMapper extends DefaultActionMapper {
String fullName = mapping.getName();
// Only try something if the action name is specified
- if (fullName != null && fullName.length() > 0) {
+ if (StringUtils.isNotEmpty(fullName)) {
// cut off any ;jsessionid= type appendix but allow the rails-like ;edit
int scPos = fullName.indexOf(';');
@@ -282,7 +291,7 @@ public class RestActionMapper extends DefaultActionMapper {
if (id != null) {
if (!"new".equals(id)) {
if (mapping.getParams() == null) {
- mapping.setParams(new HashMap());
+ mapping.setParams(new HashMap());
}
mapping.getParams().put(idParameterName, new String[]{id});
}
@@ -317,8 +326,7 @@ public class RestActionMapper extends DefaultActionMapper {
* @param mapping
* The action mapping to populate
*/
- protected void parseNameAndNamespace(String uri, ActionMapping mapping,
- ConfigurationManager configManager) {
+ protected void parseNameAndNamespace(String uri, ActionMapping mapping, ConfigurationManager configManager) {
String namespace, name;
int lastSlash = uri.lastIndexOf("/");
if (lastSlash == -1) {
@@ -353,31 +361,23 @@ public class RestActionMapper extends DefaultActionMapper {
}
protected boolean isGet(HttpServletRequest request) {
- return "get".equalsIgnoreCase(request.getMethod());
+ return GET.equalsIgnoreCase(request.getMethod());
}
protected boolean isPost(HttpServletRequest request) {
- return "post".equalsIgnoreCase(request.getMethod());
+ return POST.equalsIgnoreCase(request.getMethod());
}
protected boolean isPut(HttpServletRequest request) {
- if ("put".equalsIgnoreCase(request.getMethod())) {
- return true;
- } else {
- return isPost(request) && "put".equalsIgnoreCase(request.getParameter(HTTP_METHOD_PARAM));
- }
+ return PUT.equalsIgnoreCase(request.getMethod()) || isPost(request) && PUT.equalsIgnoreCase(request.getParameter(HTTP_METHOD_PARAM));
}
protected boolean isDelete(HttpServletRequest request) {
- if ("delete".equalsIgnoreCase(request.getMethod())) {
- return true;
- } else {
- return "delete".equalsIgnoreCase(request.getParameter(HTTP_METHOD_PARAM));
- }
+ return DELETE.equalsIgnoreCase(request.getMethod()) || DELETE.equalsIgnoreCase(request.getParameter(HTTP_METHOD_PARAM));
}
protected boolean isOptions(HttpServletRequest request) {
- return "options".equalsIgnoreCase(request.getMethod());
+ return OPTIONS.equalsIgnoreCase(request.getMethod());
}
protected boolean isExpectContinue(HttpServletRequest request) {
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java b/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
index ce794c1c1..073d31208 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
@@ -27,15 +27,16 @@ import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ValidationAware;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
-import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
-import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
import java.util.HashMap;
import java.util.Map;
+import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
+
/**
*
*
@@ -200,9 +201,7 @@ public class RestWorkflowInterceptor extends MethodFilterInterceptor {
ValidationAware validationAwareAction = (ValidationAware) action;
if (validationAwareAction.hasErrors()) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Errors on action "+validationAwareAction+", returning result name 'input'");
- }
+ LOG.debug("Errors on action {}, returning result name 'input'", validationAwareAction);
ActionMapping mapping = (ActionMapping) ActionContext.getContext().get(ServletActionContext.ACTION_MAPPING);
String method = inputResultName;
if (postMethodName.equals(mapping.getMethod())) {
@@ -217,7 +216,7 @@ public class RestWorkflowInterceptor extends MethodFilterInterceptor {
.renderResult(method)
.withStatus(validationFailureStatusCode);
- Map errors = new HashMap();
+ Map errors = new HashMap<>();
errors.put("actionErrors", validationAwareAction.getActionErrors());
errors.put("fieldErrors", validationAwareAction.getFieldErrors());
diff --git a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java
index 4f573bddd..573fe6102 100644
--- a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java
+++ b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/FreemarkerDecoratorServlet.java
@@ -23,14 +23,9 @@ package org.apache.struts2.sitemesh;
import com.opensymphony.module.sitemesh.HTMLPage;
import com.opensymphony.module.sitemesh.RequestConstants;
import com.opensymphony.xwork2.ActionContext;
-import org.apache.logging.log4j.LogManager;
import freemarker.core.InvalidReferenceException;
-import freemarker.template.Configuration;
-import freemarker.template.ObjectWrapper;
-import freemarker.template.SimpleHash;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-import freemarker.template.TemplateModel;
+import freemarker.template.*;
+import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
@@ -74,17 +69,15 @@ public class FreemarkerDecoratorServlet extends freemarker.ext.servlet.Freemarke
public void init() throws ServletException {
try {
Dispatcher dispatcher = (Dispatcher) getServletContext().getAttribute(StrutsStatics.SERVLET_DISPATCHER);
- if (dispatcher == null)
+ if (dispatcher == null) {
throw new IllegalStateException("Unable to find the Dispatcher in the Servlet Context. Is '" + StrutsListener.class.getName() + "' missing in web.xml?");
-
+ }
freemarkerManager = dispatcher.getContainer().getInstance(FreemarkerManager.class);
config = createConfiguration();
// Process object_wrapper init-param out of order:
wrapper = config.getObjectWrapper();
- if (LOG.isDebugEnabled()) {
- LOG.debug("Using object wrapper of class " + wrapper.getClass().getName());
- }
+ LOG.debug("Using object wrapper of class {}", wrapper.getClass().getName());
// Process all other init-params:
Enumeration initpnames = getServletConfig().getInitParameterNames();
@@ -92,10 +85,10 @@ public class FreemarkerDecoratorServlet extends freemarker.ext.servlet.Freemarke
String name = (String) initpnames.nextElement();
String value = getInitParameter(name);
if (name == null) {
- throw new ServletException("init-param without param-name. " + "Maybe the web.xml is not well-formed?");
+ throw new ServletException("init-param without param-name. Maybe the web.xml is not well-formed?");
}
if (value == null) {
- throw new ServletException("init-param without param-value. " + "Maybe the web.xml is not well-formed?");
+ throw new ServletException("init-param without param-value. Maybe the web.xml is not well-formed?");
}
// template path is already handled!
@@ -132,7 +125,7 @@ public class FreemarkerDecoratorServlet extends freemarker.ext.servlet.Freemarke
log("Requested template: " + path);
}
- Template template = null;
+ Template template;
try {
template = config.getTemplate(path, deduceLocale(path, request, response));
} catch (FileNotFoundException e) {
@@ -176,11 +169,15 @@ public class FreemarkerDecoratorServlet extends freemarker.ext.servlet.Freemarke
// this exception is thrown if there is an error processing a reference. We want to report these!
HttpServletRequest req = ((StrutsRequestWrapper) ActionContext.getContext().get("com.opensymphony.xwork2.dispatcher.HttpServletRequest"));
String resultCode = ActionContext.getContext().getActionInvocation().getResultCode();
- if (req == null) req = request;
+ if (req == null){
+ req = request;
+ }
StringBuilder msgBuf = new StringBuilder("Error applying freemarker template to\n request: ");
msgBuf.append(req.getRequestURL());
- if (req.getQueryString() != null) msgBuf.append("?").append(req.getQueryString());
+ if (req.getQueryString() != null){
+ msgBuf.append("?").append(req.getQueryString());
+ }
msgBuf.append(" with resultCode: ").append(resultCode).append(".\n\n").append(x.getMessage());
String msg = msgBuf.toString();
LOG.error(msg, x);
diff --git a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java
index a47802f79..2e61f1e19 100644
--- a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java
+++ b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/StrutsSiteMeshFactory.java
@@ -21,9 +21,9 @@ package org.apache.struts2.sitemesh;
import com.opensymphony.module.sitemesh.Config;
import com.opensymphony.module.sitemesh.factory.DefaultFactory;
import com.opensymphony.xwork2.ActionContext;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
import org.apache.commons.lang3.ObjectUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
@@ -45,9 +45,7 @@ public class StrutsSiteMeshFactory extends DefaultFactory {
private boolean isInsideActionTag() {
if(ActionContext.getContext() == null) {
- if (LOG.isTraceEnabled()) {
- LOG.trace("ActionContext is null! Not a user request?");
- }
+ LOG.trace("ActionContext is null! Not a user request?");
return false;
}
Object attribute = ServletActionContext.getRequest().getAttribute(StrutsStatics.STRUTS_ACTION_TAG_INVOCATION);
diff --git a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/VelocityDecoratorServlet.java b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/VelocityDecoratorServlet.java
index a2814b0ba..5ddcdd5d7 100644
--- a/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/VelocityDecoratorServlet.java
+++ b/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/VelocityDecoratorServlet.java
@@ -71,8 +71,9 @@ public class VelocityDecoratorServlet extends VelocityViewServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
Dispatcher dispatcher = (Dispatcher) getServletContext().getAttribute(StrutsStatics.SERVLET_DISPATCHER);
- if (dispatcher == null)
+ if (dispatcher == null) {
throw new IllegalStateException("Unable to find the Dispatcher in the Servlet Context. Is '" + StrutsListener.class.getName() + "' missing in web.xml?");
+ }
velocityManager = dispatcher.getContainer().getInstance(VelocityManager.class);
velocityManager.init(config.getServletContext());
@@ -81,9 +82,9 @@ public class VelocityDecoratorServlet extends VelocityViewServlet {
toolboxManager = velocityManager.getToolboxManager();
// we can get these now that velocity is initialized
- defaultContentType = (String) getVelocityProperty(CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
+ defaultContentType = getVelocityProperty(CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
- String encoding = (String) getVelocityProperty(RuntimeConstants.OUTPUT_ENCODING, DEFAULT_OUTPUT_ENCODING);
+ String encoding = getVelocityProperty(RuntimeConstants.OUTPUT_ENCODING, DEFAULT_OUTPUT_ENCODING);
// For non Latin-1 encodings, ensure that the charset is
// included in the Content-Type header.
@@ -107,7 +108,7 @@ public class VelocityDecoratorServlet extends VelocityViewServlet {
String template;
context.put("base", request.getContextPath());
- // For backwards compatability with apps that used the old VelocityDecoratorServlet
+ // For backwards compatibility with apps that used the old VelocityDecoratorServlet
// that extended VelocityServlet instead of VelocityViewServlet
context.put("req", request);
context.put("res", response);
@@ -140,8 +141,7 @@ public class VelocityDecoratorServlet extends VelocityViewServlet {
private DecoratorMapper getDecoratorMapper() {
Factory factory = Factory.getInstance(new Config(getServletConfig()));
- DecoratorMapper decoratorMapper = factory.getDecoratorMapper();
- return decoratorMapper;
+ return factory.getDecoratorMapper();
}
/**
@@ -160,7 +160,7 @@ public class VelocityDecoratorServlet extends VelocityViewServlet {
}
/**
- * Sets the content type of the response. This is available to be overriden
+ * Sets the content type of the response. This is available to be overridden
* by a derived class.
*
* The default implementation is :