svn commit: r1065530 - /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java

2011-01-31 Thread lukaszlenart
Author: lukaszlenart
Date: Mon Jan 31 09:03:29 2011
New Revision: 1065530

URL: http://svn.apache.org/viewvc?rev=1065530&view=rev
Log:
WW-3488 - adds copy field errors to exclude list during chaining

Modified:

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java?rev=1065530&r1=1065529&r2=1065530&view=diff
==
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
 Mon Jan 31 09:03:29 2011
@@ -103,14 +103,16 @@ public class ChainingInterceptor extends
 private static final Logger LOG = 
LoggerFactory.getLogger(ChainingInterceptor.class);
 
 private static final String ACTION_ERRORS = "actionErrors";
+private static final String FIELD_ERRORS = "fieldErrors";
 private static final String ACTION_MESSAGES = "actionMessages";
 
 private boolean copyMessages = false;
 private boolean copyErrors = false;
+private boolean copyFieldErrors = false;
 
 protected Collection excludes;
-protected Collection includes;
 
+protected Collection includes;
 protected ReflectionProvider reflectionProvider;
 
 @Inject
@@ -123,6 +125,11 @@ public class ChainingInterceptor extends
 this.copyErrors = "true".equalsIgnoreCase(copyErrors);
 }
 
+@Inject(value = "struts.xwork.chaining.copyFieldErrors", required = false)
+public void setCopyFieldErrors(String copyFieldErrors) {
+this.copyErrors = "true".equalsIgnoreCase(copyFieldErrors);
+}
+
 @Inject(value = "struts.xwork.chaining.copyMessages", required = false)
 public void setCopyMessages(String copyMessages) {
 this.copyMessages = "true".equalsIgnoreCase(copyMessages);
@@ -150,7 +157,7 @@ public class ChainingInterceptor extends
 
 private Collection prepareExcludes() {
 Collection localExcludes = excludes;
-if (!copyErrors || !copyMessages) {
+if (!copyErrors || !copyMessages ||!copyFieldErrors) {
 if (localExcludes == null) {
 localExcludes = new HashSet();
 if (!copyErrors) {
@@ -159,6 +166,9 @@ public class ChainingInterceptor extends
 if (!copyMessages) {
 localExcludes.add(ACTION_MESSAGES);
 }
+if (!copyFieldErrors) {
+localExcludes.add(FIELD_ERRORS);
+}
 }
 }
 return localExcludes;




svn commit: r1065533 - /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java

2011-01-31 Thread lukaszlenart
Author: lukaszlenart
Date: Mon Jan 31 09:16:55 2011
New Revision: 1065533

URL: http://svn.apache.org/viewvc?rev=1065533&view=rev
Log:
WW-3488 - adds documentation for three new copy options

Modified:

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java?rev=1065533&r1=1065532&r2=1065533&view=diff
==
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
 Mon Jan 31 09:16:55 2011
@@ -46,37 +46,37 @@ import java.util.*;
  * is through the use of the chain result type, which combines with 
this interceptor to make up the action
  * chaining feature.
  * 
+ * Note: By default Errors, Field errors and Message aren't copied 
during chaining, to change the behaviour you can specify
+ * the below three constants in struts.properties or struts.xml:
+ * 
+ * struts.xwork.chaining.copyErrors - set to true to copy Action 
Errors
+ * struts.xwork.chaining.copyFieldErrors - set to true to copy Field 
Errors
+ * struts.xwork.chaining.copyMessages - set to true to copy Action 
Messages
+ * 
+ * 
  * 
+ * Example:
+ * 
+ * 
+ * 
+ * 
  * Note: By default actionErrors and actionMessages are excluded when 
copping object's properties.
  * 
  * 
- * 
- *  Interceptor parameters:
- * 
+ * Interceptor parameters:
  * 
- * 
  * 
- * 
  * excludes (optional) - the list of parameter names to exclude from 
copying (all others will be included).
- * 
  * includes (optional) - the list of parameter names to include when 
copying (all others will be excluded).
- * 
  * 
- * 
  * 
- * 
- *  Extending the interceptor:
- * 
- * 
- * 
+ * Extending the interceptor:
  * 
- * 
+ * 
  * There are no known extension points to this interceptor.
- * 
+ * 
  * 
- * 
- *  Example code:
- * 
+ * Example code:
  * 
  * 
  * 




svn commit: r1065716 - in /struts/struts2/trunk/xwork-core: ./ src/main/java/com/opensymphony/xwork2/interceptor/annotations/ src/test/java/com/opensymphony/xwork2/interceptor/annotations/

2011-01-31 Thread jafl
Author: jafl
Date: Mon Jan 31 19:16:35 2011
New Revision: 1065716

URL: http://svn.apache.org/viewvc?rev=1065716&view=rev
Log:
WW-3500 If top of stack is not the action, assume it is the model and check for 
annotiations.

Added:

struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AllowingByDefaultModel.java
   (with props)

struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/BlockingByDefaultModel.java
   (with props)
Modified:
struts/struts2/trunk/xwork-core/   (props changed)

struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationParameterFilterIntereptor.java

struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationParameterFilterUnitTest.java

Propchange: struts/struts2/trunk/xwork-core/
--
--- svn:ignore (original)
+++ svn:ignore Mon Jan 31 19:16:35 2011
@@ -5,6 +5,7 @@ cobertura.ser
 *.iml
 .project
 target
+test-output
 ivyrep.properties
 build
 .settings

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationParameterFilterIntereptor.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationParameterFilterIntereptor.java?rev=1065716&r1=1065715&r2=1065716&view=diff
==
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationParameterFilterIntereptor.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationParameterFilterIntereptor.java
 Mon Jan 31 19:16:35 2011
@@ -37,12 +37,20 @@ public class AnnotationParameterFilterIn
 final Object action = invocation.getAction();
 Map parameters = 
invocation.getInvocationContext().getParameters();
 
+Object model = invocation.getStack().peek();
+if (model == action) {
+model = null;
+}
+
 boolean blockByDefault = 
action.getClass().isAnnotationPresent(BlockByDefault.class);
 List annotatedFields = new ArrayList();
 HashSet paramsToRemove = new HashSet();
 
 if (blockByDefault) {
 AnnotationUtils.addAllFields(Allowed.class, action.getClass(), 
annotatedFields);
+if (model != null) {
+AnnotationUtils.addAllFields(Allowed.class, model.getClass(), 
annotatedFields);
+}
 
 for (String paramName : parameters.keySet()) {
 boolean allowed = false;
@@ -61,6 +69,9 @@ public class AnnotationParameterFilterIn
 }
 } else {
 AnnotationUtils.addAllFields(Blocked.class, action.getClass(), 
annotatedFields);
+if (model != null) {
+AnnotationUtils.addAllFields(Blocked.class, model.getClass(), 
annotatedFields);
+}
 
 for (String paramName : parameters.keySet()) {
 

Added: 
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AllowingByDefaultModel.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AllowingByDefaultModel.java?rev=1065716&view=auto
==
--- 
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AllowingByDefaultModel.java
 (added)
+++ 
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AllowingByDefaultModel.java
 Mon Jan 31 19:16:35 2011
@@ -0,0 +1,23 @@
+package com.opensymphony.xwork2.interceptor.annotations;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+/**
+ * @author jafl
+ *
+ */
+public class AllowingByDefaultModel {
+   
+   @Blocked
+   private String m1;
+   private String m2;
+   
+   public void setM1(String s) {
+   m1 = s;
+   }
+   
+   public void setM2(String s) {
+   m2 = s;
+   }
+
+}

Propchange: 
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AllowingByDefaultModel.java
--
svn:eol-style = native

Modified: 
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationParameterFilterUnitTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/annotations/AnnotationParameterFilterUnitTest.java?rev=1065716&r1=1065715&r2=1065716&view=diff
=

svn commit: r1065717 - in /struts/struts2/trunk: apps/jboss-blank/ archetypes/ archetypes/struts2-archetype-convention/ archetypes/struts2-archetype-dbportlet/ archetypes/struts2-archetype-plugin/ arc

2011-01-31 Thread jafl
Author: jafl
Date: Mon Jan 31 19:18:32 2011
New Revision: 1065717

URL: http://svn.apache.org/viewvc?rev=1065717&view=rev
Log:
XW-388 ignore maven target directories

Modified:
struts/struts2/trunk/apps/jboss-blank/   (props changed)
struts/struts2/trunk/archetypes/   (props changed)
struts/struts2/trunk/archetypes/struts2-archetype-convention/   (props 
changed)
struts/struts2/trunk/archetypes/struts2-archetype-dbportlet/   (props 
changed)
struts/struts2/trunk/archetypes/struts2-archetype-plugin/   (props changed)
struts/struts2/trunk/archetypes/struts2-archetype-starter/   (props changed)
struts/struts2/trunk/plugins/gxp/   (props changed)

Propchange: struts/struts2/trunk/apps/jboss-blank/
--
--- svn:ignore (added)
+++ svn:ignore Mon Jan 31 19:18:32 2011
@@ -0,0 +1 @@
+target

Propchange: struts/struts2/trunk/archetypes/
--
--- svn:ignore (added)
+++ svn:ignore Mon Jan 31 19:18:32 2011
@@ -0,0 +1 @@
+target

Propchange: struts/struts2/trunk/archetypes/struts2-archetype-convention/
--
--- svn:ignore (added)
+++ svn:ignore Mon Jan 31 19:18:32 2011
@@ -0,0 +1 @@
+target

Propchange: struts/struts2/trunk/archetypes/struts2-archetype-dbportlet/
--
--- svn:ignore (added)
+++ svn:ignore Mon Jan 31 19:18:32 2011
@@ -0,0 +1 @@
+target

Propchange: struts/struts2/trunk/archetypes/struts2-archetype-plugin/
--
--- svn:ignore (added)
+++ svn:ignore Mon Jan 31 19:18:32 2011
@@ -0,0 +1 @@
+target

Propchange: struts/struts2/trunk/archetypes/struts2-archetype-starter/
--
--- svn:ignore (added)
+++ svn:ignore Mon Jan 31 19:18:32 2011
@@ -0,0 +1 @@
+target

Propchange: struts/struts2/trunk/plugins/gxp/
--
--- svn:ignore (added)
+++ svn:ignore Mon Jan 31 19:18:32 2011
@@ -0,0 +1 @@
+target




svn commit: r1065735 - in /struts/struts2/trunk: core/src/main/java/org/apache/struts2/dispatcher/ core/src/main/java/org/apache/struts2/interceptor/debugging/ plugins/json/src/main/java/org/apache/st

2011-01-31 Thread jafl
Author: jafl
Date: Mon Jan 31 20:00:58 2011
New Revision: 1065735

URL: http://svn.apache.org/viewvc?rev=1065735&view=rev
Log:
WW-3546
provide API for overriding devMode per request, and check for override where 
appropriate

Modified:

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

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

struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java

struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.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=1065735&r1=1065734&r2=1065735&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
 Mon Jan 31 20:00:58 2011
@@ -725,7 +725,8 @@ public class Dispatcher {
  */
 public void sendError(HttpServletRequest request, HttpServletResponse 
response,
 ServletContext ctx, int code, Exception e) {
-if (devMode) {
+Boolean devModeOverride = FilterDispatcher.getDevModeOverride();
+if (devModeOverride != null ? devModeOverride.booleanValue() : 
devMode) {
 response.setContentType("text/html");
 
 try {

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java?rev=1065735&r1=1065734&r2=1065735&view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
 Mon Jan 31 20:00:58 2011
@@ -170,11 +170,16 @@ public class FilterDispatcher implements
 protected Dispatcher dispatcher;
 
 /**
- * Loads stattic resources, set by injection
+ * Loads static resources, set by injection.
  */
 protected StaticContentLoader staticResourceLoader;
 
 /**
+ * Maintains per-request override of devMode configuration.
+ */
+private static ThreadLocal devModeOverride = new 
InheritableThreadLocal();
+
+/**
  * Initializes the filter by creating a default dispatcher
  * and setting the default packages for static resources.
  *
@@ -238,6 +243,27 @@ public class FilterDispatcher implements
 }
 
 /**
+ * Set an override of the static devMode value.  Do not set this via a
+ * request parameter or any other unprotected method.  Using a signed
+ * cookie is one safe way to turn it on per request.
+ * 
+ * @param devMode   the override value
+ */
+public static void overrideDevMode(
+boolean devMode)
+{
+devModeOverride.set(Boolean.valueOf(devMode));
+}
+
+/**
+ * @return Boolean override value, or null if no override
+ */
+public static Boolean getDevModeOverride()
+{
+return devModeOverride.get();
+}
+
+/**
  * Create a default {@link Dispatcher} that subclasses can override
  * with a custom Dispatcher, if needed.
  *
@@ -400,6 +426,7 @@ public class FilterDispatcher implements
 } finally {
 UtilTimerStack.pop(timerKey);
 }
+devModeOverride.remove();
 }
 }
 }

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java?rev=1065735&r1=1065734&r2=1065735&view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java
 Mon Jan 31 20:00:58 2011
@@ -40,6 +40,7 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsConstants;
+import org.apache.struts2.dispatcher.FilterDispatcher;
 import org.apache.struts2.views.freemarker.FreemarkerManager;
 import org.apache.struts2.views.freemarker.FreemarkerResult;
 
@@ -157,6 +158,8 @@ public class DebuggingInterceptor implem
 public String intercept(ActionInvocation inv) throws Exception {
 boolean actionOnly = false;
  

svn commit: r1065743 - in /struts/struts2/trunk/plugins/json/src: main/java/org/apache/struts2/json/JSONInterceptor.java test/java/org/apache/struts2/json/JSONInterceptorTest.java

2011-01-31 Thread jafl
Author: jafl
Date: Mon Jan 31 20:16:38 2011
New Revision: 1065743

URL: http://svn.apache.org/viewvc?rev=1065743&view=rev
Log:
WW-3498 Inject values into top of stack (model or action) instead of always 
using action. This does not break backward compatibility because nobody could 
use a model before this patch.

Modified:

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

struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java

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=1065743&r1=1065742&r2=1065743&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 Jan 31 20:16:38 2011
@@ -83,7 +83,7 @@ public class JSONInterceptor extends Abs
 contentType = contentType.substring(0, iSemicolonIdx);
 }
 
-Object rootObject;
+Object rootObject = null;
 if (this.root != null) {
 ValueStack stack = invocation.getStack();
 rootObject = stack.findValue(this.root);
@@ -91,8 +91,6 @@ public class JSONInterceptor extends Abs
 if (rootObject == null) {
 throw new RuntimeException("Invalid root expression: '" + 
this.root + "'.");
 }
-} else {
-rootObject = invocation.getAction();
 }
 
 if ((contentType != null) && 
contentType.equalsIgnoreCase("application/json")) {
@@ -106,6 +104,9 @@ public class JSONInterceptor extends Abs
 if (dataCleaner != null)
 dataCleaner.clean("", json);
 
+if (rootObject == null) // model overrides action
+rootObject = invocation.getStack().peek();
+
 // populate fields
 populator.populateObject(rootObject, json);
 } else {
@@ -121,6 +122,9 @@ public class JSONInterceptor extends Abs
 if (obj instanceof Map) {
 Map smd = (Map) obj;
 
+if (rootObject == null) // model makes no sense when using 
RPC
+rootObject = invocation.getAction();
+
 // invoke method
 try {
 result = this.invoke(rootObject, smd);

Modified: 
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java?rev=1065743&r1=1065742&r2=1065743&view=diff
==
--- 
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java
 (original)
+++ 
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java
 Mon Jan 31 20:16:38 2011
@@ -322,6 +322,7 @@ public class JSONInterceptorTest extends
 TestAction action = new TestAction();
 
 this.invocation.setAction(action);
+this.invocation.getStack().push(action);
 
 interceptor.intercept(this.invocation);
 




svn commit: r1065764 - in /struts/struts2/trunk/core/src/main/java/org/apache/struts2: dispatcher/Dispatcher.java dispatcher/FilterDispatcher.java interceptor/FileUploadInterceptor.java

2011-01-31 Thread jafl
Author: jafl
Date: Mon Jan 31 20:43:25 2011
New Revision: 1065764

URL: http://svn.apache.org/viewvc?rev=1065764&view=rev
Log:
WW-3490 clean up file uploads when action throws exception

Modified:

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

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

struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.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=1065764&r1=1065763&r2=1065764&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
 Mon Jan 31 20:43:25 2011
@@ -80,6 +80,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.Enumeration;
 
 /**
  * A utility class the actual dispatcher delegates most of its tasks to. Each 
instance
@@ -715,6 +716,40 @@ public class Dispatcher {
 }
 
 /**
+ * Removes all the files created by MultiPartRequestWrapper.
+ *
+ * @param request the HttpServletRequest object.
+ * @see org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper
+ * @throws java.io.IOException on any error.
+ */
+public void cleanUpRequest(HttpServletRequest request) throws IOException {
+if (!(request instanceof MultiPartRequestWrapper)) {
+return;
+}
+
+MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) 
request;
+
+Enumeration fileParameterNames = multiWrapper.getFileParameterNames();
+while (fileParameterNames != null && 
fileParameterNames.hasMoreElements()) {
+String inputValue = (String) fileParameterNames.nextElement();
+File[] files = multiWrapper.getFiles(inputValue);
+
+for (File currentFile : files) {
+if (LOG.isInfoEnabled()) {
+String msg = LocalizedTextUtil.findText(this.getClass(), 
"struts.messages.removing.file", Locale.ENGLISH, "no.message.found", new 
Object[]{inputValue, currentFile});
+LOG.info(msg);
+}
+
+if ((currentFile != null) && currentFile.isFile()) {
+if (!currentFile.delete()) {
+LOG.warn("Resource Leaking:  Could not remove uploaded 
file '" + currentFile.getCanonicalPath() + "'.");
+}
+}
+}
+}
+}
+
+/**
  * Send an HTTP error response code.
  *
  * @param request  the HttpServletRequest object.

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java?rev=1065764&r1=1065763&r2=1065764&view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
 Mon Jan 31 20:43:25 2011
@@ -421,6 +421,7 @@ public class FilterDispatcher implements
 dispatcher.serviceAction(request, response, servletContext, 
mapping);
 
 } finally {
+dispatcher.cleanUpRequest(request);
 try {
 ActionContextCleanUp.cleanUp(req);
 } finally {

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java?rev=1065764&r1=1065763&r2=1065764&view=diff
==
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
 Mon Jan 31 20:43:25 2011
@@ -311,28 +311,7 @@ public class FileUploadInterceptor exten
 }
 
 // invoke action
-String result = invocation.invoke();
-
-// cleanup
-fileParameterNames = multiWrapper.getFileParameterNames();
-while (fileParameterNames != null && 
fileParameterNames.hasMoreElements()) {
-String inputValue = (String) fileParameterNames.nextElement();
-File[] files = multiWrapper.getFiles(inputValue);
-
-for (File current

svn commit: r1065829 - in /struts/struts2/trunk/plugins/gxp/src/main: java/org/apache/struts2/views/gxp/inject/ java/org/apache/struts2/views/gxp/inject/InjectedObjectContainer.java resources/ resourc

2011-01-31 Thread jafl
Author: jafl
Date: Mon Jan 31 22:14:54 2011
New Revision: 1065829

URL: http://svn.apache.org/viewvc?rev=1065829&view=rev
Log:
WW-3475 add missing files from contributed zip (WW-2754)

Added:

struts/struts2/trunk/plugins/gxp/src/main/java/org/apache/struts2/views/gxp/inject/

struts/struts2/trunk/plugins/gxp/src/main/java/org/apache/struts2/views/gxp/inject/InjectedObjectContainer.java
struts/struts2/trunk/plugins/gxp/src/main/resources/
struts/struts2/trunk/plugins/gxp/src/main/resources/struts-plugin.xml

Added: 
struts/struts2/trunk/plugins/gxp/src/main/java/org/apache/struts2/views/gxp/inject/InjectedObjectContainer.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/gxp/src/main/java/org/apache/struts2/views/gxp/inject/InjectedObjectContainer.java?rev=1065829&view=auto
==
--- 
struts/struts2/trunk/plugins/gxp/src/main/java/org/apache/struts2/views/gxp/inject/InjectedObjectContainer.java
 (added)
+++ 
struts/struts2/trunk/plugins/gxp/src/main/java/org/apache/struts2/views/gxp/inject/InjectedObjectContainer.java
 Mon Jan 31 22:14:54 2011
@@ -0,0 +1,22 @@
+package org.apache.struts2.views.gxp.inject;
+
+import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.util.ValueStackFactory;
+
+/**
+ * This class is ugly and hackish.
+ */
+public class InjectedObjectContainer {
+
+  private static ValueStackFactory valueStackFactory;
+  
+  @Inject
+  public static void setValueStackFactory(ValueStackFactory valueStackFactory) 
{
+InjectedObjectContainer.valueStackFactory = valueStackFactory;
+  }
+  
+  public static ValueStackFactory getValueStackFactory() {
+return valueStackFactory;
+  }
+  
+}

Added: struts/struts2/trunk/plugins/gxp/src/main/resources/struts-plugin.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/gxp/src/main/resources/struts-plugin.xml?rev=1065829&view=auto
==
--- struts/struts2/trunk/plugins/gxp/src/main/resources/struts-plugin.xml 
(added)
+++ struts/struts2/trunk/plugins/gxp/src/main/resources/struts-plugin.xml Mon 
Jan 31 22:14:54 2011
@@ -0,0 +1,14 @@
+
+
+http://struts.apache.org/dtds/struts-2.0.dtd";>
+
+
+ 
+
+
+
+
+
+




svn commit: r1065880 - in /struts/struts2/trunk/plugins/json/src: main/java/org/apache/struts2/json/JSONResult.java main/java/org/apache/struts2/json/smd/SMDGenerator.java test/java/org/apache/struts2

2011-01-31 Thread jafl
Author: jafl
Date: Tue Feb  1 01:22:39 2011
New Revision: 1065880

URL: http://svn.apache.org/viewvc?rev=1065880&view=rev
Log:
WW-3498 JSONResult should serialize model, just like JSONInterceptor injects 
into model

Modified:

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/smd/SMDGenerator.java

struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java

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=1065880&r1=1065879&r2=1065880&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
 Tue Feb  1 01:22:39 2011
@@ -213,7 +213,7 @@ public class JSONResult implements Resul
 ValueStack stack = invocation.getStack();
 rootObject = stack.findValue(root);
 } else {
-rootObject = invocation.getAction();
+rootObject = invocation.getStack().peek(); // model overrides 
action
 }
 return rootObject;
 }

Modified: 
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java?rev=1065880&r1=1065879&r2=1065880&view=diff
==
--- 
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java
 (original)
+++ 
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/smd/SMDGenerator.java
 Tue Feb  1 01:22:39 2011
@@ -67,7 +67,7 @@ public class SMDGenerator {
 smd.addSMDMethod(smdMethod);
 
 // find params for this method
-processMethodsParametrs(method, smdMethod);
+processMethodsParameters(method, smdMethod);
 
 } else {
 if (LOG.isDebugEnabled())
@@ -75,7 +75,7 @@ public class SMDGenerator {
 }
 }
 
-private void processMethodsParametrs(Method method, 
org.apache.struts2.json.smd.SMDMethod smdMethod) {
+private void processMethodsParameters(Method method, 
org.apache.struts2.json.smd.SMDMethod smdMethod) {
 int parametersCount = method.getParameterTypes().length;
 if (parametersCount > 0) {
 

Modified: 
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java?rev=1065880&r1=1065879&r2=1065880&view=diff
==
--- 
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
 (original)
+++ 
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
 Tue Feb  1 01:22:39 2011
@@ -75,6 +75,7 @@ public class JSONResultTest extends Stru
 public void testSMDDisabledSMD() throws Exception {
 JSONResult result = new JSONResult();
 SMDActionTest1 action = new SMDActionTest1();
+stack.push(action);
 
 this.invocation.setAction(action);
 result.execute(this.invocation);
@@ -90,6 +91,7 @@ public class JSONResultTest extends Stru
 JSONResult result = new JSONResult();
 result.setEnableSMD(true);
 SMDActionTest1 action = new SMDActionTest1();
+stack.push(action);
 
 this.invocation.setAction(action);
 result.execute(this.invocation);
@@ -106,6 +108,7 @@ public class JSONResultTest extends Stru
 JSONResult result = new JSONResult();
 result.setEnableSMD(true);
 SMDActionTest2 action = new SMDActionTest2();
+stack.push(action);
 
 this.invocation.setAction(action);
 result.execute(this.invocation);
@@ -122,6 +125,7 @@ public class JSONResultTest extends Stru
 JSONResult result = new JSONResult();
 result.setExcludeNullProperties(true);
 TestAction action = new TestAction();
+stack.push(action);
 action.setFoo("fool");
 
 this.invocation.setAction(action);
@@ -138,6 +142,7 @@ public class JSONResultTest extends Stru
 JSONResult result = new JSONResult();
 result.setWrapPrefix("_prefix_");
 TestAction2 action = new TestAction2();
+stack.push(action);
 
 this.invocation.setAction(action);
 result.execute(this.invocation);
@@ -153,6 +158,7 @@ public class JSONResultTest extends Stru
 JSONResult r

[CONF] Confluence Changes in the last 24 hours

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

-
Updated Spaces:
-


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

Pages
-
Routebox edited by  akarpe  (05:51 PM)
https://cwiki.apache.org/confluence/display/CAMEL/Routebox

Articles edited by  davsclaus  (04:28 AM)
https://cwiki.apache.org/confluence/display/CAMEL/Articles



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

Pages
-
OpenCMIS how-to-build edited by  fmui  (11:23 AM)
https://cwiki.apache.org/confluence/display/CMIS/OpenCMIS+how-to-build



Apache Connectors Framework 
(https://cwiki.apache.org/confluence/display/CONNECTORS)

Comments
https://cwiki.apache.org/confluence/display/CONNECTORS/FAQ (3)

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

Pages
-
Index edited by  dkulp  (11:14 PM)
https://cwiki.apache.org/confluence/display/CXF/Index

Banner edited by  dkulp  (09:49 PM)
https://cwiki.apache.org/confluence/display/CXF/Banner

Custom CXF Transport edited by  dkulp  (03:28 PM)
https://cwiki.apache.org/confluence/display/CXF/Custom+CXF+Transport

Distributed OSGi Greeter Demo Walkthrough edited by  dkulp  (03:22 PM)
https://cwiki.apache.org/confluence/display/CXF/Distributed+OSGi+Greeter+Demo+Walkthrough

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

Resources and Articles edited by  mazzag  (03:18 PM)
https://cwiki.apache.org/confluence/display/CXF/Resources+and+Articles

Roadmap edited by  dkulp  (03:15 PM)
https://cwiki.apache.org/confluence/display/CXF/Roadmap

Apache CXF 2.1.4 Release Notes edited by  dkulp  (02:50 PM)
https://cwiki.apache.org/confluence/display/CXF/Apache+CXF+2.1.4+Release+Notes

Apache CXF 2.1.3 Release Notes edited by  dkulp  (02:49 PM)
https://cwiki.apache.org/confluence/display/CXF/Apache+CXF+2.1.3+Release+Notes



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

Pages
-
Banner edited by  dkulp  (10:22 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Banner

CXF_Eclipse_Plugin_Instructions edited by  dkulp  (04:51 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/CXF_Eclipse_Plugin_Instructions

SOAP over JMS 1.0 support edited by  dkulp  (04:49 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/SOAP+over+JMS+1.0+support

Developing a Consumer edited by  dkulp  (04:49 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Developing+a+Consumer

Defining Contract first webservices with wsdl generation from java edited by  
dkulp  (04:49 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Defining+Contract+first+webservices+with+wsdl+generation+from+java

JAX-RS Client API edited by  dkulp  (04:43 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Client+API

JAX-RS and JAX-WS edited by  dkulp  (04:42 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+and+JAX-WS

JAX-RS Redirection edited by  dkulp  (04:41 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Redirection

JAX-RS edited by  dkulp  (04:36 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS

How-Tos edited by  dkulp  (04:33 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/How-Tos

Interceptors edited by  dkulp  (04:19 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Interceptors

Client HTTP Transport (including SSL support) edited by  dkulp  (04:00 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Client+HTTP+Transport+%28including+SSL+support%29

Ant Tasks (2.0.x and 2.1.x) edited by  dkulp  (03:59 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Ant+Tasks+%282.0.x+and+2.1.x%29

A simple JAX-WS service edited by  dkulp  (03:57 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/A+simple+JAX-WS+service

JAXB edited by  mazzag  (03:19 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/JAXB

DataBindings edited by  mazzag  (03:15 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/DataBindings

RESTful Services edited by  gliesian  (01:18 PM)
https://cwiki.apache.org/confluence/display/CXF20DOC/RESTful+Services

Sample Projects edited by  gliesian  (10:14 AM)
https://cwiki.apache.org/confluence/display/CXF20DOC/Sample+Projects



Apache Directory Server v1.5 
(https://cwiki.apache.org/confluence/display/DIRxSRVx11)

Pages
-
Codec Subsystem edited by  akarasulu  (12:17 AM)
https://cwiki.apache.org/confluence/display/DIRxSRVx11/Codec+Subsystem



Apache Geronimo v3.0 (https://cwiki.apache.org/confluence/display/GMOxDOC30)

P