Class ApplicationLoader
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 Summary
Modifier and TypeMethodDescriptionstatic Map<String, ApplicationSpec> discover()Discover all ApplicationSpec implementations via ServiceLoader.static List<ApplicationSpec> Discover all ApplicationSpec implementations as a list.static List<ApplicationSpec> discoverByCategory(String category) Discover ApplicationSpec implementations filtered by category.Discover all available categories.static List<ApplicationSpec> Discover applications that support EC2 deployment.static List<ApplicationSpec> Discover applications that support Fargate deployment.static Map<String, List<ApplicationSpec>> Get applications grouped by category.static List<ApplicationSpec> Discover applications that support OIDC integration.static Optional<ApplicationSpec> Find a specific ApplicationSpec by application ID.static StringPrint a formatted catalog of all discovered applications.
-
Method Details
-
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
ApplicationPluginannotation are still included but will have default metadata values.- Returns:
- map of application ID to ApplicationSpec (never null, may be empty)
-
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
Discover ApplicationSpec implementations filtered by category.Categories are defined in the
ApplicationPluginannotation:- 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
Discover all available categories.Returns a sorted list of unique categories from all discovered applications.
- Returns:
- sorted list of category names
-
findById
Find a specific ApplicationSpec by application ID.- Parameters:
applicationId- the application identifier (e.g., "jenkins", "gitlab")- Returns:
- Optional containing the ApplicationSpec if found
-
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
Discover applications that support OIDC integration.- Returns:
- list of ApplicationSpec instances supporting OIDC
-
discoverFargateSupported
Discover applications that support Fargate deployment.- Returns:
- list of ApplicationSpec instances supporting Fargate
-
discoverEc2Supported
Discover applications that support EC2 deployment.- Returns:
- list of ApplicationSpec instances supporting EC2
-
printCatalog
Print a formatted catalog of all discovered applications.Useful for debugging and displaying available applications to users.
- Returns:
- formatted string containing application catalog
-