This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit a527aef1797458b45b41cf0fa65190b7ac5b7d13
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun May 17 19:11:40 2026 -0400

    CAY-2943 CayenneModeler MCP: text blocks over string concatenation
    
    Replace `+`-spliced messages (including the JSON error fallback) with
    text blocks and `String.formatted(...)`, per the project guidance to
    prefer modern Java syntax.
---
 .../mcp/tools/openproject/ModelerDiscovery.java    |  5 ++--
 .../mcp/tools/openproject/OpenProjectTool.java     | 28 ++++++++++++----------
 2 files changed, 19 insertions(+), 14 deletions(-)

diff --git 
a/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/openproject/ModelerDiscovery.java
 
b/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/openproject/ModelerDiscovery.java
index 5c48f3737..d7cf007b0 100644
--- 
a/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/openproject/ModelerDiscovery.java
+++ 
b/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/openproject/ModelerDiscovery.java
@@ -82,8 +82,9 @@ final class ModelerDiscovery {
         if (sourceTree.isPresent()) {
             return sourceTree.get();
         }
-        notes.add("source_tree: no built CayenneModeler under 
<gitRoot>/modeler/cayenne-modeler-{mac,win,generic}/target/classes/"
-                + " (run `mvn -pl modeler/cayenne-modeler-<kind> -am package 
-P<kind>`)");
+        notes.add("""
+                  source_tree: no built CayenneModeler under 
<gitRoot>/modeler/cayenne-modeler-{mac,win,generic}/target/classes/ \
+                  (run `mvn -pl modeler/cayenne-modeler-<kind> -am package 
-P<kind>`)""");
 
         return new NotFound(List.copyOf(notes));
     }
diff --git 
a/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/openproject/OpenProjectTool.java
 
b/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/openproject/OpenProjectTool.java
index b41682979..4af3ba1e8 100644
--- 
a/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/openproject/OpenProjectTool.java
+++ 
b/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/openproject/OpenProjectTool.java
@@ -64,8 +64,9 @@ public class OpenProjectTool {
         McpSchema.Tool descriptor = new McpSchema.Tool(
                 NAME,
                 null,
-                "Launch CayenneModeler with the given project file. 
Non-blocking; waits for "
-                        + "the Modeler to report a startup handshake before 
returning.",
+                """
+                Launch CayenneModeler with the given project file. 
Non-blocking; waits for \
+                the Modeler to report a startup handshake before returning.""",
                 new McpSchema.JsonSchema(
                         "object",
                         Map.of(
@@ -88,8 +89,9 @@ public class OpenProjectTool {
             try {
                 json = jsonMapper.writeValueAsString(result);
             } catch (IOException e) {
-                json = 
"{\"status\":\"error\",\"error\":{\"code\":\"launch_failed\","
-                        + "\"message\":\"Serialization failed: " + 
e.getMessage() + "\"}}";
+                json = """
+                       
{"status":"error","error":{"code":"launch_failed","message":"Serialization 
failed: %s"}}\
+                       """.formatted(e.getMessage());
             }
 
             return McpSchema.CallToolResult.builder()
@@ -111,7 +113,7 @@ public class OpenProjectTool {
             projectFile = Path.of(projectPath);
         } catch (RuntimeException e) {
             return validationFailed(OpenProjectErrorCode.project_not_found,
-                    "Invalid path '" + projectPath + "': " + e.getMessage(),
+                    "Invalid path '%s': %s".formatted(projectPath, 
e.getMessage()),
                     new OpenProjectValidation(false, null, null));
         }
         if (!Files.isReadable(projectFile)) {
@@ -124,8 +126,9 @@ public class OpenProjectTool {
         Optional<Path> mcpDir = McpJarLocator.locate(OpenProjectTool.class);
         if (mcpDir.isEmpty()) {
             return 
validationFailed(OpenProjectErrorCode.mcp_jar_location_unresolved,
-                    "Could not resolve the running MCP server jar's location 
via "
-                            + "ProtectionDomain. This is expected only in 
exotic launch configurations.",
+                    """
+                    Could not resolve the running MCP server jar's location 
via ProtectionDomain. \
+                    This is expected only in exotic launch configurations.""",
                     new OpenProjectValidation(true, false, null));
         }
 
@@ -135,8 +138,8 @@ public class OpenProjectTool {
         if (discovery instanceof NotFound nf) {
             String notes = String.join("; ", nf.probeNotes());
             return validationFailed(OpenProjectErrorCode.modeler_not_found,
-                    "No CayenneModeler installation found relative to MCP jar 
at "
-                            + mcpDir.get() + ". Probes: " + notes,
+                    "No CayenneModeler installation found relative to MCP jar 
at %s. Probes: %s"
+                            .formatted(mcpDir.get(), notes),
                     new OpenProjectValidation(true, true, false));
         }
         Found found = (Found) discovery;
@@ -198,7 +201,8 @@ public class OpenProjectTool {
                         allPassed,
                         null,
                         new 
OpenProjectError(OpenProjectErrorCode.launch_exited_early,
-                                "Spawned Modeler process exited before 
reporting handshake (" + exit + ")"));
+                                "Spawned Modeler process exited before 
reporting handshake (%s)"
+                                        .formatted(exit)));
             }
             case TIMEOUT -> {
                 boolean stillAlive = launch.processAlivenessMeaningful() && 
launch.process().isAlive();
@@ -211,8 +215,8 @@ public class OpenProjectTool {
                         allPassed,
                         null,
                         new 
OpenProjectError(OpenProjectErrorCode.launch_not_confirmed,
-                                "Handshake did not appear within " + 
HANDSHAKE_TIMEOUT.toSeconds()
-                                        + "s. " + hint + "."));
+                                "Handshake did not appear within %ds. 
%s.".formatted(
+                                        HANDSHAKE_TIMEOUT.toSeconds(), hint)));
             }
         };
     }

Reply via email to