diff --git a/README.md b/README.md index d21d784..c53e4cc 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ The Spring integration module provides seamless integration with Spring AI and S ### Annotations #### Client -- **`@McpLoggingConsumer`** - Annotates methods that handle logging message notifications from MCP servers +- **`@McpLogging`** - Annotates methods that handle logging message notifications from MCP servers - **`@McpSampling`** - Annotates methods that handle sampling requests from MCP servers - **`@McpElicitation`** - Annotates methods that handle elicitation requests to gather additional information from users - **`@McpProgress`** - Annotates methods that handle progress notifications for long-running operations @@ -148,9 +148,9 @@ The modules provide callback implementations for each operation type: - `AsyncStatelessMcpResourceMethodCallback` - Asynchronous stateless implementation using `McpTransportContext` #### Logging Consumer -- `AbstractMcpLoggingConsumerMethodCallback` - Base class for logging consumer method callbacks -- `SyncMcpLoggingConsumerMethodCallback` - Synchronous implementation -- `AsyncMcpLoggingConsumerMethodCallback` - Asynchronous implementation using Reactor's Mono +- `AbstractMcpLoggingMethodCallback` - Base class for logging consumer method callbacks +- `SyncMcpLoggingMethodCallback` - Synchronous implementation +- `AsyncMcpLoggingMethodCallback` - Asynchronous implementation using Reactor's Mono #### Tool - `AbstractSyncMcpToolMethodCallback` - Base class for synchronous tool method callbacks @@ -185,8 +185,8 @@ The project includes provider classes that scan for annotated methods and create - `SyncMcpResourceProvider` - Processes `@McpResource` annotations for synchronous operations - `SyncMcpToolProvider` - Processes `@McpTool` annotations for synchronous operations - `AsyncMcpToolProvider` - Processes `@McpTool` annotations for asynchronous operations -- `SyncMcpLoggingConsumerProvider` - Processes `@McpLoggingConsumer` annotations for synchronous operations -- `AsyncMcpLoggingConsumerProvider` - Processes `@McpLoggingConsumer` annotations for asynchronous operations +- `SyncMcpLoggingProvider` - Processes `@McpLogging` annotations for synchronous operations +- `AsyncMcpLoggingProvider` - Processes `@McpLogging` annotations for asynchronous operations - `SyncMcpSamplingProvider` - Processes `@McpSampling` annotations for synchronous operations - `AsyncMcpSamplingProvider` - Processes `@McpSampling` annotations for asynchronous operations - `SyncMcpElicitationProvider` - Processes `@McpElicitation` annotations for synchronous operations @@ -663,7 +663,7 @@ public class LoggingHandler { * Handle logging message notifications with a single parameter. * @param notification The logging message notification */ - @McpLoggingConsumer + @McpLogging public void handleLoggingMessage(LoggingMessageNotification notification) { System.out.println("Received logging message: " + notification.level() + " - " + notification.logger() + " - " + notification.data()); @@ -675,7 +675,7 @@ public class LoggingHandler { * @param logger The logger name * @param data The log message data */ - @McpLoggingConsumer + @McpLogging public void handleLoggingMessageWithParams(LoggingLevel level, String logger, String data) { System.out.println("Received logging message with params: " + level + " - " + logger + " - " + data); } @@ -684,7 +684,7 @@ public class LoggingHandler { * Handle logging message notifications for a specific client. * @param notification The logging message notification */ - @McpLoggingConsumer(clientId = "client-1") + @McpLogging(clientId = "client-1") public void handleClient1LoggingMessage(LoggingMessageNotification notification) { System.out.println("Client-1 logging message: " + notification.level() + " - " + notification.data()); } @@ -693,7 +693,7 @@ public class LoggingHandler { * Handle logging message notifications for another specific client. * @param notification The logging message notification */ - @McpLoggingConsumer(clientId = "client-2") + @McpLogging(clientId = "client-2") public void handleClient2LoggingMessage(LoggingMessageNotification notification) { System.out.println("Client-2 logging message: " + notification.level() + " - " + notification.data()); } @@ -704,7 +704,7 @@ public class MyMcpClient { public static McpSyncClient createClient(LoggingHandler loggingHandler) { List> loggingCOnsummers = - new SyncMcpLoggingConsumerProvider(List.of(loggingHandler)).getLoggingConsumers(); + new SyncMcpLoggingProvider(List.of(loggingHandler)).getLoggingConsumers(); McpSyncClient client = McpClient.sync(transport) .capabilities(ClientCapabilities.builder() diff --git a/mcp-annotations-spring/src/main/java/org/springaicommunity/mcp/spring/AsyncMcpAnnotationProvider.java b/mcp-annotations-spring/src/main/java/org/springaicommunity/mcp/spring/AsyncMcpAnnotationProvider.java index 434c4b2..c4c1659 100644 --- a/mcp-annotations-spring/src/main/java/org/springaicommunity/mcp/spring/AsyncMcpAnnotationProvider.java +++ b/mcp-annotations-spring/src/main/java/org/springaicommunity/mcp/spring/AsyncMcpAnnotationProvider.java @@ -22,14 +22,14 @@ import org.springaicommunity.mcp.method.logging.AsyncLoggingSpecification; import org.springaicommunity.mcp.method.progress.AsyncProgressSpecification; import org.springaicommunity.mcp.method.sampling.AsyncSamplingSpecification; -import org.springaicommunity.mcp.provider.AsyncMcpElicitationProvider; -import org.springaicommunity.mcp.provider.AsyncMcpLoggingConsumerProvider; -import org.springaicommunity.mcp.provider.AsyncMcpProgressProvider; -import org.springaicommunity.mcp.provider.AsyncMcpSamplingProvider; -import org.springaicommunity.mcp.provider.AsyncMcpToolProvider; -import org.springaicommunity.mcp.provider.AsyncStatelessMcpPromptProvider; -import org.springaicommunity.mcp.provider.AsyncStatelessMcpResourceProvider; -import org.springaicommunity.mcp.provider.AsyncStatelessMcpToolProvider; +import org.springaicommunity.mcp.provider.elicitation.AsyncMcpElicitationProvider; +import org.springaicommunity.mcp.provider.logging.AsyncMcpLoggingProvider; +import org.springaicommunity.mcp.provider.progress.AsyncMcpProgressProvider; +import org.springaicommunity.mcp.provider.prompt.AsyncStatelessMcpPromptProvider; +import org.springaicommunity.mcp.provider.resource.AsyncStatelessMcpResourceProvider; +import org.springaicommunity.mcp.provider.sampling.AsyncMcpSamplingProvider; +import org.springaicommunity.mcp.provider.tool.AsyncMcpToolProvider; +import org.springaicommunity.mcp.provider.tool.AsyncStatelessMcpToolProvider; import io.modelcontextprotocol.server.McpServerFeatures.AsyncToolSpecification; import io.modelcontextprotocol.server.McpStatelessServerFeatures; @@ -39,9 +39,9 @@ */ public class AsyncMcpAnnotationProvider { - private static class SpringAiAsyncMcpLoggingConsumerProvider extends AsyncMcpLoggingConsumerProvider { + private static class SpringAiAsyncMcpLoggingProvider extends AsyncMcpLoggingProvider { - public SpringAiAsyncMcpLoggingConsumerProvider(List loggingObjects) { + public SpringAiAsyncMcpLoggingProvider(List loggingObjects) { super(loggingObjects); } @@ -144,7 +144,7 @@ protected Method[] doGetClassMethods(Object bean) { } public static List createAsyncLoggingSpecifications(List loggingObjects) { - return new SpringAiAsyncMcpLoggingConsumerProvider(loggingObjects).getLoggingSpecifications(); + return new SpringAiAsyncMcpLoggingProvider(loggingObjects).getLoggingSpecifications(); } public static List createAsyncSamplingSpecifications(List samplingObjects) { diff --git a/mcp-annotations-spring/src/main/java/org/springaicommunity/mcp/spring/SyncMcpAnnotationProvider.java b/mcp-annotations-spring/src/main/java/org/springaicommunity/mcp/spring/SyncMcpAnnotationProvider.java index e702f71..7a57144 100644 --- a/mcp-annotations-spring/src/main/java/org/springaicommunity/mcp/spring/SyncMcpAnnotationProvider.java +++ b/mcp-annotations-spring/src/main/java/org/springaicommunity/mcp/spring/SyncMcpAnnotationProvider.java @@ -22,17 +22,17 @@ import org.springaicommunity.mcp.method.logging.SyncLoggingSpecification; import org.springaicommunity.mcp.method.progress.SyncProgressSpecification; import org.springaicommunity.mcp.method.sampling.SyncSamplingSpecification; -import org.springaicommunity.mcp.provider.SyncMcpCompletionProvider; -import org.springaicommunity.mcp.provider.SyncMcpElicitationProvider; -import org.springaicommunity.mcp.provider.SyncMcpLoggingConsumerProvider; -import org.springaicommunity.mcp.provider.SyncMcpProgressProvider; -import org.springaicommunity.mcp.provider.SyncMcpPromptProvider; -import org.springaicommunity.mcp.provider.SyncMcpResourceProvider; -import org.springaicommunity.mcp.provider.SyncMcpSamplingProvider; -import org.springaicommunity.mcp.provider.SyncMcpToolProvider; -import org.springaicommunity.mcp.provider.SyncStatelessMcpPromptProvider; -import org.springaicommunity.mcp.provider.SyncStatelessMcpResourceProvider; -import org.springaicommunity.mcp.provider.SyncStatelessMcpToolProvider; +import org.springaicommunity.mcp.provider.complete.SyncMcpCompletionProvider; +import org.springaicommunity.mcp.provider.elicitation.SyncMcpElicitationProvider; +import org.springaicommunity.mcp.provider.logging.SyncMcpLogginProvider; +import org.springaicommunity.mcp.provider.progress.SyncMcpProgressProvider; +import org.springaicommunity.mcp.provider.prompt.SyncMcpPromptProvider; +import org.springaicommunity.mcp.provider.prompt.SyncStatelessMcpPromptProvider; +import org.springaicommunity.mcp.provider.resource.SyncMcpResourceProvider; +import org.springaicommunity.mcp.provider.resource.SyncStatelessMcpResourceProvider; +import org.springaicommunity.mcp.provider.sampling.SyncMcpSamplingProvider; +import org.springaicommunity.mcp.provider.tool.SyncMcpToolProvider; +import org.springaicommunity.mcp.provider.tool.SyncStatelessMcpToolProvider; import io.modelcontextprotocol.server.McpServerFeatures.SyncCompletionSpecification; import io.modelcontextprotocol.server.McpServerFeatures.SyncPromptSpecification; @@ -136,9 +136,9 @@ protected Method[] doGetClassMethods(Object bean) { } - private static class SpringAiSyncMcpLoggingConsumerProvider extends SyncMcpLoggingConsumerProvider { + private static class SpringAiSyncMcpLoggingProvider extends SyncMcpLogginProvider { - public SpringAiSyncMcpLoggingConsumerProvider(List loggingObjects) { + public SpringAiSyncMcpLoggingProvider(List loggingObjects) { super(loggingObjects); } @@ -220,7 +220,7 @@ public static List createS } public static List createSyncLoggingSpecifications(List loggingObjects) { - return new SpringAiSyncMcpLoggingConsumerProvider(loggingObjects).getLoggingSpecifications(); + return new SpringAiSyncMcpLoggingProvider(loggingObjects).getLoggingSpecifications(); } public static List createSyncSamplingSpecifications(List samplingObjects) { diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/annotation/McpLoggingConsumer.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/annotation/McpLogging.java similarity index 95% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/annotation/McpLoggingConsumer.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/annotation/McpLogging.java index 9354d99..f4a4c53 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/annotation/McpLoggingConsumer.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/annotation/McpLogging.java @@ -29,14 +29,14 @@ * *

* Example usage:

{@code
- * @McpLoggingConsumer
+ * @McpLogging
  * public void handleLoggingMessage(LoggingMessageNotification notification) {
  *     // Handle the notification
  * }
  *
  *
 
-@McpLoggingConsumer
+@McpLogging
  * public void handleLoggingMessageWithParams(LoggingLevel level, String logger, String data) {
  *     // Handle the logging message
  * }
@@ -49,7 +49,7 @@
 @Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
-public @interface McpLoggingConsumer {
+public @interface McpLogging {
 
 	/**
 	 * Used as connection or client identifier to select the MCP client, the logging
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AbstractMcpLoggingConsumerMethodCallback.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AbstractMcpLoggingMethodCallback.java
similarity index 96%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AbstractMcpLoggingConsumerMethodCallback.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AbstractMcpLoggingMethodCallback.java
index 301f467..1f3aebb 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AbstractMcpLoggingConsumerMethodCallback.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AbstractMcpLoggingMethodCallback.java
@@ -7,7 +7,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Parameter;
 
-import org.springaicommunity.mcp.annotation.McpLoggingConsumer;
+import org.springaicommunity.mcp.annotation.McpLogging;
 
 import io.modelcontextprotocol.spec.McpSchema.LoggingLevel;
 import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification;
@@ -22,7 +22,7 @@
  *
  * @author Christian Tzolov
  */
-public abstract class AbstractMcpLoggingConsumerMethodCallback {
+public abstract class AbstractMcpLoggingMethodCallback {
 
 	protected final Method method;
 
@@ -33,7 +33,7 @@ public abstract class AbstractMcpLoggingConsumerMethodCallback {
 	 * @param method The method to create a callback for
 	 * @param bean The bean instance that contains the method
 	 */
-	protected AbstractMcpLoggingConsumerMethodCallback(Method method, Object bean) {
+	protected AbstractMcpLoggingMethodCallback(Method method, Object bean) {
 		Assert.notNull(method, "Method can't be null!");
 		Assert.notNull(bean, "Bean can't be null!");
 
@@ -212,7 +212,7 @@ public T bean(Object bean) {
 		 * @return This builder
 		 */
 		@SuppressWarnings("unchecked")
-		public T loggingConsumer(McpLoggingConsumer loggingConsumer) {
+		public T loggingConsumer(McpLogging loggingConsumer) {
 			// No additional configuration needed from the annotation at this time
 			return (T) this;
 		}
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallback.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallback.java
similarity index 88%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallback.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallback.java
index 4801e6e..60edc6c 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallback.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallback.java
@@ -7,7 +7,7 @@
 import java.lang.reflect.Method;
 import java.util.function.Function;
 
-import org.springaicommunity.mcp.annotation.McpLoggingConsumer;
+import org.springaicommunity.mcp.annotation.McpLogging;
 
 import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification;
 import reactor.core.publisher.Mono;
@@ -15,17 +15,17 @@
 /**
  * Class for creating Function callbacks around logging consumer methods that return Mono.
  *
- * This class provides a way to convert methods annotated with {@link McpLoggingConsumer}
- * into callback functions that can be used to handle logging message notifications in a
+ * This class provides a way to convert methods annotated with {@link McpLogging} into
+ * callback functions that can be used to handle logging message notifications in a
  * reactive way. It supports methods with either a single LoggingMessageNotification
  * parameter or three parameters (LoggingLevel, String, String).
  *
  * @author Christian Tzolov
  */
-public final class AsyncMcpLoggingConsumerMethodCallback extends AbstractMcpLoggingConsumerMethodCallback
+public final class AsyncMcpLoggingMethodCallback extends AbstractMcpLoggingMethodCallback
 		implements Function> {
 
-	private AsyncMcpLoggingConsumerMethodCallback(Builder builder) {
+	private AsyncMcpLoggingMethodCallback(Builder builder) {
 		super(builder.method, builder.bean);
 	}
 
@@ -102,16 +102,16 @@ protected void validateReturnType(Method method) {
 	 * This builder provides a fluent API for constructing
 	 * AsyncMcpLoggingConsumerMethodCallback instances with the required parameters.
 	 */
-	public static class Builder extends AbstractBuilder {
+	public static class Builder extends AbstractBuilder {
 
 		/**
 		 * Build the callback.
 		 * @return A new AsyncMcpLoggingConsumerMethodCallback instance
 		 */
 		@Override
-		public AsyncMcpLoggingConsumerMethodCallback build() {
+		public AsyncMcpLoggingMethodCallback build() {
 			validate();
-			return new AsyncMcpLoggingConsumerMethodCallback(this);
+			return new AsyncMcpLoggingMethodCallback(this);
 		}
 
 	}
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallback.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallback.java
similarity index 84%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallback.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallback.java
index 7229c67..34f351a 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallback.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallback.java
@@ -7,24 +7,24 @@
 import java.lang.reflect.Method;
 import java.util.function.Consumer;
 
-import org.springaicommunity.mcp.annotation.McpLoggingConsumer;
+import org.springaicommunity.mcp.annotation.McpLogging;
 
 import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification;
 
 /**
  * Class for creating Consumer callbacks around logging consumer methods.
  *
- * This class provides a way to convert methods annotated with {@link McpLoggingConsumer}
- * into callback functions that can be used to handle logging message notifications. It
+ * This class provides a way to convert methods annotated with {@link McpLogging} into
+ * callback functions that can be used to handle logging message notifications. It
  * supports methods with either a single LoggingMessageNotification parameter or three
  * parameters (LoggingLevel, String, String).
  *
  * @author Christian Tzolov
  */
-public final class SyncMcpLoggingConsumerMethodCallback extends AbstractMcpLoggingConsumerMethodCallback
+public final class SyncMcpLoggingMethodCallback extends AbstractMcpLoggingMethodCallback
 		implements Consumer {
 
-	private SyncMcpLoggingConsumerMethodCallback(Builder builder) {
+	private SyncMcpLoggingMethodCallback(Builder builder) {
 		super(builder.method, builder.bean);
 	}
 
@@ -79,16 +79,16 @@ protected void validateReturnType(Method method) {
 	 * This builder provides a fluent API for constructing
 	 * SyncMcpLoggingConsumerMethodCallback instances with the required parameters.
 	 */
-	public static class Builder extends AbstractBuilder {
+	public static class Builder extends AbstractBuilder {
 
 		/**
 		 * Build the callback.
 		 * @return A new SyncMcpLoggingConsumerMethodCallback instance
 		 */
 		@Override
-		public SyncMcpLoggingConsumerMethodCallback build() {
+		public SyncMcpLoggingMethodCallback build() {
 			validate();
-			return new SyncMcpLoggingConsumerMethodCallback(this);
+			return new SyncMcpLoggingMethodCallback(this);
 		}
 
 	}
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpCompleteProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/AsyncStatelessMcpCompleteProvider.java
similarity index 98%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpCompleteProvider.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/AsyncStatelessMcpCompleteProvider.java
index 437c169..62fc3f8 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpCompleteProvider.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/AsyncStatelessMcpCompleteProvider.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.springaicommunity.mcp.provider;
+package org.springaicommunity.mcp.provider.complete;
 
 import java.lang.reflect.Method;
 import java.util.List;
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpCompletionProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/SyncMcpCompletionProvider.java
similarity index 97%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpCompletionProvider.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/SyncMcpCompletionProvider.java
index e664dd8..d75d91f 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpCompletionProvider.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/SyncMcpCompletionProvider.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.springaicommunity.mcp.provider;
+package org.springaicommunity.mcp.provider.complete;
 
 import java.lang.reflect.Method;
 import java.util.List;
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpCompleteProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/SyncStatelessMcpCompleteProvider.java
similarity index 98%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpCompleteProvider.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/SyncStatelessMcpCompleteProvider.java
index 83ea95b..b692078 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpCompleteProvider.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/complete/SyncStatelessMcpCompleteProvider.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.springaicommunity.mcp.provider;
+package org.springaicommunity.mcp.provider.complete;
 
 import java.lang.reflect.Method;
 import java.util.List;
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpElicitationProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/elicitation/AsyncMcpElicitationProvider.java
similarity index 98%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpElicitationProvider.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/elicitation/AsyncMcpElicitationProvider.java
index b1e9576..17b122b 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpElicitationProvider.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/elicitation/AsyncMcpElicitationProvider.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.springaicommunity.mcp.provider;
+package org.springaicommunity.mcp.provider.elicitation;
 
 import java.lang.reflect.Method;
 import java.util.List;
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpElicitationProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/elicitation/SyncMcpElicitationProvider.java
similarity index 98%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpElicitationProvider.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/elicitation/SyncMcpElicitationProvider.java
index 2192e33..887f5bb 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpElicitationProvider.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/elicitation/SyncMcpElicitationProvider.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.springaicommunity.mcp.provider;
+package org.springaicommunity.mcp.provider.elicitation;
 
 import java.lang.reflect.Method;
 import java.util.List;
diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpLoggingConsumerProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/logging/AsyncMcpLoggingProvider.java
similarity index 80%
rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpLoggingConsumerProvider.java
rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/logging/AsyncMcpLoggingProvider.java
index 4b1bb8b..eceb1b5 100644
--- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpLoggingConsumerProvider.java
+++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/logging/AsyncMcpLoggingProvider.java
@@ -14,16 +14,16 @@
  * limitations under the License.
  */
 
-package org.springaicommunity.mcp.provider;
+package org.springaicommunity.mcp.provider.logging;
 
 import java.lang.reflect.Method;
 import java.util.List;
 import java.util.function.Function;
 import java.util.stream.Stream;
 
-import org.springaicommunity.mcp.annotation.McpLoggingConsumer;
+import org.springaicommunity.mcp.annotation.McpLogging;
 import org.springaicommunity.mcp.method.logging.AsyncLoggingSpecification;
-import org.springaicommunity.mcp.method.logging.AsyncMcpLoggingConsumerMethodCallback;
+import org.springaicommunity.mcp.method.logging.AsyncMcpLoggingMethodCallback;
 
 import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification;
 import io.modelcontextprotocol.util.Assert;
@@ -33,10 +33,9 @@
  * Provider for asynchronous logging consumer callbacks.
  *
  * 

- * This class scans a list of objects for methods annotated with - * {@link McpLoggingConsumer} and creates {@link Function} callbacks for them. These - * callbacks can be used to handle logging message notifications from MCP servers in a - * reactive way. + * This class scans a list of objects for methods annotated with {@link McpLogging} and + * creates {@link Function} callbacks for them. These callbacks can be used to handle + * logging message notifications from MCP servers in a reactive way. * *

* Example usage:

{@code
@@ -54,20 +53,20 @@
  * }
* * @author Christian Tzolov - * @see McpLoggingConsumer - * @see AsyncMcpLoggingConsumerMethodCallback + * @see McpLogging + * @see AsyncMcpLoggingMethodCallback * @see LoggingMessageNotification */ -public class AsyncMcpLoggingConsumerProvider { +public class AsyncMcpLoggingProvider { private final List loggingConsumerObjects; /** * Create a new AsyncMcpLoggingConsumerProvider. * @param loggingConsumerObjects the objects containing methods annotated with - * {@link McpLoggingConsumer} + * {@link McpLogging} */ - public AsyncMcpLoggingConsumerProvider(List loggingConsumerObjects) { + public AsyncMcpLoggingProvider(List loggingConsumerObjects) { Assert.notNull(loggingConsumerObjects, "loggingConsumerObjects cannot be null"); this.loggingConsumerObjects = loggingConsumerObjects; } @@ -80,11 +79,11 @@ public List getLoggingSpecifications() { List loggingConsumers = this.loggingConsumerObjects.stream() .map(consumerObject -> Stream.of(doGetClassMethods(consumerObject)) - .filter(method -> method.isAnnotationPresent(McpLoggingConsumer.class)) + .filter(method -> method.isAnnotationPresent(McpLogging.class)) .map(mcpLoggingConsumerMethod -> { - var loggingConsumerAnnotation = mcpLoggingConsumerMethod.getAnnotation(McpLoggingConsumer.class); + var loggingConsumerAnnotation = mcpLoggingConsumerMethod.getAnnotation(McpLogging.class); - Function> methodCallback = AsyncMcpLoggingConsumerMethodCallback + Function> methodCallback = AsyncMcpLoggingMethodCallback .builder() .method(mcpLoggingConsumerMethod) .bean(consumerObject) diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpLoggingConsumerProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/logging/SyncMcpLogginProvider.java similarity index 81% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpLoggingConsumerProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/logging/SyncMcpLogginProvider.java index 2606cc9..f05b055 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpLoggingConsumerProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/logging/SyncMcpLogginProvider.java @@ -14,16 +14,16 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.logging; import java.lang.reflect.Method; import java.util.List; import java.util.function.Consumer; import java.util.stream.Stream; -import org.springaicommunity.mcp.annotation.McpLoggingConsumer; +import org.springaicommunity.mcp.annotation.McpLogging; import org.springaicommunity.mcp.method.logging.SyncLoggingSpecification; -import org.springaicommunity.mcp.method.logging.SyncMcpLoggingConsumerMethodCallback; +import org.springaicommunity.mcp.method.logging.SyncMcpLoggingMethodCallback; import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; import io.modelcontextprotocol.util.Assert; @@ -33,9 +33,9 @@ * Provider for synchronous logging consumer callbacks. * *

- * This class scans a list of objects for methods annotated with - * {@link McpLoggingConsumer} and creates {@link Consumer} callbacks for them. These - * callbacks can be used to handle logging message notifications from MCP servers. + * This class scans a list of objects for methods annotated with {@link McpLogging} and + * creates {@link Consumer} callbacks for them. These callbacks can be used to handle + * logging message notifications from MCP servers. * *

* Example usage:

{@code
@@ -53,20 +53,20 @@
  * }
* * @author Christian Tzolov - * @see McpLoggingConsumer - * @see SyncMcpLoggingConsumerMethodCallback + * @see McpLogging + * @see SyncMcpLoggingMethodCallback * @see LoggingMessageNotification */ -public class SyncMcpLoggingConsumerProvider { +public class SyncMcpLogginProvider { private final List loggingConsumerObjects; /** * Create a new SyncMcpLoggingConsumerProvider. * @param loggingConsumerObjects the objects containing methods annotated with - * {@link McpLoggingConsumer} + * {@link McpLogging} */ - public SyncMcpLoggingConsumerProvider(List loggingConsumerObjects) { + public SyncMcpLogginProvider(List loggingConsumerObjects) { Assert.notNull(loggingConsumerObjects, "loggingConsumerObjects cannot be null"); this.loggingConsumerObjects = loggingConsumerObjects; } @@ -79,12 +79,12 @@ public List getLoggingSpecifications() { List loggingConsumers = this.loggingConsumerObjects.stream() .map(consumerObject -> Stream.of(doGetClassMethods(consumerObject)) - .filter(method -> method.isAnnotationPresent(McpLoggingConsumer.class)) + .filter(method -> method.isAnnotationPresent(McpLogging.class)) .filter(method -> !Mono.class.isAssignableFrom(method.getReturnType())) .map(mcpLoggingConsumerMethod -> { - var loggingConsumerAnnotation = mcpLoggingConsumerMethod.getAnnotation(McpLoggingConsumer.class); + var loggingConsumerAnnotation = mcpLoggingConsumerMethod.getAnnotation(McpLogging.class); - Consumer methodCallback = SyncMcpLoggingConsumerMethodCallback.builder() + Consumer methodCallback = SyncMcpLoggingMethodCallback.builder() .method(mcpLoggingConsumerMethod) .bean(consumerObject) .loggingConsumer(loggingConsumerAnnotation) diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpProgressProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/progress/AsyncMcpProgressProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpProgressProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/progress/AsyncMcpProgressProvider.java index 8378380..ffd6def 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpProgressProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/progress/AsyncMcpProgressProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.progress; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpProgressProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/progress/SyncMcpProgressProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpProgressProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/progress/SyncMcpProgressProvider.java index dace4f2..f3f09a8 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpProgressProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/progress/SyncMcpProgressProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.progress; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpPromptProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/AsyncStatelessMcpPromptProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpPromptProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/AsyncStatelessMcpPromptProvider.java index 5f17ff9..e139fcb 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpPromptProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/AsyncStatelessMcpPromptProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.prompt; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpPromptProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/SyncMcpPromptProvider.java similarity index 97% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpPromptProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/SyncMcpPromptProvider.java index 4449043..04d9d3b 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpPromptProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/SyncMcpPromptProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.prompt; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpPromptProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/SyncStatelessMcpPromptProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpPromptProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/SyncStatelessMcpPromptProvider.java index 03f83ad..2f78526 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpPromptProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/prompt/SyncStatelessMcpPromptProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.prompt; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpResourceProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/AsyncStatelessMcpResourceProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpResourceProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/AsyncStatelessMcpResourceProvider.java index 826e8bb..b4db50b 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpResourceProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/AsyncStatelessMcpResourceProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.resource; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpResourceProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/SyncMcpResourceProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpResourceProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/SyncMcpResourceProvider.java index b3991ff..c4a9a0b 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpResourceProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/SyncMcpResourceProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.resource; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpResourceProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/SyncStatelessMcpResourceProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpResourceProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/SyncStatelessMcpResourceProvider.java index 2a5630e..c7d8e17 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpResourceProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/resource/SyncStatelessMcpResourceProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.resource; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpSamplingProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/sampling/AsyncMcpSamplingProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpSamplingProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/sampling/AsyncMcpSamplingProvider.java index ac17cee..d837b31 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpSamplingProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/sampling/AsyncMcpSamplingProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.sampling; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpSamplingProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/sampling/SyncMcpSamplingProvider.java similarity index 98% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpSamplingProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/sampling/SyncMcpSamplingProvider.java index 80b4ef9..07bf132 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpSamplingProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/sampling/SyncMcpSamplingProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.sampling; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpToolProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/AsyncMcpToolProvider.java similarity index 99% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpToolProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/AsyncMcpToolProvider.java index 4da33d2..be1a526 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncMcpToolProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/AsyncMcpToolProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.tool; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpToolProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/AsyncStatelessMcpToolProvider.java similarity index 99% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpToolProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/AsyncStatelessMcpToolProvider.java index 23edf1c..4d915c9 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpToolProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/AsyncStatelessMcpToolProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.tool; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpToolProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProvider.java similarity index 99% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpToolProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProvider.java index c2bedb0..fd492bd 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncMcpToolProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.tool; import java.lang.reflect.Method; import java.util.Arrays; diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpToolProvider.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/SyncStatelessMcpToolProvider.java similarity index 99% rename from mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpToolProvider.java rename to mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/SyncStatelessMcpToolProvider.java index 8b12761..1f92915 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/SyncStatelessMcpToolProvider.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/provider/tool/SyncStatelessMcpToolProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.tool; import java.lang.reflect.Method; import java.util.List; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallbackExample.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallbackExample.java similarity index 77% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallbackExample.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallbackExample.java index 51be5d7..b4e3541 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallbackExample.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallbackExample.java @@ -7,30 +7,29 @@ import java.lang.reflect.Method; import java.util.function.Function; -import org.springaicommunity.mcp.annotation.McpLoggingConsumer; -import org.springaicommunity.mcp.method.logging.AsyncMcpLoggingConsumerMethodCallback; +import org.springaicommunity.mcp.annotation.McpLogging; import io.modelcontextprotocol.spec.McpSchema.LoggingLevel; import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; import reactor.core.publisher.Mono; /** - * Example class demonstrating the use of {@link AsyncMcpLoggingConsumerMethodCallback}. + * Example class demonstrating the use of {@link AsyncMcpLoggingMethodCallback}. * * This class shows how to create and use an asynchronous logging consumer method - * callback. It provides examples of methods annotated with {@link McpLoggingConsumer} - * that can be used to handle logging message notifications in a reactive way. + * callback. It provides examples of methods annotated with {@link McpLogging} that can be + * used to handle logging message notifications in a reactive way. * * @author Christian Tzolov */ -public class AsyncMcpLoggingConsumerMethodCallbackExample { +public class AsyncMcpLoggingMethodCallbackExample { /** * Example method that accepts a LoggingMessageNotification and returns Mono. * @param notification The logging message notification * @return A Mono that completes when the processing is done */ - @McpLoggingConsumer + @McpLogging public Mono handleLoggingMessage(LoggingMessageNotification notification) { return Mono.fromRunnable(() -> { System.out.println("Received logging message: " + notification.level() + " - " + notification.logger() @@ -46,7 +45,7 @@ public Mono handleLoggingMessage(LoggingMessageNotification notification) * @param data The log message data * @return A Mono that completes when the processing is done */ - @McpLoggingConsumer + @McpLogging public Mono handleLoggingMessageWithParams(LoggingLevel level, String logger, String data) { return Mono.fromRunnable(() -> { System.out.println("Received logging message with params: " + level + " - " + logger + " - " + data); @@ -57,7 +56,7 @@ public Mono handleLoggingMessageWithParams(LoggingLevel level, String logg * Example method that accepts a LoggingMessageNotification with void return type. * @param notification The logging message notification */ - @McpLoggingConsumer + @McpLogging public void handleLoggingMessageVoid(LoggingMessageNotification notification) { System.out.println("Received logging message (void): " + notification.level() + " - " + notification.logger() + " - " + notification.data()); @@ -70,28 +69,28 @@ public void handleLoggingMessageVoid(LoggingMessageNotification notification) { */ public static void main(String[] args) throws Exception { // Create an instance of the example class - AsyncMcpLoggingConsumerMethodCallbackExample example = new AsyncMcpLoggingConsumerMethodCallbackExample(); + AsyncMcpLoggingMethodCallbackExample example = new AsyncMcpLoggingMethodCallbackExample(); // Create a callback for the handleLoggingMessage method - Method method1 = AsyncMcpLoggingConsumerMethodCallbackExample.class.getMethod("handleLoggingMessage", + Method method1 = AsyncMcpLoggingMethodCallbackExample.class.getMethod("handleLoggingMessage", LoggingMessageNotification.class); - Function> callback1 = AsyncMcpLoggingConsumerMethodCallback.builder() + Function> callback1 = AsyncMcpLoggingMethodCallback.builder() .method(method1) .bean(example) .build(); // Create a callback for the handleLoggingMessageWithParams method - Method method2 = AsyncMcpLoggingConsumerMethodCallbackExample.class.getMethod("handleLoggingMessageWithParams", + Method method2 = AsyncMcpLoggingMethodCallbackExample.class.getMethod("handleLoggingMessageWithParams", LoggingLevel.class, String.class, String.class); - Function> callback2 = AsyncMcpLoggingConsumerMethodCallback.builder() + Function> callback2 = AsyncMcpLoggingMethodCallback.builder() .method(method2) .bean(example) .build(); // Create a callback for the handleLoggingMessageVoid method - Method method3 = AsyncMcpLoggingConsumerMethodCallbackExample.class.getMethod("handleLoggingMessageVoid", + Method method3 = AsyncMcpLoggingMethodCallbackExample.class.getMethod("handleLoggingMessageVoid", LoggingMessageNotification.class); - Function> callback3 = AsyncMcpLoggingConsumerMethodCallback.builder() + Function> callback3 = AsyncMcpLoggingMethodCallback.builder() .method(method3) .bean(example) .build(); diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallbackTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallbackTests.java similarity index 84% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallbackTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallbackTests.java index 4f01e88..34a768a 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingConsumerMethodCallbackTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/AsyncMcpLoggingMethodCallbackTests.java @@ -11,8 +11,7 @@ import java.util.function.Function; import org.junit.jupiter.api.Test; -import org.springaicommunity.mcp.annotation.McpLoggingConsumer; -import org.springaicommunity.mcp.method.logging.AsyncMcpLoggingConsumerMethodCallback; +import org.springaicommunity.mcp.annotation.McpLogging; import io.modelcontextprotocol.spec.McpSchema.LoggingLevel; import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; @@ -20,11 +19,11 @@ import reactor.test.StepVerifier; /** - * Tests for {@link AsyncMcpLoggingConsumerMethodCallback}. + * Tests for {@link AsyncMcpLoggingMethodCallback}. * * @author Christian Tzolov */ -public class AsyncMcpLoggingConsumerMethodCallbackTests { +public class AsyncMcpLoggingMethodCallbackTests { private static final LoggingMessageNotification TEST_NOTIFICATION = new LoggingMessageNotification( LoggingLevel.INFO, "test-logger", "This is a test message"); @@ -42,14 +41,14 @@ static class ValidMethods { private String lastData; - @McpLoggingConsumer + @McpLogging public Mono handleLoggingMessage(LoggingMessageNotification notification) { return Mono.fromRunnable(() -> { this.lastNotification = notification; }); } - @McpLoggingConsumer + @McpLogging public Mono handleLoggingMessageWithParams(LoggingLevel level, String logger, String data) { return Mono.fromRunnable(() -> { this.lastLevel = level; @@ -58,7 +57,7 @@ public Mono handleLoggingMessageWithParams(LoggingLevel level, String logg }); } - @McpLoggingConsumer + @McpLogging public void handleLoggingMessageVoid(LoggingMessageNotification notification) { this.lastNotification = notification; } @@ -70,27 +69,27 @@ public void handleLoggingMessageVoid(LoggingMessageNotification notification) { */ static class InvalidMethods { - @McpLoggingConsumer + @McpLogging public String invalidReturnType(LoggingMessageNotification notification) { return "Invalid"; } - @McpLoggingConsumer + @McpLogging public Mono invalidMonoReturnType(LoggingMessageNotification notification) { return Mono.just("Invalid"); } - @McpLoggingConsumer + @McpLogging public Mono invalidParameterCount(LoggingMessageNotification notification, String extra) { return Mono.empty(); } - @McpLoggingConsumer + @McpLogging public Mono invalidParameterType(String invalidType) { return Mono.empty(); } - @McpLoggingConsumer + @McpLogging public Mono invalidParameterTypes(String level, int logger, boolean data) { return Mono.empty(); } @@ -102,7 +101,7 @@ void testValidMethodWithNotification() throws Exception { ValidMethods bean = new ValidMethods(); Method method = ValidMethods.class.getMethod("handleLoggingMessage", LoggingMessageNotification.class); - Function> callback = AsyncMcpLoggingConsumerMethodCallback.builder() + Function> callback = AsyncMcpLoggingMethodCallback.builder() .method(method) .bean(bean) .build(); @@ -118,7 +117,7 @@ void testValidMethodWithParams() throws Exception { Method method = ValidMethods.class.getMethod("handleLoggingMessageWithParams", LoggingLevel.class, String.class, String.class); - Function> callback = AsyncMcpLoggingConsumerMethodCallback.builder() + Function> callback = AsyncMcpLoggingMethodCallback.builder() .method(method) .bean(bean) .build(); @@ -135,7 +134,7 @@ void testValidVoidMethod() throws Exception { ValidMethods bean = new ValidMethods(); Method method = ValidMethods.class.getMethod("handleLoggingMessageVoid", LoggingMessageNotification.class); - Function> callback = AsyncMcpLoggingConsumerMethodCallback.builder() + Function> callback = AsyncMcpLoggingMethodCallback.builder() .method(method) .bean(bean) .build(); @@ -150,7 +149,7 @@ void testInvalidReturnType() throws Exception { InvalidMethods bean = new InvalidMethods(); Method method = InvalidMethods.class.getMethod("invalidReturnType", LoggingMessageNotification.class); - assertThatThrownBy(() -> AsyncMcpLoggingConsumerMethodCallback.builder().method(method).bean(bean).build()) + assertThatThrownBy(() -> AsyncMcpLoggingMethodCallback.builder().method(method).bean(bean).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("Method must have void or Mono return type"); } @@ -161,7 +160,7 @@ void testInvalidMonoReturnType() throws Exception { Method method = InvalidMethods.class.getMethod("invalidMonoReturnType", LoggingMessageNotification.class); // This will pass validation since we can't check the generic type at runtime - Function> callback = AsyncMcpLoggingConsumerMethodCallback.builder() + Function> callback = AsyncMcpLoggingMethodCallback.builder() .method(method) .bean(bean) .build(); @@ -176,7 +175,7 @@ void testInvalidParameterCount() throws Exception { Method method = InvalidMethods.class.getMethod("invalidParameterCount", LoggingMessageNotification.class, String.class); - assertThatThrownBy(() -> AsyncMcpLoggingConsumerMethodCallback.builder().method(method).bean(bean).build()) + assertThatThrownBy(() -> AsyncMcpLoggingMethodCallback.builder().method(method).bean(bean).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("Method must have either 1 parameter (LoggingMessageNotification) or 3 parameters"); } @@ -186,7 +185,7 @@ void testInvalidParameterType() throws Exception { InvalidMethods bean = new InvalidMethods(); Method method = InvalidMethods.class.getMethod("invalidParameterType", String.class); - assertThatThrownBy(() -> AsyncMcpLoggingConsumerMethodCallback.builder().method(method).bean(bean).build()) + assertThatThrownBy(() -> AsyncMcpLoggingMethodCallback.builder().method(method).bean(bean).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("Single parameter must be of type LoggingMessageNotification"); } @@ -196,7 +195,7 @@ void testInvalidParameterTypes() throws Exception { InvalidMethods bean = new InvalidMethods(); Method method = InvalidMethods.class.getMethod("invalidParameterTypes", String.class, int.class, boolean.class); - assertThatThrownBy(() -> AsyncMcpLoggingConsumerMethodCallback.builder().method(method).bean(bean).build()) + assertThatThrownBy(() -> AsyncMcpLoggingMethodCallback.builder().method(method).bean(bean).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("First parameter must be of type LoggingLevel"); } @@ -206,7 +205,7 @@ void testNullNotification() throws Exception { ValidMethods bean = new ValidMethods(); Method method = ValidMethods.class.getMethod("handleLoggingMessage", LoggingMessageNotification.class); - Function> callback = AsyncMcpLoggingConsumerMethodCallback.builder() + Function> callback = AsyncMcpLoggingMethodCallback.builder() .method(method) .bean(bean) .build(); diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallbackExample.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallbackExample.java similarity index 74% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallbackExample.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallbackExample.java index 83f7bcd..d6c42a1 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallbackExample.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallbackExample.java @@ -7,28 +7,27 @@ import java.lang.reflect.Method; import java.util.function.Consumer; -import org.springaicommunity.mcp.annotation.McpLoggingConsumer; -import org.springaicommunity.mcp.method.logging.SyncMcpLoggingConsumerMethodCallback; +import org.springaicommunity.mcp.annotation.McpLogging; import io.modelcontextprotocol.spec.McpSchema.LoggingLevel; import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; /** - * Example class demonstrating the use of {@link SyncMcpLoggingConsumerMethodCallback}. + * Example class demonstrating the use of {@link SyncMcpLoggingMethodCallback}. * * This class shows how to create and use a synchronous logging consumer method callback. - * It provides examples of methods annotated with {@link McpLoggingConsumer} that can be - * used to handle logging message notifications. + * It provides examples of methods annotated with {@link McpLogging} that can be used to + * handle logging message notifications. * * @author Christian Tzolov */ -public class SyncMcpLoggingConsumerMethodCallbackExample { +public class SyncMcpLoggingMethodCallbackExample { /** * Example method that accepts a LoggingMessageNotification. * @param notification The logging message notification */ - @McpLoggingConsumer + @McpLogging public void handleLoggingMessage(LoggingMessageNotification notification) { System.out.println("Received logging message: " + notification.level() + " - " + notification.logger() + " - " + notification.data()); @@ -40,7 +39,7 @@ public void handleLoggingMessage(LoggingMessageNotification notification) { * @param logger The logger name * @param data The log message data */ - @McpLoggingConsumer + @McpLogging public void handleLoggingMessageWithParams(LoggingLevel level, String logger, String data) { System.out.println("Received logging message with params: " + level + " - " + logger + " - " + data); } @@ -52,20 +51,20 @@ public void handleLoggingMessageWithParams(LoggingLevel level, String logger, St */ public static void main(String[] args) throws Exception { // Create an instance of the example class - SyncMcpLoggingConsumerMethodCallbackExample example = new SyncMcpLoggingConsumerMethodCallbackExample(); + SyncMcpLoggingMethodCallbackExample example = new SyncMcpLoggingMethodCallbackExample(); // Create a callback for the handleLoggingMessage method - Method method1 = SyncMcpLoggingConsumerMethodCallbackExample.class.getMethod("handleLoggingMessage", + Method method1 = SyncMcpLoggingMethodCallbackExample.class.getMethod("handleLoggingMessage", LoggingMessageNotification.class); - Consumer callback1 = SyncMcpLoggingConsumerMethodCallback.builder() + Consumer callback1 = SyncMcpLoggingMethodCallback.builder() .method(method1) .bean(example) .build(); // Create a callback for the handleLoggingMessageWithParams method - Method method2 = SyncMcpLoggingConsumerMethodCallbackExample.class.getMethod("handleLoggingMessageWithParams", + Method method2 = SyncMcpLoggingMethodCallbackExample.class.getMethod("handleLoggingMessageWithParams", LoggingLevel.class, String.class, String.class); - Consumer callback2 = SyncMcpLoggingConsumerMethodCallback.builder() + Consumer callback2 = SyncMcpLoggingMethodCallback.builder() .method(method2) .bean(example) .build(); diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallbackTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallbackTests.java similarity index 83% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallbackTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallbackTests.java index 8369d60..953759a 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingConsumerMethodCallbackTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/logging/SyncMcpLoggingMethodCallbackTests.java @@ -11,18 +11,17 @@ import java.util.function.Consumer; import org.junit.jupiter.api.Test; -import org.springaicommunity.mcp.annotation.McpLoggingConsumer; -import org.springaicommunity.mcp.method.logging.SyncMcpLoggingConsumerMethodCallback; +import org.springaicommunity.mcp.annotation.McpLogging; import io.modelcontextprotocol.spec.McpSchema.LoggingLevel; import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; /** - * Tests for {@link SyncMcpLoggingConsumerMethodCallback}. + * Tests for {@link SyncMcpLoggingMethodCallback}. * * @author Christian Tzolov */ -public class SyncMcpLoggingConsumerMethodCallbackTests { +public class SyncMcpLoggingMethodCallbackTests { private static final LoggingMessageNotification TEST_NOTIFICATION = new LoggingMessageNotification( LoggingLevel.INFO, "test-logger", "This is a test message"); @@ -40,12 +39,12 @@ static class ValidMethods { private String lastData; - @McpLoggingConsumer + @McpLogging public void handleLoggingMessage(LoggingMessageNotification notification) { this.lastNotification = notification; } - @McpLoggingConsumer + @McpLogging public void handleLoggingMessageWithParams(LoggingLevel level, String logger, String data) { this.lastLevel = level; this.lastLogger = logger; @@ -59,22 +58,22 @@ public void handleLoggingMessageWithParams(LoggingLevel level, String logger, St */ static class InvalidMethods { - @McpLoggingConsumer + @McpLogging public String invalidReturnType(LoggingMessageNotification notification) { return "Invalid"; } - @McpLoggingConsumer + @McpLogging public void invalidParameterCount(LoggingMessageNotification notification, String extra) { // Invalid parameter count } - @McpLoggingConsumer + @McpLogging public void invalidParameterType(String invalidType) { // Invalid parameter type } - @McpLoggingConsumer + @McpLogging public void invalidParameterTypes(String level, int logger, boolean data) { // Invalid parameter types } @@ -86,7 +85,7 @@ void testValidMethodWithNotification() throws Exception { ValidMethods bean = new ValidMethods(); Method method = ValidMethods.class.getMethod("handleLoggingMessage", LoggingMessageNotification.class); - Consumer callback = SyncMcpLoggingConsumerMethodCallback.builder() + Consumer callback = SyncMcpLoggingMethodCallback.builder() .method(method) .bean(bean) .build(); @@ -102,7 +101,7 @@ void testValidMethodWithParams() throws Exception { Method method = ValidMethods.class.getMethod("handleLoggingMessageWithParams", LoggingLevel.class, String.class, String.class); - Consumer callback = SyncMcpLoggingConsumerMethodCallback.builder() + Consumer callback = SyncMcpLoggingMethodCallback.builder() .method(method) .bean(bean) .build(); @@ -119,7 +118,7 @@ void testInvalidReturnType() throws Exception { InvalidMethods bean = new InvalidMethods(); Method method = InvalidMethods.class.getMethod("invalidReturnType", LoggingMessageNotification.class); - assertThatThrownBy(() -> SyncMcpLoggingConsumerMethodCallback.builder().method(method).bean(bean).build()) + assertThatThrownBy(() -> SyncMcpLoggingMethodCallback.builder().method(method).bean(bean).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("Method must have void return type"); } @@ -130,7 +129,7 @@ void testInvalidParameterCount() throws Exception { Method method = InvalidMethods.class.getMethod("invalidParameterCount", LoggingMessageNotification.class, String.class); - assertThatThrownBy(() -> SyncMcpLoggingConsumerMethodCallback.builder().method(method).bean(bean).build()) + assertThatThrownBy(() -> SyncMcpLoggingMethodCallback.builder().method(method).bean(bean).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("Method must have either 1 parameter (LoggingMessageNotification) or 3 parameters"); } @@ -140,7 +139,7 @@ void testInvalidParameterType() throws Exception { InvalidMethods bean = new InvalidMethods(); Method method = InvalidMethods.class.getMethod("invalidParameterType", String.class); - assertThatThrownBy(() -> SyncMcpLoggingConsumerMethodCallback.builder().method(method).bean(bean).build()) + assertThatThrownBy(() -> SyncMcpLoggingMethodCallback.builder().method(method).bean(bean).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("Single parameter must be of type LoggingMessageNotification"); } @@ -150,7 +149,7 @@ void testInvalidParameterTypes() throws Exception { InvalidMethods bean = new InvalidMethods(); Method method = InvalidMethods.class.getMethod("invalidParameterTypes", String.class, int.class, boolean.class); - assertThatThrownBy(() -> SyncMcpLoggingConsumerMethodCallback.builder().method(method).bean(bean).build()) + assertThatThrownBy(() -> SyncMcpLoggingMethodCallback.builder().method(method).bean(bean).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("First parameter must be of type LoggingLevel"); } @@ -160,7 +159,7 @@ void testNullNotification() throws Exception { ValidMethods bean = new ValidMethods(); Method method = ValidMethods.class.getMethod("handleLoggingMessage", LoggingMessageNotification.class); - Consumer callback = SyncMcpLoggingConsumerMethodCallback.builder() + Consumer callback = SyncMcpLoggingMethodCallback.builder() .method(method) .bean(bean) .build(); diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/tool/CallToolRequestSupportTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/tool/CallToolRequestSupportTests.java index 23cd345..3a99d44 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/tool/CallToolRequestSupportTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/method/tool/CallToolRequestSupportTests.java @@ -28,7 +28,7 @@ import org.springaicommunity.mcp.annotation.McpTool; import org.springaicommunity.mcp.annotation.McpToolParam; import org.springaicommunity.mcp.method.tool.utils.JsonSchemaGenerator; -import org.springaicommunity.mcp.provider.SyncMcpToolProvider; +import org.springaicommunity.mcp.provider.tool.SyncMcpToolProvider; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonNode; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpCompleteProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/complete/AsyncStatelessMcpCompleteProviderTests.java similarity index 99% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpCompleteProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/complete/AsyncStatelessMcpCompleteProviderTests.java index a16e489..651d835 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpCompleteProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/complete/AsyncStatelessMcpCompleteProviderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.complete; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpCompleteProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/complete/SyncStatelessMcpCompleteProviderTests.java similarity index 99% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpCompleteProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/complete/SyncStatelessMcpCompleteProviderTests.java index 4bf80a1..cf8ea0b 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpCompleteProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/complete/SyncStatelessMcpCompleteProviderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.complete; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpElicitationProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/elicitation/AsyncMcpElicitationProviderTests.java similarity index 98% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpElicitationProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/elicitation/AsyncMcpElicitationProviderTests.java index 97a303d..bcf10d4 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpElicitationProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/elicitation/AsyncMcpElicitationProviderTests.java @@ -2,7 +2,7 @@ * Copyright 2025-2025 the original author or authors. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.elicitation; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpElicitationProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/elicitation/SyncMcpElicitationProviderTests.java similarity index 97% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpElicitationProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/elicitation/SyncMcpElicitationProviderTests.java index 47ad597..2306d75 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpElicitationProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/elicitation/SyncMcpElicitationProviderTests.java @@ -2,7 +2,7 @@ * Copyright 2025-2025 the original author or authors. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.elicitation; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpLoggingConsumerProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/logging/AsyncMcpLoggingProviderTests.java similarity index 86% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpLoggingConsumerProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/logging/AsyncMcpLoggingProviderTests.java index b60aaf2..6848ac3 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpLoggingConsumerProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/logging/AsyncMcpLoggingProviderTests.java @@ -2,7 +2,7 @@ * Copyright 2025-2025 the original author or authors. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.logging; import static org.assertj.core.api.Assertions.assertThat; @@ -10,7 +10,7 @@ import java.util.function.Function; import org.junit.jupiter.api.Test; -import org.springaicommunity.mcp.annotation.McpLoggingConsumer; +import org.springaicommunity.mcp.annotation.McpLogging; import org.springaicommunity.mcp.method.logging.AsyncLoggingSpecification; import io.modelcontextprotocol.spec.McpSchema.LoggingLevel; @@ -19,11 +19,11 @@ import reactor.test.StepVerifier; /** - * Tests for {@link AsyncMcpLoggingConsumerProvider}. + * Tests for {@link AsyncMcpLoggingProvider}. * * @author Christian Tzolov */ -public class AsyncMcpLoggingConsumerProviderTests { +public class AsyncMcpLoggingProviderTests { /** * Test class with logging consumer methods. @@ -38,14 +38,14 @@ static class AsyncLoggingHandler { private String lastData; - @McpLoggingConsumer + @McpLogging public Mono handleLoggingMessage(LoggingMessageNotification notification) { return Mono.fromRunnable(() -> { this.lastNotification = notification; }); } - @McpLoggingConsumer + @McpLogging public Mono handleLoggingMessageWithParams(LoggingLevel level, String logger, String data) { return Mono.fromRunnable(() -> { this.lastLevel = level; @@ -54,7 +54,7 @@ public Mono handleLoggingMessageWithParams(LoggingLevel level, String logg }); } - @McpLoggingConsumer + @McpLogging public void handleLoggingMessageVoid(LoggingMessageNotification notification) { this.lastNotification = notification; } @@ -69,7 +69,7 @@ public Mono notAnnotatedMethod(LoggingMessageNotification notification) { @Test void testGetLoggingConsumers() { AsyncLoggingHandler loggingHandler = new AsyncLoggingHandler(); - AsyncMcpLoggingConsumerProvider provider = new AsyncMcpLoggingConsumerProvider(List.of(loggingHandler)); + AsyncMcpLoggingProvider provider = new AsyncMcpLoggingProvider(List.of(loggingHandler)); List specifications = provider.getLoggingSpecifications(); List>> consumers = specifications.stream() @@ -108,7 +108,7 @@ void testGetLoggingConsumers() { @Test void testEmptyList() { - AsyncMcpLoggingConsumerProvider provider = new AsyncMcpLoggingConsumerProvider(List.of()); + AsyncMcpLoggingProvider provider = new AsyncMcpLoggingProvider(List.of()); List specifications = provider.getLoggingSpecifications(); @@ -123,7 +123,7 @@ void testEmptyList() { void testMultipleObjects() { AsyncLoggingHandler handler1 = new AsyncLoggingHandler(); AsyncLoggingHandler handler2 = new AsyncLoggingHandler(); - AsyncMcpLoggingConsumerProvider provider = new AsyncMcpLoggingConsumerProvider(List.of(handler1, handler2)); + AsyncMcpLoggingProvider provider = new AsyncMcpLoggingProvider(List.of(handler1, handler2)); List specifications = provider.getLoggingSpecifications(); diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpLoggingConsumerProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/logging/SyncMcpLoggingProviderTests.java similarity index 83% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpLoggingConsumerProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/logging/SyncMcpLoggingProviderTests.java index 1f55473..c36d147 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpLoggingConsumerProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/logging/SyncMcpLoggingProviderTests.java @@ -2,7 +2,7 @@ * Copyright 2025-2025 the original author or authors. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.logging; import static org.assertj.core.api.Assertions.assertThat; @@ -10,18 +10,18 @@ import java.util.function.Consumer; import org.junit.jupiter.api.Test; -import org.springaicommunity.mcp.annotation.McpLoggingConsumer; +import org.springaicommunity.mcp.annotation.McpLogging; import org.springaicommunity.mcp.method.logging.SyncLoggingSpecification; import io.modelcontextprotocol.spec.McpSchema.LoggingLevel; import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; /** - * Tests for {@link SyncMcpLoggingConsumerProvider}. + * Tests for {@link SyncMcpLogginProvider}. * * @author Christian Tzolov */ -public class SyncMcpLoggingConsumerProviderTests { +public class SyncMcpLoggingProviderTests { /** * Test class with logging consumer methods. @@ -36,12 +36,12 @@ static class LoggingHandler { private String lastData; - @McpLoggingConsumer + @McpLogging public void handleLoggingMessage(LoggingMessageNotification notification) { this.lastNotification = notification; } - @McpLoggingConsumer + @McpLogging public void handleLoggingMessageWithParams(LoggingLevel level, String logger, String data) { this.lastLevel = level; this.lastLogger = logger; @@ -58,7 +58,7 @@ public void notAnnotatedMethod(LoggingMessageNotification notification) { @Test void testGetLoggingConsumers() { LoggingHandler loggingHandler = new LoggingHandler(); - SyncMcpLoggingConsumerProvider provider = new SyncMcpLoggingConsumerProvider(List.of(loggingHandler)); + SyncMcpLogginProvider provider = new SyncMcpLogginProvider(List.of(loggingHandler)); List specifications = provider.getLoggingSpecifications(); List> consumers = specifications.stream() @@ -87,7 +87,7 @@ void testGetLoggingConsumers() { @Test void testEmptyList() { - SyncMcpLoggingConsumerProvider provider = new SyncMcpLoggingConsumerProvider(List.of()); + SyncMcpLogginProvider provider = new SyncMcpLogginProvider(List.of()); List> consumers = provider.getLoggingSpecifications() .stream() @@ -101,7 +101,7 @@ void testEmptyList() { void testMultipleObjects() { LoggingHandler handler1 = new LoggingHandler(); LoggingHandler handler2 = new LoggingHandler(); - SyncMcpLoggingConsumerProvider provider = new SyncMcpLoggingConsumerProvider(List.of(handler1, handler2)); + SyncMcpLogginProvider provider = new SyncMcpLogginProvider(List.of(handler1, handler2)); List> consumers = provider.getLoggingSpecifications() .stream() diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpProgressProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/progress/AsyncMcpProgressProviderTests.java similarity index 99% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpProgressProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/progress/AsyncMcpProgressProviderTests.java index 22409a4..2dd9d48 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpProgressProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/progress/AsyncMcpProgressProviderTests.java @@ -2,7 +2,7 @@ * Copyright 2025-2025 the original author or authors. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.progress; import static org.assertj.core.api.Assertions.assertThat; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpProgressProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/progress/SyncMcpProgressProviderTests.java similarity index 98% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpProgressProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/progress/SyncMcpProgressProviderTests.java index 0b7356e..b554b1e 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpProgressProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/progress/SyncMcpProgressProviderTests.java @@ -2,7 +2,7 @@ * Copyright 2025-2025 the original author or authors. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.progress; import static org.assertj.core.api.Assertions.assertThat; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpPromptProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/prompt/AsyncStatelessMcpPromptProviderTests.java similarity index 99% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpPromptProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/prompt/AsyncStatelessMcpPromptProviderTests.java index 19c61b5..1c50085 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpPromptProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/prompt/AsyncStatelessMcpPromptProviderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.prompt; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpPromptProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/prompt/SyncStatelessMcpPromptProviderTests.java similarity index 99% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpPromptProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/prompt/SyncStatelessMcpPromptProviderTests.java index a0c1129..88002bc 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpPromptProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/prompt/SyncStatelessMcpPromptProviderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.prompt; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpResourceProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/resource/AsyncStatelessMcpResourceProviderTests.java similarity index 99% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpResourceProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/resource/AsyncStatelessMcpResourceProviderTests.java index 311573e..773ba14 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncStatelessMcpResourceProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/resource/AsyncStatelessMcpResourceProviderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.resource; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpResourceProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/resource/SyncStatelessMcpResourceProviderTests.java similarity index 99% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpResourceProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/resource/SyncStatelessMcpResourceProviderTests.java index 6a21817..9b07064 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncStatelessMcpResourceProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/resource/SyncStatelessMcpResourceProviderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.resource; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpSamplingProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/sampling/AsyncMcpSamplingProviderTests.java similarity index 98% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpSamplingProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/sampling/AsyncMcpSamplingProviderTests.java index efd8b62..d353f5d 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/AsyncMcpSamplingProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/sampling/AsyncMcpSamplingProviderTests.java @@ -2,7 +2,7 @@ * Copyright 2025-2025 the original author or authors. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.sampling; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpSamplingProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/sampling/SyncMcpSamplingProviderTests.java similarity index 97% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpSamplingProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/sampling/SyncMcpSamplingProviderTests.java index 7633a62..18830a4 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpSamplingProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/sampling/SyncMcpSamplingProviderTests.java @@ -2,7 +2,7 @@ * Copyright 2025-2025 the original author or authors. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.sampling; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpToolProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProviderTests.java similarity index 99% rename from mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpToolProviderTests.java rename to mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProviderTests.java index 6869f63..83e784e 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/SyncMcpToolProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProviderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springaicommunity.mcp.provider; +package org.springaicommunity.mcp.provider.tool; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy;