Wire Action(Provider)Service into mountpoints 00/74600/2
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 27 Jul 2018 22:57:06 +0000 (00:57 +0200)
committerRobert Varga <nite@hq.sk>
Sat, 28 Jul 2018 08:33:21 +0000 (08:33 +0000)
We need to wire the two adapters so they can be exposed to binding
world from DOM mountpoints.

Change-Id: I63e68b0c7ebfeae2a3fbba64b171196ee9c8e8ff
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionProviderServiceAdapter.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapter.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/AdapterBuilder.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMAdapterBuilder.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMAdapterLoader.java

index 11bc55dc1ac51cae9e6983575de7aa60e160f8c1..3e3fb3c8dce0f7e9564e89207fb36ac439d15659 100644 (file)
@@ -10,18 +10,22 @@ package org.opendaylight.mdsal.binding.dom.adapter;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
+import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.FluentFuture;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.api.ActionProviderService;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMAdapterBuilder.Factory;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMActionImplementation;
 import org.opendaylight.mdsal.dom.api.DOMActionProviderService;
 import org.opendaylight.mdsal.dom.api.DOMActionResult;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
+import org.opendaylight.mdsal.dom.api.DOMService;
 import org.opendaylight.yangtools.concepts.AbstractObjectRegistration;
 import org.opendaylight.yangtools.concepts.ObjectRegistration;
 import org.opendaylight.yangtools.yang.binding.Action;
@@ -37,6 +41,22 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 @NonNullByDefault
 final class ActionProviderServiceAdapter extends AbstractBindingAdapter<DOMActionProviderService>
         implements ActionProviderService {
+    private static final class Builder extends BindingDOMAdapterBuilder<ActionProviderService> {
+        @Override
+        protected ActionProviderService createInstance(final @Nullable BindingToNormalizedNodeCodec codec,
+                final ClassToInstanceMap<DOMService> delegates) {
+            final DOMActionProviderService domAction = delegates.getInstance(DOMActionProviderService.class);
+            return new ActionProviderServiceAdapter(requireNonNull(codec), domAction);
+        }
+
+        @Override
+        public Set<? extends Class<? extends DOMService>> getRequiredDelegates() {
+            return ImmutableSet.of(DOMActionProviderService.class);
+        }
+    }
+
+    static final Factory<ActionProviderService> BUILDER_FACTORY = Builder::new;
+
     ActionProviderServiceAdapter(final BindingToNormalizedNodeCodec codec, final DOMActionProviderService delegate) {
         super(codec, delegate);
     }
index a371947420858d6d227449fbb0015e91e8a62cff..506e15d6960c9b844fa3ff25dee44c072a7c3bee 100644 (file)
@@ -12,15 +12,19 @@ import static com.google.common.base.Preconditions.checkState;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
+import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.FluentFuture;
 import java.lang.reflect.Proxy;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.api.ActionService;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMAdapterBuilder.Factory;
 import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.mdsal.dom.api.DOMActionService;
+import org.opendaylight.mdsal.dom.api.DOMService;
 import org.opendaylight.yangtools.concepts.Delegator;
 import org.opendaylight.yangtools.yang.binding.Action;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -34,6 +38,20 @@ import org.opendaylight.yangtools.yang.common.RpcResult;
 final class ActionServiceAdapter
         extends AbstractBindingLoadingAdapter<DOMActionService, Class<? extends Action<?, ?, ?>>, ActionAdapter>
         implements ActionService {
+    private static final class Builder extends BindingDOMAdapterBuilder<ActionService> {
+        @Override
+        protected ActionService createInstance(final @Nullable BindingToNormalizedNodeCodec codec,
+                final ClassToInstanceMap<DOMService> delegates) {
+            final DOMActionService domAction = delegates.getInstance(DOMActionService.class);
+            return new ActionServiceAdapter(requireNonNull(codec), domAction);
+        }
+
+        @Override
+        public Set<? extends Class<? extends DOMService>> getRequiredDelegates() {
+            return ImmutableSet.of(DOMActionService.class);
+        }
+    }
+
     private static final class ConstrainedAction implements Delegator<Action<?, ?, ?>>,
             Action<InstanceIdentifier<?>, RpcInput, RpcOutput> {
         private final Action<InstanceIdentifier<?>, RpcInput, RpcOutput> delegate;
@@ -56,6 +74,8 @@ final class ActionServiceAdapter
         }
     }
 
+    static final Factory<ActionService> BUILDER_FACTORY = Builder::new;
+
     ActionServiceAdapter(final BindingToNormalizedNodeCodec codec, final DOMActionService delegate) {
         super(codec, delegate);
     }
index dd48e7ac9b4b25c0c9133d36849fac8edbf831d2..ef6f035994d8a2042ecb98e3d1ebc94653652b61 100644 (file)
@@ -12,6 +12,7 @@ import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.collect.MutableClassToInstanceMap;
 import java.util.Set;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.Builder;
 
 public abstract class AdapterBuilder<T,D> implements Builder<T> {
@@ -20,7 +21,7 @@ public abstract class AdapterBuilder<T,D> implements Builder<T> {
 
     public abstract Set<? extends Class<? extends D>> getRequiredDelegates();
 
-    protected abstract T createInstance(ClassToInstanceMap<D> immutableDelegates);
+    protected abstract @NonNull T createInstance(@NonNull ClassToInstanceMap<D> immutableDelegates);
 
     private void checkAllRequiredServices() {
         for (final Class<? extends D> type : getRequiredDelegates()) {
index f3609ff591bf1404857330416e6b4ce2a318d4b6..a76bd498f1cdc1ba25faf4e68ff4084fe8f4b3bd 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.dom.adapter;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ClassToInstanceMap;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.BindingService;
 import org.opendaylight.mdsal.dom.api.DOMService;
 
@@ -18,12 +19,11 @@ abstract class BindingDOMAdapterBuilder<T extends BindingService> extends Adapte
     interface Factory<T extends BindingService> {
 
         BindingDOMAdapterBuilder<T> newBuilder();
-
     }
 
     private BindingToNormalizedNodeCodec codec;
 
-    public void setCodec(final BindingToNormalizedNodeCodec codec) {
+    void setCodec(final BindingToNormalizedNodeCodec codec) {
         this.codec = codec;
     }
 
@@ -33,6 +33,6 @@ abstract class BindingDOMAdapterBuilder<T extends BindingService> extends Adapte
         return createInstance(codec, delegates);
     }
 
-    protected abstract T createInstance(BindingToNormalizedNodeCodec myCodec, ClassToInstanceMap<DOMService> delegates);
-
+    abstract T createInstance(BindingToNormalizedNodeCodec myCodec,
+            @NonNull ClassToInstanceMap<@NonNull DOMService> delegates);
 }
index ec5bc81e311878c7a74e37fe6752f0a24da737dc..2a84702a2e63027f1d13dda251b17d83134ff867 100644 (file)
@@ -10,6 +10,8 @@ package org.opendaylight.mdsal.binding.dom.adapter;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableMap;
 import java.util.Map;
+import org.opendaylight.mdsal.binding.api.ActionProviderService;
+import org.opendaylight.mdsal.binding.api.ActionService;
 import org.opendaylight.mdsal.binding.api.BindingService;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
@@ -25,6 +27,8 @@ public abstract class BindingDOMAdapterLoader extends AdapterLoader<BindingServi
             .put(NotificationPublishService.class, BindingDOMNotificationPublishServiceAdapter.BUILDER_FACTORY)
             .put(DataBroker.class, BindingDOMDataBrokerAdapter.BUILDER_FACTORY)
             .put(RpcConsumerRegistry.class, BindingDOMRpcServiceAdapter.BUILDER_FACTORY)
+            .put(ActionService.class, ActionServiceAdapter.BUILDER_FACTORY)
+            .put(ActionProviderService.class, ActionProviderServiceAdapter.BUILDER_FACTORY)
             .build();
 
     private final BindingToNormalizedNodeCodec codec;