You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ja...@apache.org on 2011/02/14 17:18:29 UTC
svn commit: r1070550 - in /struts/struts2/trunk/plugins/json/src/main:
java/org/apache/struts2/json/JSONInterceptor.java
java/org/apache/struts2/json/JSONResult.java
java/org/apache/struts2/json/JSONUtil.java resources/struts-plugin.xml
Author: jafl
Date: Mon Feb 14 16:18:28 2011
New Revision: 1070550
URL: http://svn.apache.org/viewvc?rev=1070550&view=rev
Log:
WW-3514 remove JSONUtil.PATTERN_PREFIX; add JSONInterceptor.setExcludeWildcards()
Modified:
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
struts/struts2/trunk/plugins/json/src/main/resources/struts-plugin.xml
Modified: struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java?rev=1070550&r1=1070549&r2=1070550&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java (original)
+++ struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java Mon Feb 14 16:18:28 2011
@@ -189,8 +189,8 @@ public class JSONInterceptor extends Abs
// could be a numeric value
response.setId(id.toString());
- // the map is going to have: 'params', 'method' and 'id' (what is the id
- // for?)
+ // the map is going to have: 'params', 'method' and 'id' (for the
+ // client to identify the response)
Class clazz = object.getClass();
// parameters
@@ -405,6 +405,23 @@ public class JSONInterceptor extends Abs
}
/**
+ * Sets a comma-delimited list of wildcard expressions to match
+ * properties that should be excluded from the JSON output.
+ *
+ * @param commaDelim
+ * A comma-delimited list of wildcard expressions
+ */
+ public void setExcludeWildcards(String commaDelim) {
+ Set<String> excludePatterns = JSONUtil.asSet(commaDelim);
+ if (excludePatterns != null) {
+ this.excludeProperties = new ArrayList<Pattern>(excludePatterns.size());
+ for (String pattern : excludePatterns) {
+ this.excludeProperties.add(WildcardUtil.compileWildcardPattern(pattern));
+ }
+ }
+ }
+
+ /**
* Sets a comma-delimited list of regular expressions to match properties
* that should be included from the JSON output.
*
@@ -412,24 +429,21 @@ public class JSONInterceptor extends Abs
* A comma-delimited list of regular expressions
*/
public void setIncludeProperties(String commaDelim) {
- includeProperties = JSONUtil.processIncludePatterns(JSONUtil.asSet(commaDelim), JSONUtil.REGEXP_PATTERN, JSONUtil.getIncludePatternData());
+ includeProperties = JSONUtil.processIncludePatterns(JSONUtil.asSet(commaDelim), JSONUtil.REGEXP_PATTERN);
}
/**
* Sets a comma-delimited list of wildcard expressions to match
- * properties that should be included from the JSON output. Since the
- * patterns are only used for the JSON-RPC response, you only need to
- * specify the elements inside your result object (and "result." is
- * automatically prepended).
+ * properties that should be included from the JSON output. The
+ * standard boilerplate (id, error, debug) are automatically included,
+ * as appropriate, so you only need to provide patterns for the
+ * contents of "result".
*
* @param commaDelim
- * A comma-delimited list of regular expressions
+ * A comma-delimited list of wildcard expressions
*/
public void setIncludeWildcards(String commaDelim) {
- Map<String, Map<String, String>> includePatternData = JSONUtil.getIncludePatternData();
- includePatternData.get(JSONUtil.PATTERN_PREFIX).put(JSONUtil.WILDCARD_PATTERN, "result.");
- includeProperties = JSONUtil.processIncludePatterns(JSONUtil.asSet(commaDelim), JSONUtil.WILDCARD_PATTERN, includePatternData);
-
+ includeProperties = JSONUtil.processIncludePatterns(JSONUtil.asSet(commaDelim), JSONUtil.WILDCARD_PATTERN);
if (includeProperties != null) {
includeProperties.add(Pattern.compile("id"));
includeProperties.add(Pattern.compile("result"));
@@ -439,16 +453,17 @@ public class JSONInterceptor extends Abs
}
/**
- * Returns the appropriate set of includes.
+ * Returns the appropriate set of includes, based on debug setting.
+ * Derived classes can override if there are additional, custom
+ * debug-only parameters.
*/
- private List getIncludeProperties()
- {
+ protected List getIncludeProperties() {
if (includeProperties != null && getDebug()) {
List<Pattern> list = new ArrayList<Pattern>(includeProperties);
+ list.add(Pattern.compile("debug"));
list.add(WildcardUtil.compileWildcardPattern("error.*"));
return list;
- }
- else {
+ } else {
return includeProperties;
}
}
Modified: struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java?rev=1070550&r1=1070549&r2=1070550&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java (original)
+++ struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java Mon Feb 14 16:18:28 2011
@@ -148,7 +148,7 @@ public class JSONResult implements Resul
* @param commaDelim A comma-delimited list of regular expressions
*/
public void setIncludeProperties(String commaDelim) {
- includeProperties = JSONUtil.processIncludePatterns(JSONUtil.asSet(commaDelim), JSONUtil.REGEXP_PATTERN, JSONUtil.getIncludePatternData());
+ includeProperties = JSONUtil.processIncludePatterns(JSONUtil.asSet(commaDelim), JSONUtil.REGEXP_PATTERN);
}
/**
@@ -158,7 +158,7 @@ public class JSONResult implements Resul
* @param commaDelim A comma-delimited list of wildcard patterns
*/
public void setIncludeWildcards(String commaDelim) {
- includeProperties = JSONUtil.processIncludePatterns(JSONUtil.asSet(commaDelim), JSONUtil.WILDCARD_PATTERN, JSONUtil.getIncludePatternData());
+ includeProperties = JSONUtil.processIncludePatterns(JSONUtil.asSet(commaDelim), JSONUtil.WILDCARD_PATTERN);
}
public void execute(ActionInvocation invocation) throws Exception {
Modified: struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java?rev=1070550&r1=1070549&r2=1070550&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java (original)
+++ struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java Mon Feb 14 16:18:28 2011
@@ -390,13 +390,12 @@ public class JSONUtil {
return (header != null) && (header.indexOf("gzip") >= 0);
}
- /* package */ static final String REGEXP_PATTERN = "regexp";
- /* package */ static final String WILDCARD_PATTERN = "wildcard";
+ public static final String REGEXP_PATTERN = "regexp";
+ public static final String WILDCARD_PATTERN = "wildcard";
/* package */ static final String SPLIT_PATTERN = "split";
/* package */ static final String JOIN_STRING = "join";
/* package */ static final String ARRAY_BEGIN_STRING = "array-begin";
/* package */ static final String ARRAY_END_STRING = "array-end";
- /* package */ static final String PATTERN_PREFIX = "pattern-prefix";
/* package */ static Map<String, Map<String, String>> getIncludePatternData()
{
@@ -422,14 +421,15 @@ public class JSONUtil {
data.put(WILDCARD_PATTERN, "]");
includePatternData.put(ARRAY_END_STRING, data);
- data = new HashMap<String, String>();
- data.put(REGEXP_PATTERN, "");
- data.put(WILDCARD_PATTERN, "");
- includePatternData.put(PATTERN_PREFIX, data);
-
return includePatternData;
}
+ private static final Map<String, Map<String, String>> defaultIncludePatternData = getIncludePatternData();
+
+ public static List<Pattern> processIncludePatterns(Set<String> includePatterns, String type) {
+ return processIncludePatterns(includePatterns, type, defaultIncludePatternData);
+ }
+
/* 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());
@@ -479,7 +479,6 @@ public class JSONUtil {
}
private static void addPattern(List<Pattern> results, String pattern, String type, Map<String, Map<String, String>> includePatternData) {
- pattern = includePatternData.get(PATTERN_PREFIX).get(type) + pattern;
results.add(
type == REGEXP_PATTERN ?
Pattern.compile(pattern) :
Modified: struts/struts2/trunk/plugins/json/src/main/resources/struts-plugin.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/resources/struts-plugin.xml?rev=1070550&r1=1070549&r2=1070550&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/json/src/main/resources/struts-plugin.xml (original)
+++ struts/struts2/trunk/plugins/json/src/main/resources/struts-plugin.xml Mon Feb 14 16:18:28 2011
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
+ "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
+ "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="json-default" extends="struts-default">