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 <p...@jgeppert.com> Authored: Mon Jun 8 20:17:45 2015 +0200 Committer: Johannes Geppert <p...@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);