Author: wesw Date: Tue Jun 9 14:12:23 2009 New Revision: 783008 URL: http://svn.apache.org/viewvc?rev=783008&view=rev Log: Updating core to support pluggable upload capabilities WW-3100
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java struts/struts2/trunk/core/src/main/resources/struts-default.xml Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?rev=783008&r1=783007&r2=783008&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java Tue Jun 9 14:12:23 2009 @@ -116,6 +116,11 @@ public static final String STRUTS_MULTIPART_SAVEDIR = "struts.multipart.saveDir"; /** + * The name of the bean that will handle multipart requests + */ + public static final String STRUTS_MULTIPART_HANDLER = "struts.multipart.handler"; + + /** * The org.apache.struts2.dispatcher.multipart.MultiPartRequest parser implementation * for a multipart request (file upload) */ 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=783008&r1=783007&r2=783008&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 Tue Jun 9 14:12:23 2009 @@ -59,6 +59,7 @@ import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.Result; +import com.opensymphony.xwork2.UnknownHandler; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.ConfigurationManager; @@ -135,6 +136,11 @@ private String multipartSaveDir; /** + * Stores the value of StrutsConstants.STRUTS_MULTIPART_HANDLER setting + */ + private String multipartHandlerName; + + /** * Provide list of default configuration files. */ private static final String DEFAULT_CONFIGURATION_PATHS = "struts-default.xml,struts-plugin.xml,struts.xml"; @@ -237,6 +243,11 @@ multipartSaveDir = val; } + @Inject(StrutsConstants.STRUTS_MULTIPART_HANDLER) + public void setMultipartHandler(String val) { + multipartHandlerName = val; + } + @Inject public void setValueStackFactory(ValueStackFactory valueStackFactory) { this.valueStackFactory = valueStackFactory; @@ -682,8 +693,20 @@ String content_type = request.getContentType(); if (content_type != null && content_type.indexOf("multipart/form-data") != -1) { - MultiPartRequest multi = getContainer().getInstance(MultiPartRequest.class); - request = new MultiPartRequestWrapper(multi, request, getSaveDir(servletContext)); + MultiPartRequest mpr = null; + //add all available UnknownHandlers + Set<String> multiNames = getContainer().getInstanceNames(MultiPartRequest.class); + if (multiNames != null) { + for (String multiName : multiNames) { + if (multiName.equals(multipartHandlerName)) { + mpr = getContainer().getInstance(MultiPartRequest.class, multiName); + } + } + } + if (mpr == null ) { + mpr = getContainer().getInstance(MultiPartRequest.class); + } + request = new MultiPartRequestWrapper(mpr, request, getSaveDir(servletContext)); } else { request = new StrutsRequestWrapper(request); } Modified: struts/struts2/trunk/core/src/main/resources/struts-default.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/struts-default.xml?rev=783008&r1=783007&r2=783008&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/resources/struts-default.xml (original) +++ struts/struts2/trunk/core/src/main/resources/struts-default.xml Tue Jun 9 14:12:23 2009 @@ -46,6 +46,7 @@ <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="struts" class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest" scope="default"/> <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="jakarta" class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest" scope="default" /> + <constant name="struts.multipart.handler" value="jakarta" /> <bean type="org.apache.struts2.views.TagLibrary" name="s" class="org.apache.struts2.views.DefaultTagLibrary" />