You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2026/07/29 17:11:21 UTC
(juneau) 03/19: refactor: extract JSON-RPC envelope beans into juneau-bean-jsonrpc
This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
commit 3bd3f549cd6de30f996353a2bde053183c94cd97
Author: James Bognar <ja...@apache.org>
AuthorDate: Tue Jul 28 16:02:49 2026 -0400
refactor: extract JSON-RPC envelope beans into juneau-bean-jsonrpc
Moves JsonRpcRequest/JsonRpcResponse/JsonRpcError/McpException out of
juneau-bean-mcp into a revision-neutral envelope module, drops the last
cross-module javadoc reference from the envelope into the MCP module, and
relocates the McpException tests. Characterization fixtures replay byte-identical.
Co-authored-by: Cursor <cu...@cursor.com>
---
.../apache/juneau/bean/jsonrpc}/JsonRpcError.java | 2 +-
.../juneau/bean/jsonrpc}/JsonRpcRequest.java | 6 +-
.../juneau/bean/jsonrpc}/JsonRpcResponse.java | 2 +-
.../apache/juneau/bean/jsonrpc}/McpException.java | 2 +-
.../src/test/java/org/apache/juneau/TestUtils.java | 40 +++++++++++++
.../juneau/bean/jsonrpc/McpException_Test.java | 68 ++++++++++++++++++++++
juneau-bean/juneau-bean-mcp/pom.xml | 6 ++
.../juneau/bean/mcp/McpBeans_RoundTrip_Test.java | 23 +-------
.../juneau/rest/server/mcp/McpDispatcher_Test.java | 1 +
.../rest/server/mcp/McpHandlerDefaults_Test.java | 18 ------
.../rest/server/mcp/McpRestServlet_Test.java | 1 +
.../rest/server/mcp/McpTypedHandlers_Test.java | 1 +
juneau-rest/juneau-rest-server-mcp/pom.xml | 5 ++
.../org/apache/juneau/rest/server/mcp/Mcp.java | 1 +
.../juneau/rest/server/mcp/McpDispatcher.java | 1 +
.../apache/juneau/rest/server/mcp/McpEndpoint.java | 1 +
.../juneau/rest/server/mcp/McpRestServlet.java | 1 +
.../juneau/rest/server/mcp/McpTypedHandlers.java | 1 +
.../rest/server/mcp/Characterization_Test.java | 1 +
.../juneau/rest/server/mcp/McpDispatcher_Test.java | 1 +
.../rest/server/mcp/McpHandlerDefaults_Test.java | 18 ------
.../rest/server/mcp/McpRestServlet_Test.java | 1 +
.../rest/server/mcp/McpTypedHandlers_Test.java | 1 +
23 files changed, 138 insertions(+), 64 deletions(-)
diff --git a/juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcError.java b/juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcError.java
similarity index 98%
rename from juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcError.java
rename to juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcError.java
index 38af45c257..3fd66c2532 100644
--- a/juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcError.java
+++ b/juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcError.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.juneau.bean.mcp;
+package org.apache.juneau.bean.jsonrpc;
import org.apache.juneau.marshall.*;
diff --git a/juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcRequest.java b/juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcRequest.java
similarity index 93%
rename from juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcRequest.java
rename to juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcRequest.java
index 0ab652de14..e16851b085 100644
--- a/juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcRequest.java
+++ b/juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcRequest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.juneau.bean.mcp;
+package org.apache.juneau.bean.jsonrpc;
import org.apache.juneau.marshall.*;
@@ -33,7 +33,7 @@ public class JsonRpcRequest {
private Object params;
/**
- * JSON-RPC protocol version (typically {@value McpProtocol#JSON_RPC_2_0}).
+ * JSON-RPC protocol version (typically {@code "2.0"}).
*
* @return The version token, or {@code null} if not set.
*/
@@ -73,7 +73,7 @@ public class JsonRpcRequest {
}
/**
- * JSON-RPC method name (for example {@link McpMethods#TOOLS_LIST}).
+ * JSON-RPC method name (for example {@code "tools/list"}).
*
* @return The method, or {@code null} if not set.
*/
diff --git a/juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcResponse.java b/juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcResponse.java
similarity index 98%
rename from juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcResponse.java
rename to juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcResponse.java
index 202f09ba8f..0e4a38628c 100644
--- a/juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/JsonRpcResponse.java
+++ b/juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/JsonRpcResponse.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.juneau.bean.mcp;
+package org.apache.juneau.bean.jsonrpc;
import org.apache.juneau.marshall.*;
diff --git a/juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/McpException.java b/juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/McpException.java
similarity index 98%
rename from juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/McpException.java
rename to juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/McpException.java
index 3bcf0d22c3..dd0bed283b 100644
--- a/juneau-bean/juneau-bean-mcp/src/main/java/org/apache/juneau/bean/mcp/McpException.java
+++ b/juneau-bean/juneau-bean-jsonrpc/src/main/java/org/apache/juneau/bean/jsonrpc/McpException.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.juneau.bean.mcp;
+package org.apache.juneau.bean.jsonrpc;
import org.apache.juneau.marshall.*;
diff --git a/juneau-bean/juneau-bean-jsonrpc/src/test/java/org/apache/juneau/TestUtils.java b/juneau-bean/juneau-bean-jsonrpc/src/test/java/org/apache/juneau/TestUtils.java
new file mode 100644
index 0000000000..fb66e6d1ca
--- /dev/null
+++ b/juneau-bean/juneau-bean-jsonrpc/src/test/java/org/apache/juneau/TestUtils.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juneau;
+
+import static org.apache.juneau.marshall.marshaller.MarshallUtils.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Test utilities for the juneau-bean-mcp module.
+ *
+ * <p>Contains the marshall-bound helpers layered on top of the shared {@link BasicTestUtils} base.</p>
+ */
+@SuppressWarnings({
+ "unchecked" // BeanTester cast and generic type handling in test utilities
+})
+public class TestUtils extends BasicTestUtils {
+
+ public static String assertJson(String expected, Object value) {
+ assertEquals(expected, json5(value));
+ return expected;
+ }
+
+ public static final <T> BeanTester<T> testBean(T bean) {
+ return (BeanTester<T>) new BeanTester<>().bean(bean);
+ }
+}
diff --git a/juneau-bean/juneau-bean-jsonrpc/src/test/java/org/apache/juneau/bean/jsonrpc/McpException_Test.java b/juneau-bean/juneau-bean-jsonrpc/src/test/java/org/apache/juneau/bean/jsonrpc/McpException_Test.java
new file mode 100644
index 0000000000..80fa6f15b0
--- /dev/null
+++ b/juneau-bean/juneau-bean-jsonrpc/src/test/java/org/apache/juneau/bean/jsonrpc/McpException_Test.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juneau.bean.jsonrpc;
+
+import static org.apache.juneau.test.bct.BctAssertions.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+import org.apache.juneau.marshall.collections.*;
+import org.junit.jupiter.api.*;
+
+/**
+ * Coverage for {@link McpException} and its {@link McpException#toJsonRpcError()} mapping.
+ */
+class McpException_Test {
+
+ @Test
+ void a01_threeArgConstructor_mapsToJsonRpcError() {
+ var a = new McpException(-32000, "Tool failed", JsonMap.of("tool", "t1"));
+ var b = a.toJsonRpcError();
+ assertEquals(-32000, b.getCode());
+ assertEquals("Tool failed", b.getMessage());
+ assertNotNull(b.getData());
+ }
+
+ @Test
+ void a02_twoArgConstructorAndSetters() {
+ var a = new McpException(1, "m");
+ assertNull(a.getData());
+ a.setCode(2).setData(JsonMap.of("a", 1));
+ assertEquals(2, a.getCode());
+ assertNotNull(a.getData());
+ var b = a.toJsonRpcError();
+ assertEquals(2, b.getCode());
+ assertEquals("m", b.getMessage());
+ }
+
+ @Test
+ void a03_defaultData_isNull() {
+ var a = new McpException(-1, "x");
+ assertNull(a.getData());
+ assertEquals(-1, a.getCode());
+ assertString("x", a.getMessage());
+ }
+
+ @Test
+ void a04_withData_roundTripsThroughJsonRpcError() {
+ var a = new McpException(-1, "x", "data");
+ assertString("data", a.getData());
+ var b = a.toJsonRpcError();
+ assertEquals(-1, b.getCode());
+ assertString("x", b.getMessage());
+ assertString("data", b.getData());
+ }
+}
diff --git a/juneau-bean/juneau-bean-mcp/pom.xml b/juneau-bean/juneau-bean-mcp/pom.xml
index 8c6911648c..cf3aab0140 100644
--- a/juneau-bean/juneau-bean-mcp/pom.xml
+++ b/juneau-bean/juneau-bean-mcp/pom.xml
@@ -39,6 +39,12 @@
<groupId>org.apache.juneau</groupId>
<artifactId>juneau-marshall</artifactId>
<version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.juneau</groupId>
+ <artifactId>juneau-bean-jsonrpc</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
diff --git a/juneau-bean/juneau-bean-mcp/src/test/java/org/apache/juneau/bean/mcp/McpBeans_RoundTrip_Test.java b/juneau-bean/juneau-bean-mcp/src/test/java/org/apache/juneau/bean/mcp/McpBeans_RoundTrip_Test.java
index 6c5eeaaba4..f0bc780f01 100644
--- a/juneau-bean/juneau-bean-mcp/src/test/java/org/apache/juneau/bean/mcp/McpBeans_RoundTrip_Test.java
+++ b/juneau-bean/juneau-bean-mcp/src/test/java/org/apache/juneau/bean/mcp/McpBeans_RoundTrip_Test.java
@@ -20,7 +20,7 @@ import static org.apache.juneau.commons.utils.CollectionUtils.*;
import static org.junit.jupiter.api.Assertions.*;
import java.util.*;
-
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.marshall.collections.*;
import org.apache.juneau.marshall.json.*;
import org.junit.jupiter.api.*;
@@ -241,27 +241,6 @@ class McpBeans_RoundTrip_Test {
}
}
- @Test
- void a16_mcpExceptionToJsonRpcError() {
- var ex = new McpException(-32000, "Tool failed", JsonMap.of("tool", "t1"));
- var err = ex.toJsonRpcError();
- assertEquals(-32000, err.getCode());
- assertEquals("Tool failed", err.getMessage());
- assertNotNull(err.getData());
- }
-
- @Test
- void a17_mcpExceptionTwoArgConstructorAndSetters() {
- var ex = new McpException(1, "m");
- assertNull(ex.getData());
- ex.setCode(2).setData(JsonMap.of("a", 1));
- assertEquals(2, ex.getCode());
- assertNotNull(ex.getData());
- var err = ex.toJsonRpcError();
- assertEquals(2, err.getCode());
- assertEquals("m", err.getMessage());
- }
-
@Test
void a18_getPromptResultSystemAndToolRolesRoundTrip() {
var pr = new GetPromptResult()
diff --git a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpDispatcher_Test.java b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpDispatcher_Test.java
index e5d8676cc1..df2704c779 100644
--- a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpDispatcher_Test.java
+++ b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpDispatcher_Test.java
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.*;
import java.util.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.collections.*;
diff --git a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpHandlerDefaults_Test.java b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpHandlerDefaults_Test.java
index 843f268070..67089424b8 100644
--- a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpHandlerDefaults_Test.java
+++ b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpHandlerDefaults_Test.java
@@ -47,24 +47,6 @@ class McpHandlerDefaults_Test {
assertThrows(UnsupportedOperationException.class, h::descriptor);
}
- @Test
- void mcpException_default_data_isNull() {
- var e = new McpException(-1, "x");
- assertNull(e.getData());
- assertEquals(-1, e.getCode());
- assertString("x", e.getMessage());
- }
-
- @Test
- void mcpException_with_data() {
- var e = new McpException(-1, "x", "data");
- assertString("data", e.getData());
- var rpc = e.toJsonRpcError();
- assertEquals(-1, rpc.getCode());
- assertString("x", rpc.getMessage());
- assertString("data", rpc.getData());
- }
-
@Test
void typedHandlers_constructor_isPrivate() {
// Sanity: the static façade class should not be instantiable. Reflection trick used to bump coverage on the
diff --git a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpRestServlet_Test.java b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpRestServlet_Test.java
index 1abd95ad2a..80dd1d59f0 100644
--- a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpRestServlet_Test.java
+++ b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpRestServlet_Test.java
@@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.*;
import java.util.*;
import org.apache.juneau.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.json.*;
diff --git a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers_Test.java b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers_Test.java
index e9968a9f4f..174a3eeeaf 100644
--- a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers_Test.java
+++ b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers_Test.java
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.*;
import java.util.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.collections.*;
diff --git a/juneau-rest/juneau-rest-server-mcp/pom.xml b/juneau-rest/juneau-rest-server-mcp/pom.xml
index 59cc2da30b..ef1a6fa6ce 100644
--- a/juneau-rest/juneau-rest-server-mcp/pom.xml
+++ b/juneau-rest/juneau-rest-server-mcp/pom.xml
@@ -45,6 +45,11 @@
<artifactId>juneau-bean-mcp</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.juneau</groupId>
+ <artifactId>juneau-bean-jsonrpc</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
diff --git a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/Mcp.java b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/Mcp.java
index 53028fd271..182782eef5 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/Mcp.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/Mcp.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.server.mcp;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
diff --git a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpDispatcher.java b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpDispatcher.java
index e791904b66..ff6da6c691 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpDispatcher.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpDispatcher.java
@@ -22,6 +22,7 @@ import static org.apache.juneau.commons.utils.StringUtils.*;
import java.util.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.collections.*;
diff --git a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpEndpoint.java b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpEndpoint.java
index 09d7c95881..c5c1787bd0 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpEndpoint.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpEndpoint.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.server.mcp;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.http.Content;
diff --git a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpRestServlet.java b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpRestServlet.java
index 219850e330..1c350e92d5 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpRestServlet.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpRestServlet.java
@@ -18,6 +18,7 @@ package org.apache.juneau.rest.server.mcp;
import java.util.concurrent.atomic.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.http.Content;
diff --git a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers.java b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers.java
index 8b36d5df5c..1f11f96c13 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers.java
@@ -20,6 +20,7 @@ import static org.apache.juneau.commons.utils.AssertionUtils.*;
import java.util.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.marshaller.*;
diff --git a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/Characterization_Test.java b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/Characterization_Test.java
index 0fc80b4788..cd5a8857fe 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/Characterization_Test.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/Characterization_Test.java
@@ -22,6 +22,7 @@ import java.nio.file.*;
import java.util.*;
import java.util.function.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.collections.*;
diff --git a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpDispatcher_Test.java b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpDispatcher_Test.java
index 6f7a023ccd..67152c8506 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpDispatcher_Test.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpDispatcher_Test.java
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.*;
import java.util.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.collections.*;
diff --git a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpHandlerDefaults_Test.java b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpHandlerDefaults_Test.java
index 010f034c8a..186d99cf88 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpHandlerDefaults_Test.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpHandlerDefaults_Test.java
@@ -47,24 +47,6 @@ class McpHandlerDefaults_Test {
assertThrows(UnsupportedOperationException.class, h::descriptor);
}
- @Test
- void b01_mcpException_default_data_isNull() {
- var e = new McpException(-1, "x");
- assertNull(e.getData());
- assertEquals(-1, e.getCode());
- assertString("x", e.getMessage());
- }
-
- @Test
- void b02_mcpException_with_data() {
- var e = new McpException(-1, "x", "data");
- assertString("data", e.getData());
- var rpc = e.toJsonRpcError();
- assertEquals(-1, rpc.getCode());
- assertString("x", rpc.getMessage());
- assertString("data", rpc.getData());
- }
-
@Test
void c01_typedHandlers_constructor_isPrivate() {
// Sanity: the static façade class should not be instantiable. Reflection trick used to bump coverage on the
diff --git a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpRestServlet_Test.java b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpRestServlet_Test.java
index 3dab96235b..731c4ee93a 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpRestServlet_Test.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpRestServlet_Test.java
@@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.*;
import java.util.*;
import org.apache.juneau.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.json.*;
diff --git a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers_Test.java b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers_Test.java
index c09501b645..54a5e7d9c4 100644
--- a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers_Test.java
+++ b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/McpTypedHandlers_Test.java
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.*;
import java.util.*;
+import org.apache.juneau.bean.jsonrpc.*;
import org.apache.juneau.bean.mcp.*;
import org.apache.juneau.commons.inject.*;
import org.apache.juneau.marshall.collections.*;