Fall back to RecipeLoader when ecosystem resolver is missing#6741
Closed
Fall back to RecipeLoader when ecosystem resolver is missing#6741
Conversation
When the PrepareRecipe handler finds a recipe in the marketplace but listing.prepare() throws because no resolver matches the bundle's ecosystem (e.g., a "maven"-bundled recipe when only a "runtime" resolver is available), the handler now catches the exception and falls through to RecipeLoader. This allows recipes that are already on the classpath to be loaded by class name instead of failing outright. This fixes recipe runs on Node.js repositories where JS recipes use preconditions like usesType() or usesMethod() that call back to the Java side to prepare Java recipes. Without a Maven resolver wired into the RPC endpoint, these callbacks previously failed with "No available resolver for 'maven' ecosystem".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PrepareRecipehandler finds a recipe in the marketplace butlisting.prepare()throws because no resolver matches the bundle's ecosystem, it now catches the exception and falls through toRecipeLoaderusesType()orusesMethod()that call back to the Java side to prepare Java recipes — without a Maven resolver wired into the RPC endpoint, these callbacks previously failed with "No available resolver for 'maven' ecosystem"Test plan
prepareRecipeFallsBackToRecipeLoaderWhenResolverMissingtest that installs a recipe listing with a"maven"ecosystem bundle into a marketplace with only a"runtime"resolver, then verifiesprepareRecipesucceeds via theRecipeLoaderfallbackRewriteRpcTesttests continue to pass