Skip to content

CAMEL-23491: Add known 3rd party plugin catalog to camel-jbang#23443

Open
davsclaus wants to merge 1 commit into
mainfrom
camel-23491
Open

CAMEL-23491: Add known 3rd party plugin catalog to camel-jbang#23443
davsclaus wants to merge 1 commit into
mainfrom
camel-23491

Conversation

@davsclaus
Copy link
Copy Markdown
Contributor

Summary

  • Add a human-curated catalog of known 3rd party plugins (known-plugins.json) so users can install them by name without specifying GAV coordinates (e.g., camel plugin add forage)
  • Add vendor field to PluginType enum to distinguish ASF vs Community plugins
  • camel plugin get --all now shows three sections: active, supported (ASF), and known 3rd party (Community)
  • Users can pin a specific version with --version flag; defaults to LATEST for 3rd party plugins
  • Initial catalog includes: forage, camel-kit

Test plan

  • All 21 existing plugin tests pass (PluginGetTest, PluginAddTest, PluginDeleteTest, PluginHelperTest)
  • Updated PluginGetTest assertions for new VENDOR column
  • Manual: camel plugin get --all shows vendor column and 3rd party section
  • Manual: camel plugin add forage auto-fills GAV from catalog
  • Manual: camel plugin add forage --version=1.2.3 pins specific version

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@davsclaus
Copy link
Copy Markdown
Contributor Author

@Croway do you have a better forage jbang plugin description we can use
@luigidemasi the same for you for camel kit

@github-actions
Copy link
Copy Markdown
Contributor

🌟 Thank you for your contribution to the Apache Camel project! 🌟
🤖 CI automation will test this PR automatically.

🐫 Apache Camel Committers, please review the following items:

  • First-time contributors require MANUAL approval for the GitHub Actions to run
  • You can use the command /component-test (camel-)component-name1 (camel-)component-name2.. to request a test from the test bot although they are normally detected and executed by CI.
  • You can label PRs using skip-tests and test-dependents to fine-tune the checks executed by this PR.
  • Build and test logs are available in the summary page. Only Apache Camel committers have access to the summary.

⚠️ Be careful when sharing logs. Review their contents before sharing them publicly.

@github-actions
Copy link
Copy Markdown
Contributor

🧪 CI tested the following changed modules:

  • docs
  • dsl/camel-jbang/camel-jbang-core

⚠️ Some tests are disabled on GitHub Actions (@DisabledIfSystemProperty(named = "ci.env.name")) and require manual verification:

  • dsl/camel-jbang/camel-jbang-core: 1 test(s) disabled on GitHub Actions

💡 Manual integration tests recommended:

You modified dsl/camel-jbang/camel-jbang-core. The related integration tests in dsl/camel-jbang/camel-jbang-it are excluded from CI. Consider running them manually:

mvn verify -f dsl/camel-jbang/camel-jbang-it -Djbang-it-test
All tested modules (6 modules)
  • Camel :: JBang :: Core
  • Camel :: JBang :: MCP
  • Camel :: JBang :: Plugin :: Route Parser
  • Camel :: JBang :: Plugin :: TUI
  • Camel :: JBang :: Plugin :: Validate
  • Camel :: Launcher :: Container

⚙️ View full build and test results

@davsclaus davsclaus requested a review from Croway May 22, 2026 05:03
@Croway
Copy link
Copy Markdown
Contributor

Croway commented May 22, 2026

for Forage, something like Configure components via opinionated bean factories

Copy link
Copy Markdown
Contributor

@gnodet gnodet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good feature -- the known-plugin catalog is a nice UX improvement. A couple of items to address:

  1. FQCN in PluginHelper.loadKnownPlugins(): java.nio.charset.StandardCharsets.UTF_8 is used inline instead of importing StandardCharsets. The project convention (and the OpenRewrite CI check) requires using simple class names with an import statement.

  2. Forage description: @Croway suggested a better description in the comments: "Configure components via opinionated bean factories". The known-plugins.json should be updated accordingly.

Otherwise the implementation looks clean, the tests are properly updated, and the documentation is good.

Claude Code on behalf of Guillaume Nodet

String text = new String(is.readAllBytes(), java.nio.charset.StandardCharsets.UTF_8);
JsonArray arr = (JsonArray) Jsoner.deserialize(text);
List<JsonObject> result = new ArrayList<>(arr.size());
for (Object o : arr) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FQCN usage: java.nio.charset.StandardCharsets.UTF_8 should be replaced with StandardCharsets.UTF_8 and import java.nio.charset.StandardCharsets; added to the import block. The project convention (enforced by OpenRewrite in CI) forbids inline FQCNs.

Suggested change
for (Object o : arr) {
String text = new String(is.readAllBytes(), StandardCharsets.UTF_8);

Claude Code on behalf of Guillaume Nodet

{
"name": "forage",
"command": "forage",
"description": "Utilities for working with Forage components",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Croway suggested a better description for Forage: "Configure components via opinionated bean factories".

Suggested change
"description": "Utilities for working with Forage components",
"description": "Configure components via opinionated bean factories",

Claude Code on behalf of Guillaume Nodet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants