json schema, additional check to do not get eternal cycle

This commit is contained in:
irengrig
2017-01-16 17:18:12 +01:00
parent 6081205f4e
commit 2fab2220ca
@@ -121,11 +121,13 @@ public class JsonSchemaWalker {
public static void extractSchemaVariants(@NotNull final Project project, @NotNull final CompletionSchemesConsumer consumer,
@NotNull VirtualFile rootSchemaFile,
@NotNull JsonSchemaObject rootSchema, boolean isName, List<Step> position) {
final Set<Trinity<JsonSchemaObject, VirtualFile, List<Step>>> control = new HashSet<>();
final JsonSchemaServiceEx serviceEx = JsonSchemaServiceEx.Impl.getEx(project);
final ArrayDeque<Trinity<JsonSchemaObject, VirtualFile, List<Step>>> queue = new ArrayDeque<>();
queue.add(Trinity.create(rootSchema, rootSchemaFile, position));
while (!queue.isEmpty()) {
final Trinity<JsonSchemaObject, VirtualFile, List<Step>> trinity = queue.removeFirst();
if (!control.add(trinity)) break;
final JsonSchemaObject object = trinity.getFirst();
final VirtualFile schemaFile = trinity.getSecond();
final List<Step> path = trinity.getThird();