From 1bb61b675b00866aea512b12adf2678201dca609 Mon Sep 17 00:00:00 2001 From: Martin Tzvetanov Grigorov Date: Mon, 30 Aug 2021 11:22:07 +0300 Subject: [PATCH] FILEUPLOAD-342 Remove all deprecated classes and their tests --- .../commons/fileupload2/DefaultFileItem.java | 71 ---- .../fileupload2/DefaultFileItemFactory.java | 104 ----- .../commons/fileupload2/DiskFileUpload.java | 203 ---------- .../fileupload2/pub/UnknownSizeException.java | 55 --- .../fileupload2/DefaultFileItemTest.java | 355 ------------------ .../fileupload2/DiskFileUploadTest.java | 104 ----- 6 files changed, 892 deletions(-) delete mode 100644 src/main/java/org/apache/commons/fileupload2/DefaultFileItem.java delete mode 100644 src/main/java/org/apache/commons/fileupload2/DefaultFileItemFactory.java delete mode 100644 src/main/java/org/apache/commons/fileupload2/DiskFileUpload.java delete mode 100644 src/main/java/org/apache/commons/fileupload2/pub/UnknownSizeException.java delete mode 100644 src/test/java/org/apache/commons/fileupload2/DefaultFileItemTest.java delete mode 100644 src/test/java/org/apache/commons/fileupload2/DiskFileUploadTest.java diff --git a/src/main/java/org/apache/commons/fileupload2/DefaultFileItem.java b/src/main/java/org/apache/commons/fileupload2/DefaultFileItem.java deleted file mode 100644 index 3e55865aa..000000000 --- a/src/main/java/org/apache/commons/fileupload2/DefaultFileItem.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.fileupload2; - -import java.io.File; - -import org.apache.commons.fileupload2.disk.DiskFileItem; - -/** - *

The default implementation of the - * {@link org.apache.commons.fileupload2.FileItem FileItem} interface. - * - *

After retrieving an instance of this class from a {@link - * org.apache.commons.fileupload2.DiskFileUpload DiskFileUpload} instance (see - * {@link org.apache.commons.fileupload2.DiskFileUpload - * #parseRequest(javax.servlet.http.HttpServletRequest)}), you may - * either request all contents of file at once using {@link #get()} or - * request an {@link java.io.InputStream InputStream} with - * {@link #getInputStream()} and process the file without attempting to load - * it into memory, which may come handy with large files. - * - * @deprecated 1.1 Use {@code DiskFileItem} instead. - */ -@Deprecated -public class DefaultFileItem - extends DiskFileItem { - - // ----------------------------------------------------------- Constructors - - /** - * Constructs a new {@code DefaultFileItem} instance. - * - * @param fieldName The name of the form field. - * @param contentType The content type passed by the browser or - * {@code null} if not specified. - * @param isFormField Whether or not this item is a plain form field, as - * opposed to a file upload. - * @param fileName The original file name in the user's file system, or - * {@code null} if not specified. - * @param sizeThreshold The threshold, in bytes, below which items will be - * retained in memory and above which they will be - * stored as a file. - * @param repository The data repository, which is the directory in - * which files will be created, should the item size - * exceed the threshold. - * - * @deprecated 1.1 Use {@code DiskFileItem} instead. - */ - @Deprecated - public DefaultFileItem(final String fieldName, final String contentType, - final boolean isFormField, final String fileName, final int sizeThreshold, - final File repository) { - super(fieldName, contentType, isFormField, fileName, sizeThreshold, - repository); - } - -} diff --git a/src/main/java/org/apache/commons/fileupload2/DefaultFileItemFactory.java b/src/main/java/org/apache/commons/fileupload2/DefaultFileItemFactory.java deleted file mode 100644 index 5c9d34ab4..000000000 --- a/src/main/java/org/apache/commons/fileupload2/DefaultFileItemFactory.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.fileupload2; - -import java.io.File; - -import org.apache.commons.fileupload2.disk.DiskFileItemFactory; - -/** - *

The default {@link org.apache.commons.fileupload2.FileItemFactory} - * implementation. This implementation creates - * {@link org.apache.commons.fileupload2.FileItem} instances which keep their - * content either in memory, for smaller items, or in a temporary file on disk, - * for larger items. The size threshold, above which content will be stored on - * disk, is configurable, as is the directory in which temporary files will be - * created.

- * - *

If not otherwise configured, the default configuration values are as - * follows: - *

- * - * @deprecated 1.1 Use {@code DiskFileItemFactory} instead. - */ -@Deprecated -public class DefaultFileItemFactory extends DiskFileItemFactory { - - // ----------------------------------------------------------- Constructors - - /** - * Constructs an unconfigured instance of this class. The resulting factory - * may be configured by calling the appropriate setter methods. - * - * @deprecated 1.1 Use {@code DiskFileItemFactory} instead. - */ - @Deprecated - public DefaultFileItemFactory() { - } - - /** - * Constructs a preconfigured instance of this class. - * - * @param sizeThreshold The threshold, in bytes, below which items will be - * retained in memory and above which they will be - * stored as a file. - * @param repository The data repository, which is the directory in - * which files will be created, should the item size - * exceed the threshold. - * - * @deprecated 1.1 Use {@code DiskFileItemFactory} instead. - */ - @Deprecated - public DefaultFileItemFactory(final int sizeThreshold, final File repository) { - super(sizeThreshold, repository); - } - - // --------------------------------------------------------- Public Methods - - /** - * Create a new {@link org.apache.commons.fileupload2.DefaultFileItem} - * instance from the supplied parameters and the local factory - * configuration. - * - * @param fieldName The name of the form field. - * @param contentType The content type of the form field. - * @param isFormField {@code true} if this is a plain form field; - * {@code false} otherwise. - * @param fileName The name of the uploaded file, if any, as supplied - * by the browser or other client. - * - * @return The newly created file item. - * - * @deprecated 1.1 Use {@code DiskFileItemFactory} instead. - */ - @Override - @Deprecated - public FileItem createItem( - final String fieldName, - final String contentType, - final boolean isFormField, - final String fileName - ) { - return new DefaultFileItem(fieldName, contentType, - isFormField, fileName, getSizeThreshold(), getRepository()); - } - -} diff --git a/src/main/java/org/apache/commons/fileupload2/DiskFileUpload.java b/src/main/java/org/apache/commons/fileupload2/DiskFileUpload.java deleted file mode 100644 index 9e49f86d0..000000000 --- a/src/main/java/org/apache/commons/fileupload2/DiskFileUpload.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.fileupload2; - -import java.io.File; -import java.util.List; -import javax.servlet.http.HttpServletRequest; - -import org.apache.commons.fileupload2.servlet.ServletRequestContext; - -/** - *

High level API for processing file uploads.

- * - *

This class handles multiple files per single HTML widget, sent using - * {@code multipart/mixed} encoding type, as specified by - * RFC 1867. Use {@link - * org.apache.commons.fileupload2.servlet.ServletFileUpload#parseRequest(HttpServletRequest)} - * to acquire a list of {@link org.apache.commons.fileupload2.FileItem}s - * associated with a given HTML widget.

- * - *

Individual parts will be stored in temporary disk storage or in memory, - * depending on their size, and will be available as {@link - * org.apache.commons.fileupload2.FileItem}s.

- * - * @deprecated 1.1 Use {@code ServletFileUpload} together with - * {@code DiskFileItemFactory} instead. - */ -@Deprecated -public class DiskFileUpload - extends FileUploadBase { - - // ----------------------------------------------------------- Data members - - /** - * The factory to use to create new form items. - */ - private DefaultFileItemFactory fileItemFactory; - - // ----------------------------------------------------------- Constructors - - /** - * Constructs an instance of this class which uses the default factory to - * create {@code FileItem} instances. - * - * @see #DiskFileUpload(DefaultFileItemFactory fileItemFactory) - * - * @deprecated 1.1 Use {@code FileUpload} instead. - */ - @Deprecated - public DiskFileUpload() { - this.fileItemFactory = new DefaultFileItemFactory(); - } - - /** - * Constructs an instance of this class which uses the supplied factory to - * create {@code FileItem} instances. - * - * @see #DiskFileUpload() - * @param fileItemFactory The file item factory to use. - * - * @deprecated 1.1 Use {@code FileUpload} instead. - */ - @Deprecated - public DiskFileUpload(final DefaultFileItemFactory fileItemFactory) { - this.fileItemFactory = fileItemFactory; - } - - // ----------------------------------------------------- Property accessors - - /** - * Returns the factory class used when creating file items. - * - * @return The factory class for new file items. - * - * @deprecated 1.1 Use {@code FileUpload} instead. - */ - @Override - @Deprecated - public FileItemFactory getFileItemFactory() { - return fileItemFactory; - } - - /** - * Sets the factory class to use when creating file items. The factory must - * be an instance of {@code DefaultFileItemFactory} or a subclass - * thereof, or else a {@code ClassCastException} will be thrown. - * - * @param factory The factory class for new file items. - * - * @deprecated 1.1 Use {@code FileUpload} instead. - */ - @Override - @Deprecated - public void setFileItemFactory(final FileItemFactory factory) { - this.fileItemFactory = (DefaultFileItemFactory) factory; - } - - /** - * Returns the size threshold beyond which files are written directly to - * disk. - * - * @return The size threshold, in bytes. - * - * @see #setSizeThreshold(int) - * - * @deprecated 1.1 Use {@code DiskFileItemFactory} instead. - */ - @Deprecated - public int getSizeThreshold() { - return fileItemFactory.getSizeThreshold(); - } - - /** - * Sets the size threshold beyond which files are written directly to disk. - * - * @param sizeThreshold The size threshold, in bytes. - * - * @see #getSizeThreshold() - * - * @deprecated 1.1 Use {@code DiskFileItemFactory} instead. - */ - @Deprecated - public void setSizeThreshold(final int sizeThreshold) { - fileItemFactory.setSizeThreshold(sizeThreshold); - } - - /** - * Returns the location used to temporarily store files that are larger - * than the configured size threshold. - * - * @return The path to the temporary file location. - * - * @see #setRepositoryPath(String) - * - * @deprecated 1.1 Use {@code DiskFileItemFactory} instead. - */ - @Deprecated - public String getRepositoryPath() { - return fileItemFactory.getRepository().getPath(); - } - - /** - * Sets the location used to temporarily store files that are larger - * than the configured size threshold. - * - * @param repositoryPath The path to the temporary file location. - * - * @see #getRepositoryPath() - * - * @deprecated 1.1 Use {@code DiskFileItemFactory} instead. - */ - @Deprecated - public void setRepositoryPath(final String repositoryPath) { - fileItemFactory.setRepository(new File(repositoryPath)); - } - - // --------------------------------------------------------- Public methods - - /** - * Processes an RFC 1867 - * compliant {@code multipart/form-data} stream. If files are stored - * on disk, the path is given by {@code getRepository()}. - * - * @param req The servlet request to be parsed. Must be non-null. - * @param sizeThreshold The max size in bytes to be stored in memory. - * @param sizeMax The maximum allowed upload size, in bytes. - * @param path The location where the files should be stored. - * - * @return A list of {@code FileItem} instances parsed from the - * request, in the order that they were transmitted. - * - * @throws FileUploadException if there are problems reading/parsing - * the request or storing files. - * - * @deprecated 1.1 Use {@code ServletFileUpload} instead. - */ - @Deprecated - public List parseRequest(final HttpServletRequest req, - final int sizeThreshold, - final long sizeMax, final String path) - throws FileUploadException { - setSizeThreshold(sizeThreshold); - setSizeMax(sizeMax); - setRepositoryPath(path); - ServletRequestContext context = new ServletRequestContext(req); - return parseRequest(context); - } - -} diff --git a/src/main/java/org/apache/commons/fileupload2/pub/UnknownSizeException.java b/src/main/java/org/apache/commons/fileupload2/pub/UnknownSizeException.java deleted file mode 100644 index 1f4e0bf18..000000000 --- a/src/main/java/org/apache/commons/fileupload2/pub/UnknownSizeException.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.fileupload2.pub; - -import org.apache.commons.fileupload2.FileUploadException; - -/** - * Thrown to indicate that the request size is not specified. In other - * words, it is thrown, if the content-length header is missing or - * contains the value -1. - * - * @deprecated 1.2 As of commons-fileupload 1.2, the presence of a - * content-length header is no longer required. - */ -@Deprecated -public class UnknownSizeException - extends FileUploadException { - - /** - * The exceptions UID, for serializing an instance. - */ - private static final long serialVersionUID = 7062279004812015273L; - - /** - * Constructs a {@code UnknownSizeException} with no - * detail message. - */ - public UnknownSizeException() { - } - - /** - * Constructs an {@code UnknownSizeException} with - * the specified detail message. - * - * @param message The detail message. - */ - public UnknownSizeException(final String message) { - super(message); - } - -} diff --git a/src/test/java/org/apache/commons/fileupload2/DefaultFileItemTest.java b/src/test/java/org/apache/commons/fileupload2/DefaultFileItemTest.java deleted file mode 100644 index ee662d58e..000000000 --- a/src/test/java/org/apache/commons/fileupload2/DefaultFileItemTest.java +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.fileupload2; - -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; -import java.io.UncheckedIOException; -import org.apache.commons.io.FileUtils; - - -import org.junit.jupiter.api.Test; - -/** - * Unit tests for {@link org.apache.commons.fileupload2.DefaultFileItem}. - */ -@SuppressWarnings({"deprecation", "javadoc"}) // unit tests for deprecated class -public class DefaultFileItemTest { - - /** - * Content type for regular form items. - */ - private static final String TEXT_CONTENT_TYPE = "text/plain"; - - /** - * Content type for file uploads. - */ - private static final String FILE_CONTENT_TYPE = "application/octet-stream"; - - /** - * Very low threshold for testing memory versus disk options. - */ - private static final int THRESHOLD = 16; - - /** - * Test construction of a regular text field. - */ - @Test - public void testTextFieldConstruction() { - final FileItemFactory factory = createFactory(null); - final String textFieldName = "textField"; - - final FileItem item = factory.createItem( - textFieldName, - TEXT_CONTENT_TYPE, - true, - null - ); - assertNotNull(item); - assertEquals(item.getFieldName(), textFieldName); - assertEquals(item.getContentType(), TEXT_CONTENT_TYPE); - assertTrue(item.isFormField()); - assertNull(item.getName()); - } - - /** - * Test construction of a file field. - */ - @Test - public void testFileFieldConstruction() { - final FileItemFactory factory = createFactory(null); - final String fileFieldName = "fileField"; - final String fileName = "originalFileName"; - - final FileItem item = factory.createItem( - fileFieldName, - FILE_CONTENT_TYPE, - false, - fileName - ); - assertNotNull(item); - assertEquals(item.getFieldName(), fileFieldName); - assertEquals(item.getContentType(), FILE_CONTENT_TYPE); - assertFalse(item.isFormField()); - assertEquals(item.getName(), fileName); - } - - /** - * Test creation of a field for which the amount of data falls below the - * configured threshold. - */ - @Test - public void testBelowThreshold() { - final FileItemFactory factory = createFactory(null); - final String textFieldName = "textField"; - final String textFieldValue = "0123456789"; - final byte[] testFieldValueBytes = textFieldValue.getBytes(); - - final FileItem item = factory.createItem( - textFieldName, - TEXT_CONTENT_TYPE, - true, - null - ); - assertNotNull(item); - - try { - final OutputStream os = item.getOutputStream(); - os.write(testFieldValueBytes); - os.close(); - } catch (final IOException e) { - fail("Unexpected IOException"); - } - assertTrue(item.isInMemory()); - assertEquals(item.getSize(), testFieldValueBytes.length); - try { - assertArrayEquals(item.get(), testFieldValueBytes); - } catch (UncheckedIOException e) { - fail("Unexpected IOException", e); - } - assertEquals(item.getString(), textFieldValue); - } - - - /** - * Test creation of a field for which the amount of data falls above the - * configured threshold, where no specific repository is configured. - */ - @Test - public void testAboveThresholdDefaultRepository() { - doTestAboveThreshold(null); - } - - /** - * Test creation of a field for which the amount of data falls above the - * configured threshold, where a specific repository is configured. - */ - @Test - public void testAboveThresholdSpecifiedRepository() throws IOException { - final String tempPath = System.getProperty("java.io.tmpdir"); - final String tempDirName = "testAboveThresholdSpecifiedRepository"; - final File tempDir = new File(tempPath, tempDirName); - FileUtils.forceMkdir(tempDir); - doTestAboveThreshold(tempDir); - assertTrue(tempDir.delete()); - } - - /** - * Common code for cases where the amount of data is above the configured - * threshold, but the ultimate destination of the data has not yet been - * determined. - * - * @param repository The directory within which temporary files will be - * created. - */ - public void doTestAboveThreshold(final File repository) { - final FileItemFactory factory = createFactory(repository); - final String textFieldName = "textField"; - final String textFieldValue = "01234567890123456789"; - final byte[] testFieldValueBytes = textFieldValue.getBytes(); - - final FileItem item = factory.createItem( - textFieldName, - TEXT_CONTENT_TYPE, - true, - null - ); - assertNotNull(item); - - try { - final OutputStream os = item.getOutputStream(); - os.write(testFieldValueBytes); - os.close(); - } catch (final IOException e) { - fail("Unexpected IOException"); - } - assertFalse(item.isInMemory()); - assertEquals(item.getSize(), testFieldValueBytes.length); - try { - assertArrayEquals(item.get(), testFieldValueBytes); - } catch (UncheckedIOException e) { - fail("Unexpected IOException", e); - } - assertEquals(item.getString(), textFieldValue); - - assertTrue(item instanceof DefaultFileItem); - final DefaultFileItem dfi = (DefaultFileItem) item; - final File storeLocation = dfi.getStoreLocation(); - assertNotNull(storeLocation); - assertTrue(storeLocation.exists()); - assertEquals(storeLocation.length(), testFieldValueBytes.length); - - if (repository != null) { - assertEquals(storeLocation.getParentFile(), repository); - } - - item.delete(); - } - - - /** - * Creates a new {@code FileItemFactory} and returns it, obscuring - * from the caller the underlying implementation of this interface. - * - * @param repository The directory within which temporary files will be - * created. - * @return the new {@code FileItemFactory} instance. - */ - protected FileItemFactory createFactory(final File repository) { - return new DefaultFileItemFactory(THRESHOLD, repository); - } - - static final String CHARSET_ISO88591 = "ISO-8859-1"; - - static final String CHARSET_ASCII = "US-ASCII"; - - static final String CHARSET_UTF8 = "UTF-8"; - - static final String CHARSET_KOI8_R = "KOI8_R"; - - static final String CHARSET_WIN1251 = "Cp1251"; - - static final int[] SWISS_GERMAN_STUFF_UNICODE = { - 0x47, 0x72, 0xFC, 0x65, 0x7A, 0x69, 0x5F, 0x7A, 0xE4, 0x6D, 0xE4 - }; - - static final int[] SWISS_GERMAN_STUFF_ISO8859_1 = { - 0x47, 0x72, 0xFC, 0x65, 0x7A, 0x69, 0x5F, 0x7A, 0xE4, 0x6D, 0xE4 - }; - - static final int[] SWISS_GERMAN_STUFF_UTF8 = { - 0x47, 0x72, 0xC3, 0xBC, 0x65, 0x7A, 0x69, 0x5F, 0x7A, 0xC3, 0xA4, - 0x6D, 0xC3, 0xA4 - }; - - static final int[] RUSSIAN_STUFF_UNICODE = { - 0x412, 0x441, 0x435, 0x43C, 0x5F, 0x43F, 0x440, 0x438, - 0x432, 0x435, 0x442 - }; - - static final int[] RUSSIAN_STUFF_UTF8 = { - 0xD0, 0x92, 0xD1, 0x81, 0xD0, 0xB5, 0xD0, 0xBC, 0x5F, - 0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, - 0xB5, 0xD1, 0x82 - }; - - static final int[] RUSSIAN_STUFF_KOI8R = { - 0xF7, 0xD3, 0xC5, 0xCD, 0x5F, 0xD0, 0xD2, 0xC9, 0xD7, - 0xC5, 0xD4 - }; - - static final int[] RUSSIAN_STUFF_WIN1251 = { - 0xC2, 0xF1, 0xE5, 0xEC, 0x5F, 0xEF, 0xF0, 0xE8, 0xE2, - 0xE5, 0xF2 - }; - - private static String constructString(final int[] unicodeChars) { - final StringBuilder buffer = new StringBuilder(); - if (unicodeChars != null) { - for (final int unicodeChar : unicodeChars) { - buffer.append((char) unicodeChar); - } - } - return buffer.toString(); - } - - /** - * Test construction of content charset. - */ - public void testContentCharSet() throws Exception { - final FileItemFactory factory = createFactory(null); - - String teststr = constructString(SWISS_GERMAN_STUFF_UNICODE); - - FileItem item = - factory.createItem( - "doesnotmatter", - "text/plain; charset=" + CHARSET_ISO88591, - true, - null); - OutputStream outstream = item.getOutputStream(); - for (final int element : SWISS_GERMAN_STUFF_ISO8859_1) { - outstream.write(element); - } - outstream.close(); - assertEquals(teststr, teststr, item.getString()); - - item = - factory.createItem( - "doesnotmatter", - "text/plain; charset=" + CHARSET_UTF8, - true, - null); - outstream = item.getOutputStream(); - for (final int element : SWISS_GERMAN_STUFF_UTF8) { - outstream.write(element); - } - outstream.close(); - assertEquals(teststr, teststr, item.getString()); - - teststr = constructString(RUSSIAN_STUFF_UNICODE); - - item = - factory.createItem( - "doesnotmatter", - "text/plain; charset=" + CHARSET_KOI8_R, - true, - null); - outstream = item.getOutputStream(); - for (final int element : RUSSIAN_STUFF_KOI8R) { - outstream.write(element); - } - outstream.close(); - assertEquals(teststr, teststr, item.getString()); - - item = - factory.createItem( - "doesnotmatter", - "text/plain; charset=" + CHARSET_WIN1251, - true, - null); - outstream = item.getOutputStream(); - for (final int element : RUSSIAN_STUFF_WIN1251) { - outstream.write(element); - } - outstream.close(); - assertEquals(teststr, teststr, item.getString()); - - item = - factory.createItem( - "doesnotmatter", - "text/plain; charset=" + CHARSET_UTF8, - true, - null); - outstream = item.getOutputStream(); - for (final int element : RUSSIAN_STUFF_UTF8) { - outstream.write(element); - } - outstream.close(); - assertEquals(teststr, teststr, item.getString()); - } - -} diff --git a/src/test/java/org/apache/commons/fileupload2/DiskFileUploadTest.java b/src/test/java/org/apache/commons/fileupload2/DiskFileUploadTest.java deleted file mode 100644 index 8686b05c8..000000000 --- a/src/test/java/org/apache/commons/fileupload2/DiskFileUploadTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.fileupload2; - - -import java.io.File; -import java.nio.charset.StandardCharsets; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.apache.commons.fileupload2.disk.DiskFileItem; -import org.apache.commons.fileupload2.pub.InvalidContentTypeException; -import org.apache.commons.fileupload2.servlet.ServletRequestContext; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.fail; - -/** - * Test for {@link DiskFileUpload}. Remove when deprecated class is removed. - * - * @since 1.4 - */ -@SuppressWarnings({"deprecation"}) // unit tests for deprecated class -public class DiskFileUploadTest { - - private DiskFileUpload upload; - - @BeforeEach - public void setUp() { - upload = new DiskFileUpload(); - } - - @Test - public void testWithInvalidRequest() { - final HttpServletRequest req = HttpServletRequestFactory.createInvalidHttpServletRequest(); - - try { - ServletRequestContext context = new ServletRequestContext(req); - upload.parseRequest(context); - fail("testWithInvalidRequest: expected exception was not thrown"); - } catch (final FileUploadException expected) { - // this exception is expected - } - } - - @Test - public void testWithNullContentType() { - final HttpServletRequest req = HttpServletRequestFactory.createHttpServletRequestWithNullContentType(); - - try { - ServletRequestContext context = new ServletRequestContext(req); - upload.parseRequest(context); - fail("testWithNullContentType: expected exception was not thrown"); - } catch (final InvalidContentTypeException expected) { - // this exception is expected - } catch (final FileUploadException unexpected) { - fail("testWithNullContentType: unexpected exception was thrown"); - } - } - - /** Proposed test for FILEUPLOAD-293. As of yet, doesn't reproduce the problem. - */ - @Test - public void testMoveFile() throws Exception { - final DiskFileUpload myUpload = new DiskFileUpload(); - myUpload.setSizeThreshold(0); - final String content = - "-----1234\r\n" + - "Content-Disposition: form-data; name=\"file\";" - + "filename=\"foo.tab\"\r\n" + - "Content-Type: text/whatever\r\n" + - "\r\n" + - "This is the content of the file\n" + - "\r\n" + - "-----1234--\r\n"; - final byte[] contentBytes = content.getBytes(StandardCharsets.US_ASCII); - final HttpServletRequest request = new MockHttpServletRequest(contentBytes, Constants.CONTENT_TYPE); - ServletRequestContext context = new ServletRequestContext(request); - final List items = myUpload.parseRequest(context); - assertNotNull(items); - assertFalse(items.isEmpty()); - final DiskFileItem dfi = (DiskFileItem) items.get(0); - final File out = File.createTempFile("install", ".tmp"); - dfi.write(out); - } -}