Add binding adapter components for data services
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / osgi / Dict.java
index ab4fa7faef48d0ace3808dcf4da65e3cedc566d3..09a1ef7c934bb663f7cbfda2669a92e1b55859b9 100644 (file)
@@ -15,6 +15,7 @@ import java.util.Enumeration;
 import java.util.Map;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.mdsal.binding.api.BindingService;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,7 +23,6 @@ import org.slf4j.LoggerFactory;
 @NonNullByDefault
 final class Dict extends Dictionary<String, Object> {
     private static final Logger LOG = LoggerFactory.getLogger(Dict.class);
-    private static final Dict EMPTY = new Dict(ImmutableMap.of());
 
     private final Map<String, Object> map;
 
@@ -30,13 +30,9 @@ final class Dict extends Dictionary<String, Object> {
         this.map = ImmutableMap.copyOf(map);
     }
 
-    static Dict fromReference(final ServiceReference<?> ref) {
+    static Dict fromReference(final ServiceReference<?> ref, final BindingService service) {
         final String[] keys = ref.getPropertyKeys();
-        if (keys.length == 0) {
-            return EMPTY;
-        }
-
-        final Map<String, Object> props = Maps.newHashMapWithExpectedSize(keys.length);
+        final Map<String, Object> props = Maps.newHashMapWithExpectedSize(keys.length + 1);
         for (String key : keys) {
             // Ignore properties with our prefix: we are not exporting those
             if (!key.startsWith(ServiceProperties.PREFIX)) {
@@ -61,6 +57,7 @@ final class Dict extends Dictionary<String, Object> {
             }
         }
 
+        props.put(AbstractAdaptedService.DELEGATE, service);
         return new Dict(props);
     }