diff --git a/auth/pom.xml b/auth/pom.xml index b7939c35..b0bd8993 100644 --- a/auth/pom.xml +++ b/auth/pom.xml @@ -12,7 +12,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/core/pom.xml b/core/pom.xml index 678380b3..ffb66f62 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -12,11 +12,25 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 + + org.springframework + spring-web + + + + + javax.servlet + servlet-api + 3.0-alpha-1 + provided + + + org.springframework spring-context @@ -28,11 +42,10 @@ - com.fasterxml.jackson.core - jackson-annotations + org.springframework.boot + spring-boot-starter-json - diff --git a/core/src/main/java/edu/tamu/weaver/response/ApiResponse.java b/core/src/main/java/edu/tamu/weaver/response/ApiResponse.java index b5a9be93..f5bbb8f3 100644 --- a/core/src/main/java/edu/tamu/weaver/response/ApiResponse.java +++ b/core/src/main/java/edu/tamu/weaver/response/ApiResponse.java @@ -4,6 +4,7 @@ import java.util.HashMap; import com.fasterxml.jackson.annotation.JsonView; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; /** * Abstract class for an API response. @@ -15,6 +16,7 @@ * @author William Welling * */ +@JsonSerialize(using = ApiResponseSerializer.class) public class ApiResponse { @JsonView(ApiView.Partial.class) diff --git a/core/src/main/java/edu/tamu/weaver/response/ApiResponseSerializer.java b/core/src/main/java/edu/tamu/weaver/response/ApiResponseSerializer.java new file mode 100644 index 00000000..a19f502c --- /dev/null +++ b/core/src/main/java/edu/tamu/weaver/response/ApiResponseSerializer.java @@ -0,0 +1,38 @@ +package edu.tamu.weaver.response; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import org.springframework.boot.jackson.JsonComponent; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +@JsonComponent +public class ApiResponseSerializer extends JsonSerializer { + + @Override + public void serialize(ApiResponse value, JsonGenerator jgen, SerializerProvider serializers) throws IOException { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + if (request.getHeader("x-wvr-unwrap") != null) { + List values = new ArrayList<>(value.getPayload().values()); + if (values.size() > 1) { + jgen.writeObject(value.getPayload()); + } else if (values.size() > 0) { + jgen.writeObject(values.get(0)); + } + } else { + jgen.writeStartObject(); + jgen.writeObjectField("meta", value.getMeta()); + jgen.writeObjectField("payload", value.getPayload()); + jgen.writeEndObject(); + } + } + +} diff --git a/data/pom.xml b/data/pom.xml index be9b20fc..d06bb075 100644 --- a/data/pom.xml +++ b/data/pom.xml @@ -12,7 +12,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/email/pom.xml b/email/pom.xml index 2778367d..8f3fd362 100644 --- a/email/pom.xml +++ b/email/pom.xml @@ -12,7 +12,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/messaging/pom.xml b/messaging/pom.xml index ac4fb42e..d3bdf23b 100644 --- a/messaging/pom.xml +++ b/messaging/pom.xml @@ -12,7 +12,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/pom.xml b/pom.xml index 19227c30..bf8f0951 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 Weaver Webservice Parent @@ -87,7 +87,7 @@ org.apache.maven.plugins maven-resources-plugin - 3.0.2 + 3.2.0 @ diff --git a/reporting/pom.xml b/reporting/pom.xml index c4264768..3776ee66 100644 --- a/reporting/pom.xml +++ b/reporting/pom.xml @@ -12,7 +12,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/token-provider/pom.xml b/token-provider/pom.xml index c984d222..b14832f5 100644 --- a/token-provider/pom.xml +++ b/token-provider/pom.xml @@ -13,7 +13,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/token/pom.xml b/token/pom.xml index e5fcabcf..278c1139 100644 --- a/token/pom.xml +++ b/token/pom.xml @@ -12,7 +12,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/user/pom.xml b/user/pom.xml index e64cacbf..e5a49448 100644 --- a/user/pom.xml +++ b/user/pom.xml @@ -12,7 +12,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/validation/pom.xml b/validation/pom.xml index 28198dbf..bde01768 100644 --- a/validation/pom.xml +++ b/validation/pom.xml @@ -12,7 +12,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6 diff --git a/wro/pom.xml b/wro/pom.xml index 1cc60f36..3bd691b0 100644 --- a/wro/pom.xml +++ b/wro/pom.xml @@ -13,7 +13,7 @@ edu.tamu.weaver webservice-parent - 2.1.1-RC5 + 2.1.1-RC6