Clean up ServiceReferenceUtil 91/107791/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Sep 2023 15:50:02 +0000 (17:50 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Sep 2023 15:52:18 +0000 (17:52 +0200)
The methods here are stateless: make the class a proper utility class,
adjusting users.

Change-Id: Icc2770e4ec52f19db2305068c9340db73d3c6607
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bundles-test-lib/src/main/java/org/opendaylight/odlparent/bundlestest/lib/ServiceReferenceUtil.java
bundles-test-lib/src/main/java/org/opendaylight/odlparent/bundlestest/lib/TestBundleDiag.java
bundles-test-lib/src/test/java/org/opendaylight/odlparent/bundlestest/lib/ServiceReferenceUtilTest.java

index 9370050639b1c41fc2750c66ef2eb93be415c494..b2654a89658ec5c34da89f12186c37d768d88dae 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.odlparent.bundlestest.lib;
 
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -21,14 +20,16 @@ import org.osgi.framework.ServiceReference;
  *
  * @author Michael Vorburger.ch
  */
-// intentionally just package-local
-class ServiceReferenceUtil {
+final class ServiceReferenceUtil {
+    private ServiceReferenceUtil() {
+        // Hidden on purpose
+    }
 
-    public Map<String, Object> getProperties(ServiceReference<?> serviceRef) {
-        String[] propertyKeys = serviceRef.getPropertyKeys();
-        Map<String, Object> properties = new HashMap<>(propertyKeys.length);
-        for (String propertyKey : propertyKeys) {
-            Object propertyValue = serviceRef.getProperty(propertyKey);
+    static Map<String, Object> getProperties(final ServiceReference<?> serviceRef) {
+        final var propertyKeys = serviceRef.getPropertyKeys();
+        final var properties = new HashMap<String, Object>(propertyKeys.length);
+        for (var propertyKey : propertyKeys) {
+            var propertyValue = serviceRef.getProperty(propertyKey);
             if (propertyValue != null) {
                 if (propertyValue.getClass().isArray()) {
                     propertyValue = Arrays.asList((Object[]) propertyValue);
@@ -40,13 +41,9 @@ class ServiceReferenceUtil {
         return properties;
     }
 
-    public List<String> getUsingBundleSymbolicNames(ServiceReference<?> serviceRef) {
-        Bundle[] usingBundles = serviceRef.getUsingBundles();
-        if (usingBundles == null) {
-            return Collections.emptyList();
-        } else {
-            return Arrays.stream(usingBundles).map(Bundle::getSymbolicName).collect(Collectors.toList());
-        }
+    static List<String> getUsingBundleSymbolicNames(final ServiceReference<?> serviceRef) {
+        final var usingBundles = serviceRef.getUsingBundles();
+        return usingBundles == null ? List.of()
+            : Arrays.stream(usingBundles).map(Bundle::getSymbolicName).collect(Collectors.toList());
     }
-
 }
index adca9438c3464940d878c03c51bb38acd886b7f6..15757bbb0b600800ae88807dc869076e97252300 100644 (file)
@@ -31,7 +31,6 @@ import org.slf4j.LoggerFactory;
 @SuppressFBWarnings(value = "CRLF_INJECTION_LOGS",
         justification = "multi-line logs are internal, without input from untrusted external source")
 public class TestBundleDiag {
-
     private static final Logger LOG = LoggerFactory.getLogger(TestBundleDiag.class);
 
     private final BundleContext bundleContext;
@@ -124,7 +123,6 @@ public class TestBundleDiag {
     }
 
     private void logOSGiServices() {
-        ServiceReferenceUtil util = new ServiceReferenceUtil();
         LOG.info("Now going to log all known services, to help diagnose root cause of "
                 + "diag failure BundleService reported bundle(s) which are not active");
         try {
@@ -133,7 +131,8 @@ public class TestBundleDiag {
                 // serviceRef.getBundle() can return null if the bundle was destroyed
                 if (bundle != null) {
                     LOG.info("{} defines OSGi Service {} used by {}", bundle.getSymbolicName(),
-                            util.getProperties(serviceRef), util.getUsingBundleSymbolicNames(serviceRef));
+                        ServiceReferenceUtil.getProperties(serviceRef),
+                        ServiceReferenceUtil.getUsingBundleSymbolicNames(serviceRef));
                 } else {
                     LOG.trace("skipping reporting service reference as the underlying bundle is null");
                 }
@@ -142,5 +141,4 @@ public class TestBundleDiag {
             LOG.error("logOSGiServices() failed due to InvalidSyntaxException", e);
         }
     }
-
 }
index f719cfd58650694ab99f5974f5b1071ea35d66ba..2c746a721818046d99b5bcab695dc1f1dc2334db 100644 (file)
@@ -28,12 +28,12 @@ public class ServiceReferenceUtilTest {
 
     @Test
     public void testGetUsingBundleSymbolicNames() {
-        assertEquals(List.of(), new ServiceReferenceUtil().getUsingBundleSymbolicNames(getServiceReference()));
+        assertEquals(List.of(), ServiceReferenceUtil.getUsingBundleSymbolicNames(getServiceReference()));
     }
 
     @Test
     public void testGetProperties() {
-        final var map = new ServiceReferenceUtil().getProperties(getServiceReference());
+        final var map = ServiceReferenceUtil.getProperties(getServiceReference());
         assertEquals(3, map.size());
         assertEquals("value1", map.get("property1"));
         assertEquals(List.of("value2.1", "value2.2"), map.get("property2"));