You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/06/14 21:11:22 UTC

[commons-fileupload] branch master updated (9b260e5 -> a700589)

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-fileupload.git


    from 9b260e5  Use Charset
     new 814bb5a  Use a default (empty) FileItemHeaders
     new a700589  Pull up method to interface and initialze file item headers for propagation

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../commons/fileupload2/AbstractFileUpload.java    |  9 +++--
 .../commons/fileupload2/FileItemFactory.java       |  8 +++-
 .../commons/fileupload2/FileItemHeaders.java       |  8 ++++
 .../fileupload2/FileItemHeadersProvider.java       |  4 +-
 .../fileupload2/disk/DiskFileItemFactoryTest.java  | 47 ++++++++++++++++++++++
 .../commons/fileupload2/disk/DiskFileItemTest.java | 47 ++++++++++++++++++++++
 6 files changed, 115 insertions(+), 8 deletions(-)
 create mode 100644 commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/disk/DiskFileItemFactoryTest.java
 create mode 100644 commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/disk/DiskFileItemTest.java


[commons-fileupload] 02/02: Pull up method to interface and initialze file item headers for propagation

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-fileupload.git

commit a7005892f2a7b58940ce3829a9aaf3f0a841f9ec
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jun 14 17:11:18 2023 -0400

    Pull up method to interface and initialze file item headers for
    propagation
---
 .../commons/fileupload2/AbstractFileUpload.java    |  6 +--
 .../commons/fileupload2/FileItemFactory.java       |  2 +-
 .../commons/fileupload2/FileItemHeaders.java       |  8 ++++
 .../fileupload2/FileItemHeadersProvider.java       |  4 +-
 .../fileupload2/disk/DiskFileItemFactoryTest.java  | 47 ++++++++++++++++++++++
 .../commons/fileupload2/disk/DiskFileItemTest.java | 47 ++++++++++++++++++++++
 6 files changed, 108 insertions(+), 6 deletions(-)

diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/AbstractFileUpload.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/AbstractFileUpload.java
index b3ece68..d6a2955 100644
--- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/AbstractFileUpload.java
+++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/AbstractFileUpload.java
@@ -309,7 +309,7 @@ public abstract class AbstractFileUpload<T> {
      */
     public FileItemHeaders getParsedHeaders(final String headerPart) {
         final int len = headerPart.length();
-        final FileItemHeadersImpl headers = newFileItemHeaders();
+        final FileItemHeaders headers = newFileItemHeaders();
         int start = 0;
         for (;;) {
             int end = parseEndOfLine(headerPart, start);
@@ -365,7 +365,7 @@ public abstract class AbstractFileUpload<T> {
      *
      * @return The new instance.
      */
-    protected FileItemHeadersImpl newFileItemHeaders() {
+    protected FileItemHeaders newFileItemHeaders() {
         return FileItemBuilder.newFileItemHeaders();
     }
 
@@ -396,7 +396,7 @@ public abstract class AbstractFileUpload<T> {
      * @param headers String with all headers.
      * @param header  Map where to store the current header.
      */
-    private void parseHeaderLine(final FileItemHeadersImpl headers, final String header) {
+    private void parseHeaderLine(final FileItemHeaders headers, final String header) {
         final int colonOffset = header.indexOf(':');
         if (colonOffset == -1) {
             // This header line is malformed, skip it.
diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemFactory.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemFactory.java
index 3732c27..e44bc1c 100644
--- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemFactory.java
+++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemFactory.java
@@ -37,7 +37,7 @@ public interface FileItemFactory {
      */
     abstract class FileItemBuilder<T extends FileItem, B extends FileItemBuilder<T, B>> extends AbstractStreamBuilder<T, B> {
 
-        static FileItemHeadersImpl newFileItemHeaders() {
+        public static FileItemHeaders newFileItemHeaders() {
             return new FileItemHeadersImpl();
         }
 
diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemHeaders.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemHeaders.java
index 06af484..1bbe514 100644
--- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemHeaders.java
+++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemHeaders.java
@@ -23,6 +23,14 @@ import java.util.Iterator;
  */
 public interface FileItemHeaders {
 
+    /**
+     * Adds a header.
+     *
+     * @param name  name
+     * @param value value.
+     */
+    void addHeader(String name, String value);
+
     /**
      * Gets the value of the specified part header as a {@code String}.
      * <p>
diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemHeadersProvider.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemHeadersProvider.java
index 0e8714a..261fb45 100644
--- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemHeadersProvider.java
+++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemHeadersProvider.java
@@ -32,8 +32,8 @@ public interface FileItemHeadersProvider {
     FileItemHeaders getHeaders();
 
     /**
-     * Sets the headers read from within an item. Implementations of {@link FileItem} or {@link FileItemInput} should implement this interface to be able
-     * to get the raw headers found within the item header block.
+     * Sets the headers read from within an item. Implementations of {@link FileItem} or {@link FileItemInput} should implement this interface to be able to get
+     * the raw headers found within the item header block.
      *
      * @param headers the instance that holds onto the headers for this instance.
      */
diff --git a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/disk/DiskFileItemFactoryTest.java b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/disk/DiskFileItemFactoryTest.java
new file mode 100644
index 0000000..230ed7f
--- /dev/null
+++ b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/disk/DiskFileItemFactoryTest.java
@@ -0,0 +1,47 @@
+/*
+ * 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.disk;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+
+import org.apache.commons.fileupload2.FileItemHeaders;
+import org.apache.commons.fileupload2.disk.DiskFileItem.Builder;
+import org.apache.commons.fileupload2.FileItemFactory.FileItemBuilder;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests for {@link DiskFileItem}.
+ */
+public class DiskFileItemFactoryTest {
+    
+    @Test
+    void testHeaders() {
+        final DiskFileItemFactory factory = DiskFileItemFactory.builder().get();
+        final Builder fileItemBuilder = factory.fileItemBuilder();
+        assertNotNull(fileItemBuilder.getFileItemHeaders());
+        final DiskFileItem fileItem = fileItemBuilder.get();
+        assertNotNull(fileItem.getHeaders(), "Missing default headers (empty)");
+        assertFalse(fileItem.getHeaders().getHeaderNames().hasNext());
+        final FileItemHeaders fileItemHeaders = FileItemBuilder.newFileItemHeaders();
+        assertNotNull(fileItemHeaders);
+        fileItem.setHeaders(fileItemHeaders);
+        assertSame(fileItemHeaders, fileItem.getHeaders());
+    }
+    
+}
diff --git a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/disk/DiskFileItemTest.java b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/disk/DiskFileItemTest.java
new file mode 100644
index 0000000..a06309b
--- /dev/null
+++ b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/disk/DiskFileItemTest.java
@@ -0,0 +1,47 @@
+/*
+ * 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.disk;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+
+import org.apache.commons.fileupload2.FileItemFactory.FileItemBuilder;
+import org.apache.commons.fileupload2.FileItemHeaders;
+import org.apache.commons.fileupload2.disk.DiskFileItem.Builder;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests for {@link DiskFileItem}.
+ */
+public class DiskFileItemTest {
+    
+    @Test
+    void testBuilderHeaders() {
+        final Builder builder = DiskFileItem.builder();
+        assertNotNull(builder.getFileItemHeaders());
+        final DiskFileItem fileItem = builder.get();
+        assertNotNull(fileItem.getHeaders(), "Missing default headers (empty)");
+        assertFalse(fileItem.getHeaders().getHeaderNames().hasNext());
+        assertNotNull(fileItem.getHeaders());
+        final FileItemHeaders fileItemHeaders = FileItemBuilder.newFileItemHeaders();
+        assertNotNull(fileItemHeaders);
+        fileItem.setHeaders(fileItemHeaders);
+        assertSame(fileItemHeaders, fileItem.getHeaders());
+    }
+    
+}


[commons-fileupload] 01/02: Use a default (empty) FileItemHeaders

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-fileupload.git

commit 814bb5abb5adea53023f01a7794b560bfb3441ad
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jun 14 11:59:42 2023 -0400

    Use a default (empty) FileItemHeaders
---
 .../java/org/apache/commons/fileupload2/AbstractFileUpload.java   | 3 ++-
 .../main/java/org/apache/commons/fileupload2/FileItemFactory.java | 8 ++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/AbstractFileUpload.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/AbstractFileUpload.java
index a3d460b..b3ece68 100644
--- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/AbstractFileUpload.java
+++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/AbstractFileUpload.java
@@ -28,6 +28,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 
+import org.apache.commons.fileupload2.FileItemFactory.FileItemBuilder;
 import org.apache.commons.io.IOUtils;
 
 /**
@@ -365,7 +366,7 @@ public abstract class AbstractFileUpload<T> {
      * @return The new instance.
      */
     protected FileItemHeadersImpl newFileItemHeaders() {
-        return new FileItemHeadersImpl();
+        return FileItemBuilder.newFileItemHeaders();
     }
 
     /**
diff --git a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemFactory.java b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemFactory.java
index bdb48d6..3732c27 100644
--- a/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemFactory.java
+++ b/commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/FileItemFactory.java
@@ -37,6 +37,10 @@ public interface FileItemFactory {
      */
     abstract class FileItemBuilder<T extends FileItem, B extends FileItemBuilder<T, B>> extends AbstractStreamBuilder<T, B> {
 
+        static FileItemHeadersImpl newFileItemHeaders() {
+            return new FileItemHeadersImpl();
+        }
+
         /**
          * Field name.
          */
@@ -60,7 +64,7 @@ public interface FileItemFactory {
         /**
          * File item headers.
          */
-        private FileItemHeaders fileItemHeaders;
+        private FileItemHeaders fileItemHeaders = newFileItemHeaders();
 
         /**
          * The instance of {@link FileCleaningTracker}, which is responsible for deleting temporary files.
@@ -115,7 +119,7 @@ public interface FileItemFactory {
         }
 
         public B setFileItemHeaders(final FileItemHeaders fileItemHeaders) {
-            this.fileItemHeaders = fileItemHeaders;
+            this.fileItemHeaders = fileItemHeaders != null ? fileItemHeaders : newFileItemHeaders();
             return asThis();
         }