svn commit: r1066613 - in /struts/struts2/trunk: plugins/json/src/main/java/org/apache/struts2/json/ plugins/json/src/test/java/org/apache/struts2/json/ xwork-core/src/main/java/com/opensymphony/xwork

2011-02-02 Thread jafl
Author: jafl
Date: Wed Feb  2 20:28:20 2011
New Revision: 1066613

URL: http://svn.apache.org/viewvc?rev=1066613&view=rev
Log:
WW-3514 fix/enhance support for include/exclude parameters

Added:

struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONCleanerTest.java
  - copied, changed from r1065873, 
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/WildcardHelperTest.java

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/WildcardUtil.java

struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/WildcardUtilTest.java
  - copied, changed from r1065873, 
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/WildcardHelperTest.java
Modified:

struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java

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

Modified: 
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java?rev=1066613&r1=1066612&r2=1066613&view=diff
==
--- 
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
 (original)
+++ 
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONCleaner.java
 Wed Feb  2 20:28:20 2011
@@ -21,14 +21,51 @@
 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 com.opensymphony.xwork2.util.logging.Logger;
+import com.opensymphony.xwork2.util.logging.LoggerFactory;
 
 /**
- * Isolate the process of cleaning JSON data from the Interceptor class itself.
+ * Isolate the process of cleaning JSON data from the Interceptor class
+ * itself.
+ * 
+ * The allowed and blocked wildcard patterns, combined with
+ * defaultBlock, let you filter out values that should not be injected, in
+ * the same way that ParameterFilterInterceptor does.  Note that you can
+ * only remove values from a Map.  Removing values from a List is dangerous
+ * because it could change the meaning of the data!
  */
 public abstract class JSONCleaner {
 
+private static final Logger LOG = 
LoggerFactory.getLogger(JSONCleaner.class);
+
+public static class Filter
+{
+public Pattern pattern;
+public boolean allow;
+
+public Filter(String pattern, boolean allow)
+{
+this.pattern = WildcardUtil.compileWildcardPattern(pattern);
+this.allow = allow;
+}
+}
+
+private boolean defaultBlock = false;
+private Collection allowed;
+private Collection blocked;
+private Map includesExcludesMap;
+
 public Object clean(String ognlPrefix, Object data) throws JSONException {
 if (data == null)
 return null;
@@ -54,11 +91,172 @@ public abstract class JSONCleaner {
 Iterator iter = map.entrySet().iterator();
 while (iter.hasNext()) {
 Map.Entry e = (Map.Entry) iter.next();
-e.setValue(clean((ognlPrefix.length() > 0 ? ognlPrefix + "." : "") 
+ e.getKey(), e.getValue()));
+String key = (ognlPrefix.length() > 0 ? ognlPrefix + "." : "") + 
e.getKey();
+if (allow(key)) {
+e.setValue(clean(key, e.getValue()));
+} else {
+LOG.debug("blocked: " + key);
+iter.remove();
+}
 }
 return map;
 }
 
 protected abstract Object cleanValue(String ognlName, Object data) throws 
JSONException;
 
+private boolean allow(String ognl) {
+Map includesExcludesMap = getIncludesExcludesMap();
+
+boolean allow = !isDefaultBlock();
+
+if (includesExcludesMap != null) {
+for (String currRule : includesExcludesMap.keySet()) {
+Filter f = includesExcludesMap.get(currRule);
+if (f.pattern.matcher(ognl).matches()) {
+allow = f.allow;
+}
+}
+}
+
+return allow;
+}
+
+/**
+ * @return the compiled list of includes and excludes
+ */
+public Map getIncludesExcludesMap() {
+if (allowed == null && blocked == null) {
+return includesExcludesMap;
+}
+
+if (includesExcludesMap == null) {
+includesExcludesMap 

svn commit: r1066628 - in /struts/struts2/trunk: core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java

2011-02-02 Thread jafl
Author: jafl
Date: Wed Feb  2 21:13:23 2011
New Revision: 1066628

URL: http://svn.apache.org/viewvc?rev=1066628&view=rev
Log:
WW-3513 allow derived classes to create derived classes of some objects

Modified:

struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java?rev=1066628&r1=1066627&r2=1066628&view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
 Wed Feb  2 21:13:23 2011
@@ -321,9 +321,9 @@ public class Dispatcher {
 for (String file : files) {
 if (file.endsWith(".xml")) {
 if ("xwork.xml".equals(file)) {
-configurationManager.addConfigurationProvider(new 
XmlConfigurationProvider(file, false));
+
configurationManager.addConfigurationProvider(createXmlConfigurationProvider(file,
 false));
 } else {
-configurationManager.addConfigurationProvider(new 
StrutsXmlConfigurationProvider(file, false, servletContext));
+
configurationManager.addConfigurationProvider(createStrutsXmlConfigurationProvider(file,
 false, servletContext));
 }
 } else {
 throw new IllegalArgumentException("Invalid configuration file 
name");
@@ -331,6 +331,14 @@ public class Dispatcher {
 }
 }
 
+protected XmlConfigurationProvider createXmlConfigurationProvider(String 
filename, boolean errorIfMissing) {
+return new XmlConfigurationProvider(filename, errorIfMissing);
+}
+
+protected XmlConfigurationProvider 
createStrutsXmlConfigurationProvider(String filename, boolean errorIfMissing, 
ServletContext ctx) {
+return new StrutsXmlConfigurationProvider(filename, errorIfMissing, 
ctx);
+}
+
 private void init_CustomConfigurationProviders() {
 String configProvs = initParams.get("configProviders");
 if (configProvs != null) {
@@ -402,7 +410,7 @@ public class Dispatcher {
 public void init() {
 
if (configurationManager == null) {
-   configurationManager = new 
ConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
+   configurationManager = 
createConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
}
 
 try {
@@ -430,6 +438,10 @@ public class Dispatcher {
 }
 }
 
+protected ConfigurationManager createConfigurationManager(String name) {
+return new ConfigurationManager(name);
+}
+
 /**
  * Load Action class for mapping and invoke the appropriate Action method, 
or go directly to the Result.
  * 

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java?rev=1066628&r1=1066627&r2=1066628&view=diff
==
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
 Wed Feb  2 21:13:23 2011
@@ -61,7 +61,7 @@ public class ConfigurationManager {
  */
 public synchronized Configuration getConfiguration() {
 if (configuration == null) {
-setConfiguration(new 
DefaultConfiguration(defaultFrameworkBeanName));
+setConfiguration(createConfiguration(defaultFrameworkBeanName));
 try {
 configuration.reloadContainer(getContainerProviders());
 } catch (ConfigurationException e) {
@@ -75,6 +75,10 @@ public class ConfigurationManager {
 return configuration;
 }
 
+protected Configuration createConfiguration(String beanName) {
+return new DefaultConfiguration(beanName);
+}
+
 public synchronized void setConfiguration(Configuration configuration) {
 this.configuration = configuration;
 }




svn commit: r1066692 - /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/

2011-02-02 Thread jafl
Author: jafl
Date: Wed Feb  2 23:27:33 2011
New Revision: 1066692

URL: http://svn.apache.org/viewvc?rev=1066692&view=rev
Log:
XW-387 enable derived classes of config and derived classes of config bulders

Modified:

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ExceptionMappingConfig.java

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/InterceptorConfig.java

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/InterceptorStackConfig.java

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultConfig.java

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultTypeConfig.java

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java?rev=1066692&r1=1066691&r2=1066692&view=diff
==
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ActionConfig.java
 Wed Feb  2 23:27:33 2011
@@ -214,7 +214,7 @@ public class ActionConfig extends Locate
  */
 public static class Builder implements InterceptorListHolder{
 
-private ActionConfig target;
+protected ActionConfig target;
 
 public Builder(ActionConfig toClone) {
 target = new ActionConfig(toClone);
@@ -240,12 +240,12 @@ public class ActionConfig extends Locate
 }
 
 public Builder defaultClassName(String name) {
-   if (StringUtils.isEmpty(target.className)) {
-   target.className = name;
-   }
+if (StringUtils.isEmpty(target.className)) {
+target.className = name;
+}
 return this;
 }
-
+
 public Builder methodName(String method) {
 target.methodName = method;
 return this;
@@ -326,14 +326,18 @@ public class ActionConfig extends Locate
 }
 
 public ActionConfig build() {
+embalmTarget();
+ActionConfig result = target;
+target = new ActionConfig(target);
+return result;
+}
+
+protected void embalmTarget() {
 target.params = Collections.unmodifiableMap(target.params);
 target.results = Collections.unmodifiableMap(target.results);
 target.interceptors = 
Collections.unmodifiableList(target.interceptors);
 target.exceptionMappings = 
Collections.unmodifiableList(target.exceptionMappings);
 target.allowedMethods = 
Collections.unmodifiableSet(target.allowedMethods);
-ActionConfig result = target;
-target = new ActionConfig(target);
-return result;
 }
 }
 }

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ExceptionMappingConfig.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ExceptionMappingConfig.java?rev=1066692&r1=1066691&r2=1066692&view=diff
==
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ExceptionMappingConfig.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ExceptionMappingConfig.java
 Wed Feb  2 23:27:33 2011
@@ -32,11 +32,10 @@ import java.util.Map;
  */
 public class ExceptionMappingConfig extends Located implements Serializable {
 
-private String name;
-private String exceptionClassName;
-private String result;
-private Map params;
-
+protected String name;
+protected String exceptionClassName;
+protected String result;
+protected Map params;
 
 protected ExceptionMappingConfig(String name, String exceptionClassName, 
String result) {
 this.name = name;
@@ -68,7 +67,6 @@ public class ExceptionMappingConfig exte
 return params;
 }
 
-
 @Override
 public boolean equals(Object o) {
 if (this == o) {
@@ -121,7 +119,7 @@ public class ExceptionMappingConfig exte
  */
 public static class Builder{
 
-private ExceptionMappingConfig target;
+protected ExceptionMappingConfig target;
 
 public Builder(ExceptionMappingConfig toClone) {
 

[CONF] Confluence Changes in the last 24 hours

2011-02-02 Thread confluence
This is a daily summary of all recent changes in Confluence.

-
Updated Spaces:
-


Apache ActiveMQ (https://cwiki.apache.org/confluence/display/ACTIVEMQ)

Pages
-
AMQ Message Store edited by  dejanb  (07:41 AM)
https://cwiki.apache.org/confluence/display/ACTIVEMQ/AMQ+Message+Store



Apache Bean Validation 
(https://cwiki.apache.org/confluence/display/BeanValidation)

Pages
-
Samples edited by  allee8...@gmail.com  (02:02 PM)
https://cwiki.apache.org/confluence/display/BeanValidation/Samples



Apache Camel (https://cwiki.apache.org/confluence/display/CAMEL)

Pages
-
OnCompletion edited by  ericjohnson  (03:44 PM)
https://cwiki.apache.org/confluence/display/CAMEL/OnCompletion

User Guide edited by  davsclaus  (02:32 AM)
https://cwiki.apache.org/confluence/display/CAMEL/User+Guide



Apache CXF (https://cwiki.apache.org/confluence/display/CXF)

Pages
-
FAQ edited by  dkulp  (08:28 PM)
https://cwiki.apache.org/confluence/display/CXF/FAQ

Support edited by  dkulp  (08:26 PM)
https://cwiki.apache.org/confluence/display/CXF/Support

Commercial CXF Offerings created by dkulp (08:22 PM)
https://cwiki.apache.org/confluence/display/CXF/Commercial+CXF+Offerings

Automated Builds created by dkulp (05:47 PM)
https://cwiki.apache.org/confluence/display/CXF/Automated+Builds

Navigation edited by  dkulp  (05:41 PM)
https://cwiki.apache.org/confluence/display/CXF/Navigation



Apache CXF Documentation (https://cwiki.apache.org/confluence/display/CXF20DOC)

Pages
-
Index edited by  dkulp  (08:42 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Index

JAX-RS Advanced Features edited by  sergey_beryozkin  (08:18 AM)
https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Advanced+Features

JAX-RS edited by  sergey_beryozkin  (08:06 AM)
https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS

WSDL to Java edited by  mazzag  (07:48 AM)
https://cwiki.apache.org/confluence/display/CXF20DOC/WSDL+to+Java

Developing a Service edited by  mazzag  (07:47 AM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Developing+a+Service



OODT (https://cwiki.apache.org/confluence/display/OODT)

Pages
-
Release Process edited by  pramirez  (12:54 PM)
https://cwiki.apache.org/confluence/display/OODT/Release+Process



OpenJPA (https://cwiki.apache.org/confluence/display/openjpa)

Pages
-
Downloads edited by  michael.d.d...@gmail.com  (05:18 PM)
https://cwiki.apache.org/confluence/display/openjpa/Downloads

Documentation edited by  michael.d.d...@gmail.com  (05:11 PM)
https://cwiki.apache.org/confluence/display/openjpa/Documentation



Apache Roller (https://cwiki.apache.org/confluence/display/ROLLER)

Pages
-
How to debug Roller created by shela...@gmail.com (04:41 AM)
https://cwiki.apache.org/confluence/display/ROLLER/How+to+debug+Roller



Apache Santuario (https://cwiki.apache.org/confluence/display/SANTUARIO)

Pages
-
Navigation edited by  cohei...@apache.org  (05:42 AM)
https://cwiki.apache.org/confluence/display/SANTUARIO/Navigation



-
Users
-

md.irfanulla
https://cwiki.apache.org/confluence/display/~md.irfanulla

Change your notification preferences: 
https://cwiki.apache.org/confluence/users/viewnotifications.action