Skip to content

Commit daad506

Browse files
committed
[Java] Extract the eachField iterator from the JavaGenerator to the JavaUtil class.
1 parent 94b9581 commit daad506

File tree

3 files changed

+33
-23
lines changed

3 files changed

+33
-23
lines changed

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

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import java.io.Writer;
2828
import java.util.ArrayList;
2929
import java.util.List;
30-
import java.util.function.BiConsumer;
3130
import java.util.function.Function;
3231

3332
import static uk.co.real_logic.sbe.SbeTool.JAVA_INTERFACE_PACKAGE;
@@ -2191,7 +2190,7 @@ private CharSequence generateEncoderFields(
21912190
{
21922191
final StringBuilder sb = new StringBuilder();
21932192

2194-
eachField(
2193+
forEachField(
21952194
tokens,
21962195
(fieldToken, typeToken) ->
21972196
{
@@ -2228,7 +2227,7 @@ private CharSequence generateDecoderFields(final List<Token> tokens, final Strin
22282227
{
22292228
final StringBuilder sb = new StringBuilder();
22302229

2231-
eachField(
2230+
forEachField(
22322231
tokens,
22332232
(fieldToken, typeToken) ->
22342233
{
@@ -2264,24 +2263,6 @@ private CharSequence generateDecoderFields(final List<Token> tokens, final Strin
22642263
return sb;
22652264
}
22662265

2267-
public static void eachField(final List<Token> tokens, final BiConsumer<Token, Token> consumer)
2268-
{
2269-
for (int i = 0, size = tokens.size(); i < size;)
2270-
{
2271-
final Token fieldToken = tokens.get(i);
2272-
if (fieldToken.signal() == Signal.BEGIN_FIELD)
2273-
{
2274-
final Token encodingToken = tokens.get(i + 1);
2275-
consumer.accept(fieldToken, encodingToken);
2276-
i += fieldToken.componentTokenCount();
2277-
}
2278-
else
2279-
{
2280-
++i;
2281-
}
2282-
}
2283-
}
2284-
22852266
private static void generateFieldIdMethod(final StringBuilder sb, final Token token, final String indent)
22862267
{
22872268
sb.append(String.format(

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,18 @@
1717

1818
import uk.co.real_logic.sbe.PrimitiveType;
1919
import uk.co.real_logic.sbe.SbeTool;
20+
import uk.co.real_logic.sbe.ir.Signal;
21+
import uk.co.real_logic.sbe.ir.Token;
2022
import uk.co.real_logic.sbe.util.ValidationUtil;
2123

2224
import java.lang.reflect.Field;
2325
import java.nio.charset.Charset;
2426
import java.nio.charset.StandardCharsets;
2527
import java.util.EnumMap;
2628
import java.util.HashMap;
29+
import java.util.List;
2730
import java.util.Map;
31+
import java.util.function.BiConsumer;
2832

2933
import static java.lang.reflect.Modifier.STATIC;
3034

@@ -270,4 +274,29 @@ public static String generateLiteral(final PrimitiveType type, final String valu
270274

271275
return literal;
272276
}
277+
278+
/**
279+
* For each field found in a list of field {@link Token}s take the field token and following type token to
280+
* a {@link BiConsumer}.
281+
*
282+
* @param tokens to be iterated over.
283+
* @param consumer to for the field and encoding token pair.
284+
*/
285+
public static void forEachField(final List<Token> tokens, final BiConsumer<Token, Token> consumer)
286+
{
287+
for (int i = 0, size = tokens.size(); i < size;)
288+
{
289+
final Token fieldToken = tokens.get(i);
290+
if (fieldToken.signal() == Signal.BEGIN_FIELD)
291+
{
292+
final Token typeToken = tokens.get(i + 1);
293+
consumer.accept(fieldToken, typeToken);
294+
i += fieldToken.componentTokenCount();
295+
}
296+
else
297+
{
298+
++i;
299+
}
300+
}
301+
}
273302
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.ArrayList;
66
import java.util.List;
77

8-
import static uk.co.real_logic.sbe.generation.java.JavaGenerator.eachField;
8+
import static uk.co.real_logic.sbe.generation.java.JavaUtil.forEachField;
99

1010
final class NamedToken
1111
{
@@ -21,7 +21,7 @@ final class NamedToken
2121
static List<NamedToken> gatherNamedFieldTokens(final List<Token> fields)
2222
{
2323
final List<NamedToken> namedTokens = new ArrayList<>();
24-
eachField(fields, (f, t) -> namedTokens.add(new NamedToken(f.name(), t)));
24+
forEachField(fields, (f, t) -> namedTokens.add(new NamedToken(f.name(), t)));
2525
return namedTokens;
2626
}
2727
}

0 commit comments

Comments
 (0)