/를 \/로 escaping 하지 않도록 Jackson으로 변경
This commit is contained in:
@@ -11,7 +11,6 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.servlet.ServletInputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -48,6 +47,7 @@ import com.eactive.eai.common.exception.ExceptionUtil;
|
||||
import com.eactive.eai.common.message.MessageType;
|
||||
import com.eactive.eai.common.util.CommonLib;
|
||||
import com.eactive.eai.common.util.JSONUtils;
|
||||
import com.eactive.eai.common.util.JacksonUtil;
|
||||
import com.eactive.eai.common.util.Logger;
|
||||
import com.eactive.eai.common.util.TxFileLogger;
|
||||
import com.eactive.eai.common.util.XMLUtils;
|
||||
@@ -62,6 +62,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
|
||||
@Service
|
||||
public class DJBApiAdapterService extends HttpAdapterServiceSupport {
|
||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
|
||||
static Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER);
|
||||
static Logger siftLogger = Logger.getLogger(Logger.LOGGER_SIFT);
|
||||
|
||||
@@ -536,7 +538,7 @@ public class DJBApiAdapterService extends HttpAdapterServiceSupport {
|
||||
private String applyHeaderGroupResponseHeaders(String adptGrpName, String adptName, Object resultMessage, Properties prop,
|
||||
HttpServletRequest request, HttpServletResponse response, String adptMsgType) throws Exception {
|
||||
// body headergroup -> http header 세팅
|
||||
String headerGroupName = prop.getProperty(ApiAdapterService.HEADER_GROUP);
|
||||
String headerGroupName = prop.getProperty(HEADER_GROUP);
|
||||
|
||||
if (StringUtils.isNotBlank(headerGroupName)) {
|
||||
if (resultMessage instanceof Node) {
|
||||
@@ -554,32 +556,39 @@ public class DJBApiAdapterService extends HttpAdapterServiceSupport {
|
||||
}
|
||||
|
||||
if (MessageType.JSON.equals(adptMsgType)) {
|
||||
JSONObject jsonObject = JSONUtils.parseJson(resultMessage);
|
||||
JSONObject headerGroup = (JSONObject)jsonObject.get(headerGroupName);
|
||||
if (headerGroup != null) {
|
||||
Set<Map.Entry<String, Object>> fieldEntrySet = JSONUtils.getField(headerGroup);
|
||||
JsonNode jsonNode = JacksonUtil.readTree(resultMessage, OBJECT_MAPPER); // 또는
|
||||
// objectMapper.readTree(resultMessage)
|
||||
JsonNode headerGroup = jsonNode.get(headerGroupName);
|
||||
|
||||
for (Map.Entry<String, Object> fieldEntry : fieldEntrySet) {
|
||||
logger.info("header group entry : {} , {}", fieldEntry.getKey(), fieldEntry.getValue());
|
||||
if (headerGroup != null && !headerGroup.isNull()) {
|
||||
Iterator<Map.Entry<String, JsonNode>> fieldIterator = headerGroup.fields();
|
||||
|
||||
if (fieldEntry.getValue() instanceof String) {
|
||||
if(fieldEntry.getKey().equalsIgnoreCase("content-type")) {
|
||||
logger.debug("set content-type {}: {}", fieldEntry.getKey(), fieldEntry.getValue());
|
||||
response.setContentType((String) fieldEntry.getValue());
|
||||
while (fieldIterator.hasNext()) {
|
||||
Map.Entry<String, JsonNode> fieldEntry = fieldIterator.next();
|
||||
JsonNode valueNode = fieldEntry.getValue();
|
||||
|
||||
logger.info("header group entry : {} , {}", fieldEntry.getKey(), valueNode);
|
||||
|
||||
if (valueNode.isTextual()) {
|
||||
String value = valueNode.asText();
|
||||
|
||||
if (fieldEntry.getKey().equalsIgnoreCase("content-type")) {
|
||||
logger.debug("set content-type {}: {}", fieldEntry.getKey(), value);
|
||||
response.setContentType(value);
|
||||
} else {
|
||||
logger.debug("add header {}: {}", fieldEntry.getKey(), fieldEntry.getValue());
|
||||
response.addHeader(fieldEntry.getKey(), (String) fieldEntry.getValue());
|
||||
logger.debug("add header {}: {}", fieldEntry.getKey(), value);
|
||||
response.addHeader(fieldEntry.getKey(), value);
|
||||
}
|
||||
} else {
|
||||
logger.info("fieldEntry value is not String. {}", fieldEntry.getValue());
|
||||
logger.info("fieldEntry value is not String. {}", valueNode);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logger.info("headerGroup is null");
|
||||
}
|
||||
|
||||
jsonObject.remove(headerGroupName);
|
||||
return jsonObject.toJSONString();
|
||||
((ObjectNode) jsonNode).remove(headerGroupName);
|
||||
return jsonNode.toString();
|
||||
} else if(MessageType.XML.equals(adptMsgType)) {
|
||||
Document document = XMLUtils.convertXmlDocument(resultMessage);
|
||||
if(document != null) {
|
||||
|
||||
Reference in New Issue
Block a user