protected final List<UnknownSchemaNode> unknownNodes = new ArrayList<>();
protected final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
+ private boolean sealed;
protected AbstractBuilder(final String moduleName, final int line) {
this.moduleName = Preconditions.checkNotNull(moduleName,"moduleName must not be null");
@Override
public void setParent(final Builder parentBuilder) {
+ checkNotSealed();
this.parentBuilder = parentBuilder;
}
addedUnknownNodes.add(unknownNode);
}
+ protected void seal() {
+ checkNotSealed();
+ sealed = true;
+ }
+
+ protected final void checkNotSealed() {
+ Preconditions.checkState(!sealed, "Builder is sealed. No further modifications allowed");
+ }
+
+ protected boolean isSealed() {
+ return sealed;
+ }
+
}