Class AgentPlatformAutoConfigurationFilter

  • All Implemented Interfaces:
    org.springframework.boot.autoconfigure.AutoConfigurationImportFilter

    
    public class AgentPlatformAutoConfigurationFilter
     implements AutoConfigurationImportFilter
                        

    Auto-configuration filter that excludes Spring AI's default MCP client auto-configuration to allow the Agent Platform's resilient implementation to take precedence.

    This filter implements Spring Boot's AutoConfigurationImportFilter interface to intercept and filter auto-configuration classes during application context initialization. It specifically excludes McpClientAutoConfiguration from Spring AI, enabling the Agent Platform to register its own QuiteMcpClientAutoConfiguration which extends the base configuration with enhanced error handling and startup resilience.

    Spring AI's default McpClientAutoConfiguration can cause application startup failures when MCP client initialization encounters errors. This filter prevents that auto-configuration from loading, allowing QuiteMcpClientAutoConfiguration to provide the same functionality with graceful error handling that logs failures without blocking application startup.
    • Spring Boot discovers all auto-configurations from META-INF/spring.factories or META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
    • Before loading them, it applies registered AutoConfigurationImportFilter instances
    • This filter examines each auto-configuration class name
    • Returns false for McpClientAutoConfiguration, preventing its registration
    • Returns true for all other auto-configurations, allowing normal processing
    This filter must be registered in META-INF/spring.factories:
    org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
    com.embabel.agent.autoconfigure.platform.AgentPlatformAutoConfigurationFilter
    
    This filter works in tandem with QuiteMcpClientAutoConfiguration:
    • Filter: Prevents Spring AI's default configuration from loading
    • QuiteMcpClientAutoConfiguration: Extends the excluded configuration with error handling
    • Result: Agent Platform gets resilient MCP client setup without startup failures
    Think of this as a Strategic Design pattern from Domain-Driven Design:
    • Spring AI's McpClientAutoConfiguration = External bounded context with its own rules
    • This Filter = Context boundary enforcement preventing unwanted context intrusion
    • QuiteMcpClientAutoConfiguration = Anti-Corruption Layer translating external concepts into Agent Platform's resilient domain model

    Just as an Anti-Corruption Layer protects your domain from external system changes, this filter protects the Agent Platform from Spring AI's initialization behavior while still leveraging its core functionality through inheritance.

    The match implementation handles null entries in the auto-configuration class array, which can occur during Spring Boot's internal processing. Null entries are treated as non-matching (filtered out).
    Since:

    1.0

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      Array<boolean> match(Array<String> autoConfigurationClasses, AutoConfigurationMetadata metadata) Filters auto-configuration classes to exclude Spring AI's default MCP client configuration.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AgentPlatformAutoConfigurationFilter

        AgentPlatformAutoConfigurationFilter()
    • Method Detail

      • match

         Array<boolean> match(Array<String> autoConfigurationClasses, AutoConfigurationMetadata metadata)

        Filters auto-configuration classes to exclude Spring AI's default MCP client configuration.

        This method is called by Spring Boot during application context initialization to determine which auto-configurations should be loaded. It evaluates each auto-configuration class name and returns a boolean array indicating whether each should be included.

        Filtering Logic:

        • null entries → false (excluded for safety)
        • McpClientAutoConfigurationfalse (explicitly excluded)
        • All other classes → true (allowed to load)
        Parameters:
        autoConfigurationClasses - array of auto-configuration class names to evaluate; may contain null entries
        metadata - metadata about the auto-configurations (not used in this implementation)
        Returns:

        boolean array where true means "include this auto-configuration" and false means "exclude this auto-configuration"; array length matches input array length