From b1d3ee54a55ab22194fc96774cb3b6f1c48adf15 Mon Sep 17 00:00:00 2001 From: amithkoujalgi Date: Wed, 17 Sep 2025 20:05:18 +0530 Subject: [PATCH] Refactor JSON logging and utility methods Replaced manual pretty-printing of JSON in OllamaAPI with a new Utils.toJSON method for cleaner logging. Added private constructors to utility classes to prevent instantiation. Updated test and sample code for improved clarity and randomness. --- src/main/java/io/github/ollama4j/OllamaAPI.java | 11 ++--------- .../request/CustomModelFileContentsRequest.java | 1 + src/main/java/io/github/ollama4j/utils/Constants.java | 2 ++ src/main/java/io/github/ollama4j/utils/Utils.java | 7 +++++++ .../integrationtests/OllamaAPIIntegrationTest.java | 3 +-- .../io/github/ollama4j/samples/AnnotatedTool.java | 4 +++- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/github/ollama4j/OllamaAPI.java b/src/main/java/io/github/ollama4j/OllamaAPI.java index 22ab5c5..9c4e28d 100644 --- a/src/main/java/io/github/ollama4j/OllamaAPI.java +++ b/src/main/java/io/github/ollama4j/OllamaAPI.java @@ -694,10 +694,7 @@ public class OllamaAPI { try { String prettyJson = - Utils.getObjectMapper() - .writerWithDefaultPrettyPrinter() - .writeValueAsString( - Utils.getObjectMapper().readValue(jsonData, Object.class)); + Utils.toJSON(Utils.getObjectMapper().readValue(jsonData, Object.class)); LOG.debug("Asking model:\n{}", prettyJson); } catch (Exception e) { LOG.debug("Asking model: {}", jsonData); @@ -730,11 +727,7 @@ public class OllamaAPI { LOG.debug("Model response:\n{}", ollamaResult); return ollamaResult; } else { - LOG.debug( - "Model response:\n{}", - Utils.getObjectMapper() - .writerWithDefaultPrettyPrinter() - .writeValueAsString(responseBody)); + LOG.debug("Model response:\n{}", Utils.toJSON(responseBody)); throw new OllamaBaseException(statusCode + " - " + responseBody); } } diff --git a/src/main/java/io/github/ollama4j/models/request/CustomModelFileContentsRequest.java b/src/main/java/io/github/ollama4j/models/request/CustomModelFileContentsRequest.java index 2a2c06a..b01e18c 100644 --- a/src/main/java/io/github/ollama4j/models/request/CustomModelFileContentsRequest.java +++ b/src/main/java/io/github/ollama4j/models/request/CustomModelFileContentsRequest.java @@ -14,6 +14,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import lombok.AllArgsConstructor; import lombok.Data; +@SuppressWarnings("SpellCheckingInspection") @Data @AllArgsConstructor public class CustomModelFileContentsRequest { diff --git a/src/main/java/io/github/ollama4j/utils/Constants.java b/src/main/java/io/github/ollama4j/utils/Constants.java index 690b1ab..fbe0958 100644 --- a/src/main/java/io/github/ollama4j/utils/Constants.java +++ b/src/main/java/io/github/ollama4j/utils/Constants.java @@ -9,6 +9,8 @@ package io.github.ollama4j.utils; public final class Constants { + private Constants() {} + public static final class HttpConstants { private HttpConstants() {} diff --git a/src/main/java/io/github/ollama4j/utils/Utils.java b/src/main/java/io/github/ollama4j/utils/Utils.java index afd1f3e..3a24206 100644 --- a/src/main/java/io/github/ollama4j/utils/Utils.java +++ b/src/main/java/io/github/ollama4j/utils/Utils.java @@ -8,6 +8,7 @@ */ package io.github.ollama4j.utils; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import java.io.File; @@ -22,6 +23,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Utils { + private Utils() {} + private static final Logger LOG = LoggerFactory.getLogger(Utils.class); private static ObjectMapper objectMapper; @@ -77,4 +80,8 @@ public class Utils { ClassLoader classLoader = Utils.class.getClassLoader(); return new File(Objects.requireNonNull(classLoader.getResource(fileName)).getFile()); } + + public static String toJSON(Object object) throws JsonProcessingException { + return Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(object); + } } diff --git a/src/test/java/io/github/ollama4j/integrationtests/OllamaAPIIntegrationTest.java b/src/test/java/io/github/ollama4j/integrationtests/OllamaAPIIntegrationTest.java index f84a424..289282f 100644 --- a/src/test/java/io/github/ollama4j/integrationtests/OllamaAPIIntegrationTest.java +++ b/src/test/java/io/github/ollama4j/integrationtests/OllamaAPIIntegrationTest.java @@ -114,8 +114,7 @@ class OllamaAPIIntegrationTest { @Test @Order(1) - void testPing() - throws URISyntaxException, IOException, OllamaBaseException, InterruptedException { + void testPing() throws OllamaBaseException { boolean pingResponse = api.ping(); assertTrue(pingResponse, "Ping should return true"); } diff --git a/src/test/java/io/github/ollama4j/samples/AnnotatedTool.java b/src/test/java/io/github/ollama4j/samples/AnnotatedTool.java index 4e458d1..34f56b2 100644 --- a/src/test/java/io/github/ollama4j/samples/AnnotatedTool.java +++ b/src/test/java/io/github/ollama4j/samples/AnnotatedTool.java @@ -11,6 +11,7 @@ package io.github.ollama4j.samples; import io.github.ollama4j.tools.annotations.ToolProperty; import io.github.ollama4j.tools.annotations.ToolSpec; import java.math.BigDecimal; +import java.util.Random; public class AnnotatedTool { @@ -18,7 +19,8 @@ public class AnnotatedTool { public String computeImportantConstant( @ToolProperty(name = "noOfDigits", desc = "Number of digits that shall be returned") Integer noOfDigits) { - return BigDecimal.valueOf((long) (Math.random() * 1000000L), noOfDigits).toString(); + return BigDecimal.valueOf((long) (new Random().nextLong() * 1000000L), noOfDigits) + .toString(); } @ToolSpec(desc = "Says hello to a friend!")