Conversation
This reverts commit 83505e1.
There was a problem hiding this comment.
Pull request overview
This PR implements dynamic dependencies support for the Talend component runtime framework. The changes enable components to declare and resolve dependencies dynamically at runtime based on configuration, which is crucial for scenarios where dependencies cannot be determined at compile time (e.g., JDBC drivers selected by users).
Changes:
- Renamed
DynamicDependenciesServiceConfigurationannotation toDynamicDependenciesConfigurationfor improved clarity and consistency - Added support for reading dynamic dependencies from
TALEND-INF/dynamic-dependencies.propertiesfiles - Enhanced runtime classpath resolution with support for manifest-based classpath entries and filtering
- Introduced parent resource filtering mechanism to control which resources are loaded from parent classloaders
- Improved nested jar discovery and error handling in component auto-discovery
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
sample-parent/sample-connector/src/main/java/org/talend/sdk/component/test/connectors/config/DynamicDependenciesConf.java |
Updated to use renamed annotation |
documentation/src/main/antora/modules/ROOT/pages/_partials/generated_configuration-types.adoc |
Updated documentation for renamed annotation |
container/container-core/src/test/java/org/talend/sdk/component/dependencies/maven/MvnDependencyListLocalRepositoryResolverTest.java |
Added test for dynamic dependencies resolution |
container/container-core/src/test/java/org/talend/sdk/component/classloader/ConfigurableClassLoaderTest.java |
Added test for parent resource filtering functionality |
container/container-core/src/test/java/org/talend/sdk/component/ContainerManagerTest.java |
Added tests for manifest classpath parsing |
container/container-core/src/main/java/org/talend/sdk/component/dependencies/maven/MvnDependencyListLocalRepositoryResolver.java |
Implements dynamic dependencies lookup and merging with standard dependencies |
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java |
Added runtime classpath capture, manifest parsing, and improved logging for diagnostics |
container/container-core/src/main/java/org/talend/sdk/component/container/Container.java |
Updated to pass resource filter to ConfigurableClassLoader |
container/container-core/src/main/java/org/talend/sdk/component/classloader/ConfigurableClassLoader.java |
Added resource filtering support and exposed nested URLs via getURLs() |
component-runtime-manager/src/test/java/org/talend/sdk/component/runtime/manager/ComponentManagerTest.java |
Updated test expectations for nested repository handling |
component-runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/ComponentManager.java |
Added resource filtering, improved nested jar discovery, and enhanced error handling |
component-api/src/main/java/org/talend/sdk/component/api/configuration/type/DynamicDependenciesConfiguration.java |
Renamed from DynamicDependenciesServiceConfiguration with updated documentation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Outdated
Show resolved
Hide resolved
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Show resolved
Hide resolved
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 12 changed files in this pull request and generated 8 comments.
Comments suppressed due to low confidence (1)
component-api/src/main/java/org/talend/sdk/component/api/configuration/type/DynamicDependenciesConfiguration.java:31
- This change renames a public API annotation type from
DynamicDependenciesServiceConfigurationtoDynamicDependenciesConfiguration. Since this is incomponent-api, it is a source-breaking change for any external components using the old annotation. Consider keeping a deprecatedDynamicDependenciesServiceConfigurationannotation as an alias (delegating to the new@ConfigurationType) for at least one major/minor cycle to preserve backward compatibility.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Outdated
Show resolved
Hide resolved
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Show resolved
Hide resolved
...runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/ComponentManager.java
Show resolved
Hide resolved
...ntainer-core/src/main/java/org/talend/sdk/component/classloader/ConfigurableClassLoader.java
Show resolved
Hide resolved
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Show resolved
Hide resolved
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Show resolved
Hide resolved
...va/org/talend/sdk/component/dependencies/maven/MvnDependencyListLocalRepositoryResolver.java
Outdated
Show resolved
Hide resolved
...runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/ComponentManager.java
Outdated
Show resolved
Hide resolved
...ime-manager/src/main/java/org/talend/sdk/component/runtime/manager/service/ResolverImpl.java
Show resolved
Hide resolved
ozhelezniak-talend
left a comment
There was a problem hiding this comment.
left comments
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.
Comments suppressed due to low confidence (1)
component-api/src/main/java/org/talend/sdk/component/api/configuration/type/DynamicDependenciesConfiguration.java:31
- Renaming the public annotation from
DynamicDependenciesServiceConfigurationtoDynamicDependenciesConfiguration(and changing the@ConfigurationTypevalue) is a breaking change for existing components and any tooling relying on the previous type id (dynamicDependenciesServiceConfiguration). If backward compatibility is needed, consider keeping the old annotation as@Deprecated(delegating to / aliasing the new one) and/or supporting both configuration type identifiers during a transition period.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Show resolved
Hide resolved
component-api/src/main/java/org/talend/sdk/component/api/service/dependency/Resolver.java
Show resolved
Hide resolved
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Show resolved
Hide resolved
...ntainer-core/src/main/java/org/talend/sdk/component/classloader/ConfigurableClassLoader.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...ntainer-core/src/main/java/org/talend/sdk/component/classloader/ConfigurableClassLoader.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...ime-manager/src/main/java/org/talend/sdk/component/runtime/manager/service/ResolverImpl.java
Show resolved
Hide resolved
...va/org/talend/sdk/component/dependencies/maven/MvnDependencyListLocalRepositoryResolver.java
Show resolved
Hide resolved
...manager/src/test/java/org/talend/sdk/component/runtime/manager/service/ResolverImplTest.java
Outdated
Show resolved
Hide resolved
…nt/runtime/manager/service/ResolverImplTest.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.
Comments suppressed due to low confidence (1)
component-api/src/main/java/org/talend/sdk/component/api/configuration/type/DynamicDependenciesConfiguration.java:31
DynamicDependenciesServiceConfigurationwas renamed toDynamicDependenciesConfigurationand the@ConfigurationTypevalue changed. Since this is incomponent-api, this is a source/binary breaking change for any consumers using the old annotation or metadata type string. Consider keeping a deprecated compatibility annotation (old name + old@ConfigurationType), delegating/mapping it to the new one, or otherwise providing a migration path.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java
Show resolved
Hide resolved
...runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/ComponentManager.java
Show resolved
Hide resolved
...api/src/main/java/org/talend/sdk/component/api/service/dependency/ClassLoaderDefinition.java
Outdated
Show resolved
Hide resolved
…nt/runtime/manager/ComponentManager.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ce/dependency/ClassLoaderDefinition.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
component-api/src/main/java/org/talend/sdk/component/api/configuration/type/DynamicDependenciesConfiguration.java:31
- Renaming the public annotation and changing the
@ConfigurationTypekey is a breaking change for any existing components/tools relying onDynamicDependenciesServiceConfiguration/dynamicDependenciesServiceConfiguration. Consider keeping a deprecated compatibility alias (old annotation name + old configurationtype string) delegating to the new one, and update remaining references in the repo (e.g.talend-component-maven-plugin/src/it/web/test/tck-component-details-api-test/tck_component_details_api_test.jsonstill asserts the oldconfigurationtype::type).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/ComponentManager.java
Show resolved
Hide resolved
component-api/src/main/java/org/talend/sdk/component/api/service/dependency/Resolver.java
Outdated
Show resolved
Hide resolved
…ce/dependency/Resolver.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| } | ||
| if (!isBlacklistedFromParent(name)) { | ||
| resource = getParent().getResource(name); | ||
| if (resource != null && (isNestedDependencyResource(name) || isInJvm(resource))) { | ||
| if (resource != null && (isNestedDependencyResource(name) || shouldLoadFromParent(resource))) { | ||
| return resource; |
There was a problem hiding this comment.
getResource()/getResources() now apply shouldLoadFromParent(...) (including resourcesFilter) when delegating to the parent, but getResourceAsStream() still falls back to getParent().getResource(name) without applying the same check. This makes it possible to bypass the new parent resource filtering simply by using getResourceAsStream. Consider applying the same shouldLoadFromParent(url) (and/or isNestedDependencyResource) check before returning the parent stream.

https://qlik-dev.atlassian.net/browse/QTDI-2134
Related pull requests