diff --git a/src/java.net.http/share/classes/jdk/internal/net/http/HttpRequestBuilderImpl.java b/src/java.net.http/share/classes/jdk/internal/net/http/HttpRequestBuilderImpl.java index c68965626b71e..ef0e2b152bb26 100644 --- a/src/java.net.http/share/classes/jdk/internal/net/http/HttpRequestBuilderImpl.java +++ b/src/java.net.http/share/classes/jdk/internal/net/http/HttpRequestBuilderImpl.java @@ -203,7 +203,7 @@ public HttpRequest.Builder GET() { @Override public HttpRequest.Builder POST(BodyPublisher body) { - return method0("POST", requireNonNull(body)); + return method0("POST", requireNonNull(body, "BodyPublisher must be non-null")); } @Override @@ -218,12 +218,12 @@ public HttpRequest.Builder HEAD() { @Override public HttpRequest.Builder PUT(BodyPublisher body) { - return method0("PUT", requireNonNull(body)); + return method0("PUT", requireNonNull(body, "BodyPublisher must be non-null")); } @Override public HttpRequest.Builder method(String method, BodyPublisher body) { - requireNonNull(method); + requireNonNull(method, "HTTP method must be non-null"); if (method.isEmpty()) throw newIAE("illegal method "); if (method.equals("CONNECT")) @@ -234,7 +234,7 @@ public HttpRequest.Builder method(String method, BodyPublisher body) { .replace("\r", "\\r") .replace("\t", "\\t") + "\""); - return method0(method, requireNonNull(body)); + return method0(method, requireNonNull(body, "BodyPublisher must be non-null")); } private HttpRequest.Builder method0(String method, BodyPublisher body) { diff --git a/test/jdk/java/net/httpclient/RequestBuilderTest.java b/test/jdk/java/net/httpclient/RequestBuilderTest.java index 97f4793d63c1f..a83c12f592eb9 100644 --- a/test/jdk/java/net/httpclient/RequestBuilderTest.java +++ b/test/jdk/java/net/httpclient/RequestBuilderTest.java @@ -486,4 +486,41 @@ public void testEquals() { assertNotEquals(builder.build(), newBuilder(uri).header("x", "Z").build()); assertNotEquals(builder.build(), newBuilder(uri).header("z", "y").build()); } + + @Test + public void testNullMessages() { + HttpRequest.Builder builder = HttpRequest.newBuilder(); + + try { + builder.method(null, null); + fail("builder.method(null, null) should have thrown NullPointerException"); + } catch (NullPointerException e) { + assertTrue(e.getMessage().contains("HTTP method"), + "Expected exception message to contain 'HTTP method', but got: " + e.getMessage()); + } + + try { + builder.POST(null); + fail("builder.POST(null) should have thrown NullPointerException"); + } catch (NullPointerException e) { + assertTrue(e.getMessage().contains("BodyPublisher"), + "Expected exception message to contain 'BodyPublisher', but got: " + e.getMessage()); + } + + try { + builder.PUT(null); + fail("builder.PUT(null) should have thrown NullPointerException"); + } catch (NullPointerException e) { + assertTrue(e.getMessage().contains("BodyPublisher"), + "Expected exception message to contain 'BodyPublisher', but got: " + e.getMessage()); + } + + try { + builder.method("PATCH", null); + fail("builder.method(\"PATCH\", null) should have thrown NullPointerException"); + } catch (NullPointerException e) { + assertTrue(e.getMessage().contains("BodyPublisher"), + "Expected exception message to contain 'BodyPublisher', but got: " + e.getMessage()); + } + } }