Skip to content

Commit

Permalink
Use Apache "commons-fileupload2" javax bundles
Browse files Browse the repository at this point in the history
  • Loading branch information
ifurnadjiev committed Jun 26, 2024
1 parent 0b9dc0c commit cbb602a
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 27 deletions.
5 changes: 2 additions & 3 deletions bundles/org.eclipse.rap.fileupload/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.rap.rwt;bundle-version="[4.0.0,5.0.0)"
Import-Package: javax.servlet;version="3.1.0",
javax.servlet.http;version="3.1.0",
org.apache.commons.fileupload;version="[1.4.0,2.0.0)",
org.apache.commons.fileupload.disk;version="[1.4.0,2.0.0)",
org.apache.commons.fileupload.servlet;version="[1.4.0,2.0.0)",
org.apache.commons.fileupload2.core;version="[2.0.0, 3.0.0)",
org.apache.commons.fileupload2.javax;version="[2.0.0, 3.0.0)",
org.apache.commons.io;version="[2.11.0,3.0.0)"
Export-Package: org.eclipse.rap.fileupload;version="4.0.0",
org.eclipse.rap.fileupload.internal;version="4.0.0";x-friends:="org.eclipse.rap.fileupload.test"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2011, 2023 EclipseSource and others.
* Copyright (c) 2011, 2024 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
Expand All @@ -16,21 +16,19 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;
import org.apache.commons.fileupload.ProgressListener;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload2.core.FileItemInput;
import org.apache.commons.fileupload2.core.FileItemInputIterator;
import org.apache.commons.fileupload2.core.FileUploadByteCountLimitException;
import org.apache.commons.fileupload2.core.ProgressListener;
import org.apache.commons.fileupload2.javax.JavaxServletFileUpload;
import org.apache.commons.io.FilenameUtils;
import org.eclipse.rap.fileupload.FileDetails;
import org.eclipse.rap.fileupload.FileUploadHandler;
import org.eclipse.rap.fileupload.FileUploadReceiver;
import org.eclipse.rap.fileupload.UploadSizeLimitExceededException;
import org.eclipse.rap.fileupload.UploadTimeLimitExceededException;
import org.eclipse.rap.rwt.internal.util.HTTP;


@SuppressWarnings( "restriction" )
final class FileUploadProcessor {

private final FileUploadHandler handler;
Expand All @@ -51,10 +49,10 @@ void handleFileUpload( HttpServletRequest request, HttpServletResponse response
deadline = System.currentTimeMillis() + handler.getUploadTimeLimit();
}
try {
ServletFileUpload upload = createUpload();
FileItemIterator iter = upload.getItemIterator( request );
JavaxServletFileUpload upload = createUpload();
FileItemInputIterator iter = upload.getItemIterator( request );
while( iter.hasNext() ) {
FileItemStream item = iter.next();
FileItemInput item = iter.next();
if( !item.isFormField() ) {
receive( item );
}
Expand All @@ -69,7 +67,7 @@ void handleFileUpload( HttpServletRequest request, HttpServletResponse response
}
} catch( Exception exception ) {
Throwable cause = exception.getCause();
if( cause instanceof FileSizeLimitExceededException ) {
if( exception instanceof FileUploadByteCountLimitException ) {
long sizeLimit = handler.getMaxFileSize();
exception = new UploadSizeLimitExceededException( sizeLimit, fileName );
} else if( cause instanceof UploadTimeLimitExceededException ) {
Expand All @@ -87,11 +85,10 @@ void handleFileUpload( HttpServletRequest request, HttpServletResponse response
}
}

private ServletFileUpload createUpload() {
ServletFileUpload upload = new ServletFileUpload();
private JavaxServletFileUpload createUpload() {
JavaxServletFileUpload upload = new JavaxServletFileUpload();
upload.setFileSizeMax( handler.getMaxFileSize() );
upload.setProgressListener( createProgressListener() );
upload.setHeaderEncoding( HTTP.CHARSET_UTF_8 );
return upload;
}

Expand Down Expand Up @@ -119,8 +116,8 @@ public void update( long totalBytesRead, long contentLength, int item ) {
return result;
}

private void receive( FileItemStream item ) throws IOException {
InputStream stream = item.openStream();
private void receive( FileItemInput item ) throws IOException {
InputStream stream = item.getInputStream();
try {
fileName = FilenameUtils.getName( item.getName() );
String contentType = item.getContentType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload2.javax.JavaxServletFileUpload;
import org.eclipse.rap.fileupload.FileUploadHandler;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.service.ServiceHandler;
Expand Down Expand Up @@ -47,7 +47,7 @@ public void service( HttpServletRequest request, HttpServletResponse response )
} else if( !"POST".equals( request.getMethod().toUpperCase() ) ) {
String message = "Only POST requests allowed";
response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED, message );
} else if( !ServletFileUpload.isMultipartContent( request ) ) {
} else if( !JavaxServletFileUpload.isMultipartContent( request ) ) {
String message = "Content must be in multipart type";
response.sendError( HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, message );
} else {
Expand Down
5 changes: 2 additions & 3 deletions tests/org.eclipse.rap.fileupload.test/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ Bundle-Name: %Bundle-Name
Bundle-Vendor: %Bundle-Vendor
Import-Package: javax.servlet;version="3.1.0",
javax.servlet.http;version="3.1.0",
org.apache.commons.fileupload;version="1.4.0",
org.apache.commons.fileupload.disk;version="1.4.0",
org.apache.commons.fileupload.servlet;version="1.4.0",
org.apache.commons.fileupload2.core;version="[2.0.0, 3.0.0)",
org.apache.commons.fileupload2.javax;version="[2.0.0, 3.0.0)",
org.eclipse.rap.rwt.testfixture;version="[4.0.0,5.0.0)",
org.eclipse.rap.rwt.testfixture.internal;version="[4.0.0,5.0.0)",
org.eclipse.rap.rwt.testfixture.internal.engine;version="[4.0.0,5.0.0)",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2011, 2015 EclipseSource and others.
* Copyright (c) 2011, 2024 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
Expand Down Expand Up @@ -94,7 +94,7 @@ public void uploadProgress( FileUploadEvent info ) {
serviceHandler.service( RWT.getRequest(), RWT.getResponse() );

assertEquals( 0, getResponseErrorStatus() );
String expected = "progress(4096/12134).progress(8174/12134).progress(12134/12134).finished.";
String expected = "progress(8192/12134).progress(12134/12134).finished.";
assertEquals( expected, testListener.getLog() );
FileUploadEvent uploadedItem = testListener.getLastEvent();
assertEquals( content, new String( testReceiver.getContent() ) );
Expand Down

0 comments on commit cbb602a

Please sign in to comment.