import org.opendaylight.controller.yang.model.api.SchemaPath;\r
import org.opendaylight.controller.yang.model.api.UsesNode;\r
import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;\r
-import org.opendaylight.controller.yang.parser.builder.api.Builder;\r
import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;\r
import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;\r
import org.opendaylight.controller.yang.parser.util.RefineHolder;\r
\r
-final class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {\r
+public final class UsesNodeBuilderImpl implements UsesNodeBuilder {\r
+ private boolean built;\r
private final UsesNodeImpl instance;\r
private final int line;\r
+ private final String groupingPathStr;\r
private final SchemaPath groupingPath;\r
+ private boolean augmenting;\r
private final Set<AugmentationSchemaBuilder> addedAugments = new HashSet<AugmentationSchemaBuilder>();\r
private List<SchemaNodeBuilder> refineBuilders = new ArrayList<SchemaNodeBuilder>();\r
private List<RefineHolder> refines = new ArrayList<RefineHolder>();\r
\r
- UsesNodeBuilderImpl(final String groupingPathStr, final int line) {\r
+ public UsesNodeBuilderImpl(final String groupingPathStr, final int line) {\r
+ this.groupingPathStr = groupingPathStr;\r
this.groupingPath = parseUsesPath(groupingPathStr);\r
this.line = line;\r
instance = new UsesNodeImpl(groupingPath);\r
\r
@Override\r
public UsesNode build() {\r
- // AUGMENTATIONS\r
- final Set<AugmentationSchema> augments = new HashSet<AugmentationSchema>();\r
- for (AugmentationSchemaBuilder builder : addedAugments) {\r
- augments.add(builder.build());\r
- }\r
- instance.setAugmentations(augments);\r
+ if (!built) {\r
+ instance.setAugmenting(augmenting);\r
\r
- // REFINES\r
- final Map<SchemaPath, SchemaNode> refineNodes = new HashMap<SchemaPath, SchemaNode>();\r
- for (SchemaNodeBuilder refineBuilder : refineBuilders) {\r
- SchemaNode refineNode = refineBuilder.build();\r
- refineNodes.put(refineNode.getPath(), refineNode);\r
- }\r
- instance.setRefines(refineNodes);\r
+ // AUGMENTATIONS\r
+ final Set<AugmentationSchema> augments = new HashSet<AugmentationSchema>();\r
+ for (AugmentationSchemaBuilder builder : addedAugments) {\r
+ augments.add(builder.build());\r
+ }\r
+ instance.setAugmentations(augments);\r
+\r
+ // REFINES\r
+ final Map<SchemaPath, SchemaNode> refineNodes = new HashMap<SchemaPath, SchemaNode>();\r
+ for (SchemaNodeBuilder refineBuilder : refineBuilders) {\r
+ SchemaNode refineNode = refineBuilder.build();\r
+ refineNodes.put(refineNode.getPath(), refineNode);\r
+ }\r
+ instance.setRefines(refineNodes);\r
\r
+ built = true;\r
+ }\r
return instance;\r
}\r
\r
return line;\r
}\r
\r
+ @Override\r
+ public String getGroupingPathString() {\r
+ return groupingPathStr;\r
+ }\r
+\r
@Override\r
public SchemaPath getGroupingPath() {\r
return groupingPath;\r
}\r
\r
+ @Override\r
+ public Set<AugmentationSchemaBuilder> getAugmentations() {\r
+ return addedAugments;\r
+ }\r
+\r
@Override\r
public void addAugment(final AugmentationSchemaBuilder augmentBuilder) {\r
addedAugments.add(augmentBuilder);\r
}\r
\r
+ @Override\r
+ public boolean isAugmenting() {\r
+ return augmenting;\r
+ }\r
+\r
@Override\r
public void setAugmenting(final boolean augmenting) {\r
- instance.setAugmenting(augmenting);\r
+ this.augmenting = augmenting;\r
+ }\r
+\r
+ @Override\r
+ public List<SchemaNodeBuilder> getRefineNodes() {\r
+ return refineBuilders;\r
}\r
\r
@Override\r