From e47a1127f8c17d6aed1fdccb182c366f2c519b69 Mon Sep 17 00:00:00 2001 From: Johannes Geppert Date: Mon, 8 Jun 2015 19:27:05 +0200 Subject: [PATCH] Minor code improvements's in the struts core module - Use Java 7 features like diamond operater and multi catch - Improve some logging message and don't check LOG.isXxx if not necessary - Fix some typos - Imrove some loops and use for each instead of iterator - Use BooleanUtils.toBoolean(string) instead of "true".isEquals to be more robust --- .../java/org/apache/struts2/RequestUtils.java | 10 +- .../struts2/components/ActionComponent.java | 20 ++- .../struts2/components/ActionMessage.java | 2 +- .../org/apache/struts2/components/Anchor.java | 10 +- .../struts2/components/AppendIterator.java | 19 ++- .../apache/struts2/components/ComboBox.java | 22 ++-- .../apache/struts2/components/Component.java | 27 ++-- .../components/ComponentUrlProvider.java | 2 +- .../struts2/components/ContextBean.java | 6 +- .../org/apache/struts2/components/Date.java | 26 ++-- .../org/apache/struts2/components/Else.java | 9 +- .../org/apache/struts2/components/ElseIf.java | 15 +-- .../apache/struts2/components/FieldError.java | 2 +- .../org/apache/struts2/components/File.java | 19 +-- .../org/apache/struts2/components/Form.java | 17 +-- .../org/apache/struts2/components/I18n.java | 22 ++-- .../apache/struts2/components/Include.java | 58 +++------ .../components/InputTransferSelect.java | 31 +++-- .../struts2/components/IteratorComponent.java | 6 +- .../apache/struts2/components/ListUIBean.java | 17 +-- .../struts2/components/MergeIterator.java | 21 ++- .../components/OptionTransferSelect.java | 21 ++- .../org/apache/struts2/components/Param.java | 3 +- .../apache/struts2/components/Property.java | 8 +- .../components/ServletUrlRenderer.java | 20 +-- .../org/apache/struts2/components/Text.java | 6 +- .../apache/struts2/components/TextArea.java | 9 +- .../org/apache/struts2/components/UIBean.java | 38 +++--- .../org/apache/struts2/components/URL.java | 4 +- .../struts2/components/UpDownSelect.java | 26 ++-- .../struts2/components/UrlRenderer.java | 5 +- .../template/BaseTemplateEngine.java | 19 +-- .../template/FreemarkerTemplateEngine.java | 44 +++---- .../template/JspTemplateEngine.java | 21 ++- .../struts2/components/template/Template.java | 2 +- .../template/TemplateEngineManager.java | 20 +-- .../template/VelocityTemplateEngine.java | 28 ++-- .../config/AbstractBeanSelectionProvider.java | 11 +- .../struts2/config/DefaultSettings.java | 6 +- .../struts2/config/DelegatingSettings.java | 3 +- .../struts2/config/PropertiesSettings.java | 10 +- .../StrutsXmlConfigurationProvider.java | 27 ++-- .../dispatcher/ActionContextCleanUp.java | 12 +- .../struts2/dispatcher/ApplicationMap.java | 8 +- .../struts2/dispatcher/ContainerHolder.java | 2 +- .../DefaultDispatcherErrorHandler.java | 19 ++- .../DefaultStaticContentLoader.java | 33 ++--- .../apache/struts2/dispatcher/Dispatcher.java | 45 +++---- .../struts2/dispatcher/FilterDispatcher.java | 12 +- .../struts2/dispatcher/HttpHeaderResult.java | 10 +- .../struts2/dispatcher/PlainTextResult.java | 15 +-- .../apache/struts2/dispatcher/RequestMap.java | 3 +- .../dispatcher/ServletDispatcherResult.java | 10 +- .../dispatcher/ServletRedirectResult.java | 12 +- .../apache/struts2/dispatcher/SessionMap.java | 13 +- .../struts2/dispatcher/StreamResult.java | 31 ++--- .../dispatcher/StrutsResultSupport.java | 21 ++- .../struts2/dispatcher/VelocityResult.java | 4 +- .../mapper/CompositeActionMapper.java | 51 +++----- .../mapper/DefaultActionMapper.java | 34 +++-- .../mapper/PrefixBasedActionMapper.java | 37 +++--- .../mapper/Restful2ActionMapper.java | 9 +- .../mapper/RestfulActionMapper.java | 4 +- .../multipart/JakartaMultiPartRequest.java | 43 +++---- .../JakartaStreamMultiPartRequest.java | 120 +++++++++--------- .../multipart/MultiPartRequest.java | 2 +- .../multipart/MultiPartRequestWrapper.java | 23 +--- .../struts2/dispatcher/ng/InitOperations.java | 12 +- .../dispatcher/ng/PrepareOperations.java | 9 +- .../ng/filter/StrutsExecuteFilter.java | 11 +- .../impl/PrefixBasedActionProxyFactory.java | 6 +- .../struts2/impl/StrutsObjectFactory.java | 2 +- .../ActionMappingParametersInteceptor.java | 16 +-- .../interceptor/CheckboxInterceptor.java | 10 +- .../interceptor/ClearSessionInterceptor.java | 12 +- .../interceptor/CookieInterceptor.java | 22 ++-- .../interceptor/CreateSessionInterceptor.java | 6 +- .../interceptor/DateTextFieldInterceptor.java | 33 ++--- .../interceptor/DeprecationInterceptor.java | 9 +- .../ExecuteAndWaitInterceptor.java | 28 ++-- .../interceptor/FileUploadInterceptor.java | 25 +--- .../interceptor/MessageStoreInterceptor.java | 46 +++---- .../interceptor/MultiselectInterceptor.java | 2 +- .../ProfilingActivationInterceptor.java | 8 +- .../struts2/interceptor/RolesInterceptor.java | 6 +- .../struts2/interceptor/ScopeInterceptor.java | 70 ++++------ .../struts2/interceptor/TokenInterceptor.java | 4 +- .../debugging/DebuggingInterceptor.java | 73 ++++------- .../debugging/ObjectToHTMLWriter.java | 24 ++-- .../debugging/PrettyPrintWriter.java | 4 +- .../AnnotationValidationInterceptor.java | 17 +-- .../util/FastByteArrayOutputStream.java | 17 ++- .../struts2/util/IteratorGenerator.java | 12 +- .../struts2/util/RegexPatternMatcher.java | 2 +- .../struts2/util/SortIteratorFilter.java | 16 +-- .../struts2/util/StrutsTestCaseHelper.java | 12 +- .../org/apache/struts2/util/StrutsUtil.java | 15 +-- .../struts2/util/TextProviderHelper.java | 12 +- .../org/apache/struts2/util/TokenHelper.java | 31 +---- .../views/freemarker/FreemarkerManager.java | 48 ++----- .../views/freemarker/ScopesHashModel.java | 2 +- .../jsp/iterator/IteratorGeneratorTag.java | 11 +- .../views/jsp/iterator/SubsetIteratorTag.java | 15 +-- .../struts2/views/jsp/ui/AbstractUITag.java | 2 +- .../views/jsp/ui/AbstractUITagBeanInfo.java | 4 +- .../struts2/views/jsp/ui/AnchorTag.java | 16 +-- .../struts2/views/util/DefaultUrlHelper.java | 15 +-- .../views/velocity/VelocityManager.java | 43 ++----- .../views/xslt/AbstractAdapterNode.java | 30 ++--- .../struts2/views/xslt/AdapterFactory.java | 54 ++++---- .../struts2/views/xslt/ArrayAdapter.java | 15 +-- .../struts2/views/xslt/BeanAdapter.java | 26 ++-- .../struts2/views/xslt/CollectionAdapter.java | 15 +-- .../apache/struts2/views/xslt/MapAdapter.java | 11 +- .../views/xslt/ProxyElementAdapter.java | 20 +-- .../struts2/views/xslt/ProxyNodeAdapter.java | 19 +-- .../views/xslt/ServletURIResolver.java | 15 +-- .../struts2/views/xslt/SimpleNodeList.java | 14 +- .../struts2/views/xslt/StringAdapter.java | 19 ++- .../apache/struts2/views/xslt/XSLTResult.java | 34 ++--- core/src/site/resources/tags/a.html | 2 +- .../site/resources/tags/actionmessage.html | 2 +- .../src/site/resources/tags/checkboxlist.html | 4 +- core/src/site/resources/tags/combobox.html | 6 +- .../src/site/resources/tags/doubleselect.html | 4 +- .../resources/tags/inputtransferselect.html | 4 +- .../resources/tags/optiontransferselect.html | 4 +- core/src/site/resources/tags/radio.html | 4 +- core/src/site/resources/tags/select.html | 4 +- core/src/site/resources/tags/text.html | 2 +- .../src/site/resources/tags/updownselect.html | 4 +- 131 files changed, 914 insertions(+), 1391 deletions(-) diff --git a/core/src/main/java/org/apache/struts2/RequestUtils.java b/core/src/main/java/org/apache/struts2/RequestUtils.java index a09f879ff..393459a68 100644 --- a/core/src/main/java/org/apache/struts2/RequestUtils.java +++ b/core/src/main/java/org/apache/struts2/RequestUtils.java @@ -21,6 +21,7 @@ package org.apache.struts2; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.FastDateFormat; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -69,8 +70,8 @@ public class RequestUtils { servletPath = requestUri.substring(requestUri.indexOf(servletPath)); } } - - if (null != servletPath && !"".equals(servletPath)) { + + if (StringUtils.isNotEmpty(servletPath)) { return servletPath; } @@ -92,14 +93,13 @@ public class RequestUtils { */ public static String getUri(HttpServletRequest request) { // handle http dispatcher includes. - String uri = (String) request - .getAttribute("javax.servlet.include.servlet_path"); + String uri = (String) request.getAttribute("javax.servlet.include.servlet_path"); if (uri != null) { return uri; } uri = getServletPath(request); - if (uri != null && !"".equals(uri)) { + if (StringUtils.isNotEmpty(uri)) { return uri; } diff --git a/core/src/main/java/org/apache/struts2/components/ActionComponent.java b/core/src/main/java/org/apache/struts2/components/ActionComponent.java index fd583396b..5b1196bf6 100644 --- a/core/src/main/java/org/apache/struts2/components/ActionComponent.java +++ b/core/src/main/java/org/apache/struts2/components/ActionComponent.java @@ -28,8 +28,8 @@ import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.ValueStackFactory; -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.StrutsException; import org.apache.struts2.StrutsStatics; @@ -47,7 +47,6 @@ import javax.servlet.jsp.PageContext; import java.io.IOException; import java.io.Writer; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; /** @@ -164,16 +163,13 @@ public class ActionComponent extends ContextBean { try { writer.flush(); } catch (IOException e) { - if (LOG.isWarnEnabled()) { LOG.warn("error while trying to flush writer ", e); - } } } executeAction(); if ((getVar() != null) && (proxy != null)) { - getStack().setValue("#attr['" + getVar() + "']", - proxy.getAction()); + getStack().setValue("#attr['" + getVar() + "']", proxy.getAction()); } } finally { popComponentStack(); @@ -219,14 +215,14 @@ public class ActionComponent extends ContextBean { parentParams = new ActionContext(getStack().getContext()).getParameters(); } - Map newParams = (parentParams != null) - ? new HashMap(parentParams) - : new HashMap(); + Map newParams = (parentParams != null) + ? new HashMap(parentParams) + : new HashMap(); if (parameters != null) { - Map params = new HashMap(); - for (Iterator i = parameters.entrySet().iterator(); i.hasNext(); ) { - Map.Entry entry = (Map.Entry) i.next(); + Map params = new HashMap<>(); + for (Object o : parameters.entrySet()) { + Map.Entry entry = (Map.Entry) o; String key = (String) entry.getKey(); Object val = entry.getValue(); if (val.getClass().isArray() && String.class == val.getClass().getComponentType()) { diff --git a/core/src/main/java/org/apache/struts2/components/ActionMessage.java b/core/src/main/java/org/apache/struts2/components/ActionMessage.java index 74ab33bb5..10ba59f16 100644 --- a/core/src/main/java/org/apache/struts2/components/ActionMessage.java +++ b/core/src/main/java/org/apache/struts2/components/ActionMessage.java @@ -82,7 +82,7 @@ public class ActionMessage extends UIBean { addParameter("escape", escape); } - @StrutsTagAttribute(description=" Whether to escape HTML", type="Boolean", defaultValue="true") + @StrutsTagAttribute(description = "Whether to escape HTML", type = "Boolean", defaultValue = "true") public void setEscape(boolean escape) { this.escape = escape; } diff --git a/core/src/main/java/org/apache/struts2/components/Anchor.java b/core/src/main/java/org/apache/struts2/components/Anchor.java index 3d7fdf983..5819294f5 100644 --- a/core/src/main/java/org/apache/struts2/components/Anchor.java +++ b/core/src/main/java/org/apache/struts2/components/Anchor.java @@ -23,19 +23,19 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ValueStack; -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.StrutsConstants; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; -import org.apache.commons.lang3.StringUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.StringWriter; import java.io.Writer; -import java.util.Map; import java.util.LinkedHashMap; +import java.util.Map; /** * @@ -48,7 +48,7 @@ import java.util.LinkedHashMap; *

*

  * 
- * <s:a id="link1" theme="ajax" href="/DoIt.action">
+ * <s:a id="link1" href="/do-it.action">
  *     <img border="none" src="<%=request.getContextPath()%>/images/delete.gif"/>
  *     <s:param name="id" value="1"/>
  * </s:a>
@@ -58,7 +58,7 @@ import java.util.LinkedHashMap;
 @StrutsTag(
         name = "a",
         tldTagClass = "org.apache.struts2.views.jsp.ui.AnchorTag",
-        description = "Render a HTML href element that when clicked can optionally call a URL via remote XMLHttpRequest and updates its targets",
+        description = "Render a HTML href element",
         allowDynamicAttributes = true)
 public class Anchor extends ClosingUIBean {
     private static final Logger LOG = LogManager.getLogger(Anchor.class);
diff --git a/core/src/main/java/org/apache/struts2/components/AppendIterator.java b/core/src/main/java/org/apache/struts2/components/AppendIterator.java
index 6021fe352..eebddad0f 100644
--- a/core/src/main/java/org/apache/struts2/components/AppendIterator.java
+++ b/core/src/main/java/org/apache/struts2/components/AppendIterator.java
@@ -21,20 +21,19 @@
 
 package org.apache.struts2.components;
 
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.struts2.components.Param.UnnamedParametric;
 import org.apache.struts2.util.AppendIteratorFilter;
 import org.apache.struts2.util.MakeIterator;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
-import com.opensymphony.xwork2.util.ValueStack;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 /**
  * 
@@ -141,9 +140,7 @@ public class AppendIterator extends ContextBean implements UnnamedParametric {
 
             Object iteratorEntryObj = paramEntries.next();
             if (! MakeIterator.isIterable(iteratorEntryObj)) {
-                if (LOG.isWarnEnabled()) {
-                    LOG.warn("param with value resolved as "+iteratorEntryObj+" cannot be make as iterator, it will be ignored and hence will not appear in the merged iterator");
-                }
+                LOG.warn("param with value resolved as {} cannot be make as iterator, it will be ignored and hence will not appear in the merged iterator", iteratorEntryObj);
                 continue;
             }
             appendIteratorFilter.setSource(MakeIterator.convert(iteratorEntryObj));
diff --git a/core/src/main/java/org/apache/struts2/components/ComboBox.java b/core/src/main/java/org/apache/struts2/components/ComboBox.java
index bde41baf9..d7ac8dccb 100644
--- a/core/src/main/java/org/apache/struts2/components/ComboBox.java
+++ b/core/src/main/java/org/apache/struts2/components/ComboBox.java
@@ -21,18 +21,16 @@
 
 package org.apache.struts2.components;
 
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.struts2.util.MakeIterator;
+import org.apache.struts2.views.annotations.StrutsTag;
+import org.apache.struts2.views.annotations.StrutsTagAttribute;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
-import org.apache.struts2.views.annotations.StrutsTag;
-import org.apache.struts2.views.annotations.StrutsTagAttribute;
-import org.apache.struts2.util.MakeIterator;
-
-import com.opensymphony.xwork2.util.ValueStack;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
 
 /**
  * 
@@ -158,7 +156,7 @@ public class ComboBox extends TextField {
                 "Example: people or people.{name}");
     }
 
-    @StrutsTagAttribute(description="Iteratable source to populate from. " +
+    @StrutsTagAttribute(description = "Iterable source to populate from. " +
                 "If this is missing, the select widget is simply not displayed.", required=true)
     public void setList(String list) {
         this.list = list;
@@ -179,12 +177,12 @@ public class ComboBox extends TextField {
         this.headerValue = headerValue;
     }
 
-    @StrutsTagAttribute(description="Set the key used to retrive the option key.")
+    @StrutsTagAttribute(description = "Set the key used to retrieve the option key.")
     public void setListKey(String listKey) {
         this.listKey = listKey;
     }
 
-    @StrutsTagAttribute(description="Set the value used to retrive the option value.")
+    @StrutsTagAttribute(description = "Set the value used to retrieve the option value.")
     public void setListValue(String listValue) {
         this.listValue = listValue;
     }
diff --git a/core/src/main/java/org/apache/struts2/components/Component.java b/core/src/main/java/org/apache/struts2/components/Component.java
index bde06c023..1853ed84e 100644
--- a/core/src/main/java/org/apache/struts2/components/Component.java
+++ b/core/src/main/java/org/apache/struts2/components/Component.java
@@ -25,9 +25,10 @@ import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.AnnotationUtils;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.ValueStack;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
+import org.apache.commons.lang3.BooleanUtils;
 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.dispatcher.mapper.ActionMapper;
@@ -44,11 +45,7 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Writer;
 import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Stack;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
@@ -67,7 +64,7 @@ public class Component {
     /**
      * Caches information about common tag's attributes to reduce scanning for annotation @StrutsTagAttribute
      */
-    protected static ConcurrentMap, Collection> standardAttributesMap = new ConcurrentHashMap, Collection>();
+    protected static ConcurrentMap, Collection> standardAttributesMap = new ConcurrentHashMap<>();
 
     protected boolean devMode = false;
     protected ValueStack stack;
@@ -83,7 +80,7 @@ public class Component {
      */
     public Component(ValueStack stack) {
         this.stack = stack;
-        this.parameters = new LinkedHashMap();
+        this.parameters = new LinkedHashMap<>();
         getComponentStack().push(this);
     }
 
@@ -101,7 +98,7 @@ public class Component {
 
     @Inject(value = StrutsConstants.STRUTS_DEVMODE, required = false)
     public void setDevMode(String devMode) {
-        this.devMode = Boolean.parseBoolean(devMode);
+        this.devMode = BooleanUtils.toBoolean(devMode);
     }
 
     @Inject
@@ -111,7 +108,7 @@ public class Component {
 
     @Inject(StrutsConstants.STRUTS_EL_THROW_EXCEPTION)
     public void setThrowExceptionsOnELFailure(String throwException) {
-        this.throwExceptionOnELFailure = "true".equals(throwException);
+        this.throwExceptionOnELFailure = BooleanUtils.toBoolean(throwException);
     }
 
     @Inject
@@ -133,7 +130,7 @@ public class Component {
     public Stack getComponentStack() {
         Stack componentStack = (Stack) stack.getContext().get(COMPONENT_STACK);
         if (componentStack == null) {
-            componentStack = new Stack();
+            componentStack = new Stack<>();
             stack.getContext().put(COMPONENT_STACK, componentStack);
         }
         return componentStack;
@@ -230,7 +227,7 @@ public class Component {
      * Evaluates the OGNL stack to find a String value.
      * 

* If the given expression is null a error is logged and a RuntimeException is thrown - * constructed with a messaged based on the given field and errorMsg paramter. + * constructed with a messaged based on the given field and errorMsg parameter. * * @param expr OGNL expression. * @param field field name used when throwing RuntimeException. @@ -499,7 +496,7 @@ public class Component { * If the provided value is null any existing parameter with * the given key name is removed. * @param key the key of the new parameter to add. - * @param value the value assoicated with the key. + * @param value the value associated with the key. */ public void addParameter(String key, Object value) { if (key != null) { @@ -539,7 +536,7 @@ public class Component { Collection standardAttributes = standardAttributesMap.get(clz); if (standardAttributes == null) { Collection methods = AnnotationUtils.getAnnotatedMethods(clz, StrutsTagAttribute.class); - standardAttributes = new HashSet(methods.size()); + standardAttributes = new HashSet<>(methods.size()); for(Method m : methods) { standardAttributes.add(StringUtils.uncapitalize(m.getName().substring(3))); } diff --git a/core/src/main/java/org/apache/struts2/components/ComponentUrlProvider.java b/core/src/main/java/org/apache/struts2/components/ComponentUrlProvider.java index bcb58e437..4a5c88cbc 100644 --- a/core/src/main/java/org/apache/struts2/components/ComponentUrlProvider.java +++ b/core/src/main/java/org/apache/struts2/components/ComponentUrlProvider.java @@ -56,7 +56,7 @@ public class ComponentUrlProvider implements UrlProvider { /** * - * @param component The component used to delagete some calls to + * @param component The component used to delegate some calls to * @param parameters parameters passed from */ public ComponentUrlProvider(Component component, Map parameters) { diff --git a/core/src/main/java/org/apache/struts2/components/ContextBean.java b/core/src/main/java/org/apache/struts2/components/ContextBean.java index 57a44317f..6ef8b7493 100644 --- a/core/src/main/java/org/apache/struts2/components/ContextBean.java +++ b/core/src/main/java/org/apache/struts2/components/ContextBean.java @@ -21,9 +21,9 @@ package org.apache.struts2.components; -import org.apache.struts2.views.annotations.StrutsTagAttribute; - import com.opensymphony.xwork2.util.ValueStack; +import org.apache.commons.lang3.StringUtils; +import org.apache.struts2.views.annotations.StrutsTagAttribute; /** * Base class for control and data tags @@ -36,7 +36,7 @@ public abstract class ContextBean extends Component { } protected void putInContext(Object value) { - if (var != null && var.length() > 0) { + if (StringUtils.isNotBlank(var)) { stack.getContext().put(var, value); } } diff --git a/core/src/main/java/org/apache/struts2/components/Date.java b/core/src/main/java/org/apache/struts2/components/Date.java index ac61fc791..cedb6af5d 100644 --- a/core/src/main/java/org/apache/struts2/components/Date.java +++ b/core/src/main/java/org/apache/struts2/components/Date.java @@ -24,8 +24,8 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.TextProvider; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; @@ -35,7 +35,6 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; -import java.util.Iterator; import java.util.List; import java.util.TimeZone; @@ -200,10 +199,7 @@ public class Date extends ContextBean { } private TextProvider findProviderInStack() { - for (Iterator iterator = getStack().getRoot().iterator(); iterator - .hasNext();) { - Object o = iterator.next(); - + for (Object o : getStack().getRoot()) { if (o instanceof TextProvider) { return (TextProvider) o; } @@ -234,31 +230,31 @@ public class Date extends ContextBean { int years = days / 365; if (years > 0) { - args.add(Long.valueOf(years)); - args.add(Long.valueOf(day)); + args.add(years); + args.add(day); args.add(sb); args.add(null); sb.append(tp.getText(DATETAG_PROPERTY_YEARS, DATETAG_DEFAULT_YEARS, args)); } else if (day > 0) { - args.add(Long.valueOf(day)); - args.add(Long.valueOf(hour)); + args.add(day); + args.add(hour); args.add(sb); args.add(null); sb.append(tp.getText(DATETAG_PROPERTY_DAYS, DATETAG_DEFAULT_DAYS, args)); } else if (hour > 0) { - args.add(Long.valueOf(hour)); - args.add(Long.valueOf(min)); + args.add(hour); + args.add(min); args.add(sb); args.add(null); sb.append(tp.getText(DATETAG_PROPERTY_HOURS, DATETAG_DEFAULT_HOURS, args)); } else if (min > 0) { - args.add(Long.valueOf(min)); - args.add(Long.valueOf(sec)); + args.add(min); + args.add(sec); args.add(sb); args.add(null); sb.append(tp.getText(DATETAG_PROPERTY_MINUTES, DATETAG_DEFAULT_MINUTES, args)); } else { - args.add(Long.valueOf(sec)); + args.add(sec); args.add(sb); args.add(null); sb.append(tp.getText(DATETAG_PROPERTY_SECONDS, DATETAG_DEFAULT_SECONDS, args)); diff --git a/core/src/main/java/org/apache/struts2/components/Else.java b/core/src/main/java/org/apache/struts2/components/Else.java index b64bcda72..4ce124bac 100644 --- a/core/src/main/java/org/apache/struts2/components/Else.java +++ b/core/src/main/java/org/apache/struts2/components/Else.java @@ -21,12 +21,11 @@ package org.apache.struts2.components; -import java.io.Writer; -import java.util.Map; - +import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.views.annotations.StrutsTag; -import com.opensymphony.xwork2.util.ValueStack; +import java.io.Writer; +import java.util.Map; /** * @@ -70,6 +69,6 @@ public class Else extends Component { context.remove(If.ANSWER); - return !((ifResult == null) || (ifResult.booleanValue())); + return !((ifResult == null) || (ifResult)); } } diff --git a/core/src/main/java/org/apache/struts2/components/ElseIf.java b/core/src/main/java/org/apache/struts2/components/ElseIf.java index ac288859d..215a58ee7 100644 --- a/core/src/main/java/org/apache/struts2/components/ElseIf.java +++ b/core/src/main/java/org/apache/struts2/components/ElseIf.java @@ -21,12 +21,11 @@ package org.apache.struts2.components; -import java.io.Writer; - +import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; -import com.opensymphony.xwork2.util.ValueStack; +import java.io.Writer; /** * @@ -75,27 +74,27 @@ public class ElseIf extends Component { public boolean start(Writer writer) { Boolean ifResult = (Boolean) stack.getContext().get(If.ANSWER); - if ((ifResult == null) || (ifResult.booleanValue())) { + if ((ifResult == null) || (ifResult)) { return false; } - //make the comparision + //make the comparison answer = (Boolean) findValue(test, Boolean.class); if (answer == null) { answer = Boolean.FALSE; } - if (answer.booleanValue()) { + if (answer) { stack.getContext().put(If.ANSWER, answer); } - return answer.booleanValue(); + return answer; } public boolean end(Writer writer, String body) { if (answer == null) { answer = Boolean.FALSE; } - if (answer.booleanValue()) { + if (answer) { stack.getContext().put(If.ANSWER, answer); } return super.end(writer, ""); diff --git a/core/src/main/java/org/apache/struts2/components/FieldError.java b/core/src/main/java/org/apache/struts2/components/FieldError.java index 63fee5f3d..581ca460a 100644 --- a/core/src/main/java/org/apache/struts2/components/FieldError.java +++ b/core/src/main/java/org/apache/struts2/components/FieldError.java @@ -91,7 +91,7 @@ import java.util.List; "or partial depending on param tag nested)if they exists") public class FieldError extends UIBean implements UnnamedParametric { - private List errorFieldNames = new ArrayList(); + private List errorFieldNames = new ArrayList<>(); private boolean escape = true; public FieldError(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { diff --git a/core/src/main/java/org/apache/struts2/components/File.java b/core/src/main/java/org/apache/struts2/components/File.java index 6d861820b..d98df908b 100644 --- a/core/src/main/java/org/apache/struts2/components/File.java +++ b/core/src/main/java/org/apache/struts2/components/File.java @@ -21,15 +21,14 @@ package org.apache.struts2.components; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * @@ -75,17 +74,13 @@ public class File extends UIBean { String encType = (String) form.getParameters().get("enctype"); if (!"multipart/form-data".equals(encType)) { // uh oh, this isn't good! Let's warn the developer - if (LOG.isWarnEnabled()) { - LOG.warn("Struts has detected a file upload UI tag (s:file) being used without a form set to enctype 'multipart/form-data'. This is probably an error!"); - } + LOG.warn("Struts has detected a file upload UI tag (s:file) being used without a form set to enctype 'multipart/form-data'. This is probably an error!"); } String method = (String) form.getParameters().get("method"); if (!"post".equalsIgnoreCase(method)) { // uh oh, this isn't good! Let's warn the developer - if (LOG.isWarnEnabled()) { - LOG.warn("Struts has detected a file upload UI tag (s:file) being used without a form set to method 'POST'. This is probably an error!"); - } + LOG.warn("Struts has detected a file upload UI tag (s:file) being used without a form set to method 'POST'. This is probably an error!"); } } diff --git a/core/src/main/java/org/apache/struts2/components/Form.java b/core/src/main/java/org/apache/struts2/components/Form.java index e705050e5..5e85adfdd 100644 --- a/core/src/main/java/org/apache/struts2/components/Form.java +++ b/core/src/main/java/org/apache/struts2/components/Form.java @@ -29,12 +29,7 @@ import com.opensymphony.xwork2.config.entities.InterceptorMapping; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptorUtil; import com.opensymphony.xwork2.util.ValueStack; -import com.opensymphony.xwork2.validator.ActionValidatorManager; -import com.opensymphony.xwork2.validator.FieldValidator; -import com.opensymphony.xwork2.validator.ValidationException; -import com.opensymphony.xwork2.validator.ValidationInterceptor; -import com.opensymphony.xwork2.validator.Validator; -import com.opensymphony.xwork2.validator.ValidatorContext; +import com.opensymphony.xwork2.validator.*; import com.opensymphony.xwork2.validator.validators.VisitorFieldValidator; import org.apache.commons.lang3.StringUtils; import org.apache.struts2.dispatcher.mapper.ActionMapping; @@ -278,7 +273,7 @@ public class Form extends ClosingUIBean { String actionName = mapping.getName(); List actionValidators = actionValidatorManager.getValidators(actionClass, actionName); - List validators = new ArrayList(); + List validators = new ArrayList<>(); findFieldValidators(name, actionClass, actionName, actionValidators, validators, ""); @@ -286,7 +281,7 @@ public class Form extends ClosingUIBean { } private void findFieldValidators(String name, Class actionClass, String actionName, - List validatorList, List retultValidators, String prefix) { + List validatorList, List resultValidators, String prefix) { for (Validator validator : validatorList) { if (validator instanceof FieldValidator) { @@ -301,14 +296,14 @@ public class Form extends ClosingUIBean { List visitorValidators = actionValidatorManager.getValidators(clazz, actionName); String vPrefix = prefix + (vfValidator.isAppendPrefix() ? vfValidator.getFieldName() + "." : ""); - findFieldValidators(name, clazz, actionName, visitorValidators, retultValidators, vPrefix); + findFieldValidators(name, clazz, actionName, visitorValidators, resultValidators, vPrefix); } else if ((prefix + fieldValidator.getFieldName()).equals(name)) { if (StringUtils.isNotBlank(prefix)) { //fixing field name for js side FieldVisitorValidatorWrapper wrap = new FieldVisitorValidatorWrapper(fieldValidator, prefix); - retultValidators.add(wrap); + resultValidators.add(wrap); } else { - retultValidators.add(fieldValidator); + resultValidators.add(fieldValidator); } } } diff --git a/core/src/main/java/org/apache/struts2/components/I18n.java b/core/src/main/java/org/apache/struts2/components/I18n.java index 82d690b87..651fd5af4 100644 --- a/core/src/main/java/org/apache/struts2/components/I18n.java +++ b/core/src/main/java/org/apache/struts2/components/I18n.java @@ -21,24 +21,23 @@ package org.apache.struts2.components; -import java.io.Writer; -import java.util.Locale; -import java.util.ResourceBundle; - -import org.apache.struts2.views.annotations.StrutsTag; -import org.apache.struts2.views.annotations.StrutsTagAttribute; -import org.apache.struts2.StrutsException; - import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.LocaleProvider; -import com.opensymphony.xwork2.TextProviderFactory; import com.opensymphony.xwork2.TextProvider; +import com.opensymphony.xwork2.TextProviderFactory; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.LocalizedTextUtil; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.struts2.StrutsException; +import org.apache.struts2.views.annotations.StrutsTag; +import org.apache.struts2.views.annotations.StrutsTagAttribute; + +import java.io.Writer; +import java.util.Locale; +import java.util.ResourceBundle; /** * @@ -129,8 +128,7 @@ public class I18n extends Component { pushed = true; } } catch (Exception e) { - String msg = "Could not find the bundle " + name; - throw new StrutsException(msg, e); + throw new StrutsException("Could not find the bundle " + name, e); } return result; diff --git a/core/src/main/java/org/apache/struts2/components/Include.java b/core/src/main/java/org/apache/struts2/components/Include.java index fbc702f05..bcd97a42c 100644 --- a/core/src/main/java/org/apache/struts2/components/Include.java +++ b/core/src/main/java/org/apache/struts2/components/Include.java @@ -21,17 +21,15 @@ package org.apache.struts2.components; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.io.Writer; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Stack; -import java.util.StringTokenizer; +import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.ValueStack; +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.util.FastByteArrayOutputStream; +import org.apache.struts2.views.annotations.StrutsTag; +import org.apache.struts2.views.annotations.StrutsTagAttribute; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; @@ -40,17 +38,9 @@ import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; - -import org.apache.struts2.RequestUtils; -import org.apache.struts2.StrutsConstants; -import org.apache.struts2.util.FastByteArrayOutputStream; -import org.apache.struts2.views.annotations.StrutsTag; -import org.apache.struts2.views.annotations.StrutsTagAttribute; - -import com.opensymphony.xwork2.inject.Inject; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import java.io.*; +import java.net.URLEncoder; +import java.util.*; /** * @@ -135,24 +125,20 @@ public class Include extends Component { String concat = ""; // Set parameters - Iterator iter = parameters.entrySet().iterator(); - - while (iter.hasNext()) { - Map.Entry entry = (Map.Entry) iter.next(); + for (Object next : parameters.entrySet()) { + Map.Entry entry = (Map.Entry) next; Object name = entry.getKey(); List values = (List) entry.getValue(); - for (int i = 0; i < values.size(); i++) { + for (Object value : values) { urlBuf.append(concat); urlBuf.append(name); urlBuf.append('='); try { - urlBuf.append(URLEncoder.encode(values.get(i).toString(), "UTF-8")); - } catch (Exception e) { - if (LOG.isWarnEnabled()) { - LOG.warn("unable to url-encode "+values.get(i).toString()+", it will be ignored"); - } + urlBuf.append(URLEncoder.encode(value.toString(), "UTF-8")); + } catch (UnsupportedEncodingException e) { + LOG.warn("Unable to url-encode {}, it will be ignored", value); } concat = "&"; @@ -165,10 +151,8 @@ public class Include extends Component { // Include try { include(result, writer, req, res, defaultEncoding); - } catch (Exception e) { - if (LOG.isWarnEnabled()) { - LOG.warn("Exception thrown during include of " + result, e); - } + } catch (ServletException | IOException e) { + LOG.warn("Exception thrown during include of {}", result, e); } return super.end(writer, body); @@ -199,7 +183,7 @@ public class Include extends Component { // .. is illegal in an absolute path according to the Servlet Spec and will cause // known problems on Orion application servers. - if (returnValue.indexOf("..") != -1) { + if (returnValue.contains("..")) { Stack stack = new Stack(); StringTokenizer pathParts = new StringTokenizer(returnValue.replace('\\', '/'), "/"); diff --git a/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java b/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java index 0dcf7d08e..c137ec8f3 100644 --- a/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java +++ b/core/src/main/java/org/apache/struts2/components/InputTransferSelect.java @@ -21,18 +21,17 @@ package org.apache.struts2.components; -import java.util.LinkedHashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.LinkedHashMap; +import java.util.Map; /** * @@ -40,7 +39,7 @@ import org.apache.logging.log4j.LogManager; * Create a input transfer select component which is basically an text input * and <select ...> tag with buttons in the middle of them allowing text * to be added to the transfer select. Will auto-select all its - * elements upon its containing form submision. + * elements upon its containing form submission. * * * @@ -113,11 +112,11 @@ public class InputTransferSelect extends ListUIBean { public void evaluateExtraParams() { super.evaluateExtraParams(); - if (size == null || size.trim().length() <= 0) { + if (StringUtils.isBlank(size)) { addParameter("size", "5"); } - if (multiple == null || multiple.trim().length() <= 0) { + if (StringUtils.isBlank(multiple)) { addParameter("multiple", Boolean.TRUE); } @@ -140,12 +139,12 @@ public class InputTransferSelect extends ListUIBean { // buttonCssClass - if (buttonCssClass != null && buttonCssClass.trim().length() > 0) { + if (StringUtils.isNotBlank(buttonCssClass)) { addParameter("buttonCssClass", buttonCssClass); } // buttonCssStyle - if (buttonCssStyle != null && buttonCssStyle.trim().length() > 0) { + if (StringUtils.isNotBlank(buttonCssStyle)) { addParameter("buttonCssStyle", buttonCssStyle); } @@ -174,11 +173,11 @@ public class InputTransferSelect extends ListUIBean { // inform the form component our select tag infos, so they know how to select - // its elements upon onsubmit + // its elements upon onSubmit Form formAncestor = (Form) findAncestor(Form.class); if (formAncestor != null) { - // inform ancestor form that we are having a customOnsubmit (see form-close.ftl [simple theme]) + // inform ancestor form that we are having a customOnSubmit (see form-close.ftl [simple theme]) enableAncestorFormCustomOnsubmit(); diff --git a/core/src/main/java/org/apache/struts2/components/IteratorComponent.java b/core/src/main/java/org/apache/struts2/components/IteratorComponent.java index 45a8ee1e5..9ca073d1b 100644 --- a/core/src/main/java/org/apache/struts2/components/IteratorComponent.java +++ b/core/src/main/java/org/apache/struts2/components/IteratorComponent.java @@ -22,8 +22,8 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.util.MakeIterator; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; @@ -276,7 +276,7 @@ public class IteratorComponent extends ContextBean { if (iterator == null) { //classic for loop from 'begin' to 'end' iterator = new CounterIterator(begin, end, step, null); - } else if (iterator != null) { + } else { //only arrays and lists are supported if (iteratorTarget.getClass().isArray()) { Object[] values = (Object[]) iteratorTarget; @@ -304,8 +304,6 @@ public class IteratorComponent extends ContextBean { String var = getVar(); if ((var != null) && (currentValue != null)) { - //pageContext.setAttribute(id, currentValue); - //pageContext.setAttribute(id, currentValue, PageContext.REQUEST_SCOPE); putInContext(currentValue); } diff --git a/core/src/main/java/org/apache/struts2/components/ListUIBean.java b/core/src/main/java/org/apache/struts2/components/ListUIBean.java index 1adfc2efb..cd113264d 100644 --- a/core/src/main/java/org/apache/struts2/components/ListUIBean.java +++ b/core/src/main/java/org/apache/struts2/components/ListUIBean.java @@ -22,6 +22,7 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.util.ValueStack; +import org.apache.commons.lang3.StringUtils; import org.apache.struts2.util.ContainUtil; import org.apache.struts2.util.MakeIterator; import org.apache.struts2.views.annotations.StrutsTagAttribute; @@ -96,11 +97,11 @@ public abstract class ListUIBean extends UIBean { } if (value instanceof Collection) { - addParameter("listSize", Integer.valueOf(((Collection) value).size())); + addParameter("listSize", ((Collection) value).size()); } else if (value instanceof Map) { - addParameter("listSize", Integer.valueOf(((Map) value).size())); + addParameter("listSize", ((Map) value).size()); } else if (value != null && value.getClass().isArray()) { - addParameter("listSize", Integer.valueOf(Array.getLength(value))); + addParameter("listSize", Array.getLength(value)); } if (listKey != null) { @@ -127,15 +128,15 @@ public abstract class ListUIBean extends UIBean { addParameter("listLabelKey", listLabelKey); } - if (listCssClass != null && listCssClass.trim().length() > 0) { + if (StringUtils.isNotBlank(listCssClass)) { addParameter("listCssClass", listCssClass); } - if (listCssStyle != null && listCssStyle.trim().length() > 0) { + if (StringUtils.isNotBlank(listCssStyle)) { addParameter("listCssStyle", listCssStyle); } - if (listTitle != null && listTitle.trim().length() > 0) { + if (StringUtils.isNotBlank(listTitle)) { addParameter("listTitle", listTitle); } } @@ -154,12 +155,12 @@ public abstract class ListUIBean extends UIBean { this.list = list; } - @StrutsTagAttribute(description = " Property of list objects to get field value from") + @StrutsTagAttribute(description = "Property of list objects to get field value from") public void setListKey(String listKey) { this.listKey = listKey; } - @StrutsTagAttribute(description = " Property of list objects to get field value label from") + @StrutsTagAttribute(description = "Property of list objects to get field value label from") public void setListValueKey(String listValueKey) { this.listValueKey = listValueKey; } diff --git a/core/src/main/java/org/apache/struts2/components/MergeIterator.java b/core/src/main/java/org/apache/struts2/components/MergeIterator.java index f4aa31b15..52f40ef85 100644 --- a/core/src/main/java/org/apache/struts2/components/MergeIterator.java +++ b/core/src/main/java/org/apache/struts2/components/MergeIterator.java @@ -21,20 +21,18 @@ package org.apache.struts2.components; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.components.Param.UnnamedParametric; import org.apache.struts2.util.MakeIterator; import org.apache.struts2.util.MergeIteratorFilter; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import java.io.Writer; +import java.util.ArrayList; +import java.util.List; /** * @@ -152,12 +150,9 @@ public class MergeIterator extends ContextBean implements UnnamedParametric { public boolean end(Writer writer, String body) { - for (Iterator parametersIterator = _parameters.iterator(); parametersIterator.hasNext(); ) { - Object iteratorEntryObj = parametersIterator.next(); + for (Object iteratorEntryObj : _parameters) { if (! MakeIterator.isIterable(iteratorEntryObj)) { - if (LOG.isWarnEnabled()) { - LOG.warn("param with value resolved as "+iteratorEntryObj+" cannot be make as iterator, it will be ignored and hence will not appear in the merged iterator"); - } + LOG.warn("param with value resolved as {} cannot be make as iterator, it will be ignored and hence will not appear in the merged iterator", iteratorEntryObj); continue; } mergeIteratorFilter.setSource(MakeIterator.convert(iteratorEntryObj)); diff --git a/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java b/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java index 68a3f2bb3..c704817ab 100644 --- a/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java +++ b/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java @@ -22,8 +22,9 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.util.ValueStack; -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.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; @@ -150,35 +151,29 @@ public class OptionTransferSelect extends DoubleListUIBean { doubleValue = findValue(doubleList); addParameter("doubleList", doubleValue); } - if (size == null || size.trim().length() <= 0) { + if (StringUtils.isBlank(size)) { addParameter("size", "15"); } - if (doubleSize == null || doubleSize.trim().length() <= 0) { + if (StringUtils.isBlank(doubleSize)) { addParameter("doubleSize", "15"); } - if (multiple == null || multiple.trim().length() <= 0) { + if (StringUtils.isBlank(multiple)) { addParameter("multiple", Boolean.TRUE); } - if (doubleMultiple == null || doubleMultiple.trim().length() <= 0) { + if (StringUtils.isBlank(doubleMultiple)) { addParameter("doubleMultiple", Boolean.TRUE); } - - - - // buttonCssClass - if (buttonCssClass != null && buttonCssClass.trim().length() > 0) { + if (StringUtils.isNotBlank(buttonCssClass)) { addParameter("buttonCssClass", buttonCssClass); } // buttonCssStyle - if (buttonCssStyle != null && buttonCssStyle.trim().length() > 0) { + if (StringUtils.isNotBlank(buttonCssStyle)) { addParameter("buttonCssStyle", buttonCssStyle); } - - // allowSelectAll addParameter("allowSelectAll", allowSelectAll != null ? findValue(allowSelectAll, Boolean.class) : Boolean.TRUE); diff --git a/core/src/main/java/org/apache/struts2/components/Param.java b/core/src/main/java/org/apache/struts2/components/Param.java index dd3e3c334..09178b44f 100644 --- a/core/src/main/java/org/apache/struts2/components/Param.java +++ b/core/src/main/java/org/apache/struts2/components/Param.java @@ -22,6 +22,7 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.util.ValueStack; +import org.apache.commons.lang3.StringUtils; import org.apache.struts2.StrutsException; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; @@ -126,7 +127,7 @@ public class Param extends Component { Object value = findValue(this.value); if (suppressEmptyParameters) { - if (value != null && !value.toString().isEmpty()) { + if (value != null && StringUtils.isNotBlank(value.toString())) { component.addParameter(name, value); } } else { diff --git a/core/src/main/java/org/apache/struts2/components/Property.java b/core/src/main/java/org/apache/struts2/components/Property.java index 5019b55e4..e0961a944 100644 --- a/core/src/main/java/org/apache/struts2/components/Property.java +++ b/core/src/main/java/org/apache/struts2/components/Property.java @@ -22,9 +22,9 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; @@ -165,9 +165,7 @@ public class Property extends Component { writer.write(prepare(defaultValue)); } } catch (IOException e) { - if (LOG.isInfoEnabled()) { - LOG.info("Could not print out value '" + value + "'", e); - } + LOG.info("Could not print out value '{}'", value, e); } return result; diff --git a/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java b/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java index 4216ddb33..5b63cd4f5 100644 --- a/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java +++ b/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java @@ -26,9 +26,9 @@ import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.config.entities.ActionConfig; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsException; import org.apache.struts2.dispatcher.mapper.ActionMapper; import org.apache.struts2.dispatcher.mapper.ActionMapping; @@ -201,7 +201,7 @@ public class ServletUrlRenderer implements UrlRenderer { // Warn user that the specified namespace/action combo // was not found in the configuration. if (namespace != null && LOG.isWarnEnabled()) { - LOG.warn("No configuration found for the specified action: '" + actionName + "' in namespace: '" + namespace + "'. Form action defaulting to 'action' attribute's literal value."); + LOG.warn("No configuration found for the specified action: '{}' in namespace: '{}'. Form action defaulting to 'action' attribute's literal value.", actionName, namespace); } String result = urlHelper.buildUrl(action, formComponent.request, formComponent.response, null, scheme, formComponent.includeContext, true); @@ -264,17 +264,11 @@ public class ServletUrlRenderer implements UrlRenderer { includeGetParameters(urlComponent); includeExtraParameters(urlComponent); } else if (includeParams != null) { - if (LOG.isWarnEnabled()) { - LOG.warn("Unknown value for includeParams parameter to URL tag: " + includeParams); - } + LOG.warn("Unknown value for includeParams parameter to URL tag: {}", includeParams); } } catch (Exception e) { - if (LOG.isWarnEnabled()) { - LOG.warn("Unable to put request parameters (" + urlComponent.getHttpServletRequest().getQueryString() + ") into parameter map.", e); - } + LOG.warn("Unable to put request parameters ({}) into parameter map.", urlComponent.getHttpServletRequest().getQueryString(), e); } - - } private void includeExtraParameters(UrlProvider urlComponent) { @@ -324,13 +318,13 @@ public class ServletUrlRenderer implements UrlRenderer { */ protected void mergeRequestParameters(String value, Map parameters, Map contextParameters) { - Map mergedParams = new LinkedHashMap(contextParameters); + Map mergedParams = new LinkedHashMap<>(contextParameters); // Merge contextParameters (from current request) with parameters specified in value attribute // eg. value="someAction.action?id=someId&venue=someVenue" // where the parameters specified in value attribute takes priority. - if (value != null && value.trim().length() > 0 && value.indexOf("?") > 0) { + if (StringUtils.contains(value, "?")) { String queryString = value.substring(value.indexOf("?") + 1); mergedParams = urlHelper.parseQueryString(queryString, false); diff --git a/core/src/main/java/org/apache/struts2/components/Text.java b/core/src/main/java/org/apache/struts2/components/Text.java index 6ec0b39f7..a26a2dd70 100644 --- a/core/src/main/java/org/apache/struts2/components/Text.java +++ b/core/src/main/java/org/apache/struts2/components/Text.java @@ -22,9 +22,9 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.util.TextProviderHelper; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; @@ -130,7 +130,7 @@ public class Text extends ContextBean implements Param.UnnamedParametric { super(stack); } - @StrutsTagAttribute(description=" Name of resource property to fetch", required=true) + @StrutsTagAttribute(description = "Name of resource property to fetch", required = true) public void setName(String name) { this.name = name; } diff --git a/core/src/main/java/org/apache/struts2/components/TextArea.java b/core/src/main/java/org/apache/struts2/components/TextArea.java index 7831f5e6b..6e276873f 100644 --- a/core/src/main/java/org/apache/struts2/components/TextArea.java +++ b/core/src/main/java/org/apache/struts2/components/TextArea.java @@ -21,13 +21,12 @@ package org.apache.struts2.components; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; -import com.opensymphony.xwork2.util.ValueStack; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * @@ -42,8 +41,6 @@ import com.opensymphony.xwork2.util.ValueStack; * *

* - * @see TabbedPanel - * */ @StrutsTag( name="textarea", diff --git a/core/src/main/java/org/apache/struts2/components/UIBean.java b/core/src/main/java/org/apache/struts2/components/UIBean.java index 4f015e939..d30322aa0 100644 --- a/core/src/main/java/org/apache/struts2/components/UIBean.java +++ b/core/src/main/java/org/apache/struts2/components/UIBean.java @@ -24,8 +24,9 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ValueStack; -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.StrutsConstants; import org.apache.struts2.StrutsException; import org.apache.struts2.components.template.Template; @@ -504,7 +505,7 @@ public abstract class UIBean extends Component { protected String tooltipIconPath; // dynamic attributes - protected Map dynamicAttributes = new HashMap(); + protected Map dynamicAttributes = new HashMap<>(); protected String defaultTemplateDir; protected String defaultUITheme; @@ -576,9 +577,7 @@ public abstract class UIBean extends Component { throw new ConfigurationException("Unable to find a TemplateEngine for template " + template); } - if (LOG.isDebugEnabled()) { - LOG.debug("Rendering template " + template); - } + LOG.debug("Rendering template {}", template); final TemplateRenderingContext context = new TemplateRenderingContext(template, writer, getStack(), getParameters(), this); engine.renderTemplate(context); @@ -593,17 +592,17 @@ public abstract class UIBean extends Component { // If templateDir is not explicitly given, // try to find attribute which states the dir set to use - if ((templateDir == null) || (templateDir.equals(""))) { + if (StringUtils.isBlank(templateDir)) { templateDir = stack.findString("#attr.templateDir"); } // Default template set - if ((templateDir == null) || (templateDir.equals(""))) { + if (StringUtils.isBlank(templateDir)) { templateDir = defaultTemplateDir; } // Defaults to 'template' - if ((templateDir == null) || (templateDir.equals(""))) { + if (StringUtils.isBlank(templateDir)) { templateDir = "template"; } @@ -617,7 +616,7 @@ public abstract class UIBean extends Component { theme = findString(this.theme); } - if ( theme == null || theme.equals("") ) { + if (StringUtils.isBlank(theme)) { Form form = (Form) findAncestor(Form.class); if (form != null) { theme = form.getTheme(); @@ -626,12 +625,12 @@ public abstract class UIBean extends Component { // If theme set is not explicitly given, // try to find attribute which states the theme set to use - if ((theme == null) || (theme.equals(""))) { + if (StringUtils.isBlank(theme)) { theme = stack.findString("#attr.theme"); } // Default theme set - if ((theme == null) || (theme.equals(""))) { + if (StringUtils.isBlank(theme)) { theme = defaultUITheme; } @@ -662,7 +661,6 @@ public abstract class UIBean extends Component { // lookup the label from a TextProvider (default value is the key) providedLabel = TextProviderHelper.getText(key, key, stack); } - } if (this.name != null) { @@ -841,7 +839,7 @@ public abstract class UIBean extends Component { if (form != null) { // inform the containing form that we need tooltip javascript included form.addParameter("hasTooltip", Boolean.TRUE); - // tooltipConfig defined in component itseilf will take precedence + // tooltipConfig defined in component itself will take precedence // over those defined in the containing form Map overallTooltipConfigMap = getTooltipConfig(form); overallTooltipConfigMap.putAll(tooltipConfigMap); // override parent form's tooltip config @@ -852,9 +850,7 @@ public abstract class UIBean extends Component { } } else { - if (LOG.isWarnEnabled()) { - LOG.warn("No ancestor Form found, javascript based tooltip will not work, however standard HTML tooltip using alt and title attribute will still work "); - } + LOG.warn("No ancestor Form found, javascript based tooltip will not work, however standard HTML tooltip using alt and title attribute will still work"); } //TODO: this is to keep backward compatibility, remove once when tooltipConfig is dropped @@ -886,8 +882,6 @@ public abstract class UIBean extends Component { if (this.tooltipCssClass != null) this.addParameter("tooltipCssClass", findString(this.tooltipCssClass)); } - - } evaluateExtraParams(); @@ -947,14 +941,14 @@ public abstract class UIBean extends Component { protected Map getTooltipConfig(UIBean component) { Object tooltipConfigObj = component.getParameters().get("tooltipConfig"); - Map tooltipConfig = new LinkedHashMap(); + Map tooltipConfig = new LinkedHashMap<>(); if (tooltipConfigObj instanceof Map) { // we get this if its configured using // 1] UI component's tooltipConfig attribute OR // 2] param tag value attribute - tooltipConfig = new LinkedHashMap((Map)tooltipConfigObj); + tooltipConfig = new LinkedHashMap<>((Map) tooltipConfigObj); } else if (tooltipConfigObj instanceof String) { // we get this if its configured using @@ -970,9 +964,7 @@ public abstract class UIBean extends Component { value = configEntry[1].trim(); tooltipConfig.put(key, value); } else { - if (LOG.isWarnEnabled()) { - LOG.warn("component " + component + " tooltip config param " + key + " has no value defined, skipped"); - } + LOG.warn("component {} tooltip config param {} has no value defined, skipped", component, key); } } } diff --git a/core/src/main/java/org/apache/struts2/components/URL.java b/core/src/main/java/org/apache/struts2/components/URL.java index a163acbcf..a8eed3509 100644 --- a/core/src/main/java/org/apache/struts2/components/URL.java +++ b/core/src/main/java/org/apache/struts2/components/URL.java @@ -23,8 +23,6 @@ package org.apache.struts2.components; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import org.apache.struts2.StrutsConstants; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; @@ -110,7 +108,7 @@ import java.io.Writer; */ @StrutsTag(name="url", tldTagClass="org.apache.struts2.views.jsp.URLTag", description="This tag is used to create a URL") public class URL extends ContextBean { - private static final Logger LOG = LogManager.getLogger(URL.class); + private UrlProvider urlProvider; private UrlRenderer urlRenderer; diff --git a/core/src/main/java/org/apache/struts2/components/UpDownSelect.java b/core/src/main/java/org/apache/struts2/components/UpDownSelect.java index c2a2694ad..150c5b599 100644 --- a/core/src/main/java/org/apache/struts2/components/UpDownSelect.java +++ b/core/src/main/java/org/apache/struts2/components/UpDownSelect.java @@ -21,18 +21,17 @@ package org.apache.struts2.components; -import java.util.LinkedHashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.LinkedHashMap; +import java.util.Map; /** * @@ -109,15 +108,13 @@ public class UpDownSelect extends Select { // override Select's default - if (size == null || size.trim().length() <= 0) { + if (StringUtils.isBlank(size)) { addParameter("size", "5"); } - if (multiple == null || multiple.trim().length() <= 0) { + if (StringUtils.isBlank(multiple)) { addParameter("multiple", Boolean.TRUE); } - - if (allowMoveUp != null) { addParameter("allowMoveUp", findValue(allowMoveUp, Boolean.class)); } @@ -138,13 +135,12 @@ public class UpDownSelect extends Select { addParameter("selectAllLabel", findString(selectAllLabel)); } - // inform our form ancestor about this UpDownSelect so the form knows how to // auto select all options upon it submission Form ancestorForm = (Form) findAncestor(Form.class); if (ancestorForm != null) { - // inform form ancestor that we are using a custom onsubmit + // inform form ancestor that we are using a custom onSubmit enableAncestorFormCustomOnsubmit(); Map m = (Map) ancestorForm.getParameters().get("updownselectIds"); diff --git a/core/src/main/java/org/apache/struts2/components/UrlRenderer.java b/core/src/main/java/org/apache/struts2/components/UrlRenderer.java index faa71cc26..a9de85205 100644 --- a/core/src/main/java/org/apache/struts2/components/UrlRenderer.java +++ b/core/src/main/java/org/apache/struts2/components/UrlRenderer.java @@ -22,6 +22,7 @@ package org.apache.struts2.components; import org.apache.struts2.dispatcher.mapper.ActionMapper; + import java.io.Writer; /** @@ -33,14 +34,14 @@ public interface UrlRenderer { /** * Preprocessing step - * @param urlComponent + * @param provider */ void beforeRenderUrl(UrlProvider provider); /** * Render a URL. * @param writer A writer that the implementation can use to write the result to. - * @param urlComponent The {@link UrlProvider} component that "owns" this renderer. + * @param provider The {@link UrlProvider} component that "owns" this renderer. */ void renderUrl(Writer writer, UrlProvider provider); diff --git a/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java index 097d09ca5..59e5aacf2 100644 --- a/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java +++ b/core/src/main/java/org/apache/struts2/components/template/BaseTemplateEngine.java @@ -22,17 +22,12 @@ package org.apache.struts2.components.template; import com.opensymphony.xwork2.util.ClassLoaderUtil; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; import javax.servlet.ServletContext; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; +import java.io.*; import java.util.Map; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; @@ -49,7 +44,7 @@ public abstract class BaseTemplateEngine implements TemplateEngine { */ public static final String DEFAULT_THEME_PROPERTIES_FILE_NAME = "theme.properties"; - private final Map themeProps = new ConcurrentHashMap(); + private final Map themeProps = new ConcurrentHashMap<>(); public Map getThemeProps(Template template) { Properties props = themeProps.get(template.getTheme()); @@ -109,7 +104,7 @@ public abstract class BaseTemplateEngine implements TemplateEngine { try { props.load(is); } catch (IOException e) { - LOG.error("Could not load " + propName, e); + LOG.error("Could not load property with name: {}", propName, e); } finally { tryCloseStream(is); } @@ -119,9 +114,7 @@ public abstract class BaseTemplateEngine implements TemplateEngine { try { is.close(); } catch (IOException io) { - if (LOG.isWarnEnabled()) { LOG.warn("Unable to close input stream", io); - } } } @@ -137,9 +130,7 @@ public abstract class BaseTemplateEngine implements TemplateEngine { try { return createFileInputStream(propFile); } catch (FileNotFoundException e) { - if (LOG.isWarnEnabled()) { - LOG.warn("Unable to find file in filesystem [" + propFile.getAbsolutePath() + "]"); - } + LOG.warn("Unable to find file in filesystem [{}]", propFile.getAbsolutePath()); return null; } } diff --git a/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java index 478eb53a0..67a332ca2 100644 --- a/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java +++ b/core/src/main/java/org/apache/struts2/components/template/FreemarkerTemplateEngine.java @@ -21,30 +21,26 @@ package org.apache.struts2.components.template; -import java.io.IOException; -import java.io.Writer; -import java.util.Locale; -import java.util.Map; -import java.util.List; - -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.views.freemarker.FreemarkerManager; - import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - +import freemarker.core.ParseException; import freemarker.template.Configuration; import freemarker.template.SimpleHash; -import freemarker.core.ParseException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.struts2.ServletActionContext; +import org.apache.struts2.views.freemarker.FreemarkerManager; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.Writer; +import java.util.List; +import java.util.Map; /** * Freemarker based template engine. @@ -110,11 +106,11 @@ public class FreemarkerTemplateEngine extends BaseTemplateEngine { if (template == null) { if (LOG.isErrorEnabled()) { - LOG.error("Could not load the FreeMarker template named '" + templateContext.getTemplate().getName() +"':"); + LOG.error("Could not load the FreeMarker template named '{}':", templateContext.getTemplate().getName()); for (Template t : templates) { - LOG.error("Attempted: " + getFinalTemplateName(t)); + LOG.error("Attempted: {}", getFinalTemplateName(t)); } - LOG.error("The TemplateLoader provided by the FreeMarker Configuration was a: "+config.getTemplateLoader().getClass().getName()); + LOG.error("The TemplateLoader provided by the FreeMarker Configuration was a: {}", config.getTemplateLoader().getClass().getName()); } if (exception != null) { throw exception; @@ -123,9 +119,7 @@ public class FreemarkerTemplateEngine extends BaseTemplateEngine { } } - if (LOG.isDebugEnabled()) { - LOG.debug("Rendering template " + templateName); - } + LOG.debug("Rendering template: {}", templateName); ActionInvocation ai = ActionContext.getContext().getActionInvocation(); @@ -164,6 +158,4 @@ public class FreemarkerTemplateEngine extends BaseTemplateEngine { protected String getSuffix() { return "ftl"; } - - -} +} \ No newline at end of file diff --git a/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java index 95b4ed64b..077e70de9 100644 --- a/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java +++ b/core/src/main/java/org/apache/struts2/components/template/JspTemplateEngine.java @@ -21,21 +21,18 @@ package org.apache.struts2.components.template; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.jsp.PageContext; - import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsConstants; import org.apache.struts2.components.Include; import org.apache.struts2.components.UIBean; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.jsp.PageContext; +import java.util.List; /** * JSP based template engine. @@ -53,9 +50,7 @@ public class JspTemplateEngine extends BaseTemplateEngine { public void renderTemplate(TemplateRenderingContext templateContext) throws Exception { Template template = templateContext.getTemplate(); - if (LOG.isDebugEnabled()) { - LOG.debug("Trying to render template " + template + ", repeating through parents until we succeed"); - } + LOG.debug("Trying to render template [{}], repeating through parents until we succeed", template); UIBean tag = templateContext.getTag(); ValueStack stack = templateContext.getStack(); stack.push(tag); @@ -77,7 +72,7 @@ public class JspTemplateEngine extends BaseTemplateEngine { } if (!success) { - LOG.error("Could not render JSP template " + templateContext.getTemplate()); + LOG.error("Could not render JSP template {}", templateContext.getTemplate()); if (exception != null) { throw exception; diff --git a/core/src/main/java/org/apache/struts2/components/template/Template.java b/core/src/main/java/org/apache/struts2/components/template/Template.java index d4f39e6b5..361dcb6a9 100644 --- a/core/src/main/java/org/apache/struts2/components/template/Template.java +++ b/core/src/main/java/org/apache/struts2/components/template/Template.java @@ -83,7 +83,7 @@ public class Template implements Cloneable { * @return a string in the format /dir/theme/name. */ public String toString() { - return "/" + dir + "/" + theme + "/" + name; + return new StringBuilder().append("/").append(dir).append("/").append(theme).append("/").append(name).toString(); } protected Object clone() throws CloneNotSupportedException { diff --git a/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.java b/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.java index 0a2e97a0d..bd8c3b4a2 100644 --- a/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.java +++ b/core/src/main/java/org/apache/struts2/components/template/TemplateEngineManager.java @@ -24,6 +24,7 @@ package org.apache.struts2.components.template; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; +import org.apache.commons.lang3.StringUtils; import org.apache.struts2.StrutsConstants; import java.util.Collections; @@ -36,11 +37,13 @@ import java.util.Set; */ public class TemplateEngineManager { - /** The default template extenstion is ftl. */ + /** + * The default template extension is ftl. + */ public static final String DEFAULT_TEMPLATE_TYPE = "ftl"; - - Map templateEngines = new HashMap(); + + Map templateEngines = new HashMap<>(); Container container; String defaultTemplateType; @@ -52,13 +55,12 @@ public class TemplateEngineManager { @Inject public void setContainer(Container container) { this.container = container; - Map map = new HashMap(); + Map map = new HashMap<>(); Set prefixes = container.getInstanceNames(TemplateEngine.class); for (String prefix : prefixes) { map.put(prefix, new LazyEngineFactory(prefix)); } this.templateEngines = Collections.unmodifiableMap(map); - } /** @@ -89,9 +91,9 @@ public class TemplateEngineManager { public TemplateEngine getTemplateEngine(Template template, String templateTypeOverride) { String templateType = DEFAULT_TEMPLATE_TYPE; String templateName = template.toString(); - if (templateName.indexOf(".") > 0) { - templateType = templateName.substring(templateName.indexOf(".") + 1); - } else if (templateTypeOverride !=null && templateTypeOverride.length() > 0) { + if (StringUtils.contains(templateName, ".")) { + templateType = StringUtils.substring(templateName, StringUtils.indexOf(templateName, ".") + 1); + } else if (StringUtils.isNotBlank(templateTypeOverride)) { templateType = templateTypeOverride; } else { String type = defaultTemplateType; @@ -104,7 +106,7 @@ public class TemplateEngineManager { /** Abstracts loading of the template engine */ interface EngineFactory { - public TemplateEngine create(); + TemplateEngine create(); } /** diff --git a/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java b/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java index 87fc2b8bb..6e1db531e 100644 --- a/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java +++ b/core/src/main/java/org/apache/struts2/components/template/VelocityTemplateEngine.java @@ -21,23 +21,21 @@ package org.apache.struts2.components.template; -import java.io.IOException; -import java.io.Writer; -import java.util.List; -import java.util.Map; - -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.opensymphony.xwork2.inject.Inject; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; import org.apache.struts2.views.velocity.VelocityManager; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.context.Context; -import com.opensymphony.xwork2.inject.Inject; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.Writer; +import java.util.List; +import java.util.Map; /** * Velocity based template engine. @@ -84,7 +82,7 @@ public class VelocityTemplateEngine extends BaseTemplateEngine { } if (template == null) { - LOG.error("Could not load template " + templateContext.getTemplate()); + LOG.error("Could not load template {}", templateContext.getTemplate()); if (exception != null) { throw exception; } else { @@ -92,9 +90,7 @@ public class VelocityTemplateEngine extends BaseTemplateEngine { } } - if (LOG.isDebugEnabled()) { - LOG.debug("Rendering template " + templateName); - } + LOG.debug("Rendering template {}", templateName); Context context = velocityManager.createContext(templateContext.getStack(), req, res); diff --git a/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java index 0bc7f3058..f8a696ac3 100644 --- a/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/AbstractBeanSelectionProvider.java @@ -4,15 +4,11 @@ import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.config.BeanSelectionProvider; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; -import com.opensymphony.xwork2.inject.Container; -import com.opensymphony.xwork2.inject.ContainerBuilder; -import com.opensymphony.xwork2.inject.Context; -import com.opensymphony.xwork2.inject.Factory; -import com.opensymphony.xwork2.inject.Scope; +import com.opensymphony.xwork2.inject.*; import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.location.LocatableProperties; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.Properties; @@ -87,8 +83,6 @@ public abstract class AbstractBeanSelectionProvider implements BeanSelectionProv } } - - static class ObjectFactoryDelegateFactory implements Factory { String name; @@ -107,6 +101,5 @@ public abstract class AbstractBeanSelectionProvider implements BeanSelectionProv throw new ConfigurationException("Unable to load bean "+type.getName()+" ("+name+")"); } } - } } diff --git a/core/src/main/java/org/apache/struts2/config/DefaultSettings.java b/core/src/main/java/org/apache/struts2/config/DefaultSettings.java index cc30f486c..8fc9a4936 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultSettings.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultSettings.java @@ -22,8 +22,8 @@ package org.apache.struts2.config; import com.opensymphony.xwork2.util.location.Location; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import java.util.ArrayList; @@ -56,7 +56,7 @@ public class DefaultSettings implements Settings { */ public DefaultSettings() { - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); // stuts.properties, default.properties try { @@ -77,7 +77,7 @@ public class DefaultSettings implements Settings { try { list.add(new PropertiesSettings(name)); } catch (Exception e) { - LOG.error("DefaultSettings: Could not find " + name + ".properties. Skipping."); + LOG.error("DefaultSettings: Could not find {}.properties. Skipping.", name); } } diff --git a/core/src/main/java/org/apache/struts2/config/DelegatingSettings.java b/core/src/main/java/org/apache/struts2/config/DelegatingSettings.java index 132c24e63..c8a163213 100644 --- a/core/src/main/java/org/apache/struts2/config/DelegatingSettings.java +++ b/core/src/main/java/org/apache/struts2/config/DelegatingSettings.java @@ -69,7 +69,7 @@ class DelegatingSettings implements Settings { public Iterator list() { boolean workedAtAll = false; - Set settingList = new HashSet(); + Set settingList = new HashSet<>(); UnsupportedOperationException e = null; for (Settings delegate : delegates) { @@ -83,7 +83,6 @@ class DelegatingSettings implements Settings { workedAtAll = true; } catch (UnsupportedOperationException ex) { e = ex; - // Try next delegate } } diff --git a/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java b/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java index 3bbf9b40e..06bc744c9 100644 --- a/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java +++ b/core/src/main/java/org/apache/struts2/config/PropertiesSettings.java @@ -25,8 +25,8 @@ import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.location.LocatableProperties; import com.opensymphony.xwork2.util.location.Location; import com.opensymphony.xwork2.util.location.LocationImpl; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsException; import java.io.IOException; @@ -56,9 +56,7 @@ class PropertiesSettings implements Settings { URL settingsUrl = ClassLoaderUtil.getResource(name + ".properties", getClass()); if (settingsUrl == null) { - if (LOG.isDebugEnabled()) { - LOG.debug(name + ".properties missing"); - } + LOG.debug("{}.properties missing", name); settings = new LocatableProperties(); return; } @@ -71,15 +69,13 @@ class PropertiesSettings implements Settings { in = settingsUrl.openStream(); settings.load(in); } catch (IOException e) { - throw new StrutsException("Could not load " + name + ".properties:" + e, e); + throw new StrutsException("Could not load " + name + ".properties: " + e, e); } finally { if(in != null) { try { in.close(); } catch(IOException io) { - if (LOG.isWarnEnabled()) { LOG.warn("Unable to close input stream", io); - } } } } diff --git a/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java b/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java index f09d6f38e..cca80b782 100644 --- a/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java +++ b/core/src/main/java/org/apache/struts2/config/StrutsXmlConfigurationProvider.java @@ -21,18 +21,6 @@ package org.apache.struts2.config; -import java.io.File; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.servlet.ServletContext; - import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider; @@ -40,8 +28,15 @@ import com.opensymphony.xwork2.inject.ContainerBuilder; import com.opensymphony.xwork2.inject.Context; import com.opensymphony.xwork2.inject.Factory; import com.opensymphony.xwork2.util.location.LocatableProperties; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.servlet.ServletContext; +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.*; /** * Override Xwork class so we can use an arbitrary config file @@ -128,7 +123,7 @@ public class StrutsXmlConfigurationProvider extends XmlConfigurationProvider { } } if (url != null) { - List list = new ArrayList(); + List list = new ArrayList<>(); list.add(url); return list.iterator(); } else { @@ -139,9 +134,7 @@ public class StrutsXmlConfigurationProvider extends XmlConfigurationProvider { protected URL findInFileSystem(String fileName) throws IOException { URL url = null; File file = new File(fileName); - if (LOG.isDebugEnabled()) { - LOG.debug("Trying to load file " + file); - } + LOG.debug("Trying to load file: {}", file); // Trying relative path to original file if (!file.exists()) { diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java b/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java index 528e6117e..b0dd2991b 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java @@ -86,10 +86,10 @@ public class ActionContextCleanUp implements Filter { try { Integer count = (Integer)request.getAttribute(COUNTER); if (count == null) { - count = Integer.valueOf(1); + count = 1; } else { - count = Integer.valueOf(count.intValue()+1); + count = count.intValue() + 1; } request.setAttribute(COUNTER, count); @@ -97,9 +97,9 @@ public class ActionContextCleanUp implements Filter { chain.doFilter(request, response); } finally { - int counterVal = ((Integer)request.getAttribute(COUNTER)).intValue(); + int counterVal = ((Integer) request.getAttribute(COUNTER)); counterVal -= 1; - request.setAttribute(COUNTER, Integer.valueOf(counterVal)); + request.setAttribute(COUNTER, counterVal); cleanUp(request); } } @@ -117,9 +117,7 @@ public class ActionContextCleanUp implements Filter { // should we clean up yet? Integer count = (Integer) req.getAttribute(COUNTER); if (count != null && count > 0 ) { - if (LOG.isDebugEnabled()) { - LOG.debug("skipping cleanup counter="+count); - } + LOG.debug("Skipping cleanup counter: ", count); return; } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java b/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java index 8185d0253..ee753600e 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ApplicationMap.java @@ -23,11 +23,7 @@ package org.apache.struts2.dispatcher; import javax.servlet.ServletContext; import java.io.Serializable; -import java.util.AbstractMap; -import java.util.Enumeration; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; /** @@ -74,7 +70,7 @@ public class ApplicationMap extends AbstractMap implements Serializable { */ public Set entrySet() { if (entries == null) { - entries = new HashSet(); + entries = new HashSet<>(); // Add servlet context attributes Enumeration enumeration = context.getAttributeNames(); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java b/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java index e0123e5a0..35cf1475a 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ContainerHolder.java @@ -12,7 +12,7 @@ import com.opensymphony.xwork2.inject.Container; */ class ContainerHolder { - private static ThreadLocal instance = new ThreadLocal(); + private static ThreadLocal instance = new ThreadLocal<>(); public static void store(Container instance) { ContainerHolder.instance.set(instance); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java b/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java index 78ca2c815..d64b8007e 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/DefaultDispatcherErrorHandler.java @@ -3,9 +3,10 @@ package org.apache.struts2.dispatcher; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.location.Location; import com.opensymphony.xwork2.util.location.LocationUtils; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import freemarker.template.Template; +import org.apache.commons.lang3.BooleanUtils; +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.views.freemarker.FreemarkerManager; @@ -39,7 +40,7 @@ public class DefaultDispatcherErrorHandler implements DispatcherErrorHandler { @Inject(StrutsConstants.STRUTS_DEVMODE) public void setDevMode(String devMode) { - this.devMode = "true".equalsIgnoreCase(devMode); + this.devMode = BooleanUtils.toBoolean(devMode); } public void init(ServletContext ctx) { @@ -65,9 +66,7 @@ public class DefaultDispatcherErrorHandler implements DispatcherErrorHandler { // WW-1977: Only put errors in the request when code is a 500 error if (code == HttpServletResponse.SC_INTERNAL_SERVER_ERROR) { // WW-4103: Only logs error when application error occurred, not Struts error - if (LOG.isErrorEnabled()) { - LOG.error("Exception occurred during processing request: {}", e, e.getMessage()); - } + LOG.error("Exception occurred during processing request: {}", e, e.getMessage()); // send a http error response to use the servlet defined error handler // make the exception available to the web.xml defined error page request.setAttribute("javax.servlet.error.exception", e); @@ -86,7 +85,7 @@ public class DefaultDispatcherErrorHandler implements DispatcherErrorHandler { protected void handleErrorInDevMode(HttpServletResponse response, int code, Exception e) { LOG.debug("Exception occurred during processing request: {}", e, e.getMessage()); try { - List chain = new ArrayList(); + List chain = new ArrayList<>(); Throwable cur = e; chain.add(cur); while ((cur = cur.getCause()) != null) { @@ -101,9 +100,7 @@ public class DefaultDispatcherErrorHandler implements DispatcherErrorHandler { response.getWriter().close(); } catch (Exception exp) { try { - if (LOG.isDebugEnabled()) { - LOG.debug("Cannot show problem report!", exp); - } + LOG.debug("Cannot show problem report!", exp); response.sendError(code, "Unable to show problem report:\n" + exp + "\n\n" + LocationUtils.getLocation(exp)); } catch (IOException ex) { // we're already sending an error, not much else we can do if more stuff breaks @@ -112,7 +109,7 @@ public class DefaultDispatcherErrorHandler implements DispatcherErrorHandler { } protected HashMap createReportData(Exception e, List chain) { - HashMap data = new HashMap(); + HashMap data = new HashMap<>(); data.put("exception", e); data.put("unknown", Location.UNKNOWN); data.put("chain", chain); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java b/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java index 4d27f49a5..fcdc7cfbf 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/DefaultStaticContentLoader.java @@ -22,8 +22,9 @@ package org.apache.struts2.dispatcher; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ClassLoaderUtil; -import org.apache.logging.log4j.Logger; +import org.apache.commons.lang3.BooleanUtils; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import org.apache.struts2.dispatcher.ng.HostConfig; @@ -35,11 +36,7 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.List; -import java.util.StringTokenizer; +import java.util.*; /** * Default implementation to server static content @@ -97,33 +94,33 @@ public class DefaultStaticContentLoader implements StaticContentLoader { /** * Modify state of StrutsConstants.STRUTS_SERVE_STATIC_CONTENT setting. * - * @param val + * @param serveStaticContent * New setting */ @Inject(StrutsConstants.STRUTS_SERVE_STATIC_CONTENT) - public void setServeStaticContent(String val) { - serveStatic = "true".equals(val); + public void setServeStaticContent(String serveStaticContent) { + this.serveStatic = BooleanUtils.toBoolean(serveStaticContent); } /** * Modify state of StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE * setting. * - * @param val + * @param serveStaticBrowserCache * New setting */ @Inject(StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE) - public void setServeStaticBrowserCache(String val) { - serveStaticBrowserCache = "true".equals(val); + public void setServeStaticBrowserCache(String serveStaticBrowserCache) { + this.serveStaticBrowserCache = BooleanUtils.toBoolean(serveStaticBrowserCache); } /** * Modify state of StrutsConstants.STRUTS_I18N_ENCODING setting. - * @param val New setting + * @param encoding New setting */ @Inject(StrutsConstants.STRUTS_I18N_ENCODING) - public void setEncoding(String val) { - encoding = val; + public void setEncoding(String encoding) { + this.encoding = encoding; } /* @@ -155,7 +152,7 @@ public class DefaultStaticContentLoader implements StaticContentLoader { if (packages == null) { return Collections.emptyList(); } - List pathPrefixes = new ArrayList(); + List pathPrefixes = new ArrayList<>(); StringTokenizer st = new StringTokenizer(packages, ", \n\t"); while (st.hasMoreTokens()) { @@ -213,9 +210,7 @@ public class DefaultStaticContentLoader implements StaticContentLoader { try { ifModifiedSince = request.getDateHeader("If-Modified-Since"); } catch (Exception e) { - if (LOG.isWarnEnabled()) { - LOG.warn("Invalid If-Modified-Since header value: '{}', ignoring", request.getHeader("If-Modified-Since")); - } + LOG.warn("Invalid If-Modified-Since header value: '{}', ignoring", request.getHeader("If-Modified-Since")); } long lastModifiedMillis = lastModifiedCal.getTimeInMillis(); long now = cal.getTimeInMillis(); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java index 707c051b4..f8d9d9e97 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java @@ -38,9 +38,11 @@ import com.opensymphony.xwork2.util.ValueStackFactory; import com.opensymphony.xwork2.util.location.LocatableProperties; import com.opensymphony.xwork2.util.location.Location; import com.opensymphony.xwork2.util.location.LocationUtils; -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.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsConstants; import org.apache.struts2.StrutsException; @@ -82,13 +84,12 @@ public class Dispatcher { /** * Provide a thread local instance. */ - private static ThreadLocal instance = new ThreadLocal(); + private static ThreadLocal instance = new ThreadLocal<>(); /** * Store list of DispatcherListeners. */ - private static List dispatcherListeners = - new CopyOnWriteArrayList(); + private static List dispatcherListeners = new CopyOnWriteArrayList<>(); /** * Store ConfigurationManager instance, set on init. @@ -220,7 +221,7 @@ public class Dispatcher { */ @Inject(value=StrutsConstants.STRUTS_DISABLE_REQUEST_ATTRIBUTE_VALUE_STACK_LOOKUP, required=false) public void setDisableRequestAttributeValueStackLookup(String disableRequestAttributeValueStackLookup) { - this.disableRequestAttributeValueStackLookup = "true".equalsIgnoreCase(disableRequestAttributeValueStackLookup); + this.disableRequestAttributeValueStackLookup = BooleanUtils.toBoolean(disableRequestAttributeValueStackLookup); } /** @@ -278,9 +279,7 @@ public class Dispatcher { // clean up ObjectFactory ObjectFactory objectFactory = getContainer().getInstance(ObjectFactory.class); if (objectFactory == null) { - if (LOG.isWarnEnabled()) { LOG.warn("Object Factory is null, something is seriously wrong, no clean up will be performed"); - } } if (objectFactory instanceof ObjectFactoryDestroyable) { try { @@ -288,7 +287,7 @@ public class Dispatcher { } catch(Exception e) { // catch any exception that may occurred during destroy() and log it - LOG.error("exception occurred while destroying ObjectFactory [{}]", e, objectFactory.toString()); + LOG.error("Exception occurred while destroying ObjectFactory [{}]", objectFactory.toString(), e); } } @@ -303,7 +302,7 @@ public class Dispatcher { } // clean up all interceptors by calling their destroy() method - Set interceptors = new HashSet(); + Set interceptors = new HashSet<>(); Collection packageConfigs = configurationManager.getConfiguration().getPackageConfigs().values(); for (PackageConfig packageConfig : packageConfigs) { for (Object config : packageConfig.getAllInterceptorConfigs().values()) { @@ -441,11 +440,8 @@ public class Dispatcher { private void init_CheckWebLogicWorkaround(Container container) { // test whether param-access workaround needs to be enabled - if (servletContext != null && servletContext.getServerInfo() != null - && servletContext.getServerInfo().contains("WebLogic")) { - if (LOG.isInfoEnabled()) { - LOG.info("WebLogic server detected. Enabling Struts parameter access work-around."); - } + if (servletContext != null && StringUtils.contains(servletContext.getServerInfo(), "WebLogic")) { + LOG.info("WebLogic server detected. Enabling Struts parameter access work-around."); paramsWorkaroundEnabled = true; } else { paramsWorkaroundEnabled = "true".equals(container.getInstance(String.class, @@ -484,8 +480,7 @@ public class Dispatcher { errorHandler.init(servletContext); } catch (Exception ex) { - if (LOG.isErrorEnabled()) - LOG.error("Dispatcher initialization failed", ex); + LOG.error("Dispatcher initialization failed", ex); throw new StrutsException(ex); } } @@ -591,7 +586,7 @@ public class Dispatcher { uri = uri + "?" + request.getQueryString(); } if (devMode) { - LOG.error("Could not find action or result\n{}", uri, e); + LOG.error("Could not find action or result: {}", uri, e); } else if (LOG.isWarnEnabled()) { LOG.warn("Could not find action or result: {}", uri, e); } @@ -675,7 +670,7 @@ public class Dispatcher { Map applicationMap, HttpServletRequest request, HttpServletResponse response) { - HashMap extraContext = new HashMap(); + HashMap extraContext = new HashMap<>(); extraContext.put(ActionContext.PARAMETERS, new HashMap(parameterMap)); extraContext.put(ActionContext.SESSION, sessionMap); extraContext.put(ActionContext.APPLICATION, applicationMap); @@ -715,9 +710,7 @@ public class Dispatcher { if (saveDir.equals("")) { File tempdir = (File) servletContext.getAttribute("javax.servlet.context.tempdir"); - if (LOG.isInfoEnabled()) { LOG.info("Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir"); - } if (tempdir != null) { saveDir = tempdir.toString(); @@ -737,17 +730,13 @@ public class Dispatcher { if (devMode) { LOG.error(logMessage); } else { - if (LOG.isWarnEnabled()) { - LOG.warn(logMessage); - } + LOG.warn(logMessage); } } } } - if (LOG.isDebugEnabled()) { - LOG.debug("saveDir=" + saveDir); - } + LOG.debug("saveDir={}", saveDir); return saveDir; } @@ -794,7 +783,7 @@ public class Dispatcher { request.setCharacterEncoding(encoding); } } catch (Exception e) { - LOG.error("Error setting character encoding to '" + encoding + "' - ignoring.", e); + LOG.error("Error setting character encoding to '{}' - ignoring.", encoding, e); } } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java index 6fbbd0bb1..210451f48 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java @@ -170,7 +170,7 @@ public class FilterDispatcher implements StrutsStatics, Filter { /** * Maintains per-request override of devMode configuration. */ - private static ThreadLocal devModeOverride = new InheritableThreadLocal(); + private static ThreadLocal devModeOverride = new InheritableThreadLocal<>(); /** * Initializes the filter by creating a default dispatcher @@ -226,7 +226,7 @@ public class FilterDispatcher implements StrutsStatics, Filter { */ public void destroy() { if (dispatcher == null) { - log.warn("something is seriously wrong, Dispatcher is not initialized (null) "); + log.warn("something is seriously wrong, Dispatcher is not initialized (null)"); } else { try { dispatcher.cleanup(); @@ -243,10 +243,8 @@ public class FilterDispatcher implements StrutsStatics, Filter { * * @param devMode the override value */ - public static void overrideDevMode( - boolean devMode) - { - devModeOverride.set(Boolean.valueOf(devMode)); + public static void overrideDevMode(boolean devMode) { + devModeOverride.set(devMode); } /** @@ -265,7 +263,7 @@ public class FilterDispatcher implements StrutsStatics, Filter { * @return Initialized Dispatcher */ protected Dispatcher createDispatcher(FilterConfig filterConfig) { - Map params = new HashMap(); + Map params = new HashMap<>(); for (Enumeration e = filterConfig.getInitParameterNames(); e.hasMoreElements();) { String name = (String) e.nextElement(); String value = filterConfig.getInitParameter(name); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java b/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java index d25772bf8..3613502a3 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/HttpHeaderResult.java @@ -26,8 +26,8 @@ import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.Result; import com.opensymphony.xwork2.util.TextParseUtil; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; import javax.servlet.http.HttpServletResponse; @@ -83,7 +83,7 @@ public class HttpHeaderResult implements Result { private static final Logger LOG = LogManager.getLogger(HttpHeaderResult.class); /** - * This result type doesn't have a default param, null is ok to reduce noice in logs + * This result type doesn't have a default param, null is ok to reduce noise in logs */ public static final String DEFAULT_PARAM = null; @@ -95,7 +95,7 @@ public class HttpHeaderResult implements Result { public HttpHeaderResult() { super(); - headers = new HashMap(); + headers = new HashMap<>(); } public HttpHeaderResult(int status) { @@ -195,9 +195,7 @@ public class HttpHeaderResult implements Result { try { errorCode = Integer.parseInt(parse ? TextParseUtil.translateVariables(error, stack) : error); } catch (Exception e) { - if (LOG.isErrorEnabled()) { - LOG.error("Cannot parse errorCode [{}] value as Integer!", error, e); - } + LOG.error("Cannot parse errorCode [{}] value as Integer!", error, e); } if (errorCode != -1) { if (errorMessage != null) { diff --git a/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java b/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java index 38259eb3c..c27e0786d 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/PlainTextResult.java @@ -22,8 +22,8 @@ package org.apache.struts2.dispatcher; import com.opensymphony.xwork2.ActionInvocation; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletResponse; @@ -132,9 +132,7 @@ public class PlainTextResult extends StrutsResultSupport { } else { reader = new InputStreamReader(resourceAsStream); } - if (resourceAsStream != null) { - sendStream(writer, reader); - } + sendStream(writer, reader); } finally { if (reader != null) reader.close(); @@ -152,9 +150,7 @@ public class PlainTextResult extends StrutsResultSupport { protected void logWrongStream(String finalLocation, InputStream resourceAsStream) { if (resourceAsStream == null) { - if (LOG.isWarnEnabled()) { - LOG.warn("Resource at location [" + finalLocation + "] cannot be obtained (return null) from ServletContext !!! "); - } + LOG.warn("Resource at location [{}] cannot be obtained (return null) from ServletContext !!!", finalLocation); } } @@ -191,13 +187,10 @@ public class PlainTextResult extends StrutsResultSupport { if (Charset.isSupported(charSet)) { charset = Charset.forName(charSet); } else { - if (LOG.isWarnEnabled()) { - LOG.warn("charset [" + charSet + "] is not recognized "); - } + LOG.warn("charset [{}] is not recognized", charset); charset = null; } } return charset; } - } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java b/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java index 86443f1f3..b8392ba51 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/RequestMap.java @@ -39,7 +39,6 @@ public class RequestMap extends AbstractMap implements Serializable { private Set entries; private HttpServletRequest request; - /** * Saves the request to use as the backing for getting and setting values * @@ -70,7 +69,7 @@ public class RequestMap extends AbstractMap implements Serializable { */ public Set entrySet() { if (entries == null) { - entries = new HashSet(); + entries = new HashSet<>(); Enumeration enumeration = request.getAttributeNames(); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java b/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java index 6cd5eb139..52d4f6787 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ServletDispatcherResult.java @@ -23,10 +23,10 @@ package org.apache.struts2.dispatcher; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.inject.Inject; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; -import org.apache.commons.lang3.StringUtils; 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.ServletActionContext; import org.apache.struts2.StrutsStatics; import org.apache.struts2.views.util.UrlHelper; @@ -122,9 +122,7 @@ public class ServletDispatcherResult extends StrutsResultSupport { * HTTP request. */ public void doExecute(String finalLocation, ActionInvocation invocation) throws Exception { - if (LOG.isDebugEnabled()) { - LOG.debug("Forwarding to location " + finalLocation); - } + LOG.debug("Forwarding to location: {}", finalLocation); PageContext pageContext = ServletActionContext.getPageContext(); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java index 94762219a..99317f31c 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java @@ -25,10 +25,10 @@ import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; 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.reflection.ReflectionException; import com.opensymphony.xwork2.util.reflection.ReflectionExceptionHandler; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; import org.apache.struts2.dispatcher.mapper.ActionMapper; import org.apache.struts2.dispatcher.mapper.ActionMapping; @@ -106,7 +106,7 @@ public class ServletRedirectResult extends StrutsResultSupport implements Reflec protected ActionMapper actionMapper; protected int statusCode = SC_FOUND; protected boolean suppressEmptyParameters = false; - protected Map requestParameters = new LinkedHashMap(); + protected Map requestParameters = new LinkedHashMap<>(); protected String anchor; private UrlHelper urlHelper; @@ -221,10 +221,8 @@ public class ServletRedirectResult extends StrutsResultSupport implements Reflec } finalLocation = response.encodeRedirectURL(tmpLocation.toString()); - - if (LOG.isDebugEnabled()) { - LOG.debug("Redirecting to finalLocation " + finalLocation); - } + + LOG.debug("Redirecting to finalLocation: {}", finalLocation); sendRedirect(response, finalLocation); } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java b/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java index 8da98da6e..73ff87ec1 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/SessionMap.java @@ -21,17 +21,10 @@ package org.apache.struts2.dispatcher; -import org.apache.struts2.components.Submit; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.Serializable; -import java.util.AbstractMap; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; /** @@ -110,9 +103,9 @@ public class SessionMap extends AbstractMap implements Serializable synchronized (session.getId().intern()) { if (entries == null) { - entries = new HashSet>(); + entries = new HashSet<>(); - Enumeration enumeration = session.getAttributeNames(); + Enumeration enumeration = session.getAttributeNames(); while (enumeration.hasMoreElements()) { final String key = enumeration.nextElement().toString(); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java b/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java index 05236ec2f..13a5c3c9d 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/StreamResult.java @@ -21,15 +21,14 @@ package org.apache.struts2.dispatcher; -import java.io.InputStream; -import java.io.OutputStream; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.servlet.http.HttpServletResponse; - -import com.opensymphony.xwork2.ActionInvocation; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; -import com.opensymphony.xwork2.util.ValueStack; +import java.io.InputStream; +import java.io.OutputStream; /** * @@ -259,9 +258,7 @@ public class StreamResult extends StrutsResultSupport { } } catch(NumberFormatException e) { - if (LOG.isWarnEnabled()) { - LOG.warn("failed to recongnize "+_contentLength+" as a number, contentLength header will not be set", e); - } + LOG.warn("failed to recognize {} as a number, contentLength header will not be set", _contentLength, e); } } @@ -279,24 +276,18 @@ public class StreamResult extends StrutsResultSupport { // Get the outputstream oOutput = oResponse.getOutputStream(); - if (LOG.isDebugEnabled()) { - LOG.debug("Streaming result [" + inputName + "] type=[" + contentType + "] length=[" + contentLength + - "] content-disposition=[" + contentDisposition + "] charset=[" + contentCharSet + "]"); - } + LOG.debug("Streaming result [{}] type=[{}] length=[{}] content-disposition=[{}] charset=[{}]", + inputName, contentType, contentLength, contentDisposition, contentCharSet); // Copy input to output - if (LOG.isDebugEnabled()) { LOG.debug("Streaming to output buffer +++ START +++"); - } byte[] oBuff = new byte[bufferSize]; int iSize; while (-1 != (iSize = inputStream.read(oBuff))) { oOutput.write(oBuff, 0, iSize); } - if (LOG.isDebugEnabled()) { LOG.debug("Streaming to output buffer +++ END +++"); - } - + // Flush oOutput.flush(); } @@ -334,7 +325,7 @@ public class StreamResult extends StrutsResultSupport { Integer bufferSize = (Integer) stack.findValue("bufferSize", Integer.class); if (bufferSize != null) { - setBufferSize(bufferSize.intValue()); + setBufferSize(bufferSize); } if (contentCharSet != null ) { diff --git a/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java b/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java index b7d57baa7..f8f4ee170 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/StrutsResultSupport.java @@ -21,19 +21,18 @@ package org.apache.struts2.dispatcher; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.Result; +import com.opensymphony.xwork2.util.TextParseUtil; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.struts2.StrutsStatics; + import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collection; -import org.apache.struts2.StrutsStatics; - -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.Result; -import com.opensymphony.xwork2.util.TextParseUtil; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - /** * @@ -227,7 +226,7 @@ public abstract class StrutsResultSupport implements Result, StrutsStatics { excludeEmptyElements, new EncodingParsedValueEvaluator()); } else { - Collection collection = new ArrayList(1); + Collection collection = new ArrayList<>(1); collection.add(param); return collection; } @@ -246,9 +245,7 @@ public abstract class StrutsResultSupport implements Result, StrutsStatics { return URLEncoder.encode(parsedValue, DEFAULT_URL_ENCODING); } catch(UnsupportedEncodingException e) { - if (LOG.isWarnEnabled()) { - LOG.warn("error while trying to encode ["+parsedValue+"]", e); - } + LOG.warn("error while trying to encode [{}]", parsedValue, e); } } } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java b/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java index e16bb81f3..ff9d9dfde 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/VelocityResult.java @@ -25,8 +25,8 @@ import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ValueStack; -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.StrutsConstants; import org.apache.struts2.views.JspSupportServlet; @@ -159,7 +159,7 @@ public class VelocityResult extends StrutsResultSupport { // to do it all the time (WW-829). Since Velocity support is being deprecated, we'll oblige :) writer.flush(); } catch (Exception e) { - LOG.error("Unable to render Velocity Template, '{}'", finalLocation, e); + LOG.error("Unable to render velocity template: '{}'", finalLocation, e); throw e; } finally { if (usedJspFactory) { diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java index a64859024..eaac29141 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java @@ -24,6 +24,7 @@ package org.apache.struts2.dispatcher.mapper; import com.opensymphony.xwork2.config.ConfigurationManager; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; +import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; @@ -49,18 +50,16 @@ public class CompositeActionMapper implements ActionMapper { private static final Logger LOG = LogManager.getLogger(CompositeActionMapper.class); - protected List actionMappers = new LinkedList(); + protected List actionMappers = new LinkedList<>(); @Inject public CompositeActionMapper(Container container, @Inject(value = StrutsConstants.STRUTS_MAPPER_COMPOSITE) String list) { - if (list != null) { - String[] arr = list.split(","); - for (String name : arr) { - Object obj = container.getInstance(ActionMapper.class, name); - if (obj != null) { - actionMappers.add((ActionMapper) obj); - } + String[] arr = StringUtils.split(StringUtils.trimToEmpty(list), ","); + for (String name : arr) { + Object obj = container.getInstance(ActionMapper.class, name); + if (obj != null) { + actionMappers.add((ActionMapper) obj); } } } @@ -69,21 +68,15 @@ public class CompositeActionMapper implements ActionMapper { for (ActionMapper actionMapper : actionMappers) { ActionMapping actionMapping = actionMapper.getMapping(request, configManager); - if (LOG.isDebugEnabled()) { - LOG.debug("Using ActionMapper "+actionMapper); - } + LOG.debug("Using ActionMapper: {}", actionMapper); if (actionMapping == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("ActionMapper "+actionMapper+" failed to return an ActionMapping (null)"); - } + LOG.debug("ActionMapper {} failed to return an ActionMapping (null)", actionMapper); } else { return actionMapping; } } - if (LOG.isDebugEnabled()) { - LOG.debug("exhausted from ActionMapper that could return an ActionMapping"); - } + LOG.debug("exhausted from ActionMapper that could return an ActionMapping"); return null; } @@ -91,21 +84,15 @@ public class CompositeActionMapper implements ActionMapper { for (ActionMapper actionMapper : actionMappers) { ActionMapping actionMapping = actionMapper.getMappingFromActionName(actionName); - if (LOG.isDebugEnabled()) { - LOG.debug("Using ActionMapper "+actionMapper); - } + LOG.debug("Using ActionMapper: {}", actionMapper); if (actionMapping == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("ActionMapper "+actionMapper+" failed to return an ActionMapping (null)"); - } + LOG.debug("ActionMapper {} failed to return an ActionMapping (null)", actionMapper); } else { return actionMapping; } } - if (LOG.isDebugEnabled()) { - LOG.debug("exhausted from ActionMapper that could return an ActionMapping"); - } + LOG.debug("exhausted from ActionMapper that could return an ActionMapping"); return null; } @@ -113,21 +100,15 @@ public class CompositeActionMapper implements ActionMapper { for (ActionMapper actionMapper : actionMappers) { String uri = actionMapper.getUriFromActionMapping(mapping); - if (LOG.isDebugEnabled()) { - LOG.debug("Using ActionMapper "+actionMapper); - } + LOG.debug("Using ActionMapper: {}", actionMapper); if (uri == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("ActionMapper "+actionMapper+" failed to return an ActionMapping (null)"); - } + LOG.debug("ActionMapper {} failed to return an ActionMapping (null)", actionMapper); } else { return uri; } } - if (LOG.isDebugEnabled()) { - LOG.debug("exhausted from ActionMapper that could return a uri"); - } + LOG.debug("exhausted from ActionMapper that could return an ActionMapping"); return null; } } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java index 03c7ac58b..5115b688f 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java @@ -27,21 +27,17 @@ import com.opensymphony.xwork2.config.ConfigurationManager; import com.opensymphony.xwork2.config.entities.PackageConfig; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import org.apache.commons.lang3.BooleanUtils; 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.ServletActionContext; import org.apache.struts2.StrutsConstants; import org.apache.struts2.util.PrefixTrie; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.regex.Pattern; /** @@ -185,18 +181,18 @@ public class DefaultActionMapper implements ActionMapper { } @Inject(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION) - public void setAllowDynamicMethodCalls(String allow) { - allowDynamicMethodCalls = "true".equalsIgnoreCase(allow); + public void setAllowDynamicMethodCalls(String enableDynamicMethodCalls) { + this.allowDynamicMethodCalls = BooleanUtils.toBoolean(enableDynamicMethodCalls); } @Inject(StrutsConstants.STRUTS_ENABLE_SLASHES_IN_ACTION_NAMES) - public void setSlashesInActionNames(String allow) { - allowSlashesInActionNames = "true".equals(allow); + public void setSlashesInActionNames(String enableSlashesInActionNames) { + this.allowSlashesInActionNames = BooleanUtils.toBoolean(enableSlashesInActionNames); } @Inject(StrutsConstants.STRUTS_ALWAYS_SELECT_FULL_NAMESPACE) - public void setAlwaysSelectFullNamespace(String val) { - this.alwaysSelectFullNamespace = "true".equals(val); + public void setAlwaysSelectFullNamespace(String alwaysSelectFullNamespace) { + this.alwaysSelectFullNamespace = BooleanUtils.toBoolean(alwaysSelectFullNamespace); } @Inject(value = StrutsConstants.STRUTS_ALLOWED_ACTION_NAMES, required = false) @@ -206,12 +202,12 @@ public class DefaultActionMapper implements ActionMapper { @Inject(value = StrutsConstants.STRUTS_MAPPER_ACTION_PREFIX_ENABLED) public void setAllowActionPrefix(String allowActionPrefix) { - this.allowActionPrefix = "true".equalsIgnoreCase(allowActionPrefix); + this.allowActionPrefix = BooleanUtils.toBoolean(allowActionPrefix); } @Inject(value = StrutsConstants.STRUTS_MAPPER_ACTION_PREFIX_CROSSNAMESPACES) public void setAllowActionCrossNamespaceAccess(String allowActionCrossNamespaceAccess) { - this.allowActionCrossNamespaceAccess = "true".equalsIgnoreCase(allowActionCrossNamespaceAccess); + this.allowActionCrossNamespaceAccess = BooleanUtils.toBoolean(allowActionCrossNamespaceAccess); } @Inject @@ -221,8 +217,8 @@ public class DefaultActionMapper implements ActionMapper { @Inject(StrutsConstants.STRUTS_ACTION_EXTENSION) public void setExtensions(String extensions) { - if (extensions != null && !"".equals(extensions)) { - List list = new ArrayList(); + if (StringUtils.isNotEmpty(extensions)) { + List list = new ArrayList<>(); String[] tokens = extensions.split(","); Collections.addAll(list, tokens); if (extensions.endsWith(",")) { @@ -292,7 +288,7 @@ public class DefaultActionMapper implements ActionMapper { */ public void handleSpecialParameters(HttpServletRequest request, ActionMapping mapping) { // handle special parameter prefixes. - Set uniqueParameters = new HashSet(); + Set uniqueParameters = new HashSet<>(); Map parameterMap = request.getParameterMap(); for (Object o : parameterMap.keySet()) { String key = (String) o; diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java index b0adc3dbd..2ecccb5fe 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/PrefixBasedActionMapper.java @@ -3,8 +3,9 @@ package org.apache.struts2.dispatcher.mapper; import com.opensymphony.xwork2.config.ConfigurationManager; import com.opensymphony.xwork2.inject.Container; 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; @@ -44,7 +45,7 @@ public class PrefixBasedActionMapper extends DefaultActionMapper implements Acti private static final Logger LOG = LogManager.getLogger(PrefixBasedActionMapper.class); protected Container container; - protected Map actionMappers = new HashMap(); + protected Map actionMappers = new HashMap<>(); @Inject public void setContainer(Container container) { @@ -53,19 +54,17 @@ public class PrefixBasedActionMapper extends DefaultActionMapper implements Acti @Inject(StrutsConstants.PREFIX_BASED_MAPPER_CONFIGURATION) public void setPrefixBasedActionMappers(String list) { - if (list != null) { - String[] mappers = list.split(","); - for (String mapper : mappers) { - String[] thisMapper = mapper.split(":"); - if ((thisMapper != null) && (thisMapper.length == 2)) { - String mapperPrefix = thisMapper[0].trim(); - String mapperName = thisMapper[1].trim(); - Object obj = container.getInstance(ActionMapper.class, mapperName); - if (obj != null) { - actionMappers.put(mapperPrefix, (ActionMapper) obj); - } else { - LOG.debug("invalid PrefixBasedActionMapper config entry: [{}]", mapper); - } + String[] mappers = StringUtils.split(StringUtils.trimToEmpty(list), ","); + for (String mapper : mappers) { + String[] thisMapper = mapper.split(":"); + if (thisMapper.length == 2) { + String mapperPrefix = thisMapper[0].trim(); + String mapperName = thisMapper[1].trim(); + Object obj = container.getInstance(ActionMapper.class, mapperName); + if (obj != null) { + actionMappers.put(mapperPrefix, (ActionMapper) obj); + } else { + LOG.debug("invalid PrefixBasedActionMapper config entry: [{}]", mapper); } } } @@ -104,9 +103,7 @@ public class PrefixBasedActionMapper extends DefaultActionMapper implements Acti } } } - if (LOG.isDebugEnabled()) { - LOG.debug("No ActionMapper found"); - } + LOG.debug("No ActionMapper found"); return null; } @@ -124,9 +121,7 @@ public class PrefixBasedActionMapper extends DefaultActionMapper implements Acti } } } - if (LOG.isDebugEnabled()) { - LOG.debug("ActionMapper failed to return a uri"); - } + LOG.debug("ActionMapper failed to return a uri"); return null; } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java index 996d257a5..b4749134b 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java @@ -23,6 +23,7 @@ package org.apache.struts2.dispatcher.mapper; import com.opensymphony.xwork2.config.ConfigurationManager; import com.opensymphony.xwork2.inject.Inject; +import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; @@ -62,18 +63,16 @@ public class Restful2ActionMapper extends DefaultActionMapper { } String actionName = mapping.getName(); - String id = null; // Only try something if the action name is specified - if (actionName != null && actionName.length() > 0) { + if (StringUtils.isNotBlank(actionName)) { int lastSlashPos = actionName.lastIndexOf('/'); if (lastSlashPos > -1) { id = actionName.substring(lastSlashPos+1); } - // If a method hasn't been explicitly named, try to guess using ReST-style patterns if (mapping.getMethod() == null) { @@ -124,7 +123,7 @@ public class Restful2ActionMapper extends DefaultActionMapper { int actionSlashPos = actionName.lastIndexOf('/', lastSlashPos - 1); if (actionSlashPos > 0 && actionSlashPos < lastSlashPos) { String params = actionName.substring(0, actionSlashPos); - HashMap parameters = new HashMap(); + HashMap parameters = new HashMap<>(); try { StringTokenizer st = new StringTokenizer(params, "/"); boolean isNameTok = true; @@ -152,9 +151,7 @@ public class Restful2ActionMapper extends DefaultActionMapper { mapping.getParams().putAll(parameters); } } catch (Exception e) { - if (LOG.isWarnEnabled()) { LOG.warn("Unable to determine parameters from the url", e); - } } mapping.setName(actionName.substring(actionSlashPos+1)); } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java index 13ede874b..d7ae2c0b5 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java @@ -52,7 +52,7 @@ public class RestfulActionMapper implements ActionMapper { } String actionName = uri.substring(1, nextSlash); - Map parameters = new HashMap(); + Map parameters = new HashMap<>(); try { StringTokenizer st = new StringTokenizer(uri.substring(nextSlash), "/"); boolean isNameTok = true; @@ -80,9 +80,7 @@ public class RestfulActionMapper implements ActionMapper { } } } catch (Exception e) { - if (LOG.isWarnEnabled()) { LOG.warn("Cannot determine url parameters", e); - } } return new ActionMapping(actionName, "", "", parameters); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java index 635b4204d..e9ac67f60 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java @@ -24,8 +24,6 @@ package org.apache.struts2.dispatcher.multipart; import com.opensymphony.xwork2.LocaleProvider; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.LocalizedTextUtil; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.FileUploadException; @@ -33,6 +31,8 @@ import org.apache.commons.fileupload.RequestContext; import org.apache.commons.fileupload.disk.DiskFileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import javax.servlet.http.HttpServletRequest; @@ -40,14 +40,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * Multipart form data request adapter for Jakarta Commons Fileupload package. @@ -57,13 +50,13 @@ public class JakartaMultiPartRequest implements MultiPartRequest { static final Logger LOG = LogManager.getLogger(JakartaMultiPartRequest.class); // maps parameter name -> List of FileItem objects - protected Map> files = new HashMap>(); + protected Map> files = new HashMap<>(); // maps parameter name -> List of param values - protected Map> params = new HashMap>(); + protected Map> params = new HashMap<>(); // any errors while processing this request - protected List errors = new ArrayList(); + protected List errors = new ArrayList<>(); protected long maxSize; private Locale defaultLocale = Locale.ENGLISH; @@ -91,17 +84,13 @@ public class JakartaMultiPartRequest implements MultiPartRequest { setLocale(request); processUpload(request, saveDir); } catch (FileUploadBase.SizeLimitExceededException e) { - if (LOG.isWarnEnabled()) { - LOG.warn("Request exceeded size limit!", e); - } + LOG.warn("Request exceeded size limit!", e); String errorMessage = buildErrorMessage(e, new Object[]{e.getPermittedSize(), e.getActualSize()}); if (!errors.contains(errorMessage)) { errors.add(errorMessage); } } catch (Exception e) { - if (LOG.isWarnEnabled()) { - LOG.warn("Unable to parse request", e); - } + LOG.warn("Unable to parse request", e); String errorMessage = buildErrorMessage(e, new Object[]{}); if (!errors.contains(errorMessage)) { errors.add(errorMessage); @@ -145,7 +134,7 @@ public class JakartaMultiPartRequest implements MultiPartRequest { if (files.get(item.getFieldName()) != null) { values = files.get(item.getFieldName()); } else { - values = new ArrayList(); + values = new ArrayList<>(); } values.add(item); @@ -159,7 +148,7 @@ public class JakartaMultiPartRequest implements MultiPartRequest { if (params.get(item.getFieldName()) != null) { values = params.get(item.getFieldName()); } else { - values = new ArrayList(); + values = new ArrayList<>(); } // note: see http://jira.opensymphony.com/browse/WW-633 @@ -214,7 +203,7 @@ public class JakartaMultiPartRequest implements MultiPartRequest { return null; } - List contentTypes = new ArrayList(items.size()); + List contentTypes = new ArrayList<>(items.size()); for (FileItem fileItem : items) { contentTypes.add(fileItem.getContentType()); } @@ -232,16 +221,14 @@ public class JakartaMultiPartRequest implements MultiPartRequest { return null; } - List fileList = new ArrayList(items.size()); + List fileList = new ArrayList<>(items.size()); for (FileItem fileItem : items) { File storeLocation = ((DiskFileItem) fileItem).getStoreLocation(); if (fileItem.isInMemory() && storeLocation != null && !storeLocation.exists()) { try { storeLocation.createNewFile(); } catch (IOException e) { - if (LOG.isErrorEnabled()) { - LOG.error("Cannot write uploaded empty file to disk: " + storeLocation.getAbsolutePath(), e); - } + LOG.error("Cannot write uploaded empty file to disk: {}", storeLocation.getAbsolutePath(), e); } } fileList.add(storeLocation); @@ -260,7 +247,7 @@ public class JakartaMultiPartRequest implements MultiPartRequest { return null; } - List fileNames = new ArrayList(items.size()); + List fileNames = new ArrayList<>(items.size()); for (FileItem fileItem : items) { fileNames.add(getCanonicalName(fileItem.getName())); } @@ -278,7 +265,7 @@ public class JakartaMultiPartRequest implements MultiPartRequest { return null; } - List fileNames = new ArrayList(items.size()); + List fileNames = new ArrayList<>(items.size()); for (FileItem fileItem : items) { fileNames.add(((DiskFileItem) fileItem).getStoreLocation().getName()); } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java index 12aad3119..e65973f87 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java @@ -3,31 +3,19 @@ package org.apache.struts2.dispatcher.multipart; import com.opensymphony.xwork2.LocaleProvider; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.LocalizedTextUtil; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.util.Streams; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import javax.servlet.http.HttpServletRequest; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; +import java.io.*; +import java.util.*; /** * Multi-part form data request adapter for Jakarta Commons FileUpload package that @@ -50,22 +38,22 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { /** * Map between file fields and file data. */ - private Map> fileInfos = new HashMap>(); + private Map> fileInfos = new HashMap<>(); /** * Map between non-file fields and values. */ - private Map> parameters = new HashMap>(); + private Map> parameters = new HashMap<>(); /** * Internal list of raised errors to be passed to the the Struts2 framework. */ - private List errors = new ArrayList(); + private List errors = new ArrayList<>(); /** * Internal list of non-critical messages to be passed to the Struts2 framework. */ - private List messages = new ArrayList(); + private List messages = new ArrayList<>(); /** * Specifies the maximum size of the entire request. @@ -121,8 +109,9 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { for (FileInfo fileInfo : fileInfos.get(fieldName)) { File file = fileInfo.getFile(); LOG.debug("Deleting file '{}'.", file.getName()); - if (!file.delete()) + if (!file.delete()) { LOG.warn("There was a problem attempting to delete file '{}'.", file.getName()); + } } } } @@ -132,12 +121,14 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ public String[] getContentType(String fieldName) { List infos = fileInfos.get(fieldName); - if (infos == null) + if (infos == null) { return null; + } - List types = new ArrayList(infos.size()); - for (FileInfo fileInfo : infos) + List types = new ArrayList<>(infos.size()); + for (FileInfo fileInfo : infos) { types.add(fileInfo.getContentType()); + } return types.toArray(new String[types.size()]); } @@ -163,12 +154,14 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ public File[] getFile(String fieldName) { List infos = fileInfos.get(fieldName); - if (infos == null) + if (infos == null) { return null; + } - List files = new ArrayList(infos.size()); - for (FileInfo fileInfo : infos) + List files = new ArrayList<>(infos.size()); + for (FileInfo fileInfo : infos) { files.add(fileInfo.getFile()); + } return files.toArray(new File[files.size()]); } @@ -178,12 +171,14 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ public String[] getFileNames(String fieldName) { List infos = fileInfos.get(fieldName); - if (infos == null) + if (infos == null) { return null; + } - List names = new ArrayList(infos.size()); - for (FileInfo fileInfo : infos) + List names = new ArrayList<>(infos.size()); + for (FileInfo fileInfo : infos) { names.add(getCanonicalName(fileInfo.getOriginalName())); + } return names.toArray(new String[names.size()]); } @@ -200,12 +195,14 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ public String[] getFilesystemName(String fieldName) { List infos = fileInfos.get(fieldName); - if (infos == null) + if (infos == null) { return null; + } - List names = new ArrayList(infos.size()); - for (FileInfo fileInfo : infos) + List names = new ArrayList<>(infos.size()); + for (FileInfo fileInfo : infos) { names.add(fileInfo.getFile().getName()); + } return names.toArray(new String[names.size()]); } @@ -215,8 +212,9 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ public String getParameter(String name) { List values = parameters.get(name); - if (values != null && values.size() > 0) + if (values != null && values.size() > 0) { return values.get(0); + } return null; } @@ -232,24 +230,25 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ public String[] getParameterValues(String name) { List values = parameters.get(name); - if (values != null && values.size() > 0) + if (values != null && values.size() > 0) { return values.toArray(new String[values.size()]); + } return null; } /* (non-Javadoc) * @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#parse(javax.servlet.http.HttpServletRequest, java.lang.String) */ - public void parse(HttpServletRequest request, String saveDir) - throws IOException { + public void parse(HttpServletRequest request, String saveDir) throws IOException { try { setLocale(request); processUpload(request, saveDir); } catch (Exception e) { - e.printStackTrace(); + LOG.warn("Error occurred during parsing of multi part request", e); String errorMessage = buildErrorMessage(e, new Object[]{}); - if (!errors.contains(errorMessage)) + if (!errors.contains(errorMessage)) { errors.add(errorMessage); + } } } @@ -260,8 +259,9 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { * @param request */ protected void setLocale(HttpServletRequest request) { - if (defaultLocale == null) + if (defaultLocale == null) { defaultLocale = request.getLocale(); + } } /** @@ -271,8 +271,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { * @param saveDir * @throws Exception */ - private void processUpload(HttpServletRequest request, String saveDir) - throws Exception { + private void processUpload(HttpServletRequest request, String saveDir) throws Exception { // Sanity check that the request is a multi-part/form-data request. if (ServletFileUpload.isMultipartContent(request)) { @@ -313,7 +312,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { processFileItemStreamAsFileField(itemStream, saveDir); } } catch (IOException e) { - e.printStackTrace(); + LOG.warn("Error occurred during process upload", e); } } } @@ -329,8 +328,9 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { // if maxSize is specified as -1, there is no sanity check and it's // safe to return true for any request, delegating the failure // checks later in the upload process. - if (maxSize == -1 || request == null) + if (maxSize == -1 || request == null) { return true; + } return request.getContentLength() < maxSize; } @@ -343,8 +343,10 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ private long getRequestSize(HttpServletRequest request) { long requestSize = 0; - if (request != null) + if (request != null) { requestSize = request.getContentLength(); + } + return requestSize; } @@ -358,8 +360,9 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { String exceptionMessage = "Skipped file " + fileName + "; request size limit exceeded."; FileSizeLimitExceededException exception = new FileUploadBase.FileSizeLimitExceededException(exceptionMessage, getRequestSize(request), maxSize); String message = buildErrorMessage(exception, new Object[]{fileName, getRequestSize(request), maxSize}); - if (!errors.contains(message)) + if (!errors.contains(message)) { errors.add(message); + } } /** @@ -370,10 +373,10 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { private void processFileItemStreamAsFormField(FileItemStream itemStream) { String fieldName = itemStream.getFieldName(); try { - List values = null; + List values; String fieldValue = Streams.asString(itemStream.openStream()); if (!parameters.containsKey(fieldName)) { - values = new ArrayList(); + values = new ArrayList<>(); parameters.put(fieldName, values); } else { values = parameters.get(fieldName); @@ -396,8 +399,9 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { // Create the temporary upload file. file = createTemporaryFile(itemStream.getName(), location); - if (streamFileToDisk(itemStream, file)) + if (streamFileToDisk(itemStream, file)) { createFileInfoFromItemStream(itemStream, file); + } } catch (IOException e) { if (file != null) { try { @@ -417,8 +421,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { * @return * @throws IOException */ - private File createTemporaryFile(String fileName, String location) - throws IOException { + private File createTemporaryFile(String fileName, String location) throws IOException { String name = fileName .substring(fileName.lastIndexOf('/') + 1) .substring(fileName.lastIndexOf('\\') + 1); @@ -452,22 +455,23 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { output = new BufferedOutputStream(new FileOutputStream(file), bufferSize); byte[] buffer = new byte[bufferSize]; LOG.debug("Streaming file using buffer size {}.", bufferSize); - for (int length = 0; ((length = input.read(buffer)) > 0); ) + for (int length = 0; ((length = input.read(buffer)) > 0); ) { output.write(buffer, 0, length); + } result = true; } finally { if (output != null) { try { output.close(); } catch (IOException e) { - e.printStackTrace(); + LOG.warn("Error occurred during closing of OutputStream.", e); } } if (input != null) { try { input.close(); } catch (IOException e) { - e.printStackTrace(); + LOG.warn("Error occurred during closing of InputStream.", e); } } } @@ -490,7 +494,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { FileInfo fileInfo = new FileInfo(file, itemStream.getContentType(), fileName); // append or create new entry. if (!fileInfos.containsKey(fieldName)) { - List infos = new ArrayList(); + List infos = new ArrayList<>(); infos.add(fileInfo); fileInfos.put(fieldName, infos); } else { @@ -524,8 +528,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ private String buildErrorMessage(Throwable e, Object[] args) { String errorKey = "struts.message.upload.error." + e.getClass().getSimpleName(); - if (LOG.isDebugEnabled()) - LOG.debug("Preparing error message for key: [{}]", errorKey); + LOG.debug("Preparing error message for key: [{}]", errorKey); return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, e.getMessage(), args); } @@ -538,8 +541,7 @@ public class JakartaStreamMultiPartRequest implements MultiPartRequest { */ private String buildMessage(Throwable e, Object[] args) { String messageKey = "struts.message.upload.message." + e.getClass().getSimpleName(); - if (LOG.isDebugEnabled()) - LOG.debug("Preparing message for key: [{}]", messageKey); + LOG.debug("Preparing message for key: [{}]", messageKey); return LocalizedTextUtil.findText(this.getClass(), messageKey, defaultLocale, e.getMessage(), args); } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java index 082153a86..64dfccb7e 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java @@ -108,7 +108,7 @@ public interface MultiPartRequest { * Returns a list of error messages that may have occurred while processing the request. * If there are no errors, an empty list is returned. If the underlying implementation * (ie: pell, cos, jakarta, etc) cannot support providing these errors, an empty list is - * also returned. This list of errors is repoted back to the + * also returned. This list of errors is reported back to the * {@link MultiPartRequestWrapper}'s errors field. * * @return a list of Strings that represent various errors during parsing diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java index f7d7bb00e..3a3539ebc 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequestWrapper.java @@ -21,23 +21,16 @@ package org.apache.struts2.dispatcher.multipart; -import com.opensymphony.xwork2.DefaultLocaleProvider; import com.opensymphony.xwork2.LocaleProvider; import com.opensymphony.xwork2.util.LocalizedTextUtil; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.dispatcher.StrutsRequestWrapper; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.Vector; +import java.util.*; /** @@ -76,7 +69,7 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper { String saveDir, LocaleProvider provider, boolean disableRequestAttributeValueStackLookup) { super(request, disableRequestAttributeValueStackLookup); - errors = new ArrayList(); + errors = new ArrayList<>(); multi = multiPartRequest; defaultLocale = provider.getLocale(); setLocale(request); @@ -86,9 +79,7 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper { addError(error); } } catch (IOException e) { - if (LOG.isWarnEnabled()) { - LOG.warn(e.getMessage(), e); - } + LOG.warn(e.getMessage(), e); addError(buildErrorMessage(e, new Object[] {e.getMessage()})); } } @@ -105,9 +96,7 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper { protected String buildErrorMessage(Throwable e, Object[] args) { String errorKey = "struts.messages.upload.error." + e.getClass().getSimpleName(); - if (LOG.isDebugEnabled()) { - LOG.debug("Preparing error message for key: [{}]", errorKey); - } + LOG.debug("Preparing error message for key: [{}]", errorKey); return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, e.getMessage(), args); } @@ -194,7 +183,7 @@ public class MultiPartRequestWrapper extends StrutsRequestWrapper { * @see javax.servlet.http.HttpServletRequest#getParameterMap() */ public Map getParameterMap() { - Map map = new HashMap(); + Map map = new HashMap<>(); Enumeration enumeration = getParameterNames(); while (enumeration.hasMoreElements()) { diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java b/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java index e0c431680..470753e12 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ng/InitOperations.java @@ -23,17 +23,11 @@ package org.apache.struts2.dispatcher.ng; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.logging.LoggerFactory; -import org.apache.logging.log4j.LogManager; import org.apache.struts2.StrutsConstants; import org.apache.struts2.dispatcher.Dispatcher; import org.apache.struts2.dispatcher.StaticContentLoader; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.regex.Pattern; /** @@ -103,7 +97,7 @@ public class InitOperations { * Create a {@link Dispatcher} */ private Dispatcher createDispatcher( HostConfig filterConfig ) { - Map params = new HashMap(); + Map params = new HashMap<>(); for ( Iterator e = filterConfig.getInitParameterNames(); e.hasNext(); ) { String name = (String) e.next(); String value = filterConfig.getInitParameter(name); @@ -131,7 +125,7 @@ public class InitOperations { private List buildExcludedPatternsList( String patterns ) { if (null != patterns && patterns.trim().length() != 0) { - List list = new ArrayList(); + List list = new ArrayList<>(); String[] tokens = patterns.split(","); for ( String token : tokens ) { list.add(Pattern.compile(token.trim())); diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java b/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java index bb60ce4c8..6170a548a 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ng/PrepareOperations.java @@ -23,8 +23,8 @@ package org.apache.struts2.dispatcher.ng; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.ValueStackFactory; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.RequestUtils; import org.apache.struts2.StrutsException; import org.apache.struts2.dispatcher.Dispatcher; @@ -50,7 +50,6 @@ public class PrepareOperations { private Dispatcher dispatcher; private static final String STRUTS_ACTION_MAPPING_KEY = "struts.actionMapping"; public static final String CLEANUP_RECURSION_COUNTER = "__cleanup_recursion_counter"; - private Logger log = LogManager.getLogger(PrepareOperations.class); @Deprecated public PrepareOperations(ServletContext servletContext, Dispatcher dispatcher) { @@ -75,7 +74,7 @@ public class PrepareOperations { ActionContext oldContext = ActionContext.getContext(); if (oldContext != null) { // detected existing context, so we are probably in a forward - ctx = new ActionContext(new HashMap(oldContext.getContextMap())); + ctx = new ActionContext(new HashMap<>(oldContext.getContextMap())); } else { ValueStack stack = dispatcher.getContainer().getInstance(ValueStackFactory.class).createValueStack(); stack.getContext().putAll(dispatcher.createContextMap(request, response, null)); @@ -95,9 +94,7 @@ public class PrepareOperations { counterVal -= 1; request.setAttribute(CLEANUP_RECURSION_COUNTER, counterVal); if (counterVal > 0 ) { - if (log.isDebugEnabled()) { - log.debug("skipping cleanup counter="+counterVal); - } + LOG.debug("skipping cleanup counter={}", counterVal); return; } } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java b/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java index 7f8164f9d..d2e23c9bb 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java @@ -27,12 +27,7 @@ import org.apache.struts2.dispatcher.ng.ExecuteOperations; import org.apache.struts2.dispatcher.ng.InitOperations; import org.apache.struts2.dispatcher.ng.PrepareOperations; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -80,8 +75,8 @@ public class StrutsExecuteFilter implements StrutsStatics, Filter { ActionMapping mapping = prepare.findActionMapping(request, response); - //if recusrion counter is > 1, it means we are in a "forward", in that case a mapping will still be - //in the request, if we handle it, it will lead to an infinte loop, see WW-3077 + //if recursion counter is > 1, it means we are in a "forward", in that case a mapping will still be + //in the request, if we handle it, it will lead to an infinite loop, see WW-3077 Integer recursionCounter = (Integer) request.getAttribute(PrepareOperations.CLEANUP_RECURSION_COUNTER); if (mapping == null || recursionCounter > 1) { diff --git a/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java b/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java index 5628aa44c..02f39a81d 100644 --- a/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java +++ b/core/src/main/java/org/apache/struts2/impl/PrefixBasedActionProxyFactory.java @@ -5,8 +5,8 @@ import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.DefaultActionProxyFactory; import com.opensymphony.xwork2.inject.Container; 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 org.apache.struts2.StrutsConstants; import java.util.HashMap; @@ -35,7 +35,7 @@ public class PrefixBasedActionProxyFactory extends DefaultActionProxyFactory { private static final Logger LOG = LogManager.getLogger(PrefixBasedActionProxyFactory.class); - private Map actionProxyFactories = new HashMap(); + private Map actionProxyFactories = new HashMap<>(); private ActionProxyFactory defaultFactory; @Inject @@ -54,7 +54,7 @@ public class PrefixBasedActionProxyFactory extends DefaultActionProxyFactory { String[] factories = list.split(","); for (String factory : factories) { String[] thisFactory = factory.split(":"); - if ((thisFactory != null) && (thisFactory.length == 2)) { + if (thisFactory.length == 2) { String factoryPrefix = thisFactory[0].trim(); String factoryName = thisFactory[1].trim(); ActionProxyFactory obj = container.getInstance(ActionProxyFactory.class, factoryName); diff --git a/core/src/main/java/org/apache/struts2/impl/StrutsObjectFactory.java b/core/src/main/java/org/apache/struts2/impl/StrutsObjectFactory.java index be2f19ccb..528ee34b3 100644 --- a/core/src/main/java/org/apache/struts2/impl/StrutsObjectFactory.java +++ b/core/src/main/java/org/apache/struts2/impl/StrutsObjectFactory.java @@ -53,7 +53,7 @@ public class StrutsObjectFactory extends ObjectFactory { throws ConfigurationException { String className = interceptorConfig.getClassName(); - Map params = new HashMap(); + Map params = new HashMap<>(); Map typeParams = interceptorConfig.getParams(); if (typeParams != null && !typeParams.isEmpty()) params.putAll(typeParams); diff --git a/core/src/main/java/org/apache/struts2/interceptor/ActionMappingParametersInteceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ActionMappingParametersInteceptor.java index e2ad74fda..ba8389e6c 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ActionMappingParametersInteceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ActionMappingParametersInteceptor.java @@ -21,16 +21,15 @@ package org.apache.struts2.interceptor; -import com.opensymphony.xwork2.interceptor.ParametersInterceptor; import com.opensymphony.xwork2.ActionContext; - -import java.util.Map; -import java.util.Collections; -import java.util.TreeMap; - +import com.opensymphony.xwork2.interceptor.ParametersInterceptor; import org.apache.struts2.ServletActionContext; import org.apache.struts2.dispatcher.mapper.ActionMapping; +import java.util.Collections; +import java.util.Map; +import java.util.TreeMap; + /** * * This interceptor sets all parameters from the action mapping, for this request, on the value stack. It operates @@ -75,8 +74,7 @@ public class ActionMappingParametersInteceptor extends ParametersInterceptor { /** * @param ac The action context - * @return the parameters from the action mapping in the context. If none found, returns - * an empty map. + * @return the parameters from the action mapping in the context. If none found, returns an empty map. */ @Override protected Map retrieveParameters(ActionContext ac) { @@ -100,7 +98,7 @@ public class ActionMappingParametersInteceptor extends ParametersInterceptor { @Override protected void addParametersToContext(ActionContext ac, Map newParams) { Map previousParams = ac.getParameters(); - Map combinedParams = null; + Map combinedParams; if (previousParams != null) { combinedParams = new TreeMap(previousParams); } else { diff --git a/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java index b6410b849..8fd638b31 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/CheckboxInterceptor.java @@ -22,14 +22,14 @@ package org.apache.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import java.util.Map; -import java.util.Set; import java.util.HashMap; import java.util.Iterator; +import java.util.Map; +import java.util.Set; /** * @@ -59,7 +59,7 @@ public class CheckboxInterceptor extends AbstractInterceptor { public String intercept(ActionInvocation ai) throws Exception { Map parameters = ai.getInvocationContext().getParameters(); - Map newParams = new HashMap(); + Map newParams = new HashMap<>(); Set> entries = parameters.entrySet(); for (Iterator> iterator = entries.iterator(); iterator.hasNext();) { diff --git a/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java index cf2d797c6..aa4f3e525 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java @@ -21,13 +21,13 @@ package org.apache.struts2.interceptor; -import java.util.Map; - import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.Map; /** * @@ -83,10 +83,8 @@ public class ClearSessionInterceptor extends AbstractInterceptor { * @see com.opensymphony.xwork2.interceptor.Interceptor#intercept(com.opensymphony.xwork2.ActionInvocation) */ public String intercept(ActionInvocation invocation) throws Exception { - if (LOG.isDebugEnabled()) { - LOG.debug("Clearing HttpSession"); - } - + LOG.debug("Clearing HttpSession"); + ActionContext ac = invocation.getInvocationContext(); Map session = ac.getSession(); diff --git a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java index 76a4f2cd7..c25180b99 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java @@ -29,8 +29,8 @@ import com.opensymphony.xwork2.security.AcceptedPatternsChecker; import com.opensymphony.xwork2.security.ExcludedPatternsChecker; import com.opensymphony.xwork2.util.TextParseUtil; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; import javax.servlet.http.Cookie; @@ -195,8 +195,9 @@ public class CookieInterceptor extends AbstractInterceptor { * @param cookiesName */ public void setCookiesName(String cookiesName) { - if (cookiesName != null) + if (cookiesName != null) { this.cookiesNameSet = TextParseUtil.commaDelimitedStringToSet(cookiesName); + } } /** @@ -207,8 +208,9 @@ public class CookieInterceptor extends AbstractInterceptor { * @param cookiesValue */ public void setCookiesValue(String cookiesValue) { - if (cookiesValue != null) + if (cookiesValue != null) { this.cookiesValueSet = TextParseUtil.commaDelimitedStringToSet(cookiesValue); + } } /** @@ -222,12 +224,10 @@ public class CookieInterceptor extends AbstractInterceptor { } public String intercept(ActionInvocation invocation) throws Exception { - if (LOG.isDebugEnabled()) { - LOG.debug("start interception"); - } + LOG.debug("start interception"); // contains selected cookies - final Map cookiesMap = new LinkedHashMap(); + final Map cookiesMap = new LinkedHashMap<>(); Cookie[] cookies = ServletActionContext.getRequest().getCookies(); if (cookies != null) { @@ -239,9 +239,7 @@ public class CookieInterceptor extends AbstractInterceptor { if (isAcceptableName(name) && isAcceptableValue(value)) { if (cookiesNameSet.contains("*")) { - if (LOG.isDebugEnabled()) { - LOG.debug("contains cookie name [*] in configured cookies name set, cookie with name [" + name + "] with value [" + value + "] will be injected"); - } + LOG.debug("Contains cookie name [*] in configured cookies name set, cookie with name [{}] with value [{}] will be injected", name, value); populateCookieValueIntoStack(name, value, cookiesMap, stack); } else if (cookiesNameSet.contains(cookie.getName())) { populateCookieValueIntoStack(name, value, cookiesMap, stack); @@ -346,9 +344,7 @@ public class CookieInterceptor extends AbstractInterceptor { // if cookiesValues is specified, the cookie's value must match before we // inject them into Struts' action if (cookiesValueSet.contains(cookieValue)) { - if (LOG.isDebugEnabled()) { - LOG.debug("both configured cookie name and value matched, cookie [{}] with value [{}] will be injected", cookieName, cookieValue); - } + LOG.debug("both configured cookie name and value matched, cookie [{}] with value [{}] will be injected", cookieName, cookieValue); cookiesMap.put(cookieName, cookieValue); stack.setValue(cookieName, cookieValue); diff --git a/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java index 89251f458..6f604d0ef 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/CreateSessionInterceptor.java @@ -23,8 +23,8 @@ package org.apache.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -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.SessionMap; @@ -92,9 +92,7 @@ public class CreateSessionInterceptor extends AbstractInterceptor { public String intercept(ActionInvocation invocation) throws Exception { HttpSession httpSession = ServletActionContext.getRequest().getSession(false); if (httpSession == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("Creating new HttpSession and new SessionMap in ServletActionContext"); - } + LOG.debug("Creating new HttpSession and new SessionMap in ServletActionContext"); ServletActionContext.getRequest().getSession(true); ServletActionContext.getContext().setSession(new SessionMap(ServletActionContext.getRequest())); } diff --git a/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java index cef69051f..05d38514a 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/DateTextFieldInterceptor.java @@ -1,18 +1,14 @@ package org.apache.struts2.interceptor; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.Map.Entry; - import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.Map.Entry; public class DateTextFieldInterceptor implements Interceptor { @@ -31,9 +27,9 @@ public class DateTextFieldInterceptor implements Interceptor { private String description; private Integer length; private String dateType; - - private DateWord(String n, Integer l, String t) { - description = n; + + DateWord(String n, Integer l, String t) { + description = n; length = l; dateType = t; } @@ -68,7 +64,7 @@ public class DateTextFieldInterceptor implements Interceptor { public String intercept(ActionInvocation ai) throws Exception { Map parameters = ai.getInvocationContext().getParameters(); Set> entries = parameters.entrySet(); - Map> dates = new HashMap>(); + Map> dates = new HashMap<>(); DateWord[] dateWords = DateWord.getAll(); @@ -88,8 +84,8 @@ public class DateTextFieldInterceptor implements Interceptor { iterator.remove(); Map map = dates.get(name); if (map == null) { - map = new HashMap(); - dates.put(name, map); + map = new HashMap<>(); + dates.put(name, map); } map.put(dateWord.getDateType(), values[0]); } @@ -100,7 +96,7 @@ public class DateTextFieldInterceptor implements Interceptor { } // Create all the date objects - Map newParams = new HashMap(); + Map newParams = new HashMap<>(); Set>> dateEntries = dates.entrySet(); for (Entry> dateEntry : dateEntries) { Set> dateFormatEntries = dateEntry.getValue().entrySet(); @@ -116,8 +112,7 @@ public class DateTextFieldInterceptor implements Interceptor { Date value = formatter.parse(dateValue); newParams.put(dateEntry.getKey(), value); } catch (ParseException e) { - LOG.warn("Cannot parse the parameter '" + dateEntry.getKey() - + "' with format '" + dateFormat + "' and with value '" + dateValue + "'"); + LOG.warn("Cannot parse the parameter '{}' with format '{}' and with value '{}'", dateEntry.getKey(), dateFormat, dateValue); } } parameters.putAll(newParams); diff --git a/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java index 16974d8ec..3722efe79 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/DeprecationInterceptor.java @@ -5,8 +5,9 @@ import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -import org.apache.logging.log4j.Logger; +import org.apache.commons.lang3.BooleanUtils; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import java.lang.reflect.Field; @@ -47,7 +48,7 @@ public class DeprecationInterceptor extends AbstractInterceptor { * @throws Exception */ private String validate() throws Exception { - Set constants = new HashSet(); + Set constants = new HashSet<>(); readConstants(constants, StrutsConstants.class); readConstants(constants, XWorkConstants.class); @@ -55,7 +56,7 @@ public class DeprecationInterceptor extends AbstractInterceptor { Set applicationConstants = container.getInstanceNames(String.class); String message = null; if (!constants.containsAll(applicationConstants)) { - Set deprecated = new HashSet(applicationConstants); + Set deprecated = new HashSet<>(applicationConstants); deprecated.removeAll(constants); message = prepareMessage(deprecated); } @@ -94,7 +95,7 @@ public class DeprecationInterceptor extends AbstractInterceptor { @Inject(StrutsConstants.STRUTS_DEVMODE) public void setDevMode(String state) { - this.devMode = "true".equals(state); + this.devMode = BooleanUtils.toBoolean(state); } @Inject diff --git a/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java index 9d42dfb6c..8b107ee1b 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java @@ -21,26 +21,21 @@ package org.apache.struts2.interceptor; -import java.util.Collections; -import java.util.Map; - +import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; -import com.opensymphony.xwork2.config.entities.ResultConfig; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; -import org.apache.struts2.util.TokenHelper; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; -import org.apache.struts2.dispatcher.Dispatcher; -import org.apache.struts2.views.freemarker.FreemarkerManager; +import org.apache.struts2.util.TokenHelper; import org.apache.struts2.views.freemarker.FreemarkerResult; import javax.servlet.http.HttpSession; +import java.util.Map; /** @@ -264,12 +259,9 @@ public class ExecuteAndWaitInterceptor extends MethodFilterInterceptor { Map results = proxy.getConfig().getResults(); if (!results.containsKey(WAIT)) { - if (LOG.isWarnEnabled()) { LOG.warn("ExecuteAndWait interceptor has detected that no result named 'wait' is available. " + "Defaulting to a plain built-in wait page. It is highly recommend you " + - "provide an action-specific or global result named '" + WAIT + - "'."); - } + "provide an action-specific or global result named '{}'.", WAIT); // no wait result? hmm -- let's try to do dynamically put it in for you! //we used to add a fake "wait" result here, since the configuration is unmodifiable, that is no longer @@ -314,7 +306,7 @@ public class ExecuteAndWaitInterceptor extends MethodFilterInterceptor { * Performs the initial delay. *

* When this interceptor is executed for the first time this methods handles any provided initial delay. - * An initial delay is a time in miliseconds we let the server wait before we continue. + * An initial delay is a time in milliseconds we let the server wait before we continue. *
During the wait this interceptor will wake every 100 millis to check if the background * process is done premature, thus if the job for some reason doesn't take to long the wait * page is not shown to the user. @@ -328,16 +320,12 @@ public class ExecuteAndWaitInterceptor extends MethodFilterInterceptor { } int steps = delay / delaySleepInterval; - if (LOG.isDebugEnabled()) { - LOG.debug("Delaying for " + delay + " millis. (using " + steps + " steps)"); - } + LOG.debug("Delaying for {} millis. (using {} steps)", delay, steps); int step; for (step = 0; step < steps && !bp.isDone(); step++) { Thread.sleep(delaySleepInterval); } - if (LOG.isDebugEnabled()) { - LOG.debug("Sleeping ended after " + step + " steps and the background process is " + (bp.isDone() ? " done" : " not done")); - } + LOG.debug("Sleeping ended after {} steps and the background process is {}", step, (bp.isDone() ? " done" : " not done")); } /** diff --git a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java index 109f11aed..76ae56a31 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java @@ -21,19 +21,13 @@ package org.apache.struts2.interceptor; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.LocaleProvider; -import com.opensymphony.xwork2.TextProvider; -import com.opensymphony.xwork2.TextProviderFactory; -import com.opensymphony.xwork2.ValidationAware; +import com.opensymphony.xwork2.*; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.util.TextParseUtil; -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.multipart.MultiPartRequestWrapper; import org.apache.struts2.util.ContentTypeMatcher; @@ -41,14 +35,7 @@ import org.apache.struts2.util.ContentTypeMatcher; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * @@ -288,9 +275,9 @@ public class FileUploadInterceptor extends AbstractInterceptor { // get a File object for the uploaded File File[] files = multiWrapper.getFiles(inputName); if (files != null && files.length > 0) { - List acceptedFiles = new ArrayList(files.length); - List acceptedContentTypes = new ArrayList(files.length); - List acceptedFileNames = new ArrayList(files.length); + List acceptedFiles = new ArrayList<>(files.length); + List acceptedContentTypes = new ArrayList<>(files.length); + List acceptedFileNames = new ArrayList<>(files.length); String contentTypeName = inputName + "ContentType"; String fileNameName = inputName + "FileName"; diff --git a/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java index 3c358f58f..aff8aac0b 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java @@ -21,19 +21,18 @@ package org.apache.struts2.interceptor; -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.Map; - -import org.apache.struts2.dispatcher.ServletRedirectResult; - import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ValidationAware; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.struts2.dispatcher.ServletRedirectResult; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.Map; /** * @@ -189,18 +188,14 @@ public class MessageStoreInterceptor extends AbstractInterceptor { } public String intercept(ActionInvocation invocation) throws Exception { - if (LOG.isDebugEnabled()) { - LOG.debug("entering MessageStoreInterceptor ..."); - } + LOG.debug("entering MessageStoreInterceptor ..."); before(invocation); String result = invocation.invoke(); after(invocation, result); - if (LOG.isDebugEnabled()) { - LOG.debug("exit executing MessageStoreInterceptor"); - } - + LOG.debug("exit executing MessageStoreInterceptor"); + return result; } @@ -224,17 +219,13 @@ public class MessageStoreInterceptor extends AbstractInterceptor { Map session = (Map) invocation.getInvocationContext().get(ActionContext.SESSION); if (session == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("Session is not open, no errors / messages could be retrieve for action ["+action+"]"); - } + LOG.debug("Session is not open, no errors / messages could be retrieve for action [{}]", action); return; } ValidationAware validationAwareAction = (ValidationAware) action; - if (LOG.isDebugEnabled()) { - LOG.debug("retrieve error / message from session to populate into action ["+action+"]"); - } + LOG.debug("Retrieve error / message from session to populate into action [{}]", action); Collection actionErrors = (Collection) session.get(actionErrorsSessionKey); Collection actionMessages = (Collection) session.get(actionMessagesSessionKey); @@ -283,23 +274,18 @@ public class MessageStoreInterceptor extends AbstractInterceptor { Map session = (Map) invocation.getInvocationContext().get(ActionContext.SESSION); if (session == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("Could not store action ["+action+"] error/messages into session, because session hasn't been opened yet."); - } + LOG.debug("Could not store action [{}] error/messages into session, because session hasn't been opened yet.", action); return; } - if (LOG.isDebugEnabled()) { - LOG.debug("store action ["+action+"] error/messages into session "); - } + LOG.debug("Store action [{}] error/messages into session.", action); ValidationAware validationAwareAction = (ValidationAware) action; session.put(actionErrorsSessionKey, validationAwareAction.getActionErrors()); session.put(actionMessagesSessionKey, validationAwareAction.getActionMessages()); session.put(fieldErrorsSessionKey, validationAwareAction.getFieldErrors()); - } - else if(LOG.isDebugEnabled()) { - LOG.debug("Action ["+action+"] is not ValidationAware, no message / error that are storeable"); + } else { + LOG.debug("Action [{}] is not ValidationAware, no message / error that are storeable", action); } } } diff --git a/core/src/main/java/org/apache/struts2/interceptor/MultiselectInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/MultiselectInterceptor.java index 15886b69c..4c8b84459 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/MultiselectInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/MultiselectInterceptor.java @@ -48,7 +48,7 @@ public class MultiselectInterceptor extends AbstractInterceptor { */ public String intercept(ActionInvocation actionInvocation) throws Exception { Map parameters = actionInvocation.getInvocationContext().getParameters(); - Map newParams = new HashMap(); + Map newParams = new HashMap<>(); Set keys = parameters.keySet(); for (Iterator iterator = keys.iterator(); iterator.hasNext();) { diff --git a/core/src/main/java/org/apache/struts2/interceptor/ProfilingActivationInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ProfilingActivationInterceptor.java index 0de19968c..d5be374e1 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ProfilingActivationInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ProfilingActivationInterceptor.java @@ -25,7 +25,7 @@ import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.util.profiling.UtilTimerStack; - +import org.apache.commons.lang3.BooleanUtils; import org.apache.struts2.StrutsConstants; /** @@ -87,7 +87,7 @@ public class ProfilingActivationInterceptor extends AbstractInterceptor { @Inject(StrutsConstants.STRUTS_DEVMODE) public void setDevMode(String mode) { - this.devMode = "true".equals(mode); + this.devMode = BooleanUtils.toBoolean(mode); } @Override @@ -96,13 +96,11 @@ public class ProfilingActivationInterceptor extends AbstractInterceptor { Object val = invocation.getInvocationContext().getParameters().get(profilingKey); if (val != null) { String sval = (val instanceof String ? (String)val : ((String[])val)[0]); - boolean enable = "yes".equalsIgnoreCase(sval) || "true".equalsIgnoreCase(sval); + boolean enable = BooleanUtils.toBoolean(sval); UtilTimerStack.setActive(enable); invocation.getInvocationContext().getParameters().remove(profilingKey); } } return invocation.invoke(); - } - } diff --git a/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java index eb087c1bc..9177ea2b3 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/RolesInterceptor.java @@ -23,8 +23,8 @@ package org.apache.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; import javax.servlet.http.HttpServletRequest; @@ -172,9 +172,7 @@ public class RolesInterceptor extends AbstractInterceptor { * @return The result code * @throws Exception */ - protected String handleRejection(ActionInvocation invocation, - HttpServletResponse response) - throws Exception { + protected String handleRejection(ActionInvocation invocation, HttpServletResponse response) throws Exception { response.sendError(HttpServletResponse.SC_FORBIDDEN); return null; } diff --git a/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java index 28cca4134..dfcd4d306 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java @@ -21,22 +21,23 @@ package org.apache.struts2.interceptor; -import java.io.Serializable; -import java.util.IdentityHashMap; -import java.util.Map; - -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsException; -import org.apache.struts2.dispatcher.SessionMap; - import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.PreResultListener; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; +import org.apache.commons.lang3.BooleanUtils; +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.StrutsException; +import org.apache.struts2.dispatcher.SessionMap; + +import java.io.Serializable; +import java.util.IdentityHashMap; +import java.util.Map; /** * @@ -182,8 +183,8 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi * @param value True if it should be created */ public void setAutoCreateSession(String value) { - if (value != null && value.length() > 0) { - this.autoCreateSession = Boolean.valueOf(value).booleanValue(); + if (StringUtils.isNotBlank(value)) { + this.autoCreateSession = BooleanUtils.toBoolean(value); } } @@ -219,7 +220,7 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi private static final Object NULL = new NULLClass(); - private static final Object nullConvert(Object o) { + private static Object nullConvert(Object o) { if (o == null) { return NULL; } @@ -233,10 +234,10 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi private static Map locks = new IdentityHashMap(); - static final void lock(Object o, ActionInvocation invocation) throws Exception { + static void lock(Object o, ActionInvocation invocation) throws Exception { synchronized (o) { int count = 3; - Object previous = null; + Object previous; while ((previous = locks.get(o)) != null) { if (previous == invocation) { return; @@ -249,12 +250,11 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi } o.wait(10000); } - ; locks.put(o, invocation); } } - static final void unlock(Object o) { + static void unlock(Object o) { synchronized (o) { locks.remove(o); o.notify(); @@ -285,19 +285,13 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi Map app = ActionContext.getContext().getApplication(); final ValueStack stack = ActionContext.getContext().getValueStack(); - if (LOG.isDebugEnabled()) { - LOG.debug("scope interceptor before"); - } + LOG.debug("scope interceptor before"); if (application != null) - for (int i = 0; i < application.length; i++) { - String string = application[i]; + for (String string : application) { Object attribute = app.get(key + string); if (attribute != null) { - if (LOG.isDebugEnabled()) { - LOG.debug("application scoped variable set " + string + " = " + String.valueOf(attribute)); - } - + LOG.debug("Application scoped variable set {} = {}", string, String.valueOf(attribute)); stack.setValue(string, nullConvert(attribute)); } } @@ -316,13 +310,10 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi } if (session != null && (!"start".equals(type))) { - for (int i = 0; i < session.length; i++) { - String string = session[i]; + for (String string : session) { Object attribute = ses.get(key + string); if (attribute != null) { - if (LOG.isDebugEnabled()) { - LOG.debug("session scoped variable set " + string + " = " + String.valueOf(attribute)); - } + LOG.debug("Session scoped variable set {} = {}", string, String.valueOf(attribute)); stack.setValue(string, nullConvert(attribute)); } } @@ -342,12 +333,9 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi final ValueStack stack = ActionContext.getContext().getValueStack(); if (application != null) - for (int i = 0; i < application.length; i++) { - String string = application[i]; + for (String string : application) { Object value = stack.findValue(string); - if (LOG.isDebugEnabled()) { - LOG.debug("application scoped variable saved " + string + " = " + String.valueOf(value)); - } + LOG.debug("Application scoped variable saved {} = {}", string, String.valueOf(value)); //if( value != null) app.put(key + string, nullConvert(value)); @@ -359,16 +347,12 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi if (ses != null) { if (session != null) { - for (int i = 0; i < session.length; i++) { - String string = session[i]; + for (String string : session) { if (ends) { ses.remove(key + string); } else { Object value = stack.findValue(string); - - if (LOG.isDebugEnabled()) { - LOG.debug("session scoped variable saved " + string + " = " + String.valueOf(value)); - } + LOG.debug("Session scoped variable saved {} = {}", string, String.valueOf(value)); // Null value should be scoped too //if( value != null) @@ -380,9 +364,7 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi } else { LOG.debug("No HttpSession created... Cannot save session scoped variables."); } - if (LOG.isDebugEnabled()) { - LOG.debug("scope interceptor after (before result)"); - } + LOG.debug("scope interceptor after (before result)"); } /** diff --git a/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java index d6c08f06f..53a980703 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/TokenInterceptor.java @@ -136,9 +136,7 @@ public class TokenInterceptor extends MethodFilterInterceptor { */ @Override protected String doIntercept(ActionInvocation invocation) throws Exception { - if (log.isDebugEnabled()) { - log.debug("Intercepting invocation to check for valid transaction token."); - } + log.debug("Intercepting invocation to check for valid transaction token."); return handleToken(invocation); } diff --git a/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java index 7ff87995b..7ea1fed7f 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java @@ -21,6 +21,22 @@ package org.apache.struts2.interceptor.debugging; +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.inject.Inject; +import com.opensymphony.xwork2.interceptor.AbstractInterceptor; +import com.opensymphony.xwork2.interceptor.PreResultListener; +import com.opensymphony.xwork2.util.ValueStack; +import com.opensymphony.xwork2.util.reflection.ReflectionProvider; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.struts2.ServletActionContext; +import org.apache.struts2.StrutsConstants; +import org.apache.struts2.dispatcher.FilterDispatcher; +import org.apache.struts2.views.freemarker.FreemarkerManager; +import org.apache.struts2.views.freemarker.FreemarkerResult; + +import javax.servlet.http.HttpServletResponse; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; @@ -29,30 +45,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.lang.reflect.Array; import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletResponse; - -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsConstants; -import org.apache.struts2.dispatcher.FilterDispatcher; -import org.apache.struts2.views.freemarker.FreemarkerManager; -import org.apache.struts2.views.freemarker.FreemarkerResult; - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.inject.Inject; -import com.opensymphony.xwork2.interceptor.AbstractInterceptor; -import com.opensymphony.xwork2.interceptor.PreResultListener; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; -import com.opensymphony.xwork2.util.reflection.ReflectionProvider; +import java.util.*; /** * @@ -99,7 +92,7 @@ public class DebuggingInterceptor extends AbstractInterceptor { "com.opensymphony.xwork2.", "xwork."}; private String[] _ignoreKeys = new String[]{"application", "session", "parameters", "request"}; - private HashSet ignoreKeys = new HashSet(Arrays.asList(_ignoreKeys)); + private HashSet ignoreKeys = new HashSet<>(Arrays.asList(_ignoreKeys)); private final static String XML_MODE = "xml"; private final static String CONSOLE_MODE = "console"; @@ -145,7 +138,7 @@ public class DebuggingInterceptor extends AbstractInterceptor { boolean actionOnly = false; boolean cont = true; Boolean devModeOverride = FilterDispatcher.getDevModeOverride(); - boolean devMode = devModeOverride != null ? devModeOverride.booleanValue() : this.devMode; + boolean devMode = devModeOverride != null ? devModeOverride : this.devMode; if (devMode) { final ActionContext ctx = ActionContext.getContext(); String type = getParameter(DEBUG_PARAM); @@ -266,7 +259,6 @@ public class DebuggingInterceptor extends AbstractInterceptor { } } - /** * Gets a single string from the request parameters * @@ -281,7 +273,6 @@ public class DebuggingInterceptor extends AbstractInterceptor { return null; } - /** * Prints the current context to the response in XML format. */ @@ -299,7 +290,6 @@ public class DebuggingInterceptor extends AbstractInterceptor { } } - /** * Prints the current request to the existing writer. * @@ -308,8 +298,7 @@ public class DebuggingInterceptor extends AbstractInterceptor { protected void printContext(PrettyPrintWriter writer) { ActionContext ctx = ActionContext.getContext(); writer.startNode(DEBUG_PARAM); - serializeIt(ctx.getParameters(), "parameters", writer, - new ArrayList()); + serializeIt(ctx.getParameters(), "parameters", writer, new ArrayList<>()); writer.startNode("context"); String key; Map ctxMap = ctx.getContextMap(); @@ -324,24 +313,23 @@ public class DebuggingInterceptor extends AbstractInterceptor { } } if (print) { - serializeIt(ctxMap.get(key), key, writer, new ArrayList()); + serializeIt(ctxMap.get(key), key, writer, new ArrayList<>()); } } writer.endNode(); Map requestMap = (Map) ctx.get("request"); serializeIt(requestMap, "request", writer, filterValueStack(requestMap)); - serializeIt(ctx.getSession(), "session", writer, new ArrayList()); + serializeIt(ctx.getSession(), "session", writer, new ArrayList<>()); ValueStack stack = (ValueStack) ctx.get(ActionContext.VALUE_STACK); - serializeIt(stack.getRoot(), "valueStack", writer, new ArrayList()); + serializeIt(stack.getRoot(), "valueStack", writer, new ArrayList<>()); writer.endNode(); } - /** * Recursive function to serialize objects to XML. Currently it will * serialize Collections, maps, Arrays, and JavaBeans. It maintains a stack - * of objects serialized already in the current functioncall. This is used + * of objects serialized already in the current function call. This is used * to avoid looping (stack overflow) of circular linked objects. Struts and * XWork objects are ignored. * @@ -356,10 +344,7 @@ public class DebuggingInterceptor extends AbstractInterceptor { writer.flush(); // Check stack for this object if ((bean != null) && (stack.contains(bean))) { - if (LOG.isInfoEnabled()) { - LOG.info("Circular reference detected, not serializing object: " - + name); - } + LOG.info("Circular reference detected, not serializing object: {}", name); return; } else if (bean != null) { // Push object onto stack. @@ -428,7 +413,6 @@ public class DebuggingInterceptor extends AbstractInterceptor { stack.remove(bean); } - /** * @param enableXmlWithConsole the enableXmlWithConsole to set */ @@ -436,17 +420,14 @@ public class DebuggingInterceptor extends AbstractInterceptor { this.enableXmlWithConsole = enableXmlWithConsole; } - private List filterValueStack(Map requestMap) { - List filter = new ArrayList(); - Object valueStack = requestMap.get("struts.valueStack"); + List filter = new ArrayList<>(); + Object valueStack = requestMap.get("struts.valueStack"); if(valueStack != null) { filter.add(valueStack); } return filter; } - - } diff --git a/core/src/main/java/org/apache/struts2/interceptor/debugging/ObjectToHTMLWriter.java b/core/src/main/java/org/apache/struts2/interceptor/debugging/ObjectToHTMLWriter.java index 223fe9856..396614b32 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/debugging/ObjectToHTMLWriter.java +++ b/core/src/main/java/org/apache/struts2/interceptor/debugging/ObjectToHTMLWriter.java @@ -21,17 +21,16 @@ package org.apache.struts2.interceptor.debugging; +import com.opensymphony.xwork2.util.reflection.ReflectionException; +import com.opensymphony.xwork2.util.reflection.ReflectionProvider; + import java.beans.IntrospectionException; import java.io.Writer; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; -import com.opensymphony.xwork2.util.reflection.ReflectionException; -import com.opensymphony.xwork2.util.reflection.ReflectionProvider; - /** * Writes an object as a table, where each field can be expanded if it is an Object/Collection/Array * @@ -51,9 +50,8 @@ class ObjectToHTMLWriter { prettyWriter.addAttribute("class", "debugTable"); if (root instanceof Map) { - for (Iterator iterator = ((Map) root).entrySet().iterator(); iterator - .hasNext();) { - Map.Entry property = (Map.Entry) iterator.next(); + for (Object next : ((Map) root).entrySet()) { + Map.Entry property = (Map.Entry) next; String key = property.getKey().toString(); Object value = property.getValue(); writeProperty(key, value, expr); @@ -66,8 +64,8 @@ class ObjectToHTMLWriter { } } else if (root instanceof Set) { Set set = (Set) root; - for (Iterator iterator = set.iterator(); iterator.hasNext();) { - writeProperty("", iterator.next(), expr); + for (Object next : set) { + writeProperty("", next, expr); } } else if (root.getClass().isArray()) { Object[] objects = (Object[]) root; @@ -81,8 +79,9 @@ class ObjectToHTMLWriter { String name = property.getKey(); Object value = property.getValue(); - if ("class".equals(name)) + if ("class".equals(name)) { continue; + } writeProperty(name, value, expr); } @@ -104,9 +103,8 @@ class ObjectToHTMLWriter { prettyWriter.startNode("td"); if (value != null) { //if is is an empty collection or array, don't write a link - if (value != null && - (isEmptyCollection(value) || isEmptyMap(value) || (value.getClass() - .isArray() && ((Object[]) value).length == 0))) { + if (isEmptyCollection(value) || isEmptyMap(value) || (value.getClass() + .isArray() && ((Object[]) value).length == 0)) { prettyWriter.addAttribute("class", "emptyCollection"); prettyWriter.setValue("empty"); } else { diff --git a/core/src/main/java/org/apache/struts2/interceptor/debugging/PrettyPrintWriter.java b/core/src/main/java/org/apache/struts2/interceptor/debugging/PrettyPrintWriter.java index 254104089..1902bd9ab 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/debugging/PrettyPrintWriter.java +++ b/core/src/main/java/org/apache/struts2/interceptor/debugging/PrettyPrintWriter.java @@ -28,7 +28,7 @@ import java.util.Stack; public class PrettyPrintWriter { private final PrintWriter writer; - private final Stack elementStack = new Stack(); + private final Stack elementStack = new Stack<>(); private final char[] lineIndenter; private boolean tagInProgress; @@ -153,7 +153,7 @@ public class PrettyPrintWriter { } else { finishTag(); writer.write(CLOSE); - writer.write((String)elementStack.pop()); + writer.write(elementStack.pop()); writer.write('>'); } readyForNewLine = true; diff --git a/core/src/main/java/org/apache/struts2/interceptor/validation/AnnotationValidationInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/validation/AnnotationValidationInterceptor.java index 01e8a4174..ddc8bbb63 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/validation/AnnotationValidationInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/validation/AnnotationValidationInterceptor.java @@ -21,17 +21,17 @@ package org.apache.struts2.interceptor.validation; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.Collection; - import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.AnnotationUtils; import com.opensymphony.xwork2.validator.ValidationInterceptor; - +import org.apache.commons.lang3.BooleanUtils; import org.apache.struts2.StrutsConstants; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Collection; + /** * Extends the xwork validation interceptor to also check for a @SkipValidation * annotation, and if found, don't validate this action method @@ -45,7 +45,7 @@ public class AnnotationValidationInterceptor extends ValidationInterceptor { @Inject(StrutsConstants.STRUTS_DEVMODE) public void setDevMode(String devMode) { - this.devMode = "true".equalsIgnoreCase(devMode); + this.devMode = BooleanUtils.toBoolean(devMode); } protected String doIntercept(ActionInvocation invocation) throws Exception { @@ -79,13 +79,14 @@ public class AnnotationValidationInterceptor extends ValidationInterceptor { // FIXME: This is copied from DefaultActionInvocation but should be exposed through the interface protected Method getActionMethod(Class actionClass, String methodName) throws NoSuchMethodException { Method method = null; + Class[] classes = new Class[0]; try { - method = actionClass.getMethod(methodName, new Class[0]); + method = actionClass.getMethod(methodName, classes); } catch (NoSuchMethodException e) { // hmm -- OK, try doXxx instead try { String altMethodName = "do" + methodName.substring(0, 1).toUpperCase() + methodName.substring(1); - method = actionClass.getMethod(altMethodName, new Class[0]); + method = actionClass.getMethod(altMethodName, classes); } catch (NoSuchMethodException e1) { // throw the original one if (devMode) { diff --git a/core/src/main/java/org/apache/struts2/util/FastByteArrayOutputStream.java b/core/src/main/java/org/apache/struts2/util/FastByteArrayOutputStream.java index eb07fb162..00fb12ff2 100644 --- a/core/src/main/java/org/apache/struts2/util/FastByteArrayOutputStream.java +++ b/core/src/main/java/org/apache/struts2/util/FastByteArrayOutputStream.java @@ -23,14 +23,13 @@ package org.apache.struts2.util; import javax.servlet.jsp.JspWriter; import java.io.*; -import java.util.Iterator; -import java.util.LinkedList; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.Charset; -import java.nio.charset.CodingErrorAction; -import java.nio.charset.CoderResult; -import java.nio.CharBuffer; import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CoderResult; +import java.nio.charset.CodingErrorAction; +import java.util.LinkedList; /** @@ -136,7 +135,7 @@ public class FastByteArrayOutputStream extends OutputStream { private void writeToFile() { FileOutputStream fileOutputStream = null; try { - fileOutputStream = new FileOutputStream("/tmp/" + getClass().getName() + System.currentTimeMillis() + ".log"); + fileOutputStream = new FileOutputStream(File.createTempFile(getClass().getName() + System.currentTimeMillis(), ".log")); writeTo(fileOutputStream); } catch (IOException e) { // Ignore @@ -219,7 +218,7 @@ public class FastByteArrayOutputStream extends OutputStream { protected void addBuffer() { if (buffers == null) { - buffers = new LinkedList(); + buffers = new LinkedList<>(); } buffers.addLast(buffer); buffer = new byte[blockSize]; diff --git a/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java b/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java index 1d005c2d6..f21115414 100644 --- a/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java +++ b/core/src/main/java/org/apache/struts2/util/IteratorGenerator.java @@ -21,15 +21,15 @@ package org.apache.struts2.util; +import com.opensymphony.xwork2.Action; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; -import com.opensymphony.xwork2.Action; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - /** * A bean that generates an iterator filled with a given object depending on the count, @@ -93,9 +93,7 @@ public class IteratorGenerator implements Iterator, Action { values.add(convertedObj); } catch(Exception e) { // make sure things, goes on, we just ignore the bad ones - if (LOG.isWarnEnabled()) { - LOG.warn("unable to convert ["+token+"], skipping this token, it will not appear in the generated iterator", e); - } + LOG.warn("Unable to convert [{}], skipping this token, it will not appear in the generated iterator", token, e); } } else { diff --git a/core/src/main/java/org/apache/struts2/util/RegexPatternMatcher.java b/core/src/main/java/org/apache/struts2/util/RegexPatternMatcher.java index 0f90365e1..f550b68da 100644 --- a/core/src/main/java/org/apache/struts2/util/RegexPatternMatcher.java +++ b/core/src/main/java/org/apache/struts2/util/RegexPatternMatcher.java @@ -49,7 +49,7 @@ public class RegexPatternMatcher implements PatternMatcher params = new HashMap(); + Map params = new HashMap<>(); Matcher matcher = PATTERN.matcher(data); int count = 0; diff --git a/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java b/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java index f57b5e6b2..b5850ff29 100644 --- a/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java +++ b/core/src/main/java/org/apache/struts2/util/SortIteratorFilter.java @@ -21,14 +21,11 @@ package org.apache.struts2.util; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; - import com.opensymphony.xwork2.Action; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.*; /** @@ -38,6 +35,7 @@ import org.apache.logging.log4j.LogManager; * @see org.apache.struts2.views.jsp.iterator.SortIteratorTag */ public class SortIteratorFilter extends IteratorFilterSupport implements Iterator, Action { + private static final Logger LOG = LogManager.getLogger(IteratorGenerator.class); Comparator comparator; Iterator iterator; @@ -67,8 +65,7 @@ public class SortIteratorFilter extends IteratorFilterSupport implements Iterato } else { try { if (!MakeIterator.isIterable(source)) { - LogManager.getLogger(SortIteratorFilter.class.getName()).warn("Cannot create SortIterator for source " + source); - + LOG.warn("Cannot create SortIterator for source: {}", source); return ERROR; } @@ -86,8 +83,7 @@ public class SortIteratorFilter extends IteratorFilterSupport implements Iterato return SUCCESS; } catch (Exception e) { - LogManager.getLogger(SortIteratorFilter.class.getName()).warn("Error creating sort iterator.", e); - + LOG.warn("Error creating sort iterator.", e); return ERROR; } } diff --git a/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java b/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java index 546c74de6..0d2e7c622 100644 --- a/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java +++ b/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java @@ -21,21 +21,19 @@ package org.apache.struts2.util; -import java.util.HashMap; -import java.util.Map; - -import com.opensymphony.xwork2.inject.Container; -import org.apache.struts2.dispatcher.Dispatcher; - import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.util.LocalizedTextUtil; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.ValueStackFactory; +import org.apache.struts2.dispatcher.Dispatcher; import org.apache.struts2.dispatcher.DispatcherErrorHandler; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.Map; /** * Generic test setup methods to be used with any unit testing framework. @@ -52,7 +50,7 @@ public class StrutsTestCaseHelper { public static Dispatcher initDispatcher(ServletContext ctx, Map params) { if (params == null) { - params = new HashMap(); + params = new HashMap<>(); } Dispatcher du = new DispatcherWrapper(ctx, params); du.init(); diff --git a/core/src/main/java/org/apache/struts2/util/StrutsUtil.java b/core/src/main/java/org/apache/struts2/util/StrutsUtil.java index 2641109bb..fad2c3657 100644 --- a/core/src/main/java/org/apache/struts2/util/StrutsUtil.java +++ b/core/src/main/java/org/apache/struts2/util/StrutsUtil.java @@ -27,8 +27,8 @@ import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.TextParseUtil; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.views.jsp.ui.OgnlTool; import org.apache.struts2.views.util.UrlHelper; @@ -42,12 +42,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Struts base utility class, for use in Velocity and Freemarker templates @@ -58,7 +53,7 @@ public class StrutsUtil { protected HttpServletRequest request; protected HttpServletResponse response; - protected Map classes = new Hashtable(); + protected Map classes = new Hashtable<>(); protected OgnlTool ognl; protected ValueStack stack; @@ -117,9 +112,7 @@ public class StrutsUtil { return responseWrapper.getData(); } catch (Exception e) { - if (LOG.isDebugEnabled()) { - LOG.debug("Cannot include {}", e, aName.toString()); - } + LOG.debug("Cannot include {}", aName.toString(), e); throw e; } } diff --git a/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java b/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java index 6449667c5..1c19a2f03 100644 --- a/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java +++ b/core/src/main/java/org/apache/struts2/util/TextProviderHelper.java @@ -23,8 +23,8 @@ package org.apache.struts2.util; import com.opensymphony.xwork2.TextProvider; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.Collections; import java.util.List; @@ -79,7 +79,7 @@ public class TextProviderHelper { } if (msg == null) { - // evaluate the defaultMesage as an OGNL expression + // evaluate the defaultMessage as an OGNL expression if (searchStack) msg = stack.findString(defaultMessage); @@ -90,14 +90,14 @@ public class TextProviderHelper { if (LOG.isWarnEnabled()) { if (tp != null) { - LOG.warn("The first TextProvider in the ValueStack ("+tp.getClass().getName()+") could not locate the message resource with key '"+key+"'"); + LOG.warn("The first TextProvider in the ValueStack ({}) could not locate the message resource with key '{}'", tp.getClass().getName(), key); } else { - LOG.warn("Could not locate the message resource '"+key+"' as there is no TextProvider in the ValueStack."); + LOG.warn("Could not locate the message resource '{}' as there is no TextProvider in the ValueStack.", key); } if (defaultMessage.equals(msg)) { - LOG.warn("The default value expression '"+defaultMessage+"' was evaluated and did not match a property. The literal value '"+defaultMessage+"' will be used."); + LOG.warn("The default value expression '{}' was evaluated and did not match a property. The literal value '{}' will be used.", defaultMessage, defaultMessage); } else { - LOG.warn("The default value expression '"+defaultMessage+"' evaluated to '"+msg+"'"); + LOG.warn("The default value expression '{}' evaluated to '{}'", defaultMessage, msg); } } } diff --git a/core/src/main/java/org/apache/struts2/util/TokenHelper.java b/core/src/main/java/org/apache/struts2/util/TokenHelper.java index c19a3baef..d6e042ef7 100644 --- a/core/src/main/java/org/apache/struts2/util/TokenHelper.java +++ b/core/src/main/java/org/apache/struts2/util/TokenHelper.java @@ -23,8 +23,8 @@ package org.apache.struts2.util; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.LocalizedTextUtil; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.math.BigInteger; import java.security.SecureRandom; @@ -91,11 +91,9 @@ public class TokenHelper { session.put(buildTokenSessionAttributeName(tokenName), token); } catch ( IllegalStateException e ) { // WW-1182 explain to user what the problem is - String msg = "Error creating HttpSession due response is commited to client. You can use the CreateSessionInterceptor or create the HttpSession from your action before the result is rendered to the client: " + e.getMessage(); - if (LOG.isErrorEnabled()) { - LOG.error(msg, e); - } - throw new IllegalArgumentException(msg); + String msg = "Error creating HttpSession due response is committed to client. You can use the CreateSessionInterceptor or create the HttpSession from your action before the result is rendered to the client: " + e.getMessage(); + LOG.error(msg, e); + throw new IllegalArgumentException(msg); } } @@ -135,15 +133,11 @@ public class TokenHelper { String token; if ((tokens == null) || (tokens.length < 1)) { - if (LOG.isWarnEnabled()) { - LOG.warn("Could not find token mapped to token name " + tokenName); - } - + LOG.warn("Could not find token mapped to token name: {}", tokenName); return null; } token = tokens[0]; - return token; } @@ -156,10 +150,7 @@ public class TokenHelper { Map params = ActionContext.getContext().getParameters(); if (!params.containsKey(TOKEN_NAME_FIELD)) { - if (LOG.isWarnEnabled()) { LOG.warn("Could not find token name in params."); - } - return null; } @@ -167,15 +158,11 @@ public class TokenHelper { String tokenName; if ((tokenNames == null) || (tokenNames.length < 1)) { - if (LOG.isWarnEnabled()) { LOG.warn("Got a null or empty token name."); - } - return null; } tokenName = tokenNames[0]; - return tokenName; } @@ -189,18 +176,14 @@ public class TokenHelper { String tokenName = getTokenName(); if (tokenName == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("no token name found -> Invalid token "); - } + LOG.debug("No token name found -> Invalid token "); return false; } String token = getToken(tokenName); if (token == null) { - if (LOG.isDebugEnabled()) { - LOG.debug("no token found for token name "+tokenName+" -> Invalid token "); - } + LOG.debug("No token found for token name {} -> Invalid token ", tokenName); return false; } diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java index c22191574..f32a5a650 100644 --- a/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java +++ b/core/src/main/java/org/apache/struts2/views/freemarker/FreemarkerManager.java @@ -27,24 +27,16 @@ import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; -import freemarker.cache.ClassTemplateLoader; -import freemarker.cache.FileTemplateLoader; -import freemarker.cache.MultiTemplateLoader; -import freemarker.cache.TemplateLoader; -import freemarker.cache.WebappTemplateLoader; +import freemarker.cache.*; import freemarker.ext.jsp.TaglibFactory; import freemarker.ext.servlet.HttpRequestHashModel; import freemarker.ext.servlet.HttpRequestParametersHashModel; import freemarker.ext.servlet.HttpSessionHashModel; import freemarker.ext.servlet.ServletContextHashModel; -import freemarker.template.Configuration; -import freemarker.template.ObjectWrapper; -import freemarker.template.TemplateException; -import freemarker.template.TemplateExceptionHandler; -import freemarker.template.TemplateModel; +import freemarker.template.*; import freemarker.template.utility.StringUtil; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import org.apache.struts2.views.JspSupportServlet; import org.apache.struts2.views.TagLibrary; @@ -60,13 +52,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Collections; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; -import java.util.Set; +import java.util.*; /** @@ -210,14 +196,14 @@ public class FreemarkerManager { @Inject public void setContainer(Container container) { - Map map = new HashMap(); + Map map = new HashMap<>(); Set prefixes = container.getInstanceNames(TagLibraryModelProvider.class); for (String prefix : prefixes) { map.put(prefix, container.getInstance(TagLibraryModelProvider.class, prefix)); } this.tagLibraries = Collections.unmodifiableMap(map); - Map oldMap = new HashMap(); + Map oldMap = new HashMap<>(); Set oldPrefixes = container.getInstanceNames(TagLibrary.class); for (String prefix : oldPrefixes) { oldMap.put(prefix, container.getInstance(TagLibrary.class, prefix)); @@ -268,9 +254,7 @@ public class FreemarkerManager { try { init(servletContext); } catch (TemplateException e) { - if (LOG.isErrorEnabled()) { - LOG.error("Cannot load freemarker configuration: ",e); - } + LOG.error("Cannot load freemarker configuration: ", e); } // store this configuration in the servlet context servletContext.setAttribute(CONFIG_SERVLET_CONTEXT_KEY, config); @@ -287,9 +271,7 @@ public class FreemarkerManager { // Process object_wrapper init-param out of order: wrapper = createObjectWrapper(servletContext); - if (LOG.isDebugEnabled()) { - LOG.debug("Using object wrapper of class " + wrapper.getClass().getName()); - } + LOG.debug("Using object wrapper of class {}", wrapper.getClass().getName()); config.setObjectWrapper(wrapper); // Process TemplatePath init-param out of order: @@ -480,21 +462,15 @@ public class FreemarkerManager { } } } catch (IOException e) { - if (LOG.isErrorEnabled()) { - LOG.error("Error while loading freemarker settings from /freemarker.properties", e); - } + LOG.error("Error while loading freemarker settings from /freemarker.properties", e); } catch (TemplateException e) { - if (LOG.isErrorEnabled()) { - LOG.error("Error while loading freemarker settings from /freemarker.properties", e); - } + LOG.error("Error while loading freemarker settings from /freemarker.properties", e); } finally { if (in != null) { try { in.close(); } catch(IOException io) { - if (LOG.isWarnEnabled()) { - LOG.warn("Unable to close input stream", io); - } + LOG.warn("Unable to close input stream", io); } } } diff --git a/core/src/main/java/org/apache/struts2/views/freemarker/ScopesHashModel.java b/core/src/main/java/org/apache/struts2/views/freemarker/ScopesHashModel.java index f74d213d3..47ea5ef3d 100644 --- a/core/src/main/java/org/apache/struts2/views/freemarker/ScopesHashModel.java +++ b/core/src/main/java/org/apache/struts2/views/freemarker/ScopesHashModel.java @@ -50,7 +50,7 @@ public class ScopesHashModel extends SimpleHash implements TemplateModel { private HttpServletRequest request; private ServletContext servletContext; private ValueStack stack; - private final Map unlistedModels = new HashMap(); + private final Map unlistedModels = new HashMap<>(); private volatile Object parametersCache; public ScopesHashModel(ObjectWrapper objectWrapper, ServletContext context, HttpServletRequest request, ValueStack stack) { diff --git a/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java b/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java index 81ac85ce6..e9d229a8e 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/iterator/IteratorGeneratorTag.java @@ -21,16 +21,15 @@ package org.apache.struts2.views.jsp.iterator; -import javax.servlet.jsp.JspException; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.util.IteratorGenerator; import org.apache.struts2.util.IteratorGenerator.Converter; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; import org.apache.struts2.views.jsp.StrutsBodyTagSupport; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import javax.servlet.jsp.JspException; /** @@ -206,9 +205,7 @@ public class IteratorGeneratorTag extends StrutsBodyTagSupport { count = Integer.parseInt((String)countObj); } catch(NumberFormatException e) { - if (LOG.isWarnEnabled()) { - LOG.warn("unable to convert count attribute ["+countObj+"] to number, ignore count attribute", e); - } + LOG.warn("Unable to convert count attribute [{}] to number, ignore count attribute", countObj, e); } } } diff --git a/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java b/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java index 0149f594e..aa702dac7 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/iterator/SubsetIteratorTag.java @@ -21,16 +21,15 @@ package org.apache.struts2.views.jsp.iterator; -import javax.servlet.jsp.JspException; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.util.SubsetIteratorFilter; import org.apache.struts2.util.SubsetIteratorFilter.Decider; import org.apache.struts2.views.annotations.StrutsTag; import org.apache.struts2.views.annotations.StrutsTagAttribute; import org.apache.struts2.views.jsp.StrutsBodyTagSupport; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import javax.servlet.jsp.JspException; /** @@ -223,9 +222,7 @@ public class SubsetIteratorTag extends StrutsBodyTagSupport { count = Integer.parseInt((String)countObj); } catch(NumberFormatException e) { - if (LOG.isWarnEnabled()) { - LOG.warn("unable to convert count attribute ["+countObj+"] to number, ignore count attribute", e); - } + LOG.warn("unable to convert count attribute [{}] to number, ignore count attribute", countObj, e); } } } @@ -251,9 +248,7 @@ public class SubsetIteratorTag extends StrutsBodyTagSupport { start = Integer.parseInt((String)startObj); } catch(NumberFormatException e) { - if (LOG.isWarnEnabled()) { - LOG.warn("unable to convert count attribute ["+startObj+"] to number, ignore count attribute", e); - } + LOG.warn("unable to convert count attribute [{}] to number, ignore count attribute", startObj, e); } } } diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java index 65b80cf21..4b65e110c 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITag.java @@ -82,7 +82,7 @@ public abstract class AbstractUITag extends ComponentTagSupport implements Dynam protected String tooltipIconPath; // dynamic attributes. - protected Map dynamicAttributes = new HashMap(); + protected Map dynamicAttributes = new HashMap<>(); protected void populateParams() { super.populateParams(); diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java index aa6379d0c..c521c99c5 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AbstractUITagBeanInfo.java @@ -21,8 +21,8 @@ package org.apache.struts2.views.jsp.ui; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.beans.PropertyDescriptor; import java.beans.SimpleBeanInfo; @@ -42,7 +42,7 @@ public class AbstractUITagBeanInfo extends SimpleBeanInfo { @Override public PropertyDescriptor[] getPropertyDescriptors() { try { - List descriptors = new ArrayList(); + List descriptors = new ArrayList<>(); // Add the tricky one first Method classSetter = AbstractUITag.class.getMethod("setCssClass", String.class); diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ui/AnchorTag.java b/core/src/main/java/org/apache/struts2/views/jsp/ui/AnchorTag.java index 9efedc4a2..3257cae67 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ui/AnchorTag.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ui/AnchorTag.java @@ -21,13 +21,13 @@ package org.apache.struts2.views.jsp.ui; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.commons.lang3.BooleanUtils; import org.apache.struts2.components.Anchor; import org.apache.struts2.components.Component; -import com.opensymphony.xwork2.util.ValueStack; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * @see Anchor @@ -72,16 +72,16 @@ public class AnchorTag extends AbstractClosingTag { tag.setAnchor(anchor); if (encode != null) { - tag.setEncode(Boolean.valueOf(encode).booleanValue()); + tag.setEncode(BooleanUtils.toBoolean(encode)); } if (includeContext != null) { - tag.setIncludeContext(Boolean.valueOf(includeContext).booleanValue()); + tag.setIncludeContext(BooleanUtils.toBoolean(includeContext)); } if (escapeAmp != null) { - tag.setEscapeAmp(Boolean.valueOf(escapeAmp).booleanValue()); + tag.setEscapeAmp(BooleanUtils.toBoolean(escapeAmp)); } if (forceAddSchemeHostAndPort != null) { - tag.setForceAddSchemeHostAndPort(Boolean.valueOf(forceAddSchemeHostAndPort).booleanValue()); + tag.setForceAddSchemeHostAndPort(BooleanUtils.toBoolean(forceAddSchemeHostAndPort)); } } diff --git a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java index ab9c4dc25..9459b7d2d 100644 --- a/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java +++ b/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java @@ -22,10 +22,10 @@ package org.apache.struts2.views.util; import com.opensymphony.xwork2.inject.Inject; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import javax.servlet.http.HttpServletRequest; @@ -33,12 +33,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Default implementation of UrlHelper @@ -187,9 +182,7 @@ public class DefaultUrlHelper implements UrlHelper { try { result = encodeResult ? response.encodeURL(result) : result; } catch (Exception ex) { - if (LOG.isDebugEnabled()) { - LOG.debug("Could not encode the URL for some reason, use it unchanged", ex); - } + LOG.debug("Could not encode the URL for some reason, use it unchanged", ex); result = link.toString(); } diff --git a/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java b/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java index 51aff4a34..f60a10fdb 100644 --- a/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java +++ b/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java @@ -25,9 +25,9 @@ import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; 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.StrutsConstants; import org.apache.struts2.StrutsException; @@ -51,14 +51,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; -import java.util.StringTokenizer; +import java.util.*; /** @@ -110,14 +103,14 @@ public class VelocityManager { @Inject public void setContainer(Container container) { - List list = new ArrayList(); + List list = new ArrayList<>(); Set prefixes = container.getInstanceNames(TagLibraryDirectiveProvider.class); for (String prefix : prefixes) { list.add(container.getInstance(TagLibraryDirectiveProvider.class, prefix)); } this.tagLibraries = Collections.unmodifiableList(list); - List oldList = new ArrayList(); + List oldList = new ArrayList<>(); Set oldPrefixes = container.getInstanceNames(TagLibrary.class); for (String prefix : oldPrefixes) { oldList.add(container.getInstance(TagLibrary.class, prefix)); @@ -165,9 +158,7 @@ public class VelocityManager { ctx = ServletActionContext.getServletContext(); } catch (NullPointerException npe) { // in case this was used outside the lifecycle of struts servlet - if (LOG.isDebugEnabled()) { - LOG.debug("internal toolbox context ignored"); - } + LOG.debug("internal toolbox context ignored"); } if (toolboxManager != null && ctx != null) { @@ -203,9 +194,7 @@ public class VelocityManager { VelocityContext velocityContext = (VelocityContext) objectFactory.buildBean(className, null); contextList.add(velocityContext); } catch (Exception e) { - if (LOG.isWarnEnabled()) { - LOG.warn("Warning. " + e.getClass().getName() + " caught while attempting to instantiate a chained VelocityContext, " + className + " -- skipping"); - } + LOG.warn("Warning. {} caught while attempting to instantiate a chained VelocityContext, {} -- skipping", e.getClass().getName(), className); } } if (contextList.size() > 0) { @@ -312,15 +301,11 @@ public class VelocityManager { // if we've got something, load 'er up if (in != null) { - if (LOG.isInfoEnabled()) { - LOG.info("Initializing velocity using " + resourceLocation); - } + LOG.info("Initializing velocity using {}", resourceLocation); properties.load(in); } } catch (IOException e) { - if (LOG.isWarnEnabled()) { - LOG.warn("Unable to load velocity configuration " + resourceLocation, e); - } + LOG.warn("Unable to load velocity configuration {}", resourceLocation, e); } finally { if (in != null) { try { @@ -354,14 +339,10 @@ public class VelocityManager { if (LOG.isDebugEnabled()) { LOG.debug("Initializing Velocity with the following properties ..."); - for (Iterator iter = properties.keySet().iterator(); - iter.hasNext();) { + for (Iterator iter = properties.keySet().iterator(); iter.hasNext(); ) { String key = (String) iter.next(); String value = properties.getProperty(key); - - if (LOG.isDebugEnabled()) { - LOG.debug(" '" + key + "' = '" + value + "'"); - } + LOG.debug(" '{}' = '{}'", key, value); } } @@ -392,7 +373,7 @@ public class VelocityManager { public void setChainedContexts(String contexts) { // we expect contexts to be a comma separated list of classnames StringTokenizer st = new StringTokenizer(contexts, ","); - List contextList = new ArrayList(); + List contextList = new ArrayList<>(); while (st.hasMoreTokens()) { String classname = st.nextToken(); diff --git a/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java b/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java index 5d1e567a4..d110d2d64 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/AbstractAdapterNode.java @@ -21,21 +21,15 @@ package org.apache.struts2.views.xslt; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.struts2.StrutsException; +import org.w3c.dom.*; + import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import org.apache.struts2.StrutsException; -import org.w3c.dom.DOMException; -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.UserDataHandler; - -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - /** * AbstractAdapterNode is the base for childAdapters that expose a read-only view * of a Java object as a DOM Node. This class implements the core parent-child @@ -134,8 +128,8 @@ public abstract class AbstractAdapterNode implements AdapterNode { log.debug("getChildBeforeOrAfter: "); List adapters = getChildAdapters(); if (log.isDebugEnabled()) { - log.debug("childAdapters = " + adapters); - log.debug("child = " + child); + log.debug("childAdapters = {}", adapters); + log.debug("child = {}", child); } int index = adapters.indexOf(child); if (index < 0) @@ -146,12 +140,12 @@ public abstract class AbstractAdapterNode implements AdapterNode { } public Node getChildAfter(Node child) { - log.trace("getChildafter"); + log.trace("getChildAfter"); return getChildBeforeOrAfter(child, false/*after*/); } public Node getChildBefore(Node child) { - log.trace("getchildbefore"); + log.trace("getChildBefore"); return getChildBeforeOrAfter(child, true/*after*/); } @@ -159,7 +153,7 @@ public abstract class AbstractAdapterNode implements AdapterNode { if (tagName.equals("*")) { return getChildNodes(); } else { - LinkedList filteredChildren = new LinkedList(); + LinkedList filteredChildren = new LinkedList<>(); for (Node adapterNode : getChildAdapters()) { if (adapterNode.getNodeName().equals(tagName)) { @@ -184,9 +178,7 @@ public abstract class AbstractAdapterNode implements AdapterNode { public NodeList getChildNodes() { NodeList nl = new SimpleNodeList(getChildAdapters()); - if (log.isDebugEnabled()) - log.debug("getChildNodes for tag: " - + getNodeName() + " num children: " + nl.getLength()); + log.debug("getChildNodes for tag: {} num children: {}", getNodeName(), nl.getLength()); return nl; } diff --git a/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java b/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java index 538375076..69a8ad33b 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/AdapterFactory.java @@ -22,12 +22,7 @@ package org.apache.struts2.views.xslt; import org.apache.struts2.StrutsException; -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.Text; +import org.w3c.dom.*; import java.util.Collection; import java.util.HashMap; @@ -91,7 +86,7 @@ import java.util.Map; */ public class AdapterFactory { - private Map adapterTypes = new HashMap(); + private Map adapterTypes = new HashMap<>(); /** * Register an adapter type for a Java class type. @@ -115,9 +110,6 @@ public class AdapterFactory { */ public Document adaptDocument(String propertyName, Object propertyValue) throws IllegalAccessException, InstantiationException { - //if ( propertyValue instanceof Document ) - // return (Document)propertyValue; - return new SimpleAdapterDocument(this, null, propertyName, propertyValue); } @@ -131,30 +123,34 @@ public class AdapterFactory { */ public Node adaptNode(AdapterNode parent, String propertyName, Object value) { Class adapterClass = getAdapterForValue(value); - if (adapterClass != null) + if (adapterClass != null) { return constructAdapterInstance(adapterClass, parent, propertyName, value); + } // If the property is a Document, "unwrap" it to the root element - if (value instanceof Document) + if (value instanceof Document) { value = ((Document) value).getDocumentElement(); + } // If the property is already a Node, proxy it - if (value instanceof Node) + if (value instanceof Node) { return proxyNode(parent, (Node) value); + } // Check other supported types or default to generic JavaBean introspecting adapter Class valueType = value.getClass(); - if (valueType.isArray()) + if (valueType.isArray()) { adapterClass = ArrayAdapter.class; - else if (value instanceof String || value instanceof Number || value instanceof Boolean || valueType.isPrimitive()) + } else if (value instanceof String || value instanceof Number || value instanceof Boolean || valueType.isPrimitive()) { adapterClass = StringAdapter.class; - else if (value instanceof Collection) + } else if (value instanceof Collection) { adapterClass = CollectionAdapter.class; - else if (value instanceof Map) + } else if (value instanceof Map) { adapterClass = MapAdapter.class; - else + } else { adapterClass = BeanAdapter.class; + } return constructAdapterInstance(adapterClass, parent, propertyName, value); } @@ -173,17 +169,22 @@ public class AdapterFactory { */ public Node proxyNode(AdapterNode parent, Node node) { // If the property is a Document, "unwrap" it to the root element - if (node instanceof Document) + if (node instanceof Document) { node = ((Document) node).getDocumentElement(); + } - if (node == null) + if (node == null) { return null; - if (node.getNodeType() == Node.ELEMENT_NODE) + } + if (node.getNodeType() == Node.ELEMENT_NODE) { return new ProxyElementAdapter(this, parent, (Element) node); - if (node.getNodeType() == Node.TEXT_NODE) + } + if (node.getNodeType() == Node.TEXT_NODE) { return new ProxyTextNodeAdapter(this, parent, (Text) node); - if (node.getNodeType() == Node.ATTRIBUTE_NODE) + } + if (node.getNodeType() == Node.ATTRIBUTE_NODE) { return new ProxyAttrAdapter(this, parent, (Attr) node); + } return null; // Unsupported Node type - ignore for now } @@ -201,8 +202,7 @@ public class AdapterFactory { try { adapterClass.getConstructor(new Class []{}); } catch (NoSuchMethodException e1) { - throw new StrutsException("Adapter class: " + adapterClass - + " does not have a no-args consructor."); + throw new StrutsException("Adapter class: " + adapterClass + " does not have a no-args constructor."); } try { @@ -214,9 +214,7 @@ public class AdapterFactory { return adapterNode; - } catch (IllegalAccessException e) { - throw new StrutsException("Cannot adapt " + propertyValue + " (" + propertyName + ") :" + e.getMessage(), e); - } catch (InstantiationException e) { + } catch (IllegalAccessException | InstantiationException e) { throw new StrutsException("Cannot adapt " + propertyValue + " (" + propertyName + ") :" + e.getMessage(), e); } } diff --git a/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java index 75ad827f8..d55062436 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/ArrayAdapter.java @@ -21,13 +21,12 @@ package org.apache.struts2.views.xslt; -import java.util.ArrayList; -import java.util.List; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.w3c.dom.Node; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import java.util.ArrayList; +import java.util.List; /** @@ -44,7 +43,7 @@ public class ArrayAdapter extends AbstractAdapterElement { } protected List buildChildAdapters() { - List children = new ArrayList(); + List children = new ArrayList<>(); Object[] values = (Object[]) getPropertyValue(); for (Object value : values) { @@ -52,9 +51,7 @@ public class ArrayAdapter extends AbstractAdapterElement { if (childAdapter != null) children.add(childAdapter); - if (log.isDebugEnabled()) { - log.debug(this + " adding adapter: " + childAdapter); - } + log.debug("{} adding adapter: {}", this, childAdapter); } return children; diff --git a/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java index d552bdb3c..e9b841302 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/BeanAdapter.java @@ -21,8 +21,8 @@ package org.apache.struts2.views.xslt; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsException; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -54,7 +54,7 @@ import java.util.Map; * would be rendered as: ... ... */ public class BeanAdapter extends AbstractAdapterElement { - //~ Static fields/initializers ///////////////////////////////////////////// + //Static fields/initializer private static final Object[] NULLPARAMS = new Object[0]; @@ -63,11 +63,11 @@ public class BeanAdapter extends AbstractAdapterElement { */ private static Map propertyDescriptorCache; - //~ Instance fields //////////////////////////////////////////////////////// + //Instance fields private Logger log = LogManager.getLogger(this.getClass()); - //~ Constructors /////////////////////////////////////////////////////////// + //Constructors public BeanAdapter() { } @@ -77,7 +77,7 @@ public class BeanAdapter extends AbstractAdapterElement { setContext(adapterFactory, parent, propertyName, value); } - //~ Methods //////////////////////////////////////////////////////////////// + //Methods public String getTagName() { return getPropertyName(); @@ -87,15 +87,15 @@ public class BeanAdapter extends AbstractAdapterElement { NodeList nl = super.getChildNodes(); // Log child nodes for debug: if (log.isDebugEnabled() && nl != null) { - log.debug("BeanAdapter getChildNodes for: " + getTagName()); + log.debug("BeanAdapter getChildNodes for: {}", getTagName()); log.debug(nl.toString()); } return nl; } protected List buildChildAdapters() { - log.debug("BeanAdapter building children. PropName = " + getPropertyName()); - List newAdapters = new ArrayList(); + log.debug("BeanAdapter building children. Property name: {}", getPropertyName()); + List newAdapters = new ArrayList<>(); Class type = getPropertyValue().getClass(); PropertyDescriptor[] props = getPropertyDescriptors(getPropertyValue()); @@ -107,7 +107,7 @@ public class BeanAdapter extends AbstractAdapterElement { //FIXME: write only property or indexed access continue; } - log.debug("Bean reading property method: " + m.getName()); + log.debug("Bean reading property method: {}", m.getName()); String propertyName = prop.getName(); Object propertyValue; @@ -120,11 +120,10 @@ public class BeanAdapter extends AbstractAdapterElement { try { propertyValue = m.invoke(getPropertyValue(), NULLPARAMS); } catch (Exception e) { - if (e instanceof InvocationTargetException) + if (e instanceof InvocationTargetException) { e = (Exception) ((InvocationTargetException) e).getTargetException(); - if (log.isErrorEnabled()) { - log.error("Cannot access bean property: {}", propertyName, e); } + log.error("Cannot access bean property: {}", propertyName, e); continue; } @@ -161,14 +160,13 @@ public class BeanAdapter extends AbstractAdapterElement { PropertyDescriptor[] props = propertyDescriptorCache.get(bean.getClass()); if (props == null) { - log.debug("Caching property descriptor for " + bean.getClass().getName()); + log.debug("Caching property descriptor for {}", bean.getClass().getName()); props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors(); propertyDescriptorCache.put(bean.getClass(), props); } return props; } catch (IntrospectionException e) { - e.printStackTrace(); throw new StrutsException("Error getting property descriptors for " + bean + " : " + e.getMessage()); } } diff --git a/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java index a720ccba5..930189789 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/CollectionAdapter.java @@ -21,15 +21,14 @@ package org.apache.struts2.views.xslt; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.w3c.dom.Node; + import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.w3c.dom.Node; - -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - /** */ @@ -45,7 +44,7 @@ public class CollectionAdapter extends AbstractAdapterElement { protected List buildChildAdapters() { Collection values = (Collection) getPropertyValue(); - List children = new ArrayList(values.size()); + List children = new ArrayList<>(values.size()); for (Object value : values) { Node childAdapter; @@ -57,9 +56,7 @@ public class CollectionAdapter extends AbstractAdapterElement { if (childAdapter != null) children.add(childAdapter); - if (log.isDebugEnabled()) { - log.debug(this + " adding adapter: " + childAdapter); - } + log.debug("{} adding adapter: {}", this, childAdapter); } return children; diff --git a/core/src/main/java/org/apache/struts2/views/xslt/MapAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/MapAdapter.java index 646e8afbe..8566637e6 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/MapAdapter.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/MapAdapter.java @@ -21,12 +21,12 @@ package org.apache.struts2.views.xslt; +import org.w3c.dom.Node; + import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.w3c.dom.Node; - /** * MapAdapter adapters a java.util.Map type to an XML DOM with the following * structure: @@ -53,14 +53,13 @@ public class MapAdapter extends AbstractAdapterElement { } protected List buildChildAdapters() { - List children = new ArrayList(map().entrySet().size()); + List children = new ArrayList<>(map().entrySet().size()); for (Object o : map().entrySet()) { Map.Entry entry = (Map.Entry) o; Object key = entry.getKey(); Object value = entry.getValue(); - EntryElement child = new EntryElement( - getAdapterFactory(), this, "entry", key, value); + EntryElement child = new EntryElement(getAdapterFactory(), this, "entry", key, value); children.add(child); } @@ -78,7 +77,7 @@ public class MapAdapter extends AbstractAdapterElement { } protected List buildChildAdapters() { - List children = new ArrayList(); + List children = new ArrayList<>(); children.add( getAdapterFactory().adaptNode( this, "key", key ) ); children.add( getAdapterFactory().adaptNode( this, "value", value ) ); return children; diff --git a/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java index 5c3389a2b..31dca8bab 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/ProxyElementAdapter.java @@ -21,19 +21,13 @@ package org.apache.struts2.views.xslt; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.w3c.dom.*; + import java.util.ArrayList; import java.util.List; -import org.w3c.dom.Attr; -import org.w3c.dom.DOMException; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.TypeInfo; - -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - /** * ProxyElementAdapter is a pass-through adapter for objects which already * implement the Element interface. All methods are proxied to the underlying @@ -59,13 +53,13 @@ public class ProxyElementAdapter extends ProxyNodeAdapter implements Element { } protected List buildChildAdapters() { - List adapters = new ArrayList(); + List adapters = new ArrayList<>(); NodeList children = node().getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node child = children.item(i); Node adapter = wrap(child); if (adapter != null) { - log.debug("wrapped child node: " + child.getNodeName()); + log.debug("Wrapped child node: {}", child.getNodeName()); adapters.add(adapter); } } @@ -91,7 +85,7 @@ public class ProxyElementAdapter extends ProxyNodeAdapter implements Element { } public Attr getAttributeNode(String name) { - log.debug("wrapping attribute"); + log.debug("Wrapping attribute: {}", name); return (Attr) wrap(element().getAttributeNode(name)); } diff --git a/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java index 26b23ee64..f7ce1bbca 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/ProxyNodeAdapter.java @@ -21,13 +21,12 @@ package org.apache.struts2.views.xslt; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.w3c.dom.DOMException; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - /** * ProxyNodeAdapter is a read-only delegating adapter for objects which already * implement the Node interface. All methods are proxied to the underlying @@ -40,10 +39,10 @@ public abstract class ProxyNodeAdapter extends AbstractAdapterNode { public ProxyNodeAdapter(AdapterFactory factory, AdapterNode parent, Node value) { setContext(factory, parent, "document"/*propname unused*/, value); - log.debug("proxied node is: " + value); - log.debug("node class is: " + value.getClass()); - log.debug("node type is: " + value.getNodeType()); - log.debug("node name is: " + value.getNodeName()); + log.debug("Proxied node is: {}" + value); + log.debug("Node class is: {}", value.getClass()); + log.debug("Node type is: {}", value.getNodeType()); + log.debug("Node name is: {}", value.getNodeName()); } /** @@ -84,15 +83,17 @@ public abstract class ProxyNodeAdapter extends AbstractAdapterNode { } public short getNodeType() { - if (log.isTraceEnabled()) + if (log.isTraceEnabled()) { log.trace("getNodeType: " + getNodeName() + ": " + node().getNodeType()); + } return node().getNodeType(); } public NamedNodeMap getAttributes() { NamedNodeMap nnm = wrap(node().getAttributes()); - if (log.isTraceEnabled()) + if (log.isTraceEnabled()) { log.trace("getAttributes: " + nnm); + } return nnm; } diff --git a/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java b/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java index 0496c4db7..1aa1d4554 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/ServletURIResolver.java @@ -21,16 +21,15 @@ package org.apache.struts2.views.xslt; -import java.io.InputStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.servlet.ServletContext; import javax.xml.transform.Source; import javax.xml.transform.TransformerException; import javax.xml.transform.URIResolver; import javax.xml.transform.stream.StreamSource; - -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import java.io.InputStream; /** @@ -48,15 +47,15 @@ public class ServletURIResolver implements URIResolver { private ServletContext sc; public ServletURIResolver(ServletContext sc) { - log.trace("ServletURIResolver: " + sc); + log.trace("ServletURIResolver: {}", sc); this.sc = sc; } public Source resolve(String href, String base) throws TransformerException { - log.debug("ServletURIResolver resolve(): href=" + href + ", base=" + base); + log.debug("ServletURIResolver resolve(): href={}, base={}", href, base); if (href.startsWith(PROTOCOL)) { String res = href.substring(PROTOCOL.length()); - log.debug("Resolving resource <" + res + ">"); + log.debug("Resolving resource <{}>", res); InputStream is = sc.getResourceAsStream(res); @@ -69,6 +68,6 @@ public class ServletURIResolver implements URIResolver { } throw new TransformerException( - "Cannot handle procotol of resource " + href); + "Cannot handle protocol of resource " + href); } } diff --git a/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java b/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java index a1c209258..d70207e3a 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/SimpleNodeList.java @@ -21,13 +21,12 @@ package org.apache.struts2.views.xslt; -import java.util.List; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import java.util.List; public class SimpleNodeList implements NodeList { private Logger log = LogManager.getLogger(SimpleNodeList.class); @@ -39,13 +38,14 @@ public class SimpleNodeList implements NodeList { } public int getLength() { - if (log.isTraceEnabled()) - log.trace("getLength: " + nodes.size()); + if (log.isTraceEnabled()) { + log.trace("getLength: {}", nodes.size()); + } return nodes.size(); } public Node item(int i) { - log.trace("getItem: " + i); + log.trace("getItem: {}", i); return nodes.get(i); } diff --git a/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java b/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java index d4509d1ec..59f77d02b 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/StringAdapter.java @@ -21,16 +21,15 @@ package org.apache.struts2.views.xslt; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.List; - +import com.opensymphony.xwork2.util.DomHelper; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.w3c.dom.Node; import org.xml.sax.InputSource; -import com.opensymphony.xwork2.util.DomHelper; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.List; /** * StringAdapter adapts a Java String value to a DOM Element with the specified @@ -73,17 +72,17 @@ public class StringAdapter extends AbstractAdapterElement { protected List buildChildAdapters() { Node node; if (getParseStringAsXML()) { - log.debug("parsing string as xml: " + getStringValue()); + log.debug("parsing string as xml: {}", getStringValue()); // Parse the String to a DOM, then proxy that as our child node = DomHelper.parse(new InputSource(new StringReader(getStringValue()))); node = getAdapterFactory().proxyNode(this, node); } else { - log.debug("using string as is: " + getStringValue()); + log.debug("using string as is: {}", getStringValue()); // Create a Text node as our child node = new SimpleTextNode(getAdapterFactory(), this, "text", getStringValue()); } - List children = new ArrayList(); + List children = new ArrayList<>(); children.add(node); return children; } diff --git a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java index d3f474b26..faa222d3a 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java @@ -27,21 +27,15 @@ import com.opensymphony.xwork2.Result; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.TextParseUtil; import com.opensymphony.xwork2.util.ValueStack; -import org.apache.logging.log4j.Logger; +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.StrutsConstants; import org.apache.struts2.StrutsException; import javax.servlet.http.HttpServletResponse; -import javax.xml.transform.ErrorListener; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Source; -import javax.xml.transform.Templates; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.URIResolver; +import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; @@ -215,11 +209,13 @@ public class XSLTResult implements Result { /** 'stylesheetLocation' parameter. Points to the xsl. */ public static final String DEFAULT_PARAM = "stylesheetLocation"; - /** Cache of all tempaltes. */ + /** + * Cache of all templates. + */ private static final Map templatesCache; static { - templatesCache = new HashMap(); + templatesCache = new HashMap<>(); } // Configurable Parameters @@ -256,8 +252,8 @@ public class XSLTResult implements Result { } @Inject(StrutsConstants.STRUTS_XSLT_NOCACHE) - public void setNoCache(String val) { - noCache = "true".equals(val); + public void setNoCache(String xsltNoCache) { + this.noCache = BooleanUtils.toBoolean(xsltNoCache); } /** @@ -410,16 +406,12 @@ public class XSLTResult implements Result { Source xmlSource = getDOMSourceForStack(result); // Transform the source XML to System.out. - if (LOG.isDebugEnabled()) { - LOG.debug("xmlSource = " + xmlSource); - } + LOG.debug("xmlSource = {}", xmlSource); transformer.transform(xmlSource, new StreamResult(writer)); writer.flush(); // ...and flush... - if (LOG.isDebugEnabled()) { - LOG.debug("Time:" + (System.currentTimeMillis() - startTime) + "ms"); - } + LOG.debug("Time: {}ms", (System.currentTimeMillis() - startTime)); } catch (Exception e) { LOG.error("Unable to render XSLT Template, '{}'", location, e); @@ -465,9 +457,7 @@ public class XSLTResult implements Result { throw new TransformerException("Stylesheet " + path + " not found in resources."); } - if (LOG.isDebugEnabled()) { - LOG.debug("Preparing XSLT stylesheet templates: " + path); - } + LOG.debug("Preparing XSLT stylesheet templates: {}", path); TransformerFactory factory = TransformerFactory.newInstance(); factory.setURIResolver(getURIResolver()); diff --git a/core/src/site/resources/tags/a.html b/core/src/site/resources/tags/a.html index dbaf26dfa..827d56d29 100644 --- a/core/src/site/resources/tags/a.html +++ b/core/src/site/resources/tags/a.html @@ -12,7 +12,7 @@ Please do not edit it directly.

Description

- Render a HTML href element that when clicked can optionally call a URL via remote XMLHttpRequest and updates its targets + Render a HTML href element

diff --git a/core/src/site/resources/tags/actionmessage.html b/core/src/site/resources/tags/actionmessage.html index d683c5301..55fc07822 100644 --- a/core/src/site/resources/tags/actionmessage.html +++ b/core/src/site/resources/tags/actionmessage.html @@ -103,7 +103,7 @@ Please do not edit it directly. true false Boolean - Whether to escape HTML + Whether to escape HTML id diff --git a/core/src/site/resources/tags/checkboxlist.html b/core/src/site/resources/tags/checkboxlist.html index 27e90b2a9..41f3922cf 100644 --- a/core/src/site/resources/tags/checkboxlist.html +++ b/core/src/site/resources/tags/checkboxlist.html @@ -175,7 +175,7 @@ Please do not edit it directly. false String - Property of list objects to get field value from + Property of list objects to get field value from listLabelKey @@ -207,7 +207,7 @@ Please do not edit it directly. false String - Property of list objects to get field value label from + Property of list objects to get field value label from name diff --git a/core/src/site/resources/tags/combobox.html b/core/src/site/resources/tags/combobox.html index 393e8c2b2..39ae8d499 100644 --- a/core/src/site/resources/tags/combobox.html +++ b/core/src/site/resources/tags/combobox.html @@ -175,7 +175,7 @@ Please do not edit it directly. false String - Iteratable source to populate from. If this is missing, the select widget is simply not displayed. + Iterable source to populate from. If this is missing, the select widget is simply not displayed. listKey @@ -183,7 +183,7 @@ Please do not edit it directly. false String - Set the key used to retrive the option key. + Set the key used to retrieve the option key. listValue @@ -191,7 +191,7 @@ Please do not edit it directly. false String - Set the value used to retrive the option value. + Set the value used to retrieve the option value. maxLength diff --git a/core/src/site/resources/tags/doubleselect.html b/core/src/site/resources/tags/doubleselect.html index b472837aa..9e19fbeae 100644 --- a/core/src/site/resources/tags/doubleselect.html +++ b/core/src/site/resources/tags/doubleselect.html @@ -463,7 +463,7 @@ Please do not edit it directly. false String - Property of list objects to get field value from + Property of list objects to get field value from listLabelKey @@ -495,7 +495,7 @@ Please do not edit it directly. false String - Property of list objects to get field value label from + Property of list objects to get field value label from multiple diff --git a/core/src/site/resources/tags/inputtransferselect.html b/core/src/site/resources/tags/inputtransferselect.html index c8cf852ba..550ae3ee9 100644 --- a/core/src/site/resources/tags/inputtransferselect.html +++ b/core/src/site/resources/tags/inputtransferselect.html @@ -247,7 +247,7 @@ Please do not edit it directly. false String - Property of list objects to get field value from + Property of list objects to get field value from listLabelKey @@ -279,7 +279,7 @@ Please do not edit it directly. false String - Property of list objects to get field value label from + Property of list objects to get field value label from multiple diff --git a/core/src/site/resources/tags/optiontransferselect.html b/core/src/site/resources/tags/optiontransferselect.html index 762b110e1..0dd58b0bc 100644 --- a/core/src/site/resources/tags/optiontransferselect.html +++ b/core/src/site/resources/tags/optiontransferselect.html @@ -623,7 +623,7 @@ Please do not edit it directly. false String - Property of list objects to get field value from + Property of list objects to get field value from listLabelKey @@ -655,7 +655,7 @@ Please do not edit it directly. false String - Property of list objects to get field value label from + Property of list objects to get field value label from multiple diff --git a/core/src/site/resources/tags/radio.html b/core/src/site/resources/tags/radio.html index 5fba64cb8..df37c325a 100644 --- a/core/src/site/resources/tags/radio.html +++ b/core/src/site/resources/tags/radio.html @@ -175,7 +175,7 @@ Please do not edit it directly. false String - Property of list objects to get field value from + Property of list objects to get field value from listLabelKey @@ -207,7 +207,7 @@ Please do not edit it directly. false String - Property of list objects to get field value label from + Property of list objects to get field value label from name diff --git a/core/src/site/resources/tags/select.html b/core/src/site/resources/tags/select.html index 444e23e2d..b3ab30ed9 100644 --- a/core/src/site/resources/tags/select.html +++ b/core/src/site/resources/tags/select.html @@ -199,7 +199,7 @@ Please do not edit it directly. false String - Property of list objects to get field value from + Property of list objects to get field value from listLabelKey @@ -231,7 +231,7 @@ Please do not edit it directly. false String - Property of list objects to get field value label from + Property of list objects to get field value label from multiple diff --git a/core/src/site/resources/tags/text.html b/core/src/site/resources/tags/text.html index 79099125b..cee74ced6 100644 --- a/core/src/site/resources/tags/text.html +++ b/core/src/site/resources/tags/text.html @@ -47,7 +47,7 @@ Please do not edit it directly. false String - Name of resource property to fetch + Name of resource property to fetch searchValueStack diff --git a/core/src/site/resources/tags/updownselect.html b/core/src/site/resources/tags/updownselect.html index 1e08e6a8d..79947d808 100644 --- a/core/src/site/resources/tags/updownselect.html +++ b/core/src/site/resources/tags/updownselect.html @@ -223,7 +223,7 @@ Please do not edit it directly. false String - Property of list objects to get field value from + Property of list objects to get field value from listLabelKey @@ -255,7 +255,7 @@ Please do not edit it directly. false String - Property of list objects to get field value label from + Property of list objects to get field value label from moveDownLabel