*/
package org.opendaylight.yangtools.yang.parser.builder.util;
+import com.google.common.base.Preconditions;
import java.util.ArrayList;
import java.util.List;
-
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.parser.builder.api.Builder;
import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
-import com.google.common.base.Preconditions;
-
/**
* Base helper implementation of Builders for Yang Model elements.
*
+ * @deprecated Pre-Beryllium implementation, scheduled for removal.
*/
+@Deprecated
public abstract class AbstractBuilder implements Builder {
- private String moduleName;
+ private final String moduleName;
private final int line;
private Builder parentBuilder;
protected final List<UnknownSchemaNode> unknownNodes = new ArrayList<>();
- protected final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
+ protected final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<>();
+ private boolean sealed;
protected AbstractBuilder(final String moduleName, final int line) {
this.moduleName = Preconditions.checkNotNull(moduleName,"moduleName must not be null");
return moduleName;
}
- @Override
- @Deprecated
- public void setModuleName(final String moduleName) {
- this.moduleName = moduleName;
- }
-
@Override
public int getLine() {
return line;
@Override
public void setParent(final Builder parentBuilder) {
+ checkNotSealed();
this.parentBuilder = parentBuilder;
}
addedUnknownNodes.add(unknownNode);
}
+ void seal() {
+ checkNotSealed();
+ sealed = true;
+ }
+
+ protected final void checkNotSealed() {
+ Preconditions.checkState(!sealed, "Builder is sealed. No further modifications allowed");
+ }
+
+ boolean isSealed() {
+ return sealed;
+ }
+
}