diff --git a/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/mocks/MockStringProviderSPIAsDependency.java b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/mocks/MockStringProviderSPIAsDependency.java new file mode 100644 index 0000000000000..56db659a27f4b --- /dev/null +++ b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/mocks/MockStringProviderSPIAsDependency.java @@ -0,0 +1,26 @@ +/** + * Copyright (C) 2006-2025 Talend Inc. - www.talend.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.mocks; + +import org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.serviceInterfaces.StringProviderSPIAsDependency; + +public class MockStringProviderSPIAsDependency implements StringProviderSPIAsDependency { + + @Override + public String getValueFromDependency() { + return "Mock value from dependency"; + } +} diff --git a/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/DependencySPIConsumerTest.java b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/DependencySPIConsumerTest.java new file mode 100644 index 0000000000000..54e6ba6469fec --- /dev/null +++ b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/DependencySPIConsumerTest.java @@ -0,0 +1,66 @@ +/** + * Copyright (C) 2006-2025 Talend Inc. - www.talend.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.spiConsumers; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class DependencySPIConsumerTest { + + @Test + void testGetValue_withSPILoaded() { + DependencySPIConsumer consumer = new DependencySPIConsumer<>(); + String value = consumer.getValue(); + + Assertions.assertNotNull(value); + Assertions.assertEquals("Mock value from dependency", value); + } + + @Test + void testTransform_withSPILoaded() { + DependencySPIConsumer consumer = new DependencySPIConsumer<>(); + String transformed = consumer.transform(s -> s.toUpperCase()); + + Assertions.assertNotNull(transformed); + Assertions.assertEquals("MOCK VALUE FROM DEPENDENCY", transformed); + } + + @Test + void testTransform_withPrefixFunction() { + DependencySPIConsumer consumer = new DependencySPIConsumer<>(); + String transformed = consumer.transform(s -> "Prefix: " + s); + + Assertions.assertNotNull(transformed); + Assertions.assertTrue(transformed.startsWith("Prefix: ")); + Assertions.assertTrue(transformed.contains("Mock value")); + } + + @Test + void testTransform_withIntegerReturn() { + DependencySPIConsumer consumer = new DependencySPIConsumer<>(); + Integer length = consumer.transform(String::length); + + Assertions.assertNotNull(length); + Assertions.assertTrue(length > 0); + } + + @Test + void testGetSPIImpl_isPresent() { + DependencySPIConsumer consumer = new DependencySPIConsumer<>(); + + Assertions.assertTrue(consumer.getSPIImpl().isPresent()); + } +} diff --git a/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/DynamicDependencySPIConsumerTest.java b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/DynamicDependencySPIConsumerTest.java new file mode 100644 index 0000000000000..ea8af47a8f5e4 --- /dev/null +++ b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/DynamicDependencySPIConsumerTest.java @@ -0,0 +1,56 @@ +/** + * Copyright (C) 2006-2025 Talend Inc. - www.talend.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.spiConsumers; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class DynamicDependencySPIConsumerTest { + + @Test + void testGetValue_withNoSPIAvailable() { + DynamicDependencySPIConsumer consumer = new DynamicDependencySPIConsumer<>(); + String value = consumer.getValue(); + + Assertions.assertNotNull(value); + Assertions.assertEquals("[ERROR] StringsProviderSPIAsDynamicDependency not loaded!", value); + } + + @Test + void testTransform_withNoSPIAvailable() { + DynamicDependencySPIConsumer consumer = new DynamicDependencySPIConsumer<>(); + String transformed = consumer.transform(s -> s.toUpperCase()); + + Assertions.assertNotNull(transformed); + Assertions.assertTrue(transformed.startsWith("[ERROR]")); + } + + @Test + void testTransform_withIntegerReturn_noSPIAvailable() { + DynamicDependencySPIConsumer consumer = new DynamicDependencySPIConsumer<>(); + Integer length = consumer.transform(String::length); + + Assertions.assertNotNull(length); + Assertions.assertTrue(length > 0); + } + + @Test + void testGetSPIImpl_isEmpty() { + DynamicDependencySPIConsumer consumer = new DynamicDependencySPIConsumer<>(); + + Assertions.assertFalse(consumer.getSPIImpl().isPresent()); + } +} diff --git a/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/ExternalDependencySPIConsumerTest.java b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/ExternalDependencySPIConsumerTest.java new file mode 100644 index 0000000000000..48aa9f4730c64 --- /dev/null +++ b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/java/org/talend/sdk/component/sample/feature/dynamicdependencies/classloadertestlibrary/spiConsumers/ExternalDependencySPIConsumerTest.java @@ -0,0 +1,56 @@ +/** + * Copyright (C) 2006-2025 Talend Inc. - www.talend.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.spiConsumers; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class ExternalDependencySPIConsumerTest { + + @Test + void testGetValue_withNoSPIAvailable() { + ExternalDependencySPIConsumer consumer = new ExternalDependencySPIConsumer<>(); + String value = consumer.getValue(); + + Assertions.assertNotNull(value); + Assertions.assertEquals("[ERROR] StringProviderFromExternalSPI not loaded!", value); + } + + @Test + void testTransform_withNoSPIAvailable() { + ExternalDependencySPIConsumer consumer = new ExternalDependencySPIConsumer<>(); + String transformed = consumer.transform(s -> s.toLowerCase()); + + Assertions.assertNotNull(transformed); + Assertions.assertTrue(transformed.contains("[error]")); + } + + @Test + void testTransform_withBooleanReturn_noSPIAvailable() { + ExternalDependencySPIConsumer consumer = new ExternalDependencySPIConsumer<>(); + Boolean containsError = consumer.transform(s -> s.contains("[ERROR]")); + + Assertions.assertNotNull(containsError); + Assertions.assertTrue(containsError); + } + + @Test + void testGetSPIImpl_isEmpty() { + ExternalDependencySPIConsumer consumer = new ExternalDependencySPIConsumer<>(); + + Assertions.assertFalse(consumer.getSPIImpl().isPresent()); + } +} diff --git a/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/resources/META-INF/services/org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.serviceInterfaces.StringProviderSPIAsDependency b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/resources/META-INF/services/org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.serviceInterfaces.StringProviderSPIAsDependency new file mode 100644 index 0000000000000..3ad4386f69cfb --- /dev/null +++ b/sample-parent/sample-features/dynamic-dependencies/classloader-test-library/src/test/resources/META-INF/services/org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.serviceInterfaces.StringProviderSPIAsDependency @@ -0,0 +1 @@ +org.talend.sdk.component.sample.feature.dynamicdependencies.classloadertestlibrary.mocks.MockStringProviderSPIAsDependency diff --git a/sample-parent/sample-features/pom.xml b/sample-parent/sample-features/pom.xml index e5383b0d9083c..80de4f5aea8b0 100644 --- a/sample-parent/sample-features/pom.xml +++ b/sample-parent/sample-features/pom.xml @@ -56,12 +56,11 @@ + - talend-dependencies @@ -128,6 +127,7 @@ + --> \ No newline at end of file