From ba15064d1ee4e3b98cf7e157b9f464e022b644ea Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 27 Jul 2018 22:53:31 +0200 Subject: [PATCH] Simplify DOMOperationService API With DOMRpcService API being cleaned up to use FluentFuture, there is no need for us to duplicate the API. Introduce a simplistic DOMActionService API and port all users. JIRA: MDSAL-283 Change-Id: Id59cd3a8c910dbd79aac87cc6777e8f9d108a749 Signed-off-by: Robert Varga --- .../binding/dom/adapter/ActionAdapter.java | 10 +- .../dom/adapter/ActionServiceAdapter.java | 6 +- .../dom/adapter/BindingAdapterFactory.java | 4 +- .../binding/dom/adapter/RpcResultUtil.java | 4 +- .../adapter/osgi/DynamicBindingAdapter.java | 4 +- .../dom/adapter/spi/AdapterFactory.java | 6 +- .../dom/adapter/ActionServiceAdapterTest.java | 12 +- ...va => DOMActionAvailabilityExtension.java} | 22 ++- ...Exception.java => DOMActionException.java} | 8 +- .../dom/api/DOMActionImplementation.java | 48 +++++++ .../mdsal/dom/api/DOMActionInstance.java | 89 ++++++++++++ ...va => DOMActionNotAvailableException.java} | 8 +- .../dom/api/DOMActionProviderService.java | 40 ++++++ ...=> DOMActionProviderServiceExtension.java} | 6 +- ...rationResult.java => DOMActionResult.java} | 2 +- ...tionService.java => DOMActionService.java} | 21 +-- ...on.java => DOMActionServiceExtension.java} | 6 +- .../dom/api/DOMOperationImplementation.java | 70 --------- .../mdsal/dom/api/DOMOperationInstance.java | 136 ------------------ .../dom/api/DOMOperationProviderService.java | 57 -------- ...Result.java => SimpleDOMActionResult.java} | 10 +- 21 files changed, 235 insertions(+), 334 deletions(-) rename dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/{DOMOperationAvailabilityExtension.java => DOMActionAvailabilityExtension.java} (74%) rename dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/{DOMOperationException.java => DOMActionException.java} (82%) create mode 100644 dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionImplementation.java create mode 100644 dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionInstance.java rename dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/{DOMOperationNotAvailableException.java => DOMActionNotAvailableException.java} (71%) create mode 100644 dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionProviderService.java rename dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/{DOMOperationProviderServiceExtension.java => DOMActionProviderServiceExtension.java} (69%) rename dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/{DOMOperationResult.java => DOMActionResult.java} (97%) rename dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/{DOMOperationService.java => DOMActionService.java} (56%) rename dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/{DOMOperationServiceExtension.java => DOMActionServiceExtension.java} (72%) delete mode 100644 dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationImplementation.java delete mode 100644 dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationInstance.java delete mode 100644 dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationProviderService.java rename dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/{SimpleDOMOperationResult.java => SimpleDOMActionResult.java} (80%) diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionAdapter.java index ce3703f98a..70259f2984 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionAdapter.java @@ -18,9 +18,9 @@ import java.lang.reflect.Method; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMActionResult; +import org.opendaylight.mdsal.dom.api.DOMActionService; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; -import org.opendaylight.mdsal.dom.api.DOMOperationResult; -import org.opendaylight.mdsal.dom.api.DOMOperationService; import org.opendaylight.yangtools.yang.binding.Action; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.RpcInput; @@ -28,12 +28,12 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent import org.opendaylight.yangtools.yang.model.api.SchemaPath; @NonNullByDefault -final class ActionAdapter extends AbstractBindingAdapter implements InvocationHandler { +final class ActionAdapter extends AbstractBindingAdapter implements InvocationHandler { private final Class> type; private final NodeIdentifier inputName; private final SchemaPath schemaPath; - ActionAdapter(final BindingToNormalizedNodeCodec codec, final DOMOperationService delegate, + ActionAdapter(final BindingToNormalizedNodeCodec codec, final DOMActionService delegate, final Class> type) { super(codec, delegate); this.type = requireNonNull(type); @@ -63,7 +63,7 @@ final class ActionAdapter extends AbstractBindingAdapter im if (args.length == 2) { final InstanceIdentifier path = (InstanceIdentifier) requireNonNull(args[0]); final RpcInput input = (RpcInput) requireNonNull(args[1]); - final FluentFuture future = getDelegate().invokeAction(schemaPath, + final FluentFuture future = getDelegate().invokeAction(schemaPath, new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, getCodec().toNormalized(path)), getCodec().toLazyNormalizedNodeActionInput(type, inputName, input)); diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapter.java index 513db38d2b..a371947420 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapter.java @@ -20,7 +20,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.mdsal.binding.api.ActionService; import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; -import org.opendaylight.mdsal.dom.api.DOMOperationService; +import org.opendaylight.mdsal.dom.api.DOMActionService; import org.opendaylight.yangtools.concepts.Delegator; import org.opendaylight.yangtools.yang.binding.Action; import org.opendaylight.yangtools.yang.binding.DataObject; @@ -32,7 +32,7 @@ import org.opendaylight.yangtools.yang.common.RpcResult; @Beta @NonNullByDefault final class ActionServiceAdapter - extends AbstractBindingLoadingAdapter>, ActionAdapter> + extends AbstractBindingLoadingAdapter>, ActionAdapter> implements ActionService { private static final class ConstrainedAction implements Delegator>, Action, RpcInput, RpcOutput> { @@ -56,7 +56,7 @@ final class ActionServiceAdapter } } - ActionServiceAdapter(final BindingToNormalizedNodeCodec codec, final DOMOperationService delegate) { + ActionServiceAdapter(final BindingToNormalizedNodeCodec codec, final DOMActionService delegate) { super(codec, delegate); } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingAdapterFactory.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingAdapterFactory.java index 374758be10..bd8cc14382 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingAdapterFactory.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingAdapterFactory.java @@ -21,12 +21,12 @@ import org.opendaylight.mdsal.binding.api.NotificationService; import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry; import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.mdsal.binding.dom.adapter.spi.AdapterFactory; +import org.opendaylight.mdsal.dom.api.DOMActionService; import org.opendaylight.mdsal.dom.api.DOMDataBroker; import org.opendaylight.mdsal.dom.api.DOMDataTreeService; import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService; import org.opendaylight.mdsal.dom.api.DOMNotificationService; -import org.opendaylight.mdsal.dom.api.DOMOperationService; import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.dom.api.DOMRpcService; @@ -130,7 +130,7 @@ public final class BindingAdapterFactory implements AdapterFactory { } @Override - public ActionService createActionService(final DOMOperationService domService) { + public ActionService createActionService(final DOMActionService domService) { return new ActionServiceAdapter(codec, domService); } } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcResultUtil.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcResultUtil.java index c29e3f0596..ccc7c9434d 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcResultUtil.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcResultUtil.java @@ -10,7 +10,7 @@ package org.opendaylight.mdsal.binding.dom.adapter; import java.util.Collection; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.mdsal.dom.api.DOMOperationResult; +import org.opendaylight.mdsal.dom.api.DOMActionResult; import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; @@ -18,7 +18,7 @@ import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; /** - * Utility methods for converting {@link RpcResult} to/from {@link DOMOperationResult} and {@link DOMRpcResult}. + * Utility methods for converting {@link RpcResult} to/from {@link DOMActionResult} and {@link DOMRpcResult}. */ @NonNullByDefault final class RpcResultUtil { diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/osgi/DynamicBindingAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/osgi/DynamicBindingAdapter.java index 66e45245ff..825fda6fdf 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/osgi/DynamicBindingAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/osgi/DynamicBindingAdapter.java @@ -20,12 +20,12 @@ import org.opendaylight.mdsal.binding.api.NotificationService; import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry; import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.mdsal.binding.dom.adapter.spi.AdapterFactory; +import org.opendaylight.mdsal.dom.api.DOMActionService; import org.opendaylight.mdsal.dom.api.DOMDataBroker; import org.opendaylight.mdsal.dom.api.DOMDataTreeService; import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService; import org.opendaylight.mdsal.dom.api.DOMNotificationService; -import org.opendaylight.mdsal.dom.api.DOMOperationService; import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.mdsal.dom.api.DOMService; @@ -60,7 +60,7 @@ public final class DynamicBindingAdapter implements AutoCloseable { factory::createRpcConsumerRegistry), new AdaptingTracker<>(ctx, DOMRpcProviderService.class, RpcProviderService.class, factory::createRpcProviderService), - new AdaptingTracker<>(ctx, DOMOperationService.class, ActionService.class, factory::createActionService)); + new AdaptingTracker<>(ctx, DOMActionService.class, ActionService.class, factory::createActionService)); LOG.debug("Starting {} DOMService trackers", trackers.size()); trackers.forEach(ServiceTracker::open); diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/spi/AdapterFactory.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/spi/AdapterFactory.java index 8845be6d18..22f7731cdb 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/spi/AdapterFactory.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/spi/AdapterFactory.java @@ -18,12 +18,12 @@ import org.opendaylight.mdsal.binding.api.NotificationPublishService; import org.opendaylight.mdsal.binding.api.NotificationService; import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry; import org.opendaylight.mdsal.binding.api.RpcProviderService; +import org.opendaylight.mdsal.dom.api.DOMActionService; import org.opendaylight.mdsal.dom.api.DOMDataBroker; import org.opendaylight.mdsal.dom.api.DOMDataTreeService; import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService; import org.opendaylight.mdsal.dom.api.DOMNotificationService; -import org.opendaylight.mdsal.dom.api.DOMOperationService; import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.mdsal.dom.api.DOMService; @@ -100,11 +100,11 @@ public interface AdapterFactory { RpcProviderService createRpcProviderService(DOMRpcProviderService domService); /** - * Create a {@link ActionService} backed by a {@link DOMOperationService}. + * Create a {@link ActionService} backed by a {@link DOMActionService}. * * @param domService Backing DOMOperationService * @return A ActionService * @throws NullPointerException if {@code domService} is null */ - ActionService createActionService(DOMOperationService domService); + ActionService createActionService(DOMActionService domService); } diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapterTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapterTest.java index ffe84cfc88..5ea386c4ce 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapterTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/ActionServiceAdapterTest.java @@ -28,9 +28,9 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.opendaylight.mdsal.binding.api.ActionService; -import org.opendaylight.mdsal.dom.api.DOMOperationResult; -import org.opendaylight.mdsal.dom.api.DOMOperationService; -import org.opendaylight.mdsal.dom.spi.SimpleDOMOperationResult; +import org.opendaylight.mdsal.dom.api.DOMActionResult; +import org.opendaylight.mdsal.dom.api.DOMActionService; +import org.opendaylight.mdsal.dom.spi.SimpleDOMActionResult; import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.Cont; import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.cont.Foo; import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.cont.foo.Input; @@ -56,11 +56,11 @@ public class ActionServiceAdapterTest extends AbstractAdapterTest { private static final RpcOutput BINDING_FOO_OUTPUT = new OutputBuilder().build(); @Mock - private DOMOperationService delegate; + private DOMActionService delegate; private ActionService service; - private SettableFuture domResult; + private SettableFuture domResult; @Override @Before @@ -81,7 +81,7 @@ public class ActionServiceAdapterTest extends AbstractAdapterTest { BINDING_FOO_INPUT); assertNotNull(future); assertFalse(future.isDone()); - domResult.set(new SimpleDOMOperationResult(DOM_FOO_OUTPUT, ImmutableList.of())); + domResult.set(new SimpleDOMActionResult(DOM_FOO_OUTPUT, ImmutableList.of())); final RpcResult bindingResult = Futures.getDone(future); assertEquals(ImmutableList.of(), bindingResult.getErrors()); diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationAvailabilityExtension.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionAvailabilityExtension.java similarity index 74% rename from dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationAvailabilityExtension.java rename to dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionAvailabilityExtension.java index b3c8ecb3dc..52478bc9ec 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationAvailabilityExtension.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionAvailabilityExtension.java @@ -12,19 +12,18 @@ import java.util.EventListener; import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; /** - * An {@link DOMOperationServiceExtension} exposed by {@link DOMOperationService}s which allow their users to listen - * for operations becoming available. + * An {@link DOMActionServiceExtension} exposed by {@link DOMActionService}s which allow their users to listen + * for actions are becoming available. * * @author Robert Varga */ @Beta @NonNullByDefault -public interface DOMOperationAvailabilityExtension extends DOMOperationServiceExtension { +public interface DOMActionAvailabilityExtension extends DOMActionServiceExtension { /** * Register a {@link AvailabilityListener} with this service to receive notifications about operation * implementations becoming (un)available. The listener will be invoked with the current implementations reported @@ -32,9 +31,8 @@ public interface DOMOperationAvailabilityExtension extends DOMOperationServiceEx * *

* Users should note that using a listener does not necessarily mean that - * {@link DOMOperationService#invokeRpc(QName, ContainerNode)} and - * {@link DOMOperationService#invokeAction(SchemaPath, DOMDataTreeIdentifier, ContainerNode)} will not report - * a failure due to {@link DOMOperationNotAvailableException} and need to be ready to handle it. + * {@link DOMActionService#invokeAction(SchemaPath, DOMDataTreeIdentifier, ContainerNode)} will not report + * a failure due to {@link DOMActionNotAvailableException} and need to be ready to handle it. * *

* Implementations are encouraged to take reasonable precautions to prevent this scenario from occurring. @@ -48,15 +46,15 @@ public interface DOMOperationAvailabilityExtension extends DOMOperationServiceEx /** * An {@link EventListener} used to track Operation implementations becoming (un)available - * to a {@link DOMOperationService}. + * to a {@link DOMActionService}. */ interface AvailabilityListener extends EventListener { /** - * Method invoked whenever an operation type becomes available or unavailable. There are two sets reported, + * Method invoked whenever an action type becomes available or unavailable. There are two sets reported, * removed and added. To reconstruct the state, first apply removed and then added operations, like this: * * - * Set<AvailableOperation<?>> operations; + * Set<DOMActionInstancelt;?>> operations; * operations.removeAll(removed); * operations.addAll(added); * @@ -64,7 +62,7 @@ public interface DOMOperationAvailabilityExtension extends DOMOperationServiceEx * @param removed operations which disappeared * @param added operations which became available */ - void onOperationsChanged(Set> removed, Set> added); + void onActionsChanged(Set removed, Set added); /** * Implementation filtering method. This method is useful for forwarding operation implementations, @@ -75,7 +73,7 @@ public interface DOMOperationAvailabilityExtension extends DOMOperationServiceEx * @param impl Operation implementation being registered * @return False if the implementation should not be reported, defaults to true. */ - default boolean acceptsImplementation(final DOMOperationImplementation impl) { + default boolean acceptsImplementation(final DOMActionImplementation impl) { return true; } } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationException.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionException.java similarity index 82% rename from dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationException.java rename to dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionException.java index 5d2c2b6ad3..4ebc9e4133 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationException.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionException.java @@ -12,13 +12,13 @@ import org.eclipse.jdt.annotation.NonNullByDefault; /** * Base class for failures that can occur during operation invocation. This covers transport and protocol-level - * failures, not implementation-reported errors, which are part of {@link DOMOperationResult}. + * failures, not implementation-reported errors, which are part of {@link DOMActionResult}. * * @author Robert Varga */ @Beta @NonNullByDefault -public abstract class DOMOperationException extends Exception { +public abstract class DOMActionException extends Exception { private static final long serialVersionUID = 1L; /** @@ -26,7 +26,7 @@ public abstract class DOMOperationException extends Exception { * * @param message Exception message */ - protected DOMOperationException(final String message) { + protected DOMActionException(final String message) { super(message); } @@ -36,7 +36,7 @@ public abstract class DOMOperationException extends Exception { * @param message Exception message * @param cause Chained cause */ - protected DOMOperationException(final String message, final Throwable cause) { + protected DOMActionException(final String message, final Throwable cause) { super(message, cause); } } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionImplementation.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionImplementation.java new file mode 100644 index 0000000000..678e8496b6 --- /dev/null +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionImplementation.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2018 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.mdsal.dom.api; + +import com.google.common.annotations.Beta; +import com.google.common.util.concurrent.FluentFuture; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNode; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; + +/** + * Interface implemented by an individual operation implementation. This API allows for dispatch implementations, e.g. + * an individual object handling a multitude of operations. + * + * @author Robert Varga + */ +@Beta +@FunctionalInterface +@NonNullByDefault +public interface DOMActionImplementation { + /** + * Initiate invocation of the action. Implementations of this method are expected to not block. + * + * @param type SchemaPath of the action to be invoked. This path refers to an effective action instantiated on top + * of the conceptual {@link StoreTreeNode}. + * @param path {@link DOMDataTreeIdentifier} of parent data node which action attached to. + * @param input Input arguments + * @return A FluentFuture which completes with the result of invocation + * @throws NullPointerException if any of the arguments is null + */ + FluentFuture invokeAction(SchemaPath type, DOMDataTreeIdentifier path, + ContainerNode input); + + /** + * Return the relative invocation cost of this implementation. Default implementation returns 0. + * + * @return Non-negative cost of invoking this implementation. + */ + default long invocationCost() { + return 0; + } +} diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionInstance.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionInstance.java new file mode 100644 index 0000000000..b36bb81900 --- /dev/null +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionInstance.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2018 Pantheon Technologies, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.mdsal.dom.api; + +import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Objects.requireNonNull; + +import com.google.common.base.MoreObjects; +import com.google.common.collect.ImmutableSet; +import java.util.Objects; +import java.util.Set; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; + +/** + * An action which is subject to availability. + */ +public final class DOMActionInstance implements Immutable { + private final Set dataTrees; + private final SchemaPath type; + + DOMActionInstance(final SchemaPath type, final Set dataTrees) { + this.type = requireNonNull(type); + this.dataTrees = ImmutableSet.copyOf(dataTrees); + checkArgument(!dataTrees.isEmpty()); + } + + public static DOMActionInstance of(final SchemaPath type, final Set dataTrees) { + return new DOMActionInstance(type, dataTrees); + } + + public static DOMActionInstance of(final SchemaPath type, final DOMDataTreeIdentifier... dataTrees) { + return of(type, ImmutableSet.copyOf(dataTrees)); + } + + public static DOMActionInstance of(final SchemaPath type, final LogicalDatastoreType datastore, + final YangInstanceIdentifier path) { + return of(type, ImmutableSet.of(new DOMDataTreeIdentifier(datastore, path))); + } + + /** + * Return the set of data trees on which this action is available. These identifiers are required to point + * to concrete items, i.e. they may not be wildcards. + * + * @return Set of trees on which this action is available. + */ + public Set getDataTrees() { + return dataTrees; + } + + /** + * Return the operation type. + * + * @return operation type. + */ + public SchemaPath getType() { + return type; + } + + @Override + public int hashCode() { + return Objects.hash(getType(), dataTrees); + } + + @Override + public boolean equals(final @Nullable Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof DOMActionInstance)) { + return false; + } + final DOMActionInstance other = (DOMActionInstance) obj; + return getType().equals(other.type) && dataTrees.equals(other.dataTrees); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("type", type).add("dataTrees", dataTrees).toString(); + } +} diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationNotAvailableException.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionNotAvailableException.java similarity index 71% rename from dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationNotAvailableException.java rename to dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionNotAvailableException.java index 91c261f93c..cb3567a49b 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationNotAvailableException.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionNotAvailableException.java @@ -13,18 +13,18 @@ import com.google.common.annotations.Beta; import org.eclipse.jdt.annotation.NonNullByDefault; /** - * Exception indicating that no implementation of the requested operation is available. + * Exception indicating that no implementation of the requested action is available. */ @Beta @NonNullByDefault -public final class DOMOperationNotAvailableException extends DOMOperationException { +public final class DOMActionNotAvailableException extends DOMActionException { private static final long serialVersionUID = 1L; - public DOMOperationNotAvailableException(final String format, final Object... args) { + public DOMActionNotAvailableException(final String format, final Object... args) { super(String.format(format, args)); } - public DOMOperationNotAvailableException(final Throwable cause, final String format, final Object... args) { + public DOMActionNotAvailableException(final Throwable cause, final String format, final Object... args) { super(String.format(format, args), requireNonNull(cause)); } } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionProviderService.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionProviderService.java new file mode 100644 index 0000000000..2ea72f18db --- /dev/null +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionProviderService.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.mdsal.dom.api; + +import com.google.common.annotations.Beta; +import com.google.common.collect.ImmutableSet; +import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.opendaylight.yangtools.concepts.ObjectRegistration; + +/** + * A {@link DOMService} which allows registration of action implementations with a conceptual router. The client + * counterpart of this service is {@link DOMActionService}. + */ +@Beta +@NonNullByDefault +public interface DOMActionProviderService + extends DOMExtensibleService { + /** + * Register an {@link DOMActionImplementation} object with this service. + * + * @param implementation action implementation, must not be null + * @param instances Set of supported operation identifiers. Must not be null, empty, or contain a null element. + * @return A {@link ObjectRegistration} object, guaranteed to be non-null. + * @throws NullPointerException if implementation or types is null + * @throws IllegalArgumentException if {@code instances} is empty + */ + ObjectRegistration registerActionImplementation(T implementation, + Set instances); + + default ObjectRegistration registerActionImplementation( + final T implementation, final DOMActionInstance... instances) { + return registerActionImplementation(implementation, ImmutableSet.copyOf(instances)); + } +} diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationProviderServiceExtension.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionProviderServiceExtension.java similarity index 69% rename from dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationProviderServiceExtension.java rename to dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionProviderServiceExtension.java index e8aed30c26..443b7b0c7c 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationProviderServiceExtension.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionProviderServiceExtension.java @@ -11,13 +11,13 @@ import com.google.common.annotations.Beta; import org.eclipse.jdt.annotation.NonNullByDefault; /** - * Marker interface for extensions of {@link DOMOperationProviderService}. + * Marker interface for extensions of {@link DOMActionProviderService}. * * @author Robert Varga */ @Beta @NonNullByDefault -public interface DOMOperationProviderServiceExtension - extends DOMServiceExtension { +public interface DOMActionProviderServiceExtension + extends DOMServiceExtension { } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationResult.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionResult.java similarity index 97% rename from dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationResult.java rename to dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionResult.java index ed8e68bc18..4273d786ff 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationResult.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionResult.java @@ -21,7 +21,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; */ @Beta @NonNullByDefault -public interface DOMOperationResult { +public interface DOMActionResult { /** * Returns a set of errors and warnings which occurred during processing the call. * diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationService.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionService.java similarity index 56% rename from dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationService.java rename to dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionService.java index 33535b0b11..9411773250 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationService.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionService.java @@ -10,31 +10,19 @@ package org.opendaylight.mdsal.dom.api; import com.google.common.annotations.Beta; import com.google.common.util.concurrent.FluentFuture; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; /** - * A {@link DOMService} which allows clients to invoke Actions and RPCs. The conceptual model of this service is that - * of a dynamic router, where the set of available Operation services can change dynamically. The service allows users - * to add a listener to track the process of Actions and RPCs becoming available. + * A {@link DOMService} which allows clients to invoke Actions. The conceptual model of this service is that + * of a dynamic router, where the set of available Action services can change dynamically. * * @author Robert Varga */ @Beta @NonNullByDefault -public interface DOMOperationService extends DOMExtensibleService { - /** - * Initiate invocation of an RPC. This method is guaranteed to not block on any external resources. - * - * @param type QName of the RPC to be invoked - * @param input Input arguments - * @return A FluentFuture which completes with the result of invocation - * @throws NullPointerException if any of the arguments is null - */ - FluentFuture invokeRpc(QName type, ContainerNode input); - +public interface DOMActionService extends DOMExtensibleService { /** * Initiate invocation of an Action. This method is guaranteed to not block on any external resources. * @@ -45,5 +33,6 @@ public interface DOMOperationService extends DOMExtensibleService invokeAction(SchemaPath type, DOMDataTreeIdentifier path, ContainerNode input); + FluentFuture invokeAction(SchemaPath type, DOMDataTreeIdentifier path, + ContainerNode input); } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationServiceExtension.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionServiceExtension.java similarity index 72% rename from dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationServiceExtension.java rename to dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionServiceExtension.java index ac955cd795..466e252228 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationServiceExtension.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMActionServiceExtension.java @@ -11,13 +11,13 @@ import com.google.common.annotations.Beta; import org.eclipse.jdt.annotation.NonNullByDefault; /** - * Marker interface for extensions of {@link DOMOperationService}. + * Marker interface for extensions of {@link DOMActionService}. * * @author Robert Varga */ @Beta @NonNullByDefault -public interface DOMOperationServiceExtension - extends DOMServiceExtension { +public interface DOMActionServiceExtension + extends DOMServiceExtension { } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationImplementation.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationImplementation.java deleted file mode 100644 index fd8224e30f..0000000000 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationImplementation.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.mdsal.dom.api; - -import com.google.common.annotations.Beta; -import com.google.common.util.concurrent.FluentFuture; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; - -/** - * Interface implemented by an individual operation implementation. This API allows for dispatch implementations, e.g. - * an individual object handling a multitude of operations. - * - * @author Robert Varga - */ -@Beta -@NonNullByDefault -public interface DOMOperationImplementation { - /** - * An implementation of an {@code action}. - */ - @FunctionalInterface - interface Action extends DOMOperationImplementation { - /** - * Initiate invocation of the action. Implementations of this method are expected to not block. - * - * @param type SchemaPath of the action to be invoked. This path refers to an effective action instantiated on - * top of the conceptual {@link StoreTreeNode}. - * @param path {@link DOMDataTreeIdentifier} of parent data node which action attached to. - * @param input Input arguments - * @return A FluentFuture which completes with the result of invocation - * @throws NullPointerException if any of the arguments is null - */ - FluentFuture invokeAction(SchemaPath type, DOMDataTreeIdentifier path, - ContainerNode input); - } - - /** - * An implementation of an {@code rpc}. - */ - @FunctionalInterface - interface Rpc extends DOMOperationImplementation { - /** - * Initiate invocation of the RPC. Implementations of this method are expected to not block. - * - * @param type QName of the RPC to be invoked - * @param input Input arguments - * @return A FluentFuture which completes with the result of invocation - * @throws NullPointerException if any of the arguments is null - */ - FluentFuture invokeRpc(QName type, ContainerNode input); - } - - /** - * Return the relative invocation cost of this implementation. Default implementation returns 0. - * - * @return Non-negative cost of invoking this implementation. - */ - default long invocationCost() { - return 0; - } -} diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationInstance.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationInstance.java deleted file mode 100644 index a2290d554e..0000000000 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationInstance.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.mdsal.dom.api; - -import static com.google.common.base.Preconditions.checkArgument; -import static java.util.Objects.requireNonNull; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.collect.ImmutableSet; -import java.util.Objects; -import java.util.Set; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.yangtools.concepts.Immutable; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; - -/** - * An operation (RPC or action) which is subject to availability. This is a common superclass for {@link Action} and - * {@link Rpc}. - * - * @param type of operation type - */ -public abstract class DOMOperationInstance implements Immutable { - public static final class Action extends DOMOperationInstance { - private final Set dataTrees; - - Action(final SchemaPath type, final Set dataTrees) { - super(type); - this.dataTrees = ImmutableSet.copyOf(dataTrees); - checkArgument(!dataTrees.isEmpty()); - } - - /** - * Return the set of data trees on which this action is available. These identifiers are required to point - * to concrete items, i.e. they may not be wildcards. - * - * @return Set of trees on which this action is available. - */ - public Set getDataTrees() { - return dataTrees; - } - - @Override - public int hashCode() { - return Objects.hash(getType(), dataTrees); - } - - @Override - public boolean equals(final @Nullable Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof Action)) { - return false; - } - final Action other = (Action) obj; - return getType().equals(other.getType()) && dataTrees.equals(other.dataTrees); - } - - @Override - ToStringHelper addToStringAttributes(final ToStringHelper helper) { - return helper.add("dataTrees", dataTrees); - } - } - - public static final class Rpc extends DOMOperationInstance { - Rpc(final QName type) { - super(type); - } - - @Override - public int hashCode() { - return getType().hashCode(); - } - - @Override - public boolean equals(final @Nullable Object obj) { - return this == obj || obj instanceof Rpc && getType().equals(((Rpc) obj).getType()); - } - } - - private final T type; - - DOMOperationInstance(final T type) { - this.type = requireNonNull(type); - } - - public static Action actionOf(final SchemaPath type, final Set dataTrees) { - return new Action(type, dataTrees); - } - - public static Action actionOf(final SchemaPath type, final DOMDataTreeIdentifier... dataTrees) { - return actionOf(type, ImmutableSet.copyOf(dataTrees)); - } - - public static Action actionOf(final SchemaPath type, final LogicalDatastoreType datastore, - final YangInstanceIdentifier path) { - return actionOf(type, ImmutableSet.of(new DOMDataTreeIdentifier(datastore, path))); - } - - public static Rpc rpcOf(final QName type) { - return new Rpc(type); - } - - /** - * Return the operation type. - * - * @return operation type. - */ - public final T getType() { - return type; - } - - @Override - public abstract int hashCode(); - - @Override - public abstract boolean equals(@Nullable Object obj); - - @Override - public final String toString() { - return addToStringAttributes(MoreObjects.toStringHelper(this)).toString(); - } - - ToStringHelper addToStringAttributes(final ToStringHelper helper) { - return helper.add("type", type); - } -} \ No newline at end of file diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationProviderService.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationProviderService.java deleted file mode 100644 index 9b60c52f12..0000000000 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMOperationProviderService.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.mdsal.dom.api; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableSet; -import java.util.Set; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yangtools.concepts.ObjectRegistration; - -/** - * A {@link DOMService} which allows registration of operation implementations with a conceptual - * router. The client counterpart of this service is {@link DOMOperationService}. - */ -@Beta -@NonNullByDefault -public interface DOMOperationProviderService - extends DOMExtensibleService { - /** - * Register an {@link DOMOperationImplementation.Action} object with this service. - * - * @param implementation action implementation, must not be null - * @param instances Set of supported operation identifiers. Must not be null, empty, or contain a null element. - * @return A {@link ObjectRegistration} object, guaranteed to be non-null. - * @throws NullPointerException if implementation or types is null - * @throws IllegalArgumentException if {@code instances} is empty - */ - ObjectRegistration registerActionImplementation(T implementation, - Set instances); - - default ObjectRegistration registerActionImplementation( - final T implementation, final DOMOperationInstance.Action... instances) { - return registerActionImplementation(implementation, ImmutableSet.copyOf(instances)); - } - - /** - * Register an {@link DOMOperationImplementation.Rpc} object with this service. - * - * @param implementation RPC implementation, must not be null - * @param instances Set of supported operation identifiers. Must not be null, empty, or contain a null element. - * @return A {@link ObjectRegistration} object, guaranteed to be non-null. - * @throws NullPointerException if implementation or types is null - * @throws IllegalArgumentException if {@code instances} is empty - */ - ObjectRegistration registerRpcImplementation(T implementation, - Set instances); - - default ObjectRegistration registerRpcImplementation( - final T implementation, final DOMOperationInstance.Rpc... instances) { - return registerRpcImplementation(implementation, ImmutableSet.copyOf(instances)); - } -} diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/SimpleDOMOperationResult.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/SimpleDOMActionResult.java similarity index 80% rename from dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/SimpleDOMOperationResult.java rename to dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/SimpleDOMActionResult.java index 0ec10c47b8..dfbbbc53de 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/SimpleDOMOperationResult.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/SimpleDOMActionResult.java @@ -18,7 +18,7 @@ import java.util.Optional; import javax.annotation.concurrent.ThreadSafe; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.mdsal.dom.api.DOMOperationResult; +import org.opendaylight.mdsal.dom.api.DOMActionResult; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; @@ -26,20 +26,20 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; @Beta @NonNullByDefault @ThreadSafe -public final class SimpleDOMOperationResult implements DOMOperationResult, Immutable { +public final class SimpleDOMActionResult implements DOMActionResult, Immutable { private final Collection errors; private final @Nullable ContainerNode output; - private SimpleDOMOperationResult(final Collection errors, final @Nullable ContainerNode output) { + private SimpleDOMActionResult(final Collection errors, final @Nullable ContainerNode output) { this.errors = ImmutableList.copyOf(errors); this.output = output; } - public SimpleDOMOperationResult(final Collection errors) { + public SimpleDOMActionResult(final Collection errors) { this(errors, null); } - public SimpleDOMOperationResult(final ContainerNode output, final Collection errors) { + public SimpleDOMActionResult(final ContainerNode output, final Collection errors) { this(errors, requireNonNull(output)); } -- 2.36.6