diff --git a/src/main/java/com/ly/doc/model/torna/TornaRequestInfo.java b/src/main/java/com/ly/doc/model/torna/TornaRequestInfo.java index 6f13ef13..f3c50b9e 100644 --- a/src/main/java/com/ly/doc/model/torna/TornaRequestInfo.java +++ b/src/main/java/com/ly/doc/model/torna/TornaRequestInfo.java @@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import com.ly.doc.constants.TornaConstants; @@ -92,25 +93,47 @@ public TornaRequestInfo setResponseInfo(String responseInfo) { return this; } + /** + * Builds a full log string including both request and response data. + * @return Formatted log string with request and response details + */ public String buildInfo() { - StringBuilder sb = new StringBuilder(); - sb.append("---------------------------PUSH START---------------------------\n") + return buildLogContent(true, "=============== REQUEST & RESPONSE LOG END ==============="); + } + + /** + * Builds a log string containing only request data (no response). + * @return Formatted log string with request details only + */ + public String buildRequestInfo() { + return buildLogContent(false, "==================== REQUEST LOG END ===================="); + } + + /** + * Shared method to construct log content dynamically. + * @param includeResponse Whether to include response data + * @param closingMarker Custom closing boundary marker + */ + private String buildLogContent(boolean includeResponse, String closingMarker) { + StringBuilder sb = new StringBuilder().append("==================== PUSH LOG START ====================\n") .append("API: ") .append(category) .append("\n") .append("Request Param: \n") .append(TornaConstants.GSON.toJson(requestInfo)) - .append("\n") - .append("Response: \n") - .append(TornaConstants.GSON.fromJson(responseInfo, HashMap.class)) - .append("\n") - .append("---------------------------PUSH END---------------------------\n"); + .append("\n"); + + if (includeResponse) { + sb.append("Response: \n").append(TornaConstants.GSON.fromJson(responseInfo, HashMap.class)).append("\n"); + } + + sb.append(closingMarker).append("\n"); // Custom closing marker + try { - return URLDecoder.decode(sb.toString(), "utf-8"); + return URLDecoder.decode(sb.toString(), StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - return ""; + return ""; // In production, log this error (e.g., via SLF4J) } } diff --git a/src/main/java/com/ly/doc/utils/JavaClassUtil.java b/src/main/java/com/ly/doc/utils/JavaClassUtil.java index d182a48c..7a35c89e 100644 --- a/src/main/java/com/ly/doc/utils/JavaClassUtil.java +++ b/src/main/java/com/ly/doc/utils/JavaClassUtil.java @@ -392,7 +392,7 @@ public static Object getDefaultEnumValue(JavaClass javaClass, ProjectDocConfigBu } // Default handling for enum values - return processDefaultEnumFields(enumConstant); + return processDefaultEnumFields(enumConstant, builder); } /** @@ -501,7 +501,12 @@ private static Optional findFieldWithJsonValue(JavaClass javaClass) { * @param javaField The JavaField object representing the enum constant * @return The value based on the enum field processing logic */ - private static Object processDefaultEnumFields(JavaField javaField) { + private static Object processDefaultEnumFields(JavaField javaField, ProjectDocConfigBuilder builder) { + ApiConfig apiConfig = builder.getApiConfig(); + if (!apiConfig.isEnumConvertor()) { + return javaField.getName(); + } + String initializationExpression = javaField.getInitializationExpression(); if (StringUtils.isBlank(initializationExpression)) { diff --git a/src/main/java/com/ly/doc/utils/TornaUtil.java b/src/main/java/com/ly/doc/utils/TornaUtil.java index fd11eb7d..42ee42ae 100644 --- a/src/main/java/com/ly/doc/utils/TornaUtil.java +++ b/src/main/java/com/ly/doc/utils/TornaUtil.java @@ -126,6 +126,7 @@ public static void pushToTorna(TornaApi tornaApi, ApiConfig apiConfig, JavaProje private static void pushToTornaAll(TornaApi tornaApi, ApiConfig apiConfig, JavaProjectBuilder builder) { // Build push document information Map requestJson = TornaConstants.buildParams(PUSH, new Gson().toJson(tornaApi), apiConfig); + TornaUtil.printDebugInfo(apiConfig, null, requestJson, PUSH, true); // Push dictionary information Map dicMap = new HashMap<>(2); List docDicts = TornaUtil.buildTornaDic(DocUtil.buildDictionary(apiConfig, builder)); @@ -190,23 +191,45 @@ public static boolean setDebugEnv(ApiConfig apiConfig, TornaApi tornaApi) { */ public static void printDebugInfo(ApiConfig apiConfig, String responseMsg, Map requestJson, String category) { + printDebugInfo(apiConfig, responseMsg, requestJson, category, false); + } + + /** + * Prints debug information with mode support. + * @param apiConfig The API configuration object containing OpenUrl, appToken, etc. + * @param responseMsg The response message, null for pre-request mode. + * @param requestJson The request JSON object in key-value pairs. + * @param category The category of the request or response for classifying debug + * information. + * @param isPreRequest true for pre-request mode, false for post-request mode. + */ + public static void printDebugInfo(ApiConfig apiConfig, String responseMsg, Map requestJson, + String category, boolean isPreRequest) { if (apiConfig.isTornaDebug()) { String sb = "Configuration information : \n" + "OpenUrl: " + apiConfig.getOpenUrl() + "\n" + "appToken: " + apiConfig.getAppToken() + "\n"; System.out.println(sb); - try { - JsonElement element = JsonParser.parseString(responseMsg); + if (isPreRequest) { TornaRequestInfo info = new TornaRequestInfo().of() .setCategory(category) - .setCode(element.getAsJsonObject().get(TornaConstants.CODE).getAsString()) - .setMessage(element.getAsJsonObject().get(TornaConstants.MESSAGE).getAsString()) .setRequestInfo(requestJson) .setResponseInfo(responseMsg); - System.out.println(info.buildInfo()); + System.out.println(info.buildRequestInfo()); } - catch (Exception e) { - // Ex : Nginx Error,Tomcat Error - System.out.println("Response Error : \n" + responseMsg); + else { + try { + JsonElement element = JsonParser.parseString(responseMsg); + TornaRequestInfo info = new TornaRequestInfo().of() + .setCategory(category) + .setCode(element.getAsJsonObject().get(TornaConstants.CODE).getAsString()) + .setMessage(element.getAsJsonObject().get(TornaConstants.MESSAGE).getAsString()) + .setRequestInfo(requestJson) + .setResponseInfo(responseMsg); + System.out.println(info.buildInfo()); + } + catch (Exception e) { + System.out.println("Response Error : \n" + responseMsg); + } } } }