Instead of using Set.contains() before issuing an Set.add() and
ignoring its value, we just add the statement and check the return
value -- if it returns false, we know we have detected a conflict.
Change-Id: I3113c344056b9d745c1cdcccd6d61f68cbe9eafa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
caad8dd49ee920d4484205af127d1c09bc81b8c9)
mutableChildNodes.put(dataSchemaNode.getQName(), dataSchemaNode);
mutablePublicChildNodes.add(dataSchemaNode);
}
- if (stmt instanceof UsesNode) {
- UsesNode usesNode = (UsesNode) stmt;
- if (!mutableUses.contains(usesNode)) {
- mutableUses.add(usesNode);
- } else {
- throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, stmt);
- }
+ if (stmt instanceof UsesNode && !mutableUses.add((UsesNode) stmt)) {
+ throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, stmt);
}
- if (stmt instanceof TypedefEffectiveStatement) {
- TypedefEffectiveStatement typeDef = (TypedefEffectiveStatement) stmt;
- TypeDefinition<?> type = typeDef.getTypeDefinition();
- if (!mutableTypeDefinitions.contains(type)) {
- mutableTypeDefinitions.add(type);
- } else {
- throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, stmt);
- }
+ if (stmt instanceof TypedefEffectiveStatement
+ && !mutableTypeDefinitions.add(((TypedefEffectiveStatement) stmt).getTypeDefinition())) {
+ throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, stmt);
}
- if (stmt instanceof GroupingDefinition) {
- GroupingDefinition grp = (GroupingDefinition) stmt;
- if (!mutableGroupings.contains(grp)) {
- mutableGroupings.add(grp);
- } else {
- throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, stmt);
- }
+ if (stmt instanceof GroupingDefinition && !mutableGroupings.add((GroupingDefinition) stmt)) {
+ throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, stmt);
}
}
throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, effectiveStatement);
}
}
- if (effectiveStatement instanceof UsesNode) {
- final UsesNode usesNode = (UsesNode) effectiveStatement;
- if (!mutableUses.contains(usesNode)) {
- mutableUses.add(usesNode);
- } else {
- throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, effectiveStatement);
- }
+ if (effectiveStatement instanceof UsesNode && !mutableUses.add((UsesNode) effectiveStatement)) {
+ throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, effectiveStatement);
}
if (effectiveStatement instanceof TypedefEffectiveStatement) {
- final TypedefEffectiveStatement typeDef = (TypedefEffectiveStatement) effectiveStatement;
- final TypeDefinition<?> type = typeDef.getTypeDefinition();
- if (!mutableTypeDefinitions.contains(type)) {
- mutableTypeDefinitions.add(type);
- } else {
+ final TypeDefinition<?> type = ((TypedefEffectiveStatement) effectiveStatement).getTypeDefinition();
+ if (!mutableTypeDefinitions.add(type)) {
throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, effectiveStatement);
}
}
- if (effectiveStatement instanceof GroupingDefinition) {
- final GroupingDefinition grp = (GroupingDefinition) effectiveStatement;
- if (!mutableGroupings.contains(grp)) {
- mutableGroupings.add(grp);
- } else {
- throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, effectiveStatement);
- }
+ if (effectiveStatement instanceof GroupingDefinition
+ && !mutableGroupings.add((GroupingDefinition) effectiveStatement)) {
+ throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, effectiveStatement);
}
}
final Set<TypeDefinition<?>> mutableTypeDefinitions = new LinkedHashSet<>();
for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
if (effectiveStatement instanceof GroupingDefinition) {
- final GroupingDefinition groupingDefinition = (GroupingDefinition) effectiveStatement;
- groupingsInit.add(groupingDefinition);
+ // FIXME: add collision detection
+ groupingsInit.add((GroupingDefinition) effectiveStatement);
}
if (effectiveStatement instanceof TypedefEffectiveStatement) {
- final TypedefEffectiveStatement typeDef = (TypedefEffectiveStatement) effectiveStatement;
- final TypeDefinition<?> type = typeDef.getTypeDefinition();
- if (!mutableTypeDefinitions.contains(type)) {
- mutableTypeDefinitions.add(type);
- } else {
+ final TypeDefinition<?> type = ((TypedefEffectiveStatement) effectiveStatement).getTypeDefinition();
+ if (!mutableTypeDefinitions.add(type)) {
throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, effectiveStatement);
}
}