You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ni...@apache.org on 2008/12/16 22:53:05 UTC

svn commit: r727179 - in /struts/struts1/branches/STRUTS_1_3_BRANCH: apps/examples/src/main/java/org/apache/struts/webapp/upload/ apps/examples/src/main/webapp/ apps/examples/src/main/webapp/WEB-INF/upload/ apps/examples/src/main/webapp/upload/ core/sr...

Author: niallp
Date: Tue Dec 16 13:53:05 2008
New Revision: 727179

URL: http://svn.apache.org/viewvc?rev=727179&view=rev
Log:
Fix (and test) for STR-3173 NullPointerException in org.apache.struts.util.RequestUtils.rationalizeMultipleFileProperty - reported by Xavier Poinsard

Added:
    struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload2.jsp   (contents, props changed)
      - copied, changed from r727129, struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload.jsp
Modified:
    struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/java/org/apache/struts/webapp/upload/UploadAction.java
    struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/WEB-INF/upload/struts-config.xml
    struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/welcome.jsp
    struts/struts1/branches/STRUTS_1_3_BRANCH/core/src/main/java/org/apache/struts/util/RequestUtils.java

Modified: struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/java/org/apache/struts/webapp/upload/UploadAction.java
URL: http://svn.apache.org/viewvc/struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/java/org/apache/struts/webapp/upload/UploadAction.java?rev=727179&r1=727178&r2=727179&view=diff
==============================================================================
--- struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/java/org/apache/struts/webapp/upload/UploadAction.java (original)
+++ struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/java/org/apache/struts/webapp/upload/UploadAction.java Tue Dec 16 13:53:05 2008
@@ -79,6 +79,11 @@
             //retrieve the file representation
             FormFile file = theForm.getTheFile();
 
+            // Following is to test fix for STR-3173
+            if (file == null) {
+                file = (FormFile)form.getMultipartRequestHandler().getFileElements().get("otherFile");
+            }
+
             //retrieve the file name
             String fileName= file.getFileName();
 

Modified: struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/WEB-INF/upload/struts-config.xml
URL: http://svn.apache.org/viewvc/struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/WEB-INF/upload/struts-config.xml?rev=727179&r1=727178&r2=727179&view=diff
==============================================================================
--- struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/WEB-INF/upload/struts-config.xml (original)
+++ struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/WEB-INF/upload/struts-config.xml Tue Dec 16 13:53:05 2008
@@ -38,6 +38,20 @@
             <forward name="display" path="/display.jsp"/>
         </action>
 
+
+        <!-- Upload Actions to test Bug# STR-3173 -->
+        <action path="/upload2" forward="/upload2.jsp"/>
+
+        <action path="/upload-submit2"
+                type="org.apache.struts.webapp.upload.UploadAction"
+                name="uploadForm"
+                scope="request"
+                validate="true"
+                input="input">
+            <forward name="input" path="/upload2.jsp"/>
+            <forward name="display" path="/display.jsp"/>
+        </action>
+
     </action-mappings>
 
     <!-- This is where you set the maximum file size for your file uploads.

Copied: struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload2.jsp (from r727129, struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload.jsp)
URL: http://svn.apache.org/viewvc/struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload2.jsp?p2=struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload2.jsp&p1=struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload.jsp&r1=727129&r2=727179&rev=727179&view=diff
==============================================================================
--- struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload.jsp (original)
+++ struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload2.jsp Tue Dec 16 13:53:05 2008
@@ -23,6 +23,7 @@
     <title>File Upload Example</title>
   </head>
   <body>
+<h2>Test for STRUTS-3173</h2>
 <logic:messagesPresent>
    <ul>
    <html:messages id="error">
@@ -35,11 +36,11 @@
             The most important part is to declare your form's enctype to be "multipart/form-data",
             and to have a form:file element that maps to your ActionForm's FormFile property
     -->
-    <html:form action="upload-submit.do?queryParam=Successful" enctype="multipart/form-data">
+    <html:form action="upload-submit2.do?queryParam=Successful" enctype="multipart/form-data">
     <p>Please enter some text, just to demonstrate the handling of text elements as opposed to file elements: <br />
     <html:text property="theText" errorStyle="background-color: yellow"/></p>
     <p>Please select the file that you would like to upload: <br />
-    <html:file property="theFile"  errorStyle="background-color: yellow" /></p>
+    <input type="file" name="otherFile" /></p>
     <p>If you would rather write this file to another file, please check here: <br />
     <html:checkbox property="writeFile" /></p>
     <p>If you checked the box to write to a file, please specify the file path here: <br />

Propchange: struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload2.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload2.jsp
------------------------------------------------------------------------------
    svn:keywords = author date id

Propchange: struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/upload/upload2.jsp
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/welcome.jsp
URL: http://svn.apache.org/viewvc/struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/welcome.jsp?rev=727179&r1=727178&r2=727179&view=diff
==============================================================================
--- struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/welcome.jsp (original)
+++ struts/struts1/branches/STRUTS_1_3_BRANCH/apps/examples/src/main/webapp/welcome.jsp Tue Dec 16 13:53:05 2008
@@ -37,6 +37,7 @@
     <li><html:link module="/exercise" action="/welcome">Taglib Test Pages</html:link></li>
 
     <li><html:link module="/upload" action="/upload">Upload examples</html:link></li>
+    <li><html:link module="/upload" action="/upload2">Upload Test for STR-3173</html:link></li>
 
     <li><html:link module="/validator" action="/welcome">Validator and Localization examples</html:link></li>
 

Modified: struts/struts1/branches/STRUTS_1_3_BRANCH/core/src/main/java/org/apache/struts/util/RequestUtils.java
URL: http://svn.apache.org/viewvc/struts/struts1/branches/STRUTS_1_3_BRANCH/core/src/main/java/org/apache/struts/util/RequestUtils.java?rev=727179&r1=727178&r2=727179&view=diff
==============================================================================
--- struts/struts1/branches/STRUTS_1_3_BRANCH/core/src/main/java/org/apache/struts/util/RequestUtils.java (original)
+++ struts/struts1/branches/STRUTS_1_3_BRANCH/core/src/main/java/org/apache/struts/util/RequestUtils.java Tue Dec 16 13:53:05 2008
@@ -503,6 +503,10 @@
         try {
             Class propertyType = PropertyUtils.getPropertyType(bean, name);
 
+            if (propertyType == null) {
+                return parameterValue;
+            }
+
             if (List.class.isAssignableFrom(propertyType)) {
                 ArrayList list = new ArrayList(1);
                 list.add(formFileValue);