Skip to content

Commit

Permalink
cache parsed results across multiple runs (#667)
Browse files Browse the repository at this point in the history
Co-authored-by: rzpt <>
Co-authored-by: forozco <forozco@palantir.com>
  • Loading branch information
rzpt and forozco committed Aug 13, 2020
1 parent 5e5e4f1 commit 5715c5c
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
5 changes: 5 additions & 0 deletions changelog/@unreleased/pr-667.v2.yml
@@ -0,0 +1,5 @@
type: improvement
improvement:
description: Each conjure file will only be parsed once
urls:
- https://github.com/palantir/conjure/pull/667
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
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 5715c5c

Please sign in to comment.