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