Skip to content

Commit e1c1278

Browse files
committed
[Rust] Tidy up and fix resource leak.
1 parent 95824f3 commit e1c1278

File tree

5 files changed

+70
-58
lines changed

5 files changed

+70
-58
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/LibRsDef.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
import java.io.Writer;
2020
import java.nio.ByteOrder;
2121
import java.nio.file.Files;
22+
import java.nio.file.Path;
2223
import java.util.ArrayList;
2324
import java.util.LinkedHashSet;
25+
import java.util.stream.Stream;
2426

2527
import static java.nio.ByteOrder.LITTLE_ENDIAN;
2628
import static uk.co.real_logic.sbe.generation.rust.RustGenerator.*;
@@ -58,13 +60,16 @@ void generate() throws IOException
5860
indent(libRs, 0, "use ::core::{convert::TryInto};\n\n");
5961

6062
final ArrayList<String> modules = new ArrayList<>();
61-
Files.walk(outputManager.getSrcDirPath())
62-
.filter(Files::isRegularFile)
63-
.map((path) -> path.getFileName().toString())
64-
.filter((fileName) -> fileName.endsWith(".rs"))
65-
.filter((fileName) -> !fileName.equals("lib.rs"))
66-
.map((fileName) -> fileName.substring(0, fileName.length() - 3))
67-
.forEach(modules::add);
63+
try (Stream<Path> walk = Files.walk(outputManager.getSrcDirPath()))
64+
{
65+
walk
66+
.filter(Files::isRegularFile)
67+
.map((path) -> path.getFileName().toString())
68+
.filter((fileName) -> fileName.endsWith(".rs"))
69+
.filter((fileName) -> !fileName.equals("lib.rs"))
70+
.map((fileName) -> fileName.substring(0, fileName.length() - 3))
71+
.forEach(modules::add);
72+
}
6873

6974
// add modules
7075
for (final String mod : modules)

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustGenerator.java

Lines changed: 55 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import uk.co.real_logic.sbe.ir.Token;
2828

2929
import java.io.IOException;
30+
import java.io.UncheckedIOException;
3031
import java.io.Writer;
3132
import java.util.ArrayList;
3233
import java.util.HashSet;
@@ -208,32 +209,34 @@ static void generateEncoderFields(
208209
final List<Token> tokens,
209210
final int level)
210211
{
211-
Generators.forEachField(tokens, (fieldToken, typeToken) ->
212-
{
213-
try
212+
Generators.forEachField(
213+
tokens,
214+
(fieldToken, typeToken) ->
214215
{
215-
final String name = fieldToken.name();
216-
switch (typeToken.signal())
216+
try
217217
{
218-
case ENCODING:
219-
generatePrimitiveEncoder(sb, level, typeToken, name);
220-
break;
221-
case BEGIN_ENUM:
222-
generateEnumEncoder(sb, level, fieldToken, typeToken, name);
223-
break;
224-
case BEGIN_SET:
225-
generateBitSetEncoder(sb, level, typeToken, name);
226-
break;
227-
case BEGIN_COMPOSITE:
228-
generateCompositeEncoder(sb, level, typeToken, name);
229-
break;
218+
final String name = fieldToken.name();
219+
switch (typeToken.signal())
220+
{
221+
case ENCODING:
222+
generatePrimitiveEncoder(sb, level, typeToken, name);
223+
break;
224+
case BEGIN_ENUM:
225+
generateEnumEncoder(sb, level, fieldToken, typeToken, name);
226+
break;
227+
case BEGIN_SET:
228+
generateBitSetEncoder(sb, level, typeToken, name);
229+
break;
230+
case BEGIN_COMPOSITE:
231+
generateCompositeEncoder(sb, level, typeToken, name);
232+
break;
233+
}
230234
}
231-
}
232-
catch (final IOException ex)
233-
{
234-
throw new RuntimeException(ex);
235-
}
236-
});
235+
catch (final IOException ex)
236+
{
237+
throw new UncheckedIOException(ex);
238+
}
239+
});
237240
}
238241

239242
static void generateEncoderGroups(
@@ -489,36 +492,38 @@ static void generateDecoderFields(
489492
final List<Token> tokens,
490493
final int level)
491494
{
492-
Generators.forEachField(tokens, (fieldToken, typeToken) ->
493-
{
494-
try
495+
Generators.forEachField(
496+
tokens,
497+
(fieldToken, typeToken) ->
495498
{
496-
final String name = fieldToken.name();
497-
final Encoding encoding = typeToken.encoding();
498-
499-
switch (typeToken.signal())
499+
try
500500
{
501-
case ENCODING:
502-
generatePrimitiveDecoder(sb, level, fieldToken, typeToken, name, encoding);
503-
break;
504-
case BEGIN_ENUM:
505-
generateEnumDecoder(sb, level, fieldToken, typeToken, name);
506-
break;
507-
case BEGIN_SET:
508-
generateBitSetDecoder(sb, level, typeToken, name);
509-
break;
510-
case BEGIN_COMPOSITE:
511-
generateCompositeDecoder(sb, level, fieldToken, typeToken, name);
512-
break;
513-
default:
514-
throw new UnsupportedOperationException("Unable to handle: " + typeToken);
501+
final String name = fieldToken.name();
502+
final Encoding encoding = typeToken.encoding();
503+
504+
switch (typeToken.signal())
505+
{
506+
case ENCODING:
507+
generatePrimitiveDecoder(sb, level, fieldToken, typeToken, name, encoding);
508+
break;
509+
case BEGIN_ENUM:
510+
generateEnumDecoder(sb, level, fieldToken, typeToken, name);
511+
break;
512+
case BEGIN_SET:
513+
generateBitSetDecoder(sb, level, typeToken, name);
514+
break;
515+
case BEGIN_COMPOSITE:
516+
generateCompositeDecoder(sb, level, fieldToken, typeToken, name);
517+
break;
518+
default:
519+
throw new UnsupportedOperationException("Unable to handle: " + typeToken);
520+
}
515521
}
516-
}
517-
catch (final IOException e)
518-
{
519-
throw new RuntimeException(e);
520-
}
521-
});
522+
catch (final IOException ex)
523+
{
524+
throw new UncheckedIOException(ex);
525+
}
526+
});
522527
}
523528

524529
private static void generateCompositeDecoder(

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustOutputManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public Writer createOutput(final String name) throws IOException
8686
}
8787

8888
/**
89-
* Creates a new Cargo.toml file
89+
* Creates a new Cargo.toml file.
9090
* <p>
9191
* @return a {@link java.io.Writer} to which the crate definition should be written.
9292
* @throws IOException if an issue occurs when creating the file.

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/RustUtil.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ static String cleanUpperAcronyms(final String value)
157157
final int index = i - 1;
158158
return value.substring(0, index).toLowerCase() + value.substring(index);
159159
}
160+
160161
return value;
161162
}
162163
}

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/rust/SubGroup.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public SubGroup addSubGroup(final String name, final int level, final Token grou
4545
{
4646
final SubGroup subGroup = new SubGroup(name, level, groupToken);
4747
subGroups.add(subGroup);
48+
4849
return subGroup;
4950
}
5051

0 commit comments

Comments
 (0)