Bug 3670 (part 1/5): Use of new statement parser in yang-maven-plugin
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / StatementContextBase.java
index 02e37329d81a0675bbffb4f0c402031f103a5e23..83356ed615814456088921510963fd803709a5c8 100644 (file)
@@ -7,6 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.reactor;
 
+import java.util.LinkedList;
+
+import java.util.List;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Throwables;
 import com.google.common.collect.HashMultimap;
@@ -71,6 +74,7 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
     private final StatementDefinitionContext<A, D, E> definition;
     private final StatementIdentifier identifier;
     private final StatementSourceReference statementDeclSource;
+    private int order = 0;
 
     private Map<StatementIdentifier, StatementContextBase<?, ?, ?>> substatements = new LinkedHashMap<>();
 
@@ -95,7 +99,7 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
     private E effectiveInstance;
 
     private StatementContextBase<?, ?, ?> originalCtx;
-    private TypeOfCopy typeOfCopy = TypeOfCopy.ORIGINAL;
+    private List<TypeOfCopy> copyHistory;
 
     private boolean isSupportedToBuildEffective = true;
 
@@ -110,13 +114,18 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
     }
 
     @Override
-    public TypeOfCopy getTypeOfCopy() {
-        return typeOfCopy;
+    public List<TypeOfCopy> getCopyHistory() {
+        return copyHistory;
+    }
+
+    @Override
+    public void addToCopyHistory(TypeOfCopy typeOfCopy) {
+        this.copyHistory.add(typeOfCopy);
     }
 
     @Override
-    public void setTypeOfCopy(TypeOfCopy typeOfCopy) {
-        this.typeOfCopy = typeOfCopy;
+    public void addAllToCopyHistory(List<TypeOfCopy> typeOfCopyList) {
+        this.copyHistory.addAll(typeOfCopyList);
     }
 
     @Override
@@ -129,6 +138,16 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
         this.originalCtx = originalCtx;
     }
 
+    @Override
+    public void setOrder(int order) {
+        this.order = order;
+    }
+
+    @Override
+    public int getOrder() {
+        return order;
+    }
+
     @Override
     public ModelProcessingPhase getCompletedPhase() {
         return completedPhase;
@@ -144,6 +163,7 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
         this.identifier = builder.createIdentifier();
         this.statementDeclSource = builder.getStamementSource();
         this.completedPhase = null;
+        initCopyHistory();
     }
 
     StatementContextBase(StatementContextBase<A, D, E> original) {
@@ -154,6 +174,12 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
         this.statementDeclSource = Preconditions.checkNotNull(original.statementDeclSource,
                 "Statement context statementDeclSource cannot be null");
         this.completedPhase = null;
+        initCopyHistory();
+    }
+
+    private void initCopyHistory() {
+        this.copyHistory = new LinkedList<>();
+        this.copyHistory.add(TypeOfCopy.ORIGINAL);
     }
 
     /**