Conversation
Up to standards ✅🟢 Issues
|
| Category | Results |
|---|---|
| Documentation | 3 minor |
🟢 Metrics 111 complexity
Metric Results Complexity 111
🟢 Coverage 98.00% diff coverage
Metric Results Coverage variation Report missing for 83efdb81 Diff coverage ✅ 98.00% diff coverage (70.00%) Coverage variation details
Coverable lines Covered lines Coverage Common ancestor commit (83efdb8) Report Missing Report Missing Report Missing Head commit (e026cda) 43091 36299 84.24% Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch:
<coverage of head commit> - <coverage of common ancestor commit>Diff coverage details
Coverable lines Covered lines Diff coverage Pull request (#2012) 150 147 98.00% Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified:
<covered lines added or modified>/<coverable lines added or modified> * 100%1 Codacy didn't receive coverage data for the commit, or there was an error processing the received data. Check your integration for errors and validate that your coverage setup is correct.
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes. Give us feedback
There was a problem hiding this comment.
Pull request overview
This PR streamlines the plugin API by replacing the monolithic ExtensionContext with a more flexible ServiceRegistry and splitting optional capabilities into dedicated interfaces (RuntimeConfigurable, Testable). It also renames the plugin key/value store abstraction and updates the extensions REST/OpenAPI surface to expose capability flags and align list responses with the API’s pagination shape.
Changes:
- Replace
ExtensionContext/ExtensionHttpContextwithServiceRegistry+MutableServiceRegistry, and move runtime config + testing toRuntimeConfigurable/Testable. - Rename
ExtensionKVStore→KeyValueStoreand update runtime/test implementations and call sites. - Update extensions v2 list endpoints + OpenAPI schemas to use
items+total, and includeconfigurable/testableflags.
Reviewed changes
Copilot reviewed 99 out of 99 changed files in this pull request and generated 20 comments.
Show a summary per file
| File | Description |
|---|---|
| vuln-data-source/osv/src/test/java/org/dependencytrack/vulndatasource/osv/WatermarkManagerTest.java | Switch OSV tests to KeyValueStore + MockKeyValueStore. |
| vuln-data-source/osv/src/test/java/org/dependencytrack/vulndatasource/osv/OsvVulnDataSourceFactoryTest.java | Update OSV factory tests to ServiceRegistry init. |
| vuln-data-source/osv/src/main/java/org/dependencytrack/vulndatasource/osv/WatermarkStore.java | Migrate watermark persistence to KeyValueStore. |
| vuln-data-source/osv/src/main/java/org/dependencytrack/vulndatasource/osv/WatermarkManager.java | Update watermark manager factory method signature for KeyValueStore. |
| vuln-data-source/osv/src/main/java/org/dependencytrack/vulndatasource/osv/OsvVulnDataSourceFactory.java | Use ServiceRegistry + RuntimeConfigurable; require ConfigRegistry/KeyValueStore/HttpClient. |
| vuln-data-source/nvd/src/test/java/org/dependencytrack/vulndatasource/nvd/NvdVulnDataSourceTest.java | Update NVD tests to ServiceRegistry init and concrete factory type. |
| vuln-data-source/nvd/src/test/java/org/dependencytrack/vulndatasource/nvd/NvdVulnDataSourceFactoryTest.java | Update NVD factory tests to ServiceRegistry init. |
| vuln-data-source/nvd/src/main/java/org/dependencytrack/vulndatasource/nvd/WatermarkManager.java | Migrate NVD watermarking to KeyValueStore. |
| vuln-data-source/nvd/src/main/java/org/dependencytrack/vulndatasource/nvd/NvdVulnDataSourceFactory.java | Use ServiceRegistry + RuntimeConfigurable + Testable. |
| vuln-data-source/github/src/test/java/org/dependencytrack/vulndatasource/github/WatermarkManagerTest.java | Switch GitHub watermark tests to MockKeyValueStore. |
| vuln-data-source/github/src/test/java/org/dependencytrack/vulndatasource/github/GitHubVulnDataSourceFactoryTest.java | Update GitHub factory tests to ServiceRegistry init. |
| vuln-data-source/github/src/main/java/org/dependencytrack/vulndatasource/github/WatermarkManager.java | Migrate GitHub watermarking to KeyValueStore. |
| vuln-data-source/github/src/main/java/org/dependencytrack/vulndatasource/github/GitHubVulnDataSourceFactory.java | Use ServiceRegistry + RuntimeConfigurable; require services from registry. |
| vuln-analysis/vuln-db/src/test/java/org/dependencytrack/vulnanalysis/vulndb/VulnDbVulnAnalyzerTest.java | Update analyzer tests to build a ServiceRegistry. |
| vuln-analysis/vuln-db/src/main/java/org/dependencytrack/vulnanalysis/vulndb/VulnDbVulnAnalyzerFactory.java | Replace ExtensionHttpContext usage with direct HttpClient from ServiceRegistry. |
| vuln-analysis/trivy/src/main/java/org/dependencytrack/vulnanalysis/trivy/TrivyVulnAnalyzerFactory.java | Use ServiceRegistry + RuntimeConfigurable. |
| vuln-analysis/snyk/src/test/java/org/dependencytrack/vulnanalysis/snyk/SnykVulnAnalyzerTest.java | Update Snyk tests to build a ServiceRegistry. |
| vuln-analysis/snyk/src/main/java/org/dependencytrack/vulnanalysis/snyk/SnykVulnAnalyzerFactory.java | Use ServiceRegistry + RuntimeConfigurable. |
| vuln-analysis/oss-index/src/test/java/org/dependencytrack/vulnanalysis/ossindex/OssIndexVulnAnalyzerTest.java | Update OSS Index tests to build a ServiceRegistry. |
| vuln-analysis/oss-index/src/test/java/org/dependencytrack/vulnanalysis/ossindex/OssIndexVulnAnalyzerFactoryTest.java | Add helper to create a service registry w/ cache + http client for tests. |
| vuln-analysis/oss-index/src/main/java/org/dependencytrack/vulnanalysis/ossindex/OssIndexVulnAnalyzerFactory.java | Use ServiceRegistry + RuntimeConfigurable + Testable. |
| vuln-analysis/internal/src/test/java/org/dependencytrack/vulnanalysis/internal/InternalVulnAnalyzerTest.java | Update internal analyzer tests to ServiceRegistry init. |
| vuln-analysis/internal/src/main/java/org/dependencytrack/vulnanalysis/internal/InternalVulnAnalyzerFactory.java | Use ServiceRegistry + RuntimeConfigurable. |
| plugin/testing/src/test/java/org/dependencytrack/plugin/testing/MockKeyValueStoreTest.java | Move/rename KV store test to plugin.testing package and KeyValueStore. |
| plugin/testing/src/main/java/org/dependencytrack/plugin/testing/MockKeyValueStore.java | Rename/move in-memory KV store to MockKeyValueStore implementing KeyValueStore. |
| plugin/testing/src/main/java/org/dependencytrack/plugin/testing/AbstractExtensionFactoryTest.java | Adjust runtime-config tests to RuntimeConfigurable capability interface. |
| plugin/runtime/src/test/java/org/dependencytrack/plugin/runtime/PluginManagerTest.java | Update runtime tests for KeyValueStore and new PluginManager ctor. |
| plugin/runtime/src/test/java/org/dependencytrack/plugin/runtime/KeyValueStoreImplTest.java | Rename tests to KeyValueStoreImplTest and update types. |
| plugin/runtime/src/test/java/org/dependencytrack/plugin/runtime/DummyTestExtensionFactory.java | Update dummy factory to accept ServiceRegistry. |
| plugin/runtime/src/main/java/org/dependencytrack/plugin/runtime/PluginManager.java | Build/freeze a ServiceRegistry per extension; wire services; handle RuntimeConfigurable. |
| plugin/runtime/src/main/java/org/dependencytrack/plugin/runtime/KeyValueStoreImpl.java | Rename impl from ExtensionKVStoreImpl to KeyValueStoreImpl. |
| plugin/runtime/src/main/java/org/dependencytrack/plugin/runtime/ExtensionHttpContextImpl.java | Remove legacy HTTP context implementation (superseded by ServiceRegistry). |
| plugin/api/src/test/java/org/dependencytrack/plugin/api/storage/KeyValueStoreTest.java | Rename API KV store test class to match KeyValueStore. |
| plugin/api/src/test/java/org/dependencytrack/plugin/api/MutableServiceRegistryTest.java | Add unit tests for MutableServiceRegistry. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/storage/KeyValueStore.java | Rename API type ExtensionKVStore → KeyValueStore. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/storage/CompareAndPutResult.java | Update Javadoc references for renamed KV store. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/storage/CompareAndDeleteResult.java | Update Javadoc references for renamed KV store. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/Testable.java | Introduce testing capability interface for extensions. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/ServiceRegistry.java | Introduce registry interface for host-provided services. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/RuntimeConfigurable.java | Introduce runtime-config capability interface for extensions. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/MutableServiceRegistry.java | Add mutable builder + freeze mechanism for ServiceRegistry. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/ExtensionFactory.java | Update init(...) signature; remove runtime-config and test defaults. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/ExtensionContext.java | Remove legacy context object in favor of ServiceRegistry. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/pypi/PypiPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/nuget/NugetPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/npm/NpmPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/nixpkgs/NixpkgsPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/maven/MavenPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/hex/HexPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/hackage/HackagePackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/gomodules/GoModulesPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/github/GithubPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/gem/GemPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/cpan/CpanPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/composer/ComposerPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/cargo/CargoPackageMetadataResolverTest.java | Update resolver tests to ServiceRegistry init. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/PackageMetadataResolverIT.java | Update IT harness to build a ServiceRegistry instead of ExtensionContext. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/pypi/PypiPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/nuget/NugetPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/npm/NpmPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/nixpkgs/NixpkgsPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/maven/MavenPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/hex/HexPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/hackage/HackagePackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/gomodules/GoModulesPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/github/GithubPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/gem/GemPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/cpan/CpanPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/composer/ComposerPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/cargo/CargoPackageMetadataResolverFactory.java | Switch to ServiceRegistry and require HttpClient/CacheManager. |
| notification/publishing/src/test/java/org/dependencytrack/notification/publishing/webhook/WebhookNotificationPublisherTest.java | Update webhook publisher tests to ServiceRegistry init. |
| notification/publishing/src/test/java/org/dependencytrack/notification/publishing/email/EmailNotificationPublisherTlsTest.java | Update email TLS test to ServiceRegistry init. |
| notification/publishing/src/test/java/org/dependencytrack/notification/publishing/AbstractNotificationPublisherTest.java | Update shared publisher test harness for capability-based runtime config. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/webhook/WebhookNotificationPublisherFactory.java | Switch init to ServiceRegistry and require HttpClient. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/webex/WebexNotificationPublisherFactory.java | Switch init to ServiceRegistry and require HttpClient. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/slack/SlackNotificationPublisherFactory.java | Switch init to ServiceRegistry and require HttpClient. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/msteams/MsTeamsNotificationPublisherFactory.java | Switch init to ServiceRegistry and require HttpClient. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/mattermost/MattermostNotificationPublisherFactory.java | Switch init to ServiceRegistry and require HttpClient. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/kafka/KafkaNotificationPublisherFactory.java | Adopt capability interfaces; init via ServiceRegistry. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/jira/JiraNotificationPublisherFactory.java | Switch init to ServiceRegistry and require ConfigRegistry/HttpClient. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/email/EmailNotificationPublisherFactory.java | Adopt capability interfaces; init via ServiceRegistry. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/console/ConsoleNotificationPublisherFactory.java | Update init signature to ServiceRegistry. |
| apiserver/src/test/java/org/dependencytrack/vulndatasource/MirrorVulnDataSourceActivityTest.java | Update test factories to new init signature; adjust PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/vulnanalysis/VulnAnalysisWorkflowTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/vulnanalysis/PrepareVulnAnalysisActivityTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/vulnanalysis/MockVulnAnalyzerPlugin.java | Update mock extension factory init signature. |
| apiserver/src/test/java/org/dependencytrack/resources/v2/ExtensionsResourceTest.java | Update expected JSON (items/total) and capability flags; update init signatures. |
| apiserver/src/test/java/org/dependencytrack/resources/v1/NotificationRuleResourceTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/resources/v1/NotificationPublisherResourceTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/pkgmetadata/ResolvePackageMetadataWorkflowTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/pkgmetadata/MockPackageMetadataResolverPlugin.java | Update mock extension factory init signature. |
| apiserver/src/test/java/org/dependencytrack/notification/PublishNotificationWorkflowTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/event/EventSubsystemInitializerTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/dex/DexEngineInitializerTest.java | Update PluginManager ctor usage. |
| apiserver/src/main/java/org/dependencytrack/resources/v2/ExtensionsResource.java | Align list responses to items/total; expose capability booleans; use Testable/RuntimeConfigurable. |
| apiserver/src/main/java/org/dependencytrack/plugin/PluginInitializer.java | Update PluginManager construction for new signature. |
| api/src/main/openapi/components/schemas/extensions/list-extensions-response.yaml | Align list response shape to paginated schema and items. |
| api/src/main/openapi/components/schemas/extensions/list-extensions-response-item.yaml | Add configurable + testable to response item schema. |
| api/src/main/openapi/components/schemas/extensions/list-extension-points-response.yaml | Align list response shape to paginated schema and items. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
5ae8c2b to
fae0dc9
Compare
* Decouples runtime configuration and testing from the ExtensionFactory interface into separate RuntimeConfigurable and Testable interfaces. * Replace ExtensionContext with a more generic ServiceRegistry, which will be easier to extend going forward. * Improve naming of various classes, e.g. ExtensionKVStore -> KeyValueStore. * Updates the extensions REST API to indicate whether a given extension supports runtime configuration or testing. * Aligns response of extension list endpoints with others in the API. Signed-off-by: nscuro <nscuro@protonmail.com>
fae0dc9 to
e026cda
Compare
There was a problem hiding this comment.
Pull request overview
This PR streamlines the plugin API by replacing the ExtensionContext with a more extensible ServiceRegistry, splitting optional capabilities (runtime configuration + testing) into RuntimeConfigurable and Testable, and renaming the extension key/value store API to KeyValueStore. It also updates the v2 extensions REST API to expose capability flags and aligns list responses with the API’s paginated response shape.
Changes:
- Introduce
ServiceRegistry/MutableServiceRegistryand migrate factories/tests fromExtensionContextto service lookup viarequire(...). - Split runtime-config + test capabilities out of
ExtensionFactoryintoRuntimeConfigurableandTestable; rename KV store types (ExtensionKVStore→KeyValueStore) and adjust implementations/tests. - Update extensions API list responses to use
items+totaland includeconfigurable/testableflags; update OpenAPI schemas and resource tests accordingly.
Reviewed changes
Copilot reviewed 99 out of 99 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| vuln-data-source/osv/src/test/java/org/dependencytrack/vulndatasource/osv/WatermarkManagerTest.java | Switch tests to KeyValueStore + MockKeyValueStore. |
| vuln-data-source/osv/src/test/java/org/dependencytrack/vulndatasource/osv/OsvVulnDataSourceFactoryTest.java | Initialize factory via MutableServiceRegistry and register required services. |
| vuln-data-source/osv/src/main/java/org/dependencytrack/vulndatasource/osv/WatermarkStore.java | Rename store dependency to KeyValueStore. |
| vuln-data-source/osv/src/main/java/org/dependencytrack/vulndatasource/osv/WatermarkManager.java | Update watermark manager factory to accept KeyValueStore. |
| vuln-data-source/osv/src/main/java/org/dependencytrack/vulndatasource/osv/OsvVulnDataSourceFactory.java | Migrate init to ServiceRegistry; implement RuntimeConfigurable. |
| vuln-data-source/nvd/src/test/java/org/dependencytrack/vulndatasource/nvd/NvdVulnDataSourceTest.java | Use MutableServiceRegistry and concrete factory type in tests. |
| vuln-data-source/nvd/src/test/java/org/dependencytrack/vulndatasource/nvd/NvdVulnDataSourceFactoryTest.java | Use MutableServiceRegistry and register dependencies for factory tests. |
| vuln-data-source/nvd/src/main/java/org/dependencytrack/vulndatasource/nvd/WatermarkManager.java | Rename KV dependency to KeyValueStore. |
| vuln-data-source/nvd/src/main/java/org/dependencytrack/vulndatasource/nvd/NvdVulnDataSourceFactory.java | Migrate init to ServiceRegistry; implement RuntimeConfigurable + Testable. |
| vuln-data-source/github/src/test/java/org/dependencytrack/vulndatasource/github/WatermarkManagerTest.java | Switch tests to KeyValueStore + MockKeyValueStore. |
| vuln-data-source/github/src/test/java/org/dependencytrack/vulndatasource/github/GitHubVulnDataSourceFactoryTest.java | Initialize via MutableServiceRegistry and register required services. |
| vuln-data-source/github/src/main/java/org/dependencytrack/vulndatasource/github/WatermarkManager.java | Rename KV dependency to KeyValueStore. |
| vuln-data-source/github/src/main/java/org/dependencytrack/vulndatasource/github/GitHubVulnDataSourceFactory.java | Migrate init to ServiceRegistry; implement RuntimeConfigurable. |
| vuln-analysis/vuln-db/src/test/java/org/dependencytrack/vulnanalysis/vulndb/VulnDbVulnAnalyzerTest.java | Initialize analyzer factory via MutableServiceRegistry. |
| vuln-analysis/vuln-db/src/main/java/org/dependencytrack/vulnanalysis/vulndb/VulnDbVulnAnalyzerFactory.java | Replace ExtensionHttpContext usage with HttpClient from ServiceRegistry. |
| vuln-analysis/trivy/src/main/java/org/dependencytrack/vulnanalysis/trivy/TrivyVulnAnalyzerFactory.java | Migrate init to ServiceRegistry; implement RuntimeConfigurable. |
| vuln-analysis/snyk/src/test/java/org/dependencytrack/vulnanalysis/snyk/SnykVulnAnalyzerTest.java | Initialize analyzer factory via MutableServiceRegistry. |
| vuln-analysis/snyk/src/main/java/org/dependencytrack/vulnanalysis/snyk/SnykVulnAnalyzerFactory.java | Migrate init to ServiceRegistry; implement RuntimeConfigurable. |
| vuln-analysis/oss-index/src/test/java/org/dependencytrack/vulnanalysis/ossindex/OssIndexVulnAnalyzerTest.java | Initialize analyzer factory via MutableServiceRegistry. |
| vuln-analysis/oss-index/src/test/java/org/dependencytrack/vulnanalysis/ossindex/OssIndexVulnAnalyzerFactoryTest.java | Add helper to create service registry including cache + HTTP client. |
| vuln-analysis/oss-index/src/main/java/org/dependencytrack/vulnanalysis/ossindex/OssIndexVulnAnalyzerFactory.java | Migrate init to ServiceRegistry; implement RuntimeConfigurable + Testable. |
| vuln-analysis/internal/src/test/java/org/dependencytrack/vulnanalysis/internal/InternalVulnAnalyzerTest.java | Initialize internal analyzer factory via MutableServiceRegistry. |
| vuln-analysis/internal/src/main/java/org/dependencytrack/vulnanalysis/internal/InternalVulnAnalyzerFactory.java | Migrate init to ServiceRegistry; implement RuntimeConfigurable. |
| plugin/testing/src/test/java/org/dependencytrack/plugin/testing/MockKeyValueStoreTest.java | Move/rename in-memory KV store tests to MockKeyValueStore. |
| plugin/testing/src/main/java/org/dependencytrack/plugin/testing/MockKeyValueStore.java | Provide in-memory KeyValueStore implementation for tests. |
| plugin/testing/src/main/java/org/dependencytrack/plugin/testing/AbstractExtensionFactoryTest.java | Update runtime-config assertions to use RuntimeConfigurable. |
| plugin/runtime/src/test/java/org/dependencytrack/plugin/runtime/PluginManagerTest.java | Update tests for renamed KV store and updated PluginManager ctor. |
| plugin/runtime/src/test/java/org/dependencytrack/plugin/runtime/KeyValueStoreImplTest.java | Rename impl test from ExtensionKVStoreImplTest to KeyValueStoreImplTest. |
| plugin/runtime/src/test/java/org/dependencytrack/plugin/runtime/DummyTestExtensionFactory.java | Update init signature to ServiceRegistry. |
| plugin/runtime/src/main/java/org/dependencytrack/plugin/runtime/PluginManager.java | Build frozen ServiceRegistry for extensions; remove ExtensionHttpContext wiring; rename KV store plumbing. |
| plugin/runtime/src/main/java/org/dependencytrack/plugin/runtime/KeyValueStoreImpl.java | Rename runtime KV store impl class + constructor to KeyValueStoreImpl. |
| plugin/runtime/src/main/java/org/dependencytrack/plugin/runtime/ExtensionHttpContextImpl.java | Remove now-obsolete HTTP context implementation. |
| plugin/api/src/test/java/org/dependencytrack/plugin/api/storage/KeyValueStoreTest.java | Rename and update API tests for KeyValueStore. |
| plugin/api/src/test/java/org/dependencytrack/plugin/api/MutableServiceRegistryTest.java | Add tests for service registration, lookup, freeze behavior. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/storage/KeyValueStore.java | Rename API interface from ExtensionKVStore to KeyValueStore. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/storage/CompareAndPutResult.java | Update javadoc references to KeyValueStore. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/storage/CompareAndDeleteResult.java | Update javadoc references to KeyValueStore. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/Testable.java | Add capability interface for extension testing. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/ServiceRegistry.java | Introduce generic service lookup abstraction (get/require). |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/RuntimeConfigurable.java | Add capability interface for runtime configuration via RuntimeConfigSpec. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/MutableServiceRegistry.java | Add mutable builder + freeze() for registries. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/ExtensionFactory.java | Update init signature to ServiceRegistry; remove built-in runtime-config and test methods. |
| plugin/api/src/main/java/org/dependencytrack/plugin/api/ExtensionContext.java | Remove now-obsolete extension context wrapper. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/pypi/PypiPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/nuget/NugetPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/npm/NpmPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/nixpkgs/NixpkgsPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/maven/MavenPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/hex/HexPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/hackage/HackagePackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/gomodules/GoModulesPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/github/GithubPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/gem/GemPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/cpan/CpanPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/composer/ComposerPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/cargo/CargoPackageMetadataResolverTest.java | Init resolver factory via MutableServiceRegistry and register services. |
| package-metadata/resolution/src/test/java/org/dependencytrack/pkgmetadata/resolution/PackageMetadataResolverIT.java | Use ServiceRegistry instead of ExtensionContext for integration tests. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/pypi/PypiPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/nuget/NugetPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/npm/NpmPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/nixpkgs/NixpkgsPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/maven/MavenPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/hex/HexPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/hackage/HackagePackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/gomodules/GoModulesPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/github/GithubPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/gem/GemPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/cpan/CpanPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/composer/ComposerPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| package-metadata/resolution/src/main/java/org/dependencytrack/pkgmetadata/resolution/cargo/CargoPackageMetadataResolverFactory.java | Migrate init to ServiceRegistry; look up HttpClient + CacheManager. |
| notification/publishing/src/test/java/org/dependencytrack/notification/publishing/webhook/WebhookNotificationPublisherTest.java | Initialize publisher factory via MutableServiceRegistry. |
| notification/publishing/src/test/java/org/dependencytrack/notification/publishing/email/EmailNotificationPublisherTlsTest.java | Initialize publisher factory via MutableServiceRegistry. |
| notification/publishing/src/test/java/org/dependencytrack/notification/publishing/AbstractNotificationPublisherTest.java | Use RuntimeConfigurable capability and init via MutableServiceRegistry. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/webhook/WebhookNotificationPublisherFactory.java | Migrate init to ServiceRegistry with HttpClient lookup. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/webex/WebexNotificationPublisherFactory.java | Migrate init to ServiceRegistry with HttpClient lookup. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/slack/SlackNotificationPublisherFactory.java | Migrate init to ServiceRegistry with HttpClient lookup. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/msteams/MsTeamsNotificationPublisherFactory.java | Migrate init to ServiceRegistry with HttpClient lookup. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/mattermost/MattermostNotificationPublisherFactory.java | Migrate init to ServiceRegistry with HttpClient lookup. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/kafka/KafkaNotificationPublisherFactory.java | Implement RuntimeConfigurable + Testable; migrate init to ServiceRegistry. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/jira/JiraNotificationPublisherFactory.java | Implement RuntimeConfigurable; migrate init to ServiceRegistry. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/email/EmailNotificationPublisherFactory.java | Implement RuntimeConfigurable + Testable; migrate init to ServiceRegistry. |
| notification/publishing/src/main/java/org/dependencytrack/notification/publishing/console/ConsoleNotificationPublisherFactory.java | Update init signature to ServiceRegistry (no services needed). |
| apiserver/src/test/java/org/dependencytrack/vulndatasource/MirrorVulnDataSourceActivityTest.java | Update test factories to new init signature; update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/vulnanalysis/VulnAnalysisWorkflowTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/vulnanalysis/PrepareVulnAnalysisActivityTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/vulnanalysis/MockVulnAnalyzerPlugin.java | Update mock factory init signature to ServiceRegistry. |
| apiserver/src/test/java/org/dependencytrack/resources/v2/ExtensionsResourceTest.java | Update expected JSON shape (items/total) + capability flags; update init signatures. |
| apiserver/src/test/java/org/dependencytrack/resources/v1/NotificationRuleResourceTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/resources/v1/NotificationPublisherResourceTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/pkgmetadata/ResolvePackageMetadataWorkflowTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/pkgmetadata/MockPackageMetadataResolverPlugin.java | Update mock factory init signature to ServiceRegistry. |
| apiserver/src/test/java/org/dependencytrack/notification/PublishNotificationWorkflowTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/event/EventSubsystemInitializerTest.java | Update PluginManager ctor usage. |
| apiserver/src/test/java/org/dependencytrack/dex/DexEngineInitializerTest.java | Update PluginManager ctor usage. |
| apiserver/src/main/java/org/dependencytrack/resources/v2/ExtensionsResource.java | Return paginated-style list responses; add capability flags; use RuntimeConfigurable/Testable. |
| apiserver/src/main/java/org/dependencytrack/plugin/PluginInitializer.java | Update PluginManager ctor usage (no separate user-agent arg). |
| api/src/main/openapi/components/schemas/extensions/list-extensions-response.yaml | Align schema with paginated response (items + total). |
| api/src/main/openapi/components/schemas/extensions/list-extensions-response-item.yaml | Add configurable and testable fields. |
| api/src/main/openapi/components/schemas/extensions/list-extension-points-response.yaml | Align schema with paginated response (items + total). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Description
Streamlines plugin API:
Addressed Issue
N/A
Additional Details
Frontend PR: DependencyTrack/hyades-frontend#494
Checklist
This PR fixes a defect, and I have provided tests to verify that the fix is effectiveThis PR introduces changes to the database model, and I have updated the migration changelog accordinglyThis PR introduces new or alters existing behavior, and I have updated the documentation accordingly