Class ApplicationLoader

java.lang.Object
com.cloudforgeci.api.compute.ApplicationLoader

public final class ApplicationLoader extends Object
Auto-discovery utility for ApplicationSpec implementations using Java ServiceLoader.

This class discovers all ApplicationSpec implementations registered via META-INF/services/com.cloudforge.core.interfaces.ApplicationSpec and provides convenient access methods for deployment tools.

Applications are discovered from:

  • Built-in applications in cloudforge-api module
  • External plugins providing META-INF/services registration

Usage Example:


 // Discover all applications
 Map<String, ApplicationSpec> apps = ApplicationLoader.discover();

 // Get applications by category
 List<ApplicationSpec> cicdApps = ApplicationLoader.discoverByCategory("cicd");

 // Find specific application
 Optional<ApplicationSpec> jenkins = ApplicationLoader.findById("jenkins");
 
Since:
3.0.0
  • Method Details

    • discover

      public static Map<String,ApplicationSpec> discover()
      Discover all ApplicationSpec implementations via ServiceLoader.

      Returns a map of application ID to ApplicationSpec instance. The application ID is obtained from ApplicationSpec.applicationId().

      Applications without ApplicationPlugin annotation are still included but will have default metadata values.

      Returns:
      map of application ID to ApplicationSpec (never null, may be empty)
    • discoverAsList

      public static List<ApplicationSpec> discoverAsList()
      Discover all ApplicationSpec implementations as a list.

      Applications are sorted alphabetically by application ID for consistent ordering.

      Returns:
      list of ApplicationSpec instances (never null, may be empty)
    • discoverByCategory

      public static List<ApplicationSpec> discoverByCategory(String category)
      Discover ApplicationSpec implementations filtered by category.

      Categories are defined in the ApplicationPlugin annotation:

      • cicd - CI/CD platforms
      • vcs - Version control systems
      • monitoring - Monitoring and observability
      • analytics - Business intelligence
      • database - Databases and caching
      • artifactregistry - Artifact repositories
      • secrets - Secrets management
      • collaboration - Team collaboration
      Parameters:
      category - the category to filter by
      Returns:
      list of ApplicationSpec instances in this category
    • discoverCategories

      public static List<String> discoverCategories()
      Discover all available categories.

      Returns a sorted list of unique categories from all discovered applications.

      Returns:
      sorted list of category names
    • findById

      public static Optional<ApplicationSpec> findById(String applicationId)
      Find a specific ApplicationSpec by application ID.
      Parameters:
      applicationId - the application identifier (e.g., "jenkins", "gitlab")
      Returns:
      Optional containing the ApplicationSpec if found
    • discoverGroupedByCategory

      public static Map<String,List<ApplicationSpec>> discoverGroupedByCategory()
      Get applications grouped by category.

      Returns a map where keys are category names and values are lists of ApplicationSpec instances in that category.

      Returns:
      map of category to list of applications
    • discoverOidcEnabled

      public static List<ApplicationSpec> discoverOidcEnabled()
      Discover applications that support OIDC integration.
      Returns:
      list of ApplicationSpec instances supporting OIDC
    • discoverFargateSupported

      public static List<ApplicationSpec> discoverFargateSupported()
      Discover applications that support Fargate deployment.
      Returns:
      list of ApplicationSpec instances supporting Fargate
    • discoverEc2Supported

      public static List<ApplicationSpec> discoverEc2Supported()
      Discover applications that support EC2 deployment.
      Returns:
      list of ApplicationSpec instances supporting EC2
    • printCatalog

      public static String printCatalog()
      Print a formatted catalog of all discovered applications.

      Useful for debugging and displaying available applications to users.

      Returns:
      formatted string containing application catalog