When a node is going down, remove edges in both directions associated with the node.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / api / AbstractTypeAwareBuilder.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.yang.parser.builder.api;
9
10 import java.util.ArrayList;
11 import java.util.List;
12
13 import org.opendaylight.controller.yang.common.QName;
14 import org.opendaylight.controller.yang.model.api.TypeDefinition;
15 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
16 import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
17
18 /**
19  * Basic implementation for TypeAwareBuilder builders.
20  */
21 public abstract class AbstractTypeAwareBuilder implements TypeAwareBuilder {
22     protected final int line;
23     protected final QName qname;
24     protected Builder parent;
25     protected TypeDefinition<?> type;
26     protected TypeDefinitionBuilder typedef;
27     protected List<UnknownSchemaNode> unknownNodes;
28     protected final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
29
30     public AbstractTypeAwareBuilder(final int line, final QName qname) {
31         this.line = line;
32         this.qname = qname;
33     }
34
35     @Override
36     public int getLine() {
37         return line;
38     }
39
40     @Override
41     public Builder getParent() {
42         return parent;
43     }
44
45     @Override
46     public void setParent(final Builder parent) {
47         this.parent = parent;
48     }
49
50     @Override
51     public QName getQName() {
52         return qname;
53     }
54
55     @Override
56     public TypeDefinition<?> getType() {
57         return type;
58     }
59
60     @Override
61     public TypeDefinitionBuilder getTypedef() {
62         return typedef;
63     }
64
65     @Override
66     public void setType(TypeDefinition<?> type) {
67         this.type = type;
68         this.typedef = null;
69     }
70
71     @Override
72     public void setTypedef(TypeDefinitionBuilder typedef) {
73         this.typedef = typedef;
74         this.type = null;
75     }
76
77     @Override
78     public List<UnknownSchemaNodeBuilder> getUnknownNodeBuilders() {
79         return addedUnknownNodes;
80     }
81
82     @Override
83     public void addUnknownNodeBuilder(UnknownSchemaNodeBuilder unknownNode) {
84         addedUnknownNodes.add(unknownNode);
85     }
86
87     public void setUnknownNodes(List<UnknownSchemaNode> unknownNodes) {
88         this.unknownNodes = unknownNodes;
89     }
90
91 }