svn commit: r1065530 - /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ChainingInterceptor.java
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
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/
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
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
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
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
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
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
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
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