You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jo...@apache.org on 2015/06/08 20:17:52 UTC

struts git commit: Minor code improvement's in the struts json plugin

Repository: struts
Updated Branches:
  refs/heads/master decf48eb7 -> 5d86c0e5c


Minor code improvement's in the struts json plugin

- Use Java 7 features like diamond operator
- Improve some logging message
- Use BooleanUtils.toBoolean(string) instead of "true".isEquals to be more robust


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/5d86c0e5
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/5d86c0e5
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/5d86c0e5

Branch: refs/heads/master
Commit: 5d86c0e5c982272fc1650623fb49feec15fc836a
Parents: decf48e
Author: Johannes Geppert <po...@jgeppert.com>
Authored: Mon Jun 8 20:17:45 2015 +0200
Committer: Johannes Geppert <po...@jgeppert.com>
Committed: Mon Jun 8 20:17:45 2015 +0200

----------------------------------------------------------------------
 .../org/apache/struts2/json/JSONCleaner.java    | 29 +++------
 .../apache/struts2/json/JSONInterceptor.java    | 64 +++++++++----------
 .../org/apache/struts2/json/JSONPopulator.java  | 65 +++++++-------------
 .../org/apache/struts2/json/JSONResult.java     | 10 +--
 .../java/org/apache/struts2/json/JSONUtil.java  | 31 +++++-----
 .../org/apache/struts2/json/JSONWriter.java     | 16 ++---
 .../struts2/json/bridge/StringBridge.java       |  4 +-
 .../java/org/apache/struts2/json/smd/SMD.java   |  4 +-
 8 files changed, 92 insertions(+), 131 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/5d86c0e5/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
index 8a8d0a7..3328101 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
@@ -20,20 +20,13 @@
  */
 package org.apache.struts2.json;
 
-import java.util.Iterator;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.HashMap;
-
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.WildcardUtil;
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.*;
+import java.util.regex.Pattern;
 
 /**
  * <p>Isolate the process of cleaning JSON data from the Interceptor class
@@ -95,9 +88,7 @@ public abstract class JSONCleaner {
             if (allow(key)) {
                 e.setValue(clean(key, e.getValue()));
             } else {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("blocked: " + key);
-                }
+                LOG.debug("Blocked: {}", key);
                 iter.remove();
             }
         }
@@ -132,9 +123,9 @@ public abstract class JSONCleaner {
         }
 
         if (includesExcludesMap == null) {
-            includesExcludesMap = new TreeMap<String, Filter>();
+            includesExcludesMap = new TreeMap<>();
 
-            Map<String, Boolean> existingExpr = new HashMap<String, Boolean>();
+            Map<String, Boolean> existingExpr = new HashMap<>();
 
             Map<String, Map<String, String>> includePatternData = JSONUtil.getIncludePatternData();
             String splitPattern = includePatternData.get(JSONUtil.SPLIT_PATTERN).get(JSONUtil.WILDCARD_PATTERN);
@@ -165,9 +156,7 @@ public abstract class JSONCleaner {
                             if (s.length() > 0) {
                                 includesExcludesMap.put(s, new Filter(s, true));
 
-                                if (LOG.isDebugEnabled()) {
-                                    LOG.debug("Adding include wildcard expression: " + s);
-                                }
+                                LOG.debug("Adding include wildcard expression: {}", s);
                             }
                         }
                     }
@@ -221,7 +210,7 @@ public abstract class JSONCleaner {
     }
 
     /**
-     * @param blocked The blocked paramters as comma separated String.
+     * @param blocked The blocked parameters as comma separated String.
      */
     public void setBlocked(String blocked) {
         setBlockedCollection(asCollection(blocked));

http://git-wip-us.apache.org/repos/asf/struts/blob/5d86c0e5/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
index 227d66a..895245a 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
@@ -20,20 +20,15 @@
  */
 package org.apache.struts2.json;
 
-import java.beans.IntrospectionException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.WildcardUtil;
+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.dispatcher.FilterDispatcher;
@@ -42,21 +37,23 @@ import org.apache.struts2.json.rpc.RPCError;
 import org.apache.struts2.json.rpc.RPCErrorCode;
 import org.apache.struts2.json.rpc.RPCResponse;
 
-import com.opensymphony.xwork2.Action;
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.WildcardUtil;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.beans.IntrospectionException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.*;
+import java.util.regex.Pattern;
 
 /**
  * Populates an action from a JSON string
  */
 public class JSONInterceptor extends AbstractInterceptor {
+
     private static final long serialVersionUID = 4950170304212158803L;
     private static final Logger LOG = LogManager.getLogger(JSONInterceptor.class);
+
     private boolean enableSMD = false;
     private boolean enableGZIP = false;
     private boolean wrapWithComments;
@@ -145,8 +142,9 @@ public class JSONInterceptor extends AbstractInterceptor {
                 if (obj instanceof Map) {
                     Map smd = (Map) obj;
 
-                    if (rootObject == null) // model makes no sense when using RPC
+                    if (rootObject == null) { // model makes no sense when using RPC
                         rootObject = invocation.getAction();
+                    }
 
                     // invoke method
                     try {
@@ -183,10 +181,7 @@ public class JSONInterceptor extends AbstractInterceptor {
 
             return Action.NONE;
         } else {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Content type must be 'application/json' or 'application/json-rpc'. " +
-                          "Ignoring request with content type " + contentType);
-            }
+            LOG.debug("Content type must be 'application/json' or 'application/json-rpc'. Ignoring request with content type ", contentType);
         }
 
         return invocation.invoke();
@@ -256,8 +251,9 @@ public class JSONInterceptor extends AbstractInterceptor {
                 Type genericType = genericTypes[i];
 
                 // clean up the values
-                if (dataCleaner != null)
+                if (dataCleaner != null) {
                     parameter = dataCleaner.clean("[" + i + "]", parameter);
+                }
 
                 Object converted = populator.convert(paramType, genericType, parameter, method);
                 invocationParameters.add(converted);
@@ -387,7 +383,7 @@ public class JSONInterceptor extends AbstractInterceptor {
      */
     public boolean getDebug() {
         Boolean devModeOverride = FilterDispatcher.getDevModeOverride();
-        return devModeOverride != null ? devModeOverride.booleanValue() : this.debug;
+        return devModeOverride != null ? devModeOverride : this.debug;
     }
 
     /**
@@ -401,10 +397,8 @@ public class JSONInterceptor extends AbstractInterceptor {
     }
 
     @Inject(StrutsConstants.STRUTS_DEVMODE)
-    public void setDevMode(
-        String mode)
-    {
-        setDebug("true".equalsIgnoreCase(mode));
+    public void setDevMode(String mode) {
+        setDebug(BooleanUtils.toBoolean(mode));
     }
 
     /**
@@ -417,7 +411,7 @@ public class JSONInterceptor extends AbstractInterceptor {
     public void setExcludeProperties(String commaDelim) {
         Set<String> excludePatterns = JSONUtil.asSet(commaDelim);
         if (excludePatterns != null) {
-            this.excludeProperties = new ArrayList<Pattern>(excludePatterns.size());
+            this.excludeProperties = new ArrayList<>(excludePatterns.size());
             for (String pattern : excludePatterns) {
                 this.excludeProperties.add(Pattern.compile(pattern));
             }
@@ -434,7 +428,7 @@ public class JSONInterceptor extends AbstractInterceptor {
     public void setExcludeWildcards(String commaDelim) {
         Set<String> excludePatterns = JSONUtil.asSet(commaDelim);
         if (excludePatterns != null) {
-            this.excludeProperties = new ArrayList<Pattern>(excludePatterns.size());
+            this.excludeProperties = new ArrayList<>(excludePatterns.size());
             for (String pattern : excludePatterns) {
                 this.excludeProperties.add(WildcardUtil.compileWildcardPattern(pattern));
             }

http://git-wip-us.apache.org/repos/asf/struts/blob/5d86c0e5/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java
index a0b1f8b..be3847f 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONPopulator.java
@@ -20,36 +20,21 @@
  */
 package org.apache.struts2.json;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.struts2.json.annotations.JSON;
+
 import java.beans.BeanInfo;
 import java.beans.IntrospectionException;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
-import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
+import java.lang.reflect.*;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.struts2.json.annotations.JSON;
-
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
+import java.util.*;
 
 /**
  * Isolate the process of populating JSON objects from the Interceptor class
@@ -86,8 +71,7 @@ public class JSONPopulator {
         PropertyDescriptor[] props = info.getPropertyDescriptors();
 
         // iterate over class fields
-        for (int i = 0; i < props.length; ++i) {
-            PropertyDescriptor prop = props[i];
+        for (PropertyDescriptor prop : props) {
             String name = prop.getName();
 
             if (elements.containsKey(name)) {
@@ -106,8 +90,7 @@ public class JSONPopulator {
                         Type[] genericTypes = method.getGenericParameterTypes();
 
                         if (paramTypes.length == 1) {
-                            Object convertedValue = this.convert(paramTypes[0], genericTypes[0], value,
-                                    method);
+                            Object convertedValue = this.convert(paramTypes[0], genericTypes[0], value, method);
                             method.invoke(object, new Object[] { convertedValue });
                         }
                     }
@@ -139,9 +122,9 @@ public class JSONPopulator {
             this.populateObject(convertedValue, (Map) value);
             return convertedValue;
         } else if (BigDecimal.class.equals(clazz)) {
-            return new BigDecimal(value != null ? value.toString() : "0");
+            return new BigDecimal(value.toString());
         } else if (BigInteger.class.equals(clazz)) {
-            return new BigInteger(value != null ? value.toString() : "0");
+            return new BigInteger(value.toString());
         } else
             throw new JSONException("Incompatible types for property " + method.getName());
     }
@@ -177,7 +160,7 @@ public class JSONPopulator {
                     Array.set(newArray, j, this.convertPrimitive(arrayType, listValue, accessor));
                 } else if (listValue instanceof Map) {
                     // array of other class
-                    Object newObject = null;
+                    Object newObject;
                     if (Map.class.isAssignableFrom(arrayType)) {
                         newObject = convertToMap(arrayType, type, listValue, accessor);
                     } else if (List.class.isAssignableFrom(arrayType)) {
@@ -230,8 +213,7 @@ public class JSONPopulator {
             }
 
             // create an object for each element
-            for (int j = 0; j < values.size(); j++) {
-                Object listValue = values.get(j);
+            for (Object listValue : values) {
 
                 if (itemClass.equals(Object.class)) {
                     // Object[]
@@ -279,7 +261,7 @@ public class JSONPopulator {
             }
             Map values = (Map) value;
 
-            Map newMap = null;
+            Map newMap;
             try {
                 newMap = (Map) clazz.newInstance();
             } catch (InstantiationException ex) {
@@ -288,9 +270,8 @@ public class JSONPopulator {
             }
 
             // create an object for each element
-            Iterator iter = values.entrySet().iterator();
-            while (iter.hasNext()) {
-                Map.Entry entry = (Map.Entry) iter.next();
+            for (Object next : values.entrySet()) {
+                Map.Entry entry = (Map.Entry) next;
                 String key = (String) entry.getKey();
                 Object v = entry.getValue();
 
@@ -350,27 +331,27 @@ public class JSONPopulator {
             if (Short.TYPE.equals(clazz))
                 return number.shortValue();
             else if (Short.class.equals(clazz))
-                return new Short(number.shortValue());
+                return number.shortValue();
             else if (Byte.TYPE.equals(clazz))
                 return number.byteValue();
             else if (Byte.class.equals(clazz))
-                return new Byte(number.byteValue());
+                return number.byteValue();
             else if (Integer.TYPE.equals(clazz))
                 return number.intValue();
             else if (Integer.class.equals(clazz))
-                return new Integer(number.intValue());
+                return number.intValue();
             else if (Long.TYPE.equals(clazz))
                 return number.longValue();
             else if (Long.class.equals(clazz))
-                return new Long(number.longValue());
+                return number.longValue();
             else if (Float.TYPE.equals(clazz))
                 return number.floatValue();
             else if (Float.class.equals(clazz))
-                return new Float(number.floatValue());
+                return number.floatValue();
             else if (Double.TYPE.equals(clazz))
                 return number.doubleValue();
             else if (Double.class.equals(clazz))
-                return new Double(number.doubleValue());
+                return number.doubleValue();
             else if (String.class.equals(clazz))
                 return value.toString();
         } else if (clazz.equals(Date.class)) {
@@ -381,7 +362,7 @@ public class JSONPopulator {
                         (json != null) && (json.format().length() > 0) ? json.format() : this.dateFormat);
                 return formatter.parse((String) value);
             } catch (ParseException e) {
-                LOG.error(e.getMessage(), e);
+                LOG.error("Unable to parse date from: {}", value, e);
                 throw new JSONException("Unable to parse date from: " + value);
             }
         } else if (clazz.isEnum()) {
@@ -425,7 +406,7 @@ public class JSONPopulator {
                 if (Character.TYPE.equals(clazz))
                     return charValue;
                 else
-                    return new Character(charValue);
+                    return charValue;
             } else if (clazz.equals(Locale.class)) {
                 String[] components = sValue.split("_", 2);
                 if (components.length == 2) {

http://git-wip-us.apache.org/repos/asf/struts/blob/5d86c0e5/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
index 32025a8..dfa0d6c 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
@@ -26,8 +26,9 @@ import com.opensymphony.xwork2.Result;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.WildcardUtil;
-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.StrutsStatics;
 import org.apache.struts2.json.smd.SMDGenerator;
@@ -116,7 +117,7 @@ public class JSONResult implements Result {
     public void setExcludeProperties(String commaDelim) {
         Set<String> excludePatterns = JSONUtil.asSet(commaDelim);
         if (excludePatterns != null) {
-            this.excludeProperties = new ArrayList<Pattern>(excludePatterns.size());
+            this.excludeProperties = new ArrayList<>(excludePatterns.size());
             for (String pattern : excludePatterns) {
                 this.excludeProperties.add(Pattern.compile(pattern));
             }
@@ -132,7 +133,7 @@ public class JSONResult implements Result {
     public void setExcludeWildcards(String commaDelim) {
         Set<String> excludePatterns = JSONUtil.asSet(commaDelim);
         if (excludePatterns != null) {
-            this.excludeProperties = new ArrayList<Pattern>(excludePatterns.size());
+            this.excludeProperties = new ArrayList<>(excludePatterns.size());
             for (String pattern : excludePatterns) {
                 this.excludeProperties.add(WildcardUtil.compileWildcardPattern(pattern));
             }
@@ -248,8 +249,9 @@ public class JSONResult implements Result {
     protected String addCallbackIfApplicable(HttpServletRequest request, String json) {
         if ((callbackParameter != null) && (callbackParameter.length() > 0)) {
             String callbackName = request.getParameter(callbackParameter);
-            if ((callbackName != null) && (callbackName.length() > 0))
+            if (StringUtils.isNotEmpty(callbackName)) {
                 json = callbackName + "(" + json + ")";
+            }
         }
         return json;
     }

http://git-wip-us.apache.org/repos/asf/struts/blob/5d86c0e5/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
index 993de80..0ee024e 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
@@ -22,9 +22,9 @@ package org.apache.struts2.json;
 
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.WildcardUtil;
-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.json.annotations.SMDMethod;
 
 import javax.servlet.http.HttpServletRequest;
@@ -198,9 +198,7 @@ public class JSONUtil {
 
         String json = stringBuilder.toString();
 
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("[JSON]" + json);
-        }
+        LOG.debug("[JSON] {}", json);
 
         HttpServletResponse response = serializationParams.getResponse();
 
@@ -265,7 +263,7 @@ public class JSONUtil {
      */
     @SuppressWarnings("unchecked")
     public static Method[] listSMDMethods(Class clazz, boolean ignoreInterfaces) {
-        final List<Method> methods = new LinkedList<Method>();
+        final List<Method> methods = new LinkedList<>();
         if (ignoreInterfaces) {
             for (Method method : clazz.getMethods()) {
                 SMDMethod smdMethodAnnotation = method.getAnnotation(SMDMethod.class);
@@ -329,7 +327,7 @@ public class JSONUtil {
      */
     @SuppressWarnings("unchecked")
     public static boolean visitInterfaces(Class aClass, ClassVisitor visitor) {
-        List<Class> classesVisited = new LinkedList<Class>();
+        List<Class> classesVisited = new LinkedList<>();
         return visitUniqueInterfaces(aClass, visitor, classesVisited);
     }
 
@@ -373,8 +371,7 @@ public class JSONUtil {
     }
 
     public static boolean isGzipInRequest(HttpServletRequest request) {
-        String header = request.getHeader("Accept-Encoding");
-        return (header != null) && (header.indexOf("gzip") >= 0);
+        return StringUtils.contains(request.getHeader("Accept-Encoding"), "gzip");
     }
 
     public static final String REGEXP_PATTERN = "regexp";
@@ -386,24 +383,24 @@ public class JSONUtil {
 
     /* package */ static Map<String, Map<String, String>> getIncludePatternData()
     {
-        Map<String, Map<String, String>> includePatternData = new HashMap<String, Map<String, String>>();
+        Map<String, Map<String, String>> includePatternData = new HashMap<>();
 
-        Map<String, String> data = new HashMap<String, String>();
+        Map<String, String> data = new HashMap<>();
         data.put(REGEXP_PATTERN, "\\\\\\.");
         data.put(WILDCARD_PATTERN, "\\.");
         includePatternData.put(SPLIT_PATTERN, data);
 
-        data = new HashMap<String, String>();
+        data = new HashMap<>();
         data.put(REGEXP_PATTERN, "\\.");
         data.put(WILDCARD_PATTERN, ".");
         includePatternData.put(JOIN_STRING, data);
 
-        data = new HashMap<String, String>();
+        data = new HashMap<>();
         data.put(REGEXP_PATTERN, "\\[");
         data.put(WILDCARD_PATTERN, "[");
         includePatternData.put(ARRAY_BEGIN_STRING, data);
 
-        data = new HashMap<String, String>();
+        data = new HashMap<>();
         data.put(REGEXP_PATTERN, "\\]");
         data.put(WILDCARD_PATTERN, "]");
         includePatternData.put(ARRAY_END_STRING, data);
@@ -419,8 +416,8 @@ public class JSONUtil {
 
     /* package */ static List<Pattern> processIncludePatterns(Set<String> includePatterns, String type, Map<String, Map<String, String>> includePatternData) {
         if (includePatterns != null) {
-            List<Pattern> results = new ArrayList<Pattern>(includePatterns.size());
-            Map<String, String> existingPatterns = new HashMap<String, String>();
+            List<Pattern> results = new ArrayList<>(includePatterns.size());
+            Map<String, String> existingPatterns = new HashMap<>();
             for (String pattern : includePatterns) {
                 processPattern(results, existingPatterns, pattern, type, includePatternData);
             }
@@ -468,7 +465,7 @@ public class JSONUtil {
     private static void addPattern(List<Pattern> results, String pattern, String type) {
         results.add(REGEXP_PATTERN.equals(type) ? Pattern.compile(pattern) : WildcardUtil.compileWildcardPattern(pattern));
         if (LOG.isTraceEnabled()) {
-            LOG.trace("Adding include " + (REGEXP_PATTERN.equals(type) ? "property" : "wildcard") + " expression:  " + pattern);
+            LOG.trace("Adding include {} expression: {}", (REGEXP_PATTERN.equals(type) ? "property" : "wildcard"), pattern);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/5d86c0e5/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
index 41262d2..1545084 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java
@@ -20,8 +20,8 @@
  */
 package org.apache.struts2.json;
 
-import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.struts2.json.annotations.JSON;
 import org.apache.struts2.json.annotations.JSONFieldBridge;
 import org.apache.struts2.json.annotations.JSONParameter;
@@ -60,11 +60,11 @@ public class JSONWriter {
 
     private static char[] hex = "0123456789ABCDEF".toCharArray();
 
-    private static final ConcurrentMap<Class<?>, BeanInfo> BEAN_INFO_CACHE_IGNORE_HIERARCHY = new ConcurrentHashMap<Class<?>, BeanInfo>();
-    private static final ConcurrentMap<Class<?>, BeanInfo> BEAN_INFO_CACHE = new ConcurrentHashMap<Class<?>, BeanInfo>();
+    private static final ConcurrentMap<Class<?>, BeanInfo> BEAN_INFO_CACHE_IGNORE_HIERARCHY = new ConcurrentHashMap<>();
+    private static final ConcurrentMap<Class<?>, BeanInfo> BEAN_INFO_CACHE = new ConcurrentHashMap<>();
 
     private StringBuilder buf = new StringBuilder();
-    private Stack<Object> stack = new Stack<Object>();
+    private Stack<Object> stack = new Stack<>();
     private boolean ignoreHierarchy = true;
     private Object root;
     private boolean buildExpr = true;
@@ -110,7 +110,6 @@ public class JSONWriter {
     protected void value(Object object, Method method) throws JSONException {
         if (object == null) {
             this.add("null");
-
             return;
         }
 
@@ -121,10 +120,7 @@ public class JSONWriter {
             if (clazz.isPrimitive() || clazz.equals(String.class)) {
                 this.process(object, method);
             } else {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Cyclic reference detected on " + object);
-                }
-
+                LOG.debug("Cyclic reference detected on {}", object);
                 this.add("null");
             }
 
@@ -276,7 +272,7 @@ public class JSONWriter {
             FieldBridge instance = (FieldBridge) impl.newInstance();
 
             if (fieldBridgeAnn.params().length > 0 && ParameterizedBridge.class.isAssignableFrom(impl)) {
-                Map<String, String> params = new HashMap<String, String>(fieldBridgeAnn.params().length);
+                Map<String, String> params = new HashMap<>(fieldBridgeAnn.params().length);
                 for (JSONParameter param : fieldBridgeAnn.params()) {
                     params.put(param.name(), param.value());
                 }

http://git-wip-us.apache.org/repos/asf/struts/blob/5d86c0e5/plugins/json/src/main/java/org/apache/struts2/json/bridge/StringBridge.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/bridge/StringBridge.java b/plugins/json/src/main/java/org/apache/struts2/json/bridge/StringBridge.java
index a226f7d..29ea15b 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/bridge/StringBridge.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/bridge/StringBridge.java
@@ -29,7 +29,9 @@ package org.apache.struts2.json.bridge;
 public class StringBridge implements FieldBridge{
 
     public String objectToString(Object object) {
-        if(object==null) return null;
+        if (object == null) {
+            return null;
+        }
         return object.toString();
     }
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/5d86c0e5/plugins/json/src/main/java/org/apache/struts2/json/smd/SMD.java
----------------------------------------------------------------------
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/smd/SMD.java b/plugins/json/src/main/java/org/apache/struts2/json/smd/SMD.java
index c5ddf05..2ced949 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/smd/SMD.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/smd/SMD.java
@@ -24,7 +24,7 @@ import java.util.Set;
 import java.util.TreeSet;
 
 /*
- * HOlds SMD declarations for a class
+ * Holds SMD declarations for a class
  */
 public class SMD {
     public static final String DEFAULT_VERSION = ".1";
@@ -34,7 +34,7 @@ public class SMD {
     private String objectName;
     private String serviceType = DEFAULT_SERVICE_TYPE;
     private String serviceUrl;
-    private Set<SMDMethod> methods = new TreeSet<SMDMethod>();
+    private Set<SMDMethod> methods = new TreeSet<>();
 
     public void addSMDMethod(SMDMethod method) {
         this.methods.add(method);