Skip to content

Commit

Permalink
cache results when parsing multiple files
Browse files Browse the repository at this point in the history
  • Loading branch information
rzpt committed Aug 11, 2020
1 parent bf882a1 commit 2f6e80e
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

public final class Conjure {
public static final Integer SUPPORTED_IR_VERSION = 1;
Expand All @@ -34,8 +33,7 @@ private Conjure() {}
* Deserializes {@link ConjureDefinition} from their YAML representations in the given files.
*/
public static ConjureDefinition parse(Collection<File> files) {
List<AnnotatedConjureSourceFile> sourceFiles =
files.stream().map(ConjureParser::parseAnnotated).collect(Collectors.toList());
List<AnnotatedConjureSourceFile> sourceFiles = ConjureParser.parseAnnotated(files);
ConjureDefinition ir = ConjureParserUtils.parseConjureDef(sourceFiles);
return NormalizeDefinition.normalize(ir);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,10 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -61,8 +63,18 @@ public static ConjureSourceFile parse(File file) {
}

public static AnnotatedConjureSourceFile parseAnnotated(File file) {
RecursiveParser parser = new RecursiveParser();
return parseAnnotated(parser, file);
}

public static List<AnnotatedConjureSourceFile> parseAnnotated(Collection<File> files) {
RecursiveParser parser = new RecursiveParser();
return files.stream().map(file -> parseAnnotated(parser, file)).collect(Collectors.toList());
}

private static AnnotatedConjureSourceFile parseAnnotated(RecursiveParser parser, File file) {
return AnnotatedConjureSourceFile.builder()
.conjureSourceFile(ConjureParser.parse(file))
.conjureSourceFile(parser.parse(file))
.sourceFile(file)
.build();
}
Expand Down

0 comments on commit 2f6e80e

Please sign in to comment.