diff --git a/obp-api/pom.xml b/obp-api/pom.xml
index ec3347328..e03e8bec7 100644
--- a/obp-api/pom.xml
+++ b/obp-api/pom.xml
@@ -489,7 +489,7 @@
once
.
WDF TestSuite.txt
- -Drun.mode=test -XX:MaxPermSize=128m -Xms512m -Xmx512m
+ -Drun.mode=test -XX:MaxMetaspaceSize=512m -Xms512m -Xmx512m
code.external
diff --git a/obp-api/src/main/resources/props/sample.props.template b/obp-api/src/main/resources/props/sample.props.template
index 11100b121..28d8df5f8 100644
--- a/obp-api/src/main/resources/props/sample.props.template
+++ b/obp-api/src/main/resources/props/sample.props.template
@@ -1151,4 +1151,7 @@ dynamic_code_compile_validate_dependencies=[\
classOf[ResourceDoc].getTypeName -> "getPathParams",\
"scala.reflect.runtime.package\$" -> "universe",\
PractiseEndpoint.getClass.getTypeName + "*" -> "*"\
-]
\ No newline at end of file
+]
+
+## when api response json field value in the json array, the field will be excluded
+excluded.response.field.values=["String", "", null, []]
\ No newline at end of file
diff --git a/obp-api/src/main/scala/code/api/util/APIUtil.scala b/obp-api/src/main/scala/code/api/util/APIUtil.scala
index a02a8440f..e9bd2832d 100644
--- a/obp-api/src/main/scala/code/api/util/APIUtil.scala
+++ b/obp-api/src/main/scala/code/api/util/APIUtil.scala
@@ -573,23 +573,31 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
def successJsonResponseNewStyle(cc: Any, callContext: Option[CallContext], httpCode : Int = 200)(implicit headers: CustomResponseHeaders = CustomResponseHeaders(Nil)) : JsonResponse = {
val jsonAst: JValue = ApiSession.processJson((Extraction.decompose(cc)), callContext)
+
+ // exclude all values that defined in props "excluded.response.field.values"
+ val excludedFieldValues = APIUtil.getPropsValue("excluded.response.field.values").map[JArray](it => json.parse(it).asInstanceOf[JArray])
+ val jsonValue = excludedFieldValues match {
+ case Full(JArray(arr:List[JValue])) =>
+ JsonUtils.deleteFieldRec(jsonAst)(v => arr.contains(v.value))
+ case _ => jsonAst
+ }
callContext match {
case Some(c) if c.httpCode.isDefined && c.httpCode.get == 204 =>
val httpBody = None
val jwsHeaders: CustomResponseHeaders = getSignRequestHeadersNewStyle(callContext,httpBody)
JsonResponse(JsRaw(""), getHeaders() ::: headers.list ::: jwsHeaders.list, Nil, 204)
case Some(c) if c.httpCode.isDefined =>
- val httpBody = Full(JsonAST.compactRender(jsonAst))
+ val httpBody = Full(JsonAST.compactRender(jsonValue))
val jwsHeaders: CustomResponseHeaders = getSignRequestHeadersNewStyle(callContext,httpBody)
- JsonResponse(jsonAst, getHeaders() ::: headers.list ::: jwsHeaders.list, Nil, c.httpCode.get)
+ JsonResponse(jsonValue, getHeaders() ::: headers.list ::: jwsHeaders.list, Nil, c.httpCode.get)
case Some(c) if c.verb.toUpperCase() == "DELETE" =>
val httpBody = None
val jwsHeaders: CustomResponseHeaders = getSignRequestHeadersNewStyle(callContext,httpBody)
JsonResponse(JsRaw(""), getHeaders() ::: headers.list ::: jwsHeaders.list, Nil, 204)
case _ =>
- val httpBody = Full(JsonAST.compactRender(jsonAst))
+ val httpBody = Full(JsonAST.compactRender(jsonValue))
val jwsHeaders: CustomResponseHeaders = getSignRequestHeadersNewStyle(callContext,httpBody)
- JsonResponse(jsonAst, getHeaders() ::: headers.list ::: jwsHeaders.list, Nil, httpCode)
+ JsonResponse(jsonValue, getHeaders() ::: headers.list ::: jwsHeaders.list, Nil, httpCode)
}
}
diff --git a/obp-commons/pom.xml b/obp-commons/pom.xml
index 5b77b1493..98a387989 100644
--- a/obp-commons/pom.xml
+++ b/obp-commons/pom.xml
@@ -97,7 +97,7 @@
once
.
WDF TestSuite.txt
- -Drun.mode=test -XX:MaxPermSize=128m -Xms512m -Xmx512m
+ -Drun.mode=test -XX:MaxMetaspaceSize=512m -Xms512m -Xmx512m
code.external