Skip to content

Commit c9e67f5

Browse files
committed
Ensure InputStreams in loader are closed
1 parent 1dc08e0 commit c9e67f5

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

smithy-model/src/main/java/software/amazon/smithy/model/loader/ModelLoader.java

+16-12
Original file line numberDiff line numberDiff line change
@@ -64,18 +64,22 @@ static ModelFile load(
6464
String filename,
6565
Supplier<InputStream> contentSupplier
6666
) {
67-
if (filename.endsWith(".json")) {
68-
return loadParsedNode(traitFactory, Node.parse(contentSupplier.get(), filename));
69-
} else if (filename.endsWith(".smithy")) {
70-
String contents = IoUtils.toUtf8String(contentSupplier.get());
71-
return new IdlModelParser(traitFactory, filename, contents).parse();
72-
} else if (filename.endsWith(".jar")) {
73-
return loadJar(traitFactory, properties, filename);
74-
} else if (filename.equals(SourceLocation.NONE.getFilename())) {
75-
// Assume it's JSON if there's a N/A filename.
76-
return loadParsedNode(traitFactory, Node.parse(contentSupplier.get(), filename));
77-
} else {
78-
return null;
67+
try (InputStream inputStream = contentSupplier.get()) {
68+
if (filename.endsWith(".json")) {
69+
return loadParsedNode(traitFactory, Node.parse(inputStream, filename));
70+
} else if (filename.endsWith(".smithy")) {
71+
String contents = IoUtils.toUtf8String(inputStream);
72+
return new IdlModelParser(traitFactory, filename, contents).parse();
73+
} else if (filename.endsWith(".jar")) {
74+
return loadJar(traitFactory, properties, filename);
75+
} else if (filename.equals(SourceLocation.NONE.getFilename())) {
76+
// Assume it's JSON if there's a N/A filename.
77+
return loadParsedNode(traitFactory, Node.parse(inputStream, filename));
78+
} else {
79+
return null;
80+
}
81+
} catch (IOException e) {
82+
throw new ModelImportException("Error loading " + filename + ": " + e.getMessage(), e);
7983
}
8084
}
8185

0 commit comments

Comments
 (0)