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">