Change action input/output naming strategy
[mdsal.git] / binding / mdsal-binding-generator / src / main / java / org / opendaylight / mdsal / binding / generator / impl / reactor / OperationContainerGenerator.java
index 5da1711fd5e88fdce1d665008d4c368aee9343e7..ab848bc68fa83d15454ce3a1a6377430139cc10d 100644 (file)
@@ -9,6 +9,8 @@ package org.opendaylight.mdsal.binding.generator.impl.reactor;
 
 import static java.util.Objects.requireNonNull;
 
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.mdsal.binding.generator.impl.reactor.CollisionDomain.Member;
 import org.opendaylight.mdsal.binding.model.api.ConcreteType;
 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
@@ -19,8 +21,9 @@ import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 /**
  * Generator corresponding to an {@code input} or an {@code output} statement.
  */
-abstract class OperationContainerGenerator<S extends DataTreeEffectiveStatement<?>, R extends CompositeRuntimeType>
-        extends CompositeSchemaTreeGenerator<S, R> {
+abstract sealed class OperationContainerGenerator<S extends DataTreeEffectiveStatement<?>,
+            R extends CompositeRuntimeType> extends CompositeSchemaTreeGenerator<S, R>
+        permits InputGenerator, OutputGenerator {
     private final ConcreteType baseInterface;
 
     OperationContainerGenerator(final S statement, final AbstractCompositeGenerator<?, ?> parent,
@@ -29,6 +32,23 @@ abstract class OperationContainerGenerator<S extends DataTreeEffectiveStatement<
         this.baseInterface = requireNonNull(baseInterface);
     }
 
+    @Override
+    final CollisionDomain parentDomain() {
+        return getParent().parentDomain();
+    }
+
+    @Override
+    final AbstractCompositeGenerator<?, ?> getPackageParent() {
+        return getParent().getParent();
+    }
+
+    @Override
+    final Member createMember(final CollisionDomain domain) {
+        return createMember(domain, getParent().ensureMember());
+    }
+
+    abstract @NonNull Member createMember(@NonNull CollisionDomain domain, Member parent);
+
     @Override
     final void pushToInference(final SchemaInferenceStack dataTree) {
         dataTree.enterSchemaTree(statement().argument());