import org.junit.Before;
import org.junit.Test;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
-import org.opendaylight.yangtools.yang.binding.DataContainer;
+import org.opendaylight.yangtools.yang.binding.RpcOutput;
import org.opendaylight.yangtools.yang.common.RpcResult;
public class LazyDOMRpcResultFutureTest {
doReturn(true).when(future).isCancelled();
doReturn(true).when(future).isDone();
- doReturn(mock(DataContainer.class)).when(domRpcResult).getResult();
+ doReturn(mock(RpcOutput.class)).when(domRpcResult).getResult();
doReturn(domRpcResult).when(future).get();
doReturn(domRpcResult).when(future).get(1, TimeUnit.SECONDS);
}
* @param <T> Value type
*/
@Beta
-public interface Annotation<T> extends BindingObject, ValueAware<T> {
+public non-sealed interface Annotation<T> extends BindingObject, ValueAware<T> {
}
/**
* Base Identity. Interface generated for {@code identity} statements extend this interface.
*/
-public interface BaseIdentity extends BindingObject, BindingContract<BaseIdentity> {
+public non-sealed interface BaseIdentity extends BindingObject, BindingContract<BaseIdentity> {
}
*/
@Beta
// FIXME: evaluate integrating with BindingObject
-public interface BindingContract<T extends BindingContract<T>> {
+public sealed interface BindingContract<T extends BindingContract<T>> permits BaseIdentity, DataContainer {
/**
* Return the interface implemented by this object. This method differs from {@link Object#getClass()} in that it
* returns the interface contract, not a concrete implementation class.
*
* @author Jie Han
*/
-public interface BindingObject {
+public sealed interface BindingObject permits Annotation, BaseIdentity, DataObject, OpaqueObject, TypeObject {
}
* @param <P> Parent container
* @author Robert Varga
*/
-public interface ChoiceIn<P> extends DataContainer {
+public non-sealed interface ChoiceIn<P> extends DataContainer {
}
* <li>Case</li>
* </ul>
*/
-public interface DataContainer extends BindingContract<DataContainer> {
+public sealed interface DataContainer extends BindingContract<DataContainer>
+ permits BaseNotification, ChoiceIn, DataObject, OpaqueObject {
}
*
* @author Tony Tkacik
*/
-public interface DataObject extends DataContainer, BindingObject {
+public non-sealed interface DataObject extends DataContainer, BindingObject {
@Override
Class<? extends DataObject> implementedInterface();
}
* @param <T> Generated interface
*/
@Beta
-public interface OpaqueObject<T extends OpaqueObject<T>> extends BindingObject, DataContainer,
+public non-sealed interface OpaqueObject<T extends OpaqueObject<T>> extends BindingObject, DataContainer,
ValueAware<OpaqueData<?>> {
@Override
Class<T> implementedInterface();
package org.opendaylight.yangtools.yang.binding;
import com.google.common.annotations.Beta;
-import org.eclipse.jdt.annotation.NonNull;
/**
* A {@link TypeObject} that encapsulates an immutable native type. These are generated as YANG Binding type captures,
* such as those implied by {@code typedef} and parameterized {@code type} statements.
*/
@Beta
-public interface ScalarTypeObject<T> extends TypeObject {
- /**
- * Return encapsulated value.
- *
- * @return Encapsulated value.
- */
- @NonNull T getValue();
+public non-sealed interface ScalarTypeObject<T> extends TypeObject, ValueAware<T> {
+
}
*
* @author Jie Han
*/
-public interface TypeObject extends BindingObject {
+public non-sealed interface TypeObject extends BindingObject {
}
* @param <T> value type
*/
@Beta
-public interface ValueAware<T> {
+public sealed interface ValueAware<T> permits Annotation, OpaqueObject, ScalarTypeObject {
/**
* Return the value associated with this object.
*