This is an automated email from the ASF dual-hosted git repository.
sseifert pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-osgi-mock.git
The following commit(s) were added to refs/heads/master by this push:
new 955b4de SLING-13097 Mock OSGi does inject reference when bind methods
are present (#51)
955b4de is described below
commit 955b4de453716897bbfa59dc583e0c895eabb53e
Author: Stefan Seifert <[email protected]>
AuthorDate: Wed Mar 4 08:59:41 2026 +0100
SLING-13097 Mock OSGi does inject reference when bind methods are present
(#51)
---
.../sling/testing/mock/osgi/OsgiServiceUtil.java | 2 +-
.../testing/mock/osgi/OsgiServiceUtilTest.java | 2 ++
.../osgi/testsvc/osgiserviceutil/Service3.java | 30 +++++++++++++++++++---
3 files changed, 29 insertions(+), 5 deletions(-)
diff --git
a/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtil.java
b/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtil.java
index 20755ca..5703fb0 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtil.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtil.java
@@ -783,7 +783,7 @@ final class OsgiServiceUtil {
}
// OSGi declarative services 1.3 supports modifying the field directly
- else if (StringUtils.isNotEmpty(fieldName)) {
+ if (StringUtils.isNotEmpty(fieldName)) {
// check for field with list/collection reference
if (reference.isCardinalityMultiple()) {
diff --git
a/core/src/test/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtilTest.java
b/core/src/test/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtilTest.java
index 128a272..6caef7e 100644
---
a/core/src/test/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtilTest.java
+++
b/core/src/test/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtilTest.java
@@ -99,6 +99,8 @@ public class OsgiServiceUtilTest {
List<ServiceSuperInterface3> references3 = service3.getReferences3();
assertEquals(1, references3.size());
assertSame(service2, references3.get(0));
+ assertTrue(service3.isBindReference3Called());
+ assertFalse(service3.isUnbindReference3Called());
List<Map<String, Object>> reference3Configs =
service3.getReference3Configs();
assertEquals(1, reference3Configs.size());
diff --git
a/test-services/src/main/java/org/apache/sling/testing/mock/osgi/testsvc/osgiserviceutil/Service3.java
b/test-services/src/main/java/org/apache/sling/testing/mock/osgi/testsvc/osgiserviceutil/Service3.java
index 7328188..baf7195 100644
---
a/test-services/src/main/java/org/apache/sling/testing/mock/osgi/testsvc/osgiserviceutil/Service3.java
+++
b/test-services/src/main/java/org/apache/sling/testing/mock/osgi/testsvc/osgiserviceutil/Service3.java
@@ -59,6 +59,9 @@ public class Service3 implements ServiceInterface2 {
unbind = "unbindReference1Optional")
private volatile ServiceInterface1Optional reference1Optional;
+ private boolean bindReference1OptionalCalled = false;
+ private boolean unbindReference1OptionalCalled = false;
+
private List<ServiceReference<ServiceInterface2>> references2 = new
ArrayList<>();
@Reference(
@@ -71,6 +74,9 @@ public class Service3 implements ServiceInterface2 {
unbind = "unbindReference3")
private volatile List<ServiceSuperInterface3> references3 = new
ArrayList<>();
+ private boolean bindReference3Called = false;
+ private boolean unbindReference3Called = false;
+
private List<Map<String, Object>> reference3Configs = new ArrayList<>();
@Reference(
@@ -138,11 +144,19 @@ public class Service3 implements ServiceInterface2 {
}
void bindReference1Optional(ServiceInterface1Optional service) {
- reference1Optional = service;
+ bindReference1OptionalCalled = true;
}
void unbindReference1Optional(ServiceInterface1Optional service) {
- reference1Optional = null;
+ unbindReference1OptionalCalled = true;
+ }
+
+ public boolean isBindReference1OptionalCalled() {
+ return bindReference1OptionalCalled;
+ }
+
+ public boolean isUnbindReference1OptionalCalled() {
+ return unbindReference1OptionalCalled;
}
void bindReference1(ServiceInterface1 service) {
@@ -162,15 +176,23 @@ public class Service3 implements ServiceInterface2 {
}
void bindReference3(ServiceSuperInterface3 service, Map<String, Object>
serviceConfig) {
- references3.add(service);
+ bindReference3Called = true;
reference3Configs.add(serviceConfig);
}
void unbindReference3(ServiceSuperInterface3 service, Map<String, Object>
serviceConfig) {
- references3.remove(service);
+ unbindReference3Called = true;
reference3Configs.remove(serviceConfig);
}
+ public boolean isBindReference3Called() {
+ return bindReference3Called;
+ }
+
+ public boolean isUnbindReference3Called() {
+ return unbindReference3Called;
+ }
+
void bindReference3Set(ServiceSuperInterface3 service, Map<String, Object>
serviceConfig) {
references3Set.add(service);
}