You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2022/11/04 19:09:22 UTC
[ws-axiom] branch master updated: Make the behavior of ContentType well defined for null values
This is an automated email from the ASF dual-hosted git repository.
veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git
The following commit(s) were added to refs/heads/master by this push:
new 2751be55a Make the behavior of ContentType well defined for null values
2751be55a is described below
commit 2751be55a3e53c1fa886b3ef98a6ea4e8d121967
Author: Andreas Veithen <an...@gmail.com>
AuthorDate: Fri Nov 4 19:09:14 2022 +0000
Make the behavior of ContentType well defined for null values
---
.../src/main/java/org/apache/axiom/mime/ContentType.java | 14 ++++++++++++--
.../org/apache/axiom/mime/ContentTypeBuilderTest.java | 16 ++++++++++++++++
.../test/java/org/apache/axiom/mime/ContentTypeTest.java | 8 ++++++++
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/axiom-api/src/main/java/org/apache/axiom/mime/ContentType.java b/axiom-api/src/main/java/org/apache/axiom/mime/ContentType.java
index 85a8caa3a..dc90fbcbc 100644
--- a/axiom-api/src/main/java/org/apache/axiom/mime/ContentType.java
+++ b/axiom-api/src/main/java/org/apache/axiom/mime/ContentType.java
@@ -24,6 +24,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import javax.activation.MimeType;
@@ -108,7 +109,8 @@ public final class ContentType {
/**
* Set the specified parameter value. If a parameter with the given name already exists, it will
- * be replaced. Note that parameter names are case insensitive.
+ * be replaced. If the value is {@code null}, the parameter will be removed.
+ * Note that parameter names are case insensitive.
*
* @param name
* the parameter name
@@ -117,7 +119,11 @@ public final class ContentType {
* @return the builder
*/
public Builder setParameter(String name, String value) {
- parameters.put(name.toLowerCase(Locale.ENGLISH), value);
+ if (value == null) {
+ parameters.remove(name.toLowerCase(Locale.ENGLISH));
+ } else {
+ parameters.put(name.toLowerCase(Locale.ENGLISH), value);
+ }
return this;
}
@@ -166,6 +172,10 @@ public final class ContentType {
* representing the parameter names, and odd entries the corresponding values)
*/
public ContentType(MediaType mediaType, String... parameters) {
+ Objects.requireNonNull(mediaType);
+ for (String parameter : parameters) {
+ Objects.requireNonNull(parameter);
+ }
this.mediaType = mediaType;
this.parameters = parameters.clone();
}
diff --git a/axiom-api/src/test/java/org/apache/axiom/mime/ContentTypeBuilderTest.java b/axiom-api/src/test/java/org/apache/axiom/mime/ContentTypeBuilderTest.java
index ebf722f54..23788cc1d 100644
--- a/axiom-api/src/test/java/org/apache/axiom/mime/ContentTypeBuilderTest.java
+++ b/axiom-api/src/test/java/org/apache/axiom/mime/ContentTypeBuilderTest.java
@@ -18,6 +18,9 @@
*/
package org.apache.axiom.mime;
+import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertThrows;
+
import junit.framework.TestCase;
public class ContentTypeBuilderTest extends TestCase {
@@ -68,4 +71,17 @@ public class ContentTypeBuilderTest extends TestCase {
builder.removeParameter("charset");
assertEquals("text/xml; x-param=\"value\"", builder.build().toString());
}
+
+ public void testNullParameterName() {
+ ContentType.Builder builder = ContentType.builder();
+ assertThrows(NullPointerException.class, () -> builder.setParameter(null, "value"));
+ }
+
+ public void testNullParameterValue() {
+ ContentType.Builder builder = ContentType.builder();
+ builder.setMediaType(MediaType.TEXT_XML);
+ builder.setParameter("param", "value");
+ builder.setParameter("param", null);
+ assertThat(builder.build().toString()).isEqualTo("text/xml");
+ }
}
diff --git a/axiom-api/src/test/java/org/apache/axiom/mime/ContentTypeTest.java b/axiom-api/src/test/java/org/apache/axiom/mime/ContentTypeTest.java
index f58cde6f6..141e4a790 100644
--- a/axiom-api/src/test/java/org/apache/axiom/mime/ContentTypeTest.java
+++ b/axiom-api/src/test/java/org/apache/axiom/mime/ContentTypeTest.java
@@ -26,6 +26,14 @@ import java.text.ParseException;
import junit.framework.TestCase;
public class ContentTypeTest extends TestCase {
+ public void testNullMediaType() {
+ assertThrows(NullPointerException.class, () -> new ContentType((MediaType)null));
+ }
+
+ public void testNullParameter() {
+ assertThrows(NullPointerException.class, () -> new ContentType(MediaType.TEXT_PLAIN, "charset", null));
+ }
+
public void testImmutable() {
String[] parameters = { "charset", "utf-8" };
ContentType ct = new ContentType(MediaType.TEXT_XML, parameters);