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 <garydgreg...@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());
+    }
+    
+}

Reply via email to