diff --git a/server/src/main/java/com/epam/aidial/core/server/service/PublicationService.java b/server/src/main/java/com/epam/aidial/core/server/service/PublicationService.java index 33dda56a..635c5a89 100644 --- a/server/src/main/java/com/epam/aidial/core/server/service/PublicationService.java +++ b/server/src/main/java/com/epam/aidial/core/server/service/PublicationService.java @@ -26,8 +26,6 @@ import com.epam.aidial.core.storage.util.UrlUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.mutable.MutableObject; @@ -44,6 +42,8 @@ import java.util.stream.Stream; import javax.annotation.Nullable; +import static com.epam.aidial.core.server.util.CustomApplicationUtils.replaceLinksInJsonNode; + @RequiredArgsConstructor public class PublicationService { @@ -613,28 +613,7 @@ private void replaceCustomAppFiles(Application application, Map application.setCustomProperties(customPropertiesMap); } - private void replaceLinksInJsonNode(JsonNode node, Map replacementLinks, JsonNode parent, String fieldName) { - if (node.isObject()) { - node.fields().forEachRemaining(entry -> replaceLinksInJsonNode(entry.getValue(), replacementLinks, node, entry.getKey())); - } else if (node.isArray()) { - for (int i = 0; i < node.size(); i++) { - JsonNode childNode = node.get(i); - if (childNode.isTextual()) { - String replacement = replacementLinks.get(childNode.textValue()); - if (replacement != null) { - ((ArrayNode) node).set(i, replacement); - } - } else { - replaceLinksInJsonNode(childNode, replacementLinks, node, String.valueOf(i)); - } - } - } else if (node.isTextual()) { - String replacement = replacementLinks.get(node.textValue()); - if (replacement != null && parent.isObject()) { - ((ObjectNode) parent).put(fieldName, replacement); - } - } - } + private void copyReviewToTargetResources(List resources) { Map replacementLinks = new HashMap<>(); diff --git a/server/src/main/java/com/epam/aidial/core/server/util/CustomApplicationUtils.java b/server/src/main/java/com/epam/aidial/core/server/util/CustomApplicationUtils.java index 99d07597..078da904 100644 --- a/server/src/main/java/com/epam/aidial/core/server/util/CustomApplicationUtils.java +++ b/server/src/main/java/com/epam/aidial/core/server/util/CustomApplicationUtils.java @@ -14,6 +14,8 @@ import com.epam.aidial.core.storage.service.ResourceService; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.networknt.schema.CollectorContext; import com.networknt.schema.InputFormat; import com.networknt.schema.JsonMetaSchema; @@ -160,4 +162,27 @@ public static List getFiles(Config config, Application appli throw new CustomAppValidationException("Failed to obtain list of files attached to the custom app", e); } } + + public static void replaceLinksInJsonNode(JsonNode node, Map replacementLinks, JsonNode parent, String fieldName) { + if (node.isObject()) { + node.fields().forEachRemaining(entry -> replaceLinksInJsonNode(entry.getValue(), replacementLinks, node, entry.getKey())); + } else if (node.isArray()) { + for (int i = 0; i < node.size(); i++) { + JsonNode childNode = node.get(i); + if (childNode.isTextual()) { + String replacement = replacementLinks.get(childNode.textValue()); + if (replacement != null) { + ((ArrayNode) node).set(i, replacement); + } + } else { + replaceLinksInJsonNode(childNode, replacementLinks, node, String.valueOf(i)); + } + } + } else if (node.isTextual()) { + String replacement = replacementLinks.get(node.textValue()); + if (replacement != null && parent.isObject()) { + ((ObjectNode) parent).put(fieldName, replacement); + } + } + } } \ No newline at end of file