This is an automated email from the ASF dual-hosted git repository.

jsedding pushed a commit to branch org.apache.sling.testing.osgi.unit
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git


The following commit(s) were added to 
refs/heads/org.apache.sling.testing.osgi.unit by this push:
     new 3d8e9e8f reload injected classes with bundle ClassLoader
3d8e9e8f is described below

commit 3d8e9e8f1b5881764df83c47cfb0bc0e13805944
Author: Julian Sedding <[email protected]>
AuthorDate: Tue Jan 9 11:57:00 2024 +0100

    reload injected classes with bundle ClassLoader
---
 .../testing/osgi/unit/OSGiSupportInvocationInterceptor.java      | 7 ++++++-
 .../org/apache/sling/testing/osgi/unit/impl/OSGiSupportTest.java | 9 ++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/testing/osgi/unit/OSGiSupportInvocationInterceptor.java
 
b/src/main/java/org/apache/sling/testing/osgi/unit/OSGiSupportInvocationInterceptor.java
index e5af46e1..d5544460 100644
--- 
a/src/main/java/org/apache/sling/testing/osgi/unit/OSGiSupportInvocationInterceptor.java
+++ 
b/src/main/java/org/apache/sling/testing/osgi/unit/OSGiSupportInvocationInterceptor.java
@@ -80,7 +80,12 @@ class OSGiSupportInvocationInterceptor implements 
InvocationInterceptor {
             if (serviceAnnotations[i] != null) {
                 arguments[i] = resolveServiceObject(serviceAnnotations[i], 
store, parameters[i]);
             } else {
-                arguments[i] = invocationContext.getArguments().get(i);
+                final Object argument = 
invocationContext.getArguments().get(i);
+                if (argument instanceof Class) {
+                    arguments[i] = 
bundle.loadClass(((Class<?>)argument).getName());
+                } else {
+                    arguments[i] = argument;
+                }
             }
         }
 
diff --git 
a/src/test/java/org/apache/sling/testing/osgi/unit/impl/OSGiSupportTest.java 
b/src/test/java/org/apache/sling/testing/osgi/unit/impl/OSGiSupportTest.java
index f787cbe4..c02d2a6c 100644
--- a/src/test/java/org/apache/sling/testing/osgi/unit/impl/OSGiSupportTest.java
+++ b/src/test/java/org/apache/sling/testing/osgi/unit/impl/OSGiSupportTest.java
@@ -136,6 +136,9 @@ class OSGiSupportTest {
     @Component(service = ServiceA.class)
     public static class ServiceA {}
 
+    @Component(service = ServiceB.class)
+    public static class ServiceB {}
+
     @Test
     @OSGiSupport(logService = SLING, additionalBundles = 
{"org.apache.felix.scr"})
     void serviceInjection(Framework framework, @Service 
ServiceComponentRuntime scr, @Service ServiceA serviceA) {
@@ -268,9 +271,9 @@ class OSGiSupportTest {
     }
 
     @ParameterizedTest
-    @ValueSource(strings = {"foo", "bar"})
-    void parameterizedTestSupport(String fooOrBar, Framework framework, 
@Service Condition condition) {
-        assertThat(fooOrBar).matches(List.of("foo", "bar")::contains);
+    @ValueSource(classes = {OSGiSupportTest.ServiceA.class, 
OSGiSupportTest.ServiceB.class})
+    void parameterizedTestSupport(Class<?> serviceClass, Framework framework, 
@Service Condition condition) {
+        assertThat(serviceClass).matches(List.of(ServiceA.class, 
ServiceB.class)::contains);
         assertNotNull(framework);
         assertNotNull(condition);
     }

Reply via email to