From d54ded0b1e7367eb36178b9295e2c7e2f8e11030 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rade=20Martinovi=C4=87?= <external.Rade.Martinovic@bosch.io>
Date: Tue, 22 Feb 2022 12:45:25 +0100
Subject: [PATCH 1/2] Adds generics to HttpResponseMessage message

---
 .../azure/functions/HttpRequestMessage.java    |  6 ++++--
 .../azure/functions/HttpResponseMessage.java   | 18 ++++++++++--------
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/microsoft/azure/functions/HttpRequestMessage.java b/src/main/java/com/microsoft/azure/functions/HttpRequestMessage.java
index 3c87019..05ee607 100644
--- a/src/main/java/com/microsoft/azure/functions/HttpRequestMessage.java
+++ b/src/main/java/com/microsoft/azure/functions/HttpRequestMessage.java
@@ -64,8 +64,9 @@ public interface HttpRequestMessage<T> {
      * @param status The HTTP status code to return to the caller of the function.
      * @return An {@link HttpResponseMessage.Builder} instance containing the provided status and
      *         empty body.
+     * @param <R> The type of the body object that will be sent as a part of the HTTP Response
      */
-    HttpResponseMessage.Builder createResponseBuilder(HttpStatus status);
+    <R> HttpResponseMessage.Builder<R> createResponseBuilder(HttpStatus status);
 
     /**
      * Returns a {@link HttpResponseMessage.Builder} instance to build a HttpResponseMessage with
@@ -74,7 +75,8 @@ public interface HttpRequestMessage<T> {
      * @param status The HTTP status code to return to the caller of the function.
      * @return An {@link HttpResponseMessage.Builder} instance containing the provided status and
      *         empty body.
+     * @param <R> The type of the body object that will be sent as a part of the HTTP Response
      */
-    HttpResponseMessage.Builder createResponseBuilder(HttpStatusType status);
+    <R> HttpResponseMessage.Builder<R> createResponseBuilder(HttpStatusType status);
 
 }
diff --git a/src/main/java/com/microsoft/azure/functions/HttpResponseMessage.java b/src/main/java/com/microsoft/azure/functions/HttpResponseMessage.java
index 67961dd..27aae00 100644
--- a/src/main/java/com/microsoft/azure/functions/HttpResponseMessage.java
+++ b/src/main/java/com/microsoft/azure/functions/HttpResponseMessage.java
@@ -13,8 +13,9 @@
  * {https://github.com/Azure/azure-functions-java-library/blob/dev/src/main/java/com/microsoft/azure/functions/annotation/HttpTrigger.java}
  * @see HttpRequestMessage
  * @since 1.0.0
+ * @param <T> The type of the body object that will be sent as a part of the HTTP Response
  */
-public interface HttpResponseMessage {
+public interface HttpResponseMessage<T> {
 
     /**
      * Returns the HTTP status code set on the HttpResponseMessage instance.
@@ -45,12 +46,13 @@ default int getStatusCode() {
      * 
      * @return the body of the HTTP response.
      */
-    Object getBody();
+    T getBody();
     
     /**
-     * A builder to create an instance of HttpResponseMessage 
+     * A builder to create an instance of HttpResponseMessage
+     * @param <T> the type of the body object that will be sent as a part of the HTTP Response
      */
-    public interface Builder {
+    interface Builder<T> {
 
         /**
          * Sets the status code to be used in the HttpResponseMessage object.
@@ -61,7 +63,7 @@ public interface Builder {
          * @param status An HTTP status code representing the outcome of the HTTP request.
          * @return this builder
          */
-        Builder status(HttpStatusType status);
+        Builder<T> status(HttpStatusType status);
 
         /**
          * Adds a (key, value) header to the response.
@@ -70,7 +72,7 @@ public interface Builder {
          * @param value The value of the header value.
          * @return this builder
          */
-        Builder header(String key, String value);
+        Builder<T> header(String key, String value);
 
         /**
          * Sets the body of the HTTP response.
@@ -78,13 +80,13 @@ public interface Builder {
          * @param body The body of the HTTP response
          * @return this builder
          */
-        Builder body(Object body);
+        Builder<T> body(T body);
 
         /**
          * Creates an instance of HttpMessageResponse with the values configured in this builder.
          * 
          * @return an HttpMessageResponse object
          */
-        HttpResponseMessage build();
+        HttpResponseMessage<T> build();
     }
 }

From 20777164fcfaa10a020205bdb92f3770b3d471cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rade=20Martinovi=C4=87?= <external.Rade.Martinovic@bosch.io>
Date: Tue, 22 Feb 2022 14:26:06 +0100
Subject: [PATCH 2/2] Nicer convention for JUnits

---
 .../com/microsoft/azure/functions/HttpStatusTest.java  | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/test/java/com/microsoft/azure/functions/HttpStatusTest.java b/src/test/java/com/microsoft/azure/functions/HttpStatusTest.java
index 90798fd..a06c336 100644
--- a/src/test/java/com/microsoft/azure/functions/HttpStatusTest.java
+++ b/src/test/java/com/microsoft/azure/functions/HttpStatusTest.java
@@ -9,19 +9,19 @@
  */
 public class HttpStatusTest {
     @Test
-    public void set_custom_httpstatuscode() {
+    public void test_settingCustomStatusCode() {
         HttpStatusType customHttpStatus = HttpStatusType.custom(209);
-        assertTrue(customHttpStatus.value() == 209);
+        assertEquals(209, customHttpStatus.value());
     }
 
     @Test
-    public void set_standard_httpstatuscode() {
+    public void test_standardStatusCode() {
         HttpStatusType customHttpStatus = HttpStatus.OK;
-        assertTrue(customHttpStatus.value() == 200);
+        assertEquals(200, customHttpStatus.value());
     }
 
     @Test(expected = IllegalArgumentException.class)
-    public void set_invalid_httpstatuscode() {
+    public void test_invalidStatusCode_throwsException() {
         HttpStatusType.custom(-100);
     }
 }