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);