Skip to content

Commit bd100e8

Browse files
committed
Tidy up style, warnings, and added convenience support for Strings as Java var data.
1 parent 521f57c commit bd100e8

File tree

10 files changed

+158
-78
lines changed

10 files changed

+158
-78
lines changed

examples/java/uk/co/real_logic/sbe/examples/ExampleUsingGeneratedStub.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public static int encode(final Car car, final UnsafeBuffer directBuffer, final i
156156
.next().mph(60).seconds(7.1f)
157157
.next().mph(100).seconds(11.8f);
158158

159-
car.putMake(MAKE, srcOffset, MAKE.length);
159+
car.make(new String(MAKE));
160160
car.putModel(MODEL, srcOffset, MODEL.length);
161161

162162
return car.size();
@@ -231,8 +231,7 @@ public static void decode(
231231
}
232232

233233
sb.append("\ncar.make.semanticType=").append(Car.makeMetaAttribute(MetaAttribute.SEMANTIC_TYPE));
234-
sb.append("\ncar.make=").append(
235-
new String(buffer, 0, car.getMake(buffer, 0, buffer.length), Car.makeCharacterEncoding()));
234+
sb.append("\ncar.make=").append(car.make());
236235

237236
sb.append("\ncar.model=").append(
238237
new String(buffer, 0, car.getModel(buffer, 0, buffer.length), Car.modelCharacterEncoding()));

main/java/uk/co/real_logic/sbe/codec/java/BitUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,11 @@ public static ByteBuffer resetAddressAndCapacity(final ByteBuffer byteBuffer, fi
120120
{
121121
final Field addressField = Buffer.class.getDeclaredField("address");
122122
addressField.setAccessible(true);
123-
addressField.set(byteBuffer, Long.valueOf(address));
123+
addressField.set(byteBuffer, address);
124124

125125
final Field capacityField = Buffer.class.getDeclaredField("capacity");
126126
capacityField.setAccessible(true);
127-
capacityField.set(byteBuffer, Integer.valueOf(capacity));
127+
capacityField.set(byteBuffer, capacity);
128128

129129
final Field cleanerField = byteBuffer.getClass().getDeclaredField("cleaner");
130130
cleanerField.setAccessible(true);

main/java/uk/co/real_logic/sbe/codec/java/MethodSelector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private Set<String> getSortedMethods(final Class<?> clazz, final Method[] method
6868
final Set<String> sortedMethodNames = sortedMethods.get(clazz);
6969
if (sortedMethodNames == null)
7070
{
71-
final GroupOrder order = (GroupOrder)clazz.getAnnotation(GroupOrder.class);
71+
final GroupOrder order = clazz.getAnnotation(GroupOrder.class);
7272
if (order == null)
7373
{
7474
sortedMethods.put(clazz, Collections.<String>emptySet());

main/java/uk/co/real_logic/sbe/generation/TargetCodeGenerator.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ public CodeGenerator newInstance(final Ir ir, final String outputDir)
4949
public CodeGenerator newInstance(final Ir ir, final String outputDir)
5050
throws IOException
5151
{
52-
return new JavaGenerator(ir,
53-
System.getProperty(SbeTool.JAVA_BUFFER, UnsafeBuffer.class.getName()),
54-
new PackageOutputManager(outputDir, ir.applicableNamespace()));
52+
return new JavaGenerator(
53+
ir,
54+
System.getProperty(SbeTool.JAVA_BUFFER, UnsafeBuffer.class.getName()),
55+
new PackageOutputManager(outputDir, ir.applicableNamespace()));
5556
}
5657
},
5758

main/java/uk/co/real_logic/sbe/generation/csharp/CSharpUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*/
2626
public class CSharpUtil
2727
{
28-
static Map<PrimitiveType, String> typeNameByPrimitiveTypeMap = new EnumMap<>(PrimitiveType.class);
28+
private static Map<PrimitiveType, String> typeNameByPrimitiveTypeMap = new EnumMap<>(PrimitiveType.class);
2929

3030
/**
3131
* http://msdn.microsoft.com/en-us/library/ms228360(v=vs.90).aspx

main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,8 @@ private CharSequence generateVarData(final List<Token> tokens)
441441
final ByteOrder byteOrder = lengthEncoding.byteOrder();
442442
final String byteOrderStr = lengthEncoding.primitiveType().size() == 1 ? "" : ", java.nio.ByteOrder." + byteOrder;
443443

444-
generateVarDataMethods(sb, token, propertyName, sizeOfLengthField, lengthJavaType, lengthTypePrefix, byteOrderStr);
444+
generateVarDataMethods(
445+
sb, token, propertyName, sizeOfLengthField, lengthJavaType, lengthTypePrefix, byteOrderStr, characterEncoding);
445446
}
446447

447448
return sb;
@@ -454,7 +455,8 @@ private void generateVarDataMethods(
454455
final int sizeOfLengthField,
455456
final String lengthJavaType,
456457
final String lengthTypePrefix,
457-
final String byteOrderStr)
458+
final String byteOrderStr,
459+
final String characterEncoding)
458460
{
459461
sb.append(String.format(
460462
"\n" +
@@ -504,6 +506,65 @@ private void generateVarDataMethods(
504506
lengthJavaType,
505507
byteOrderStr
506508
));
509+
510+
sb.append(String.format(
511+
"\n" +
512+
" public String %1$s()\n" +
513+
" {\n" +
514+
"%2$s" +
515+
" final int sizeOfLengthField = %3$d;\n" +
516+
" final int limit = limit();\n" +
517+
" buffer.checkLimit(limit + sizeOfLengthField);\n" +
518+
" final int dataLength = CodecUtil.%4$sGet(buffer, limit%5$s);\n" +
519+
" limit(limit + sizeOfLengthField + dataLength);\n" +
520+
" final byte[] tmp = new byte[dataLength];\n" +
521+
" CodecUtil.int8sGet(buffer, limit + sizeOfLengthField, tmp, 0, dataLength);\n\n" +
522+
" final String value;\n" +
523+
" try\n" +
524+
" {\n" +
525+
" value = new String(tmp, \"%6$s\");\n" +
526+
" }\n" +
527+
" catch (final java.io.UnsupportedEncodingException ex)\n" +
528+
" {\n" +
529+
" throw new RuntimeException(ex);\n" +
530+
" }\n\n" +
531+
" return value;\n" +
532+
" }\n",
533+
toLowerFirstChar(propertyName),
534+
generateStringNotPresentCondition(token.version(), BASE_INDENT),
535+
sizeOfLengthField,
536+
lengthTypePrefix,
537+
byteOrderStr,
538+
characterEncoding
539+
));
540+
541+
sb.append(String.format(
542+
"\n" +
543+
" public void %1$s(final String value)\n" +
544+
" {\n" +
545+
" final byte[] bytes;\n" +
546+
" try\n" +
547+
" {\n" +
548+
" bytes = value.getBytes(\"%2$s\");\n" +
549+
" }\n" +
550+
" catch (final java.io.UnsupportedEncodingException ex)\n" +
551+
" {\n" +
552+
" throw new RuntimeException(ex);\n" +
553+
" }\n\n" +
554+
" final int length = bytes.length;\n" +
555+
" final int sizeOfLengthField = %3$d;\n" +
556+
" final int limit = limit();\n" +
557+
" limit(limit + sizeOfLengthField + length);\n" +
558+
" CodecUtil.%4$sPut(buffer, limit, (%5$s)length%6$s);\n" +
559+
" CodecUtil.int8sPut(buffer, limit + sizeOfLengthField, bytes, 0, length);\n" +
560+
" }\n",
561+
toLowerFirstChar(propertyName),
562+
characterEncoding,
563+
sizeOfLengthField,
564+
lengthTypePrefix,
565+
lengthJavaType,
566+
byteOrderStr
567+
));
507568
}
508569

509570
private void generateBitSet(final List<Token> tokens) throws IOException
@@ -971,6 +1032,22 @@ private CharSequence generateArrayFieldNotPresentCondition(final int sinceVersio
9711032
);
9721033
}
9731034

1035+
private CharSequence generateStringNotPresentCondition(final int sinceVersion, final String indent)
1036+
{
1037+
if (0 == sinceVersion)
1038+
{
1039+
return "";
1040+
}
1041+
1042+
return String.format(
1043+
indent + " if (actingVersion < %d)\n" +
1044+
indent + " {\n" +
1045+
indent + " return \"\";\n" +
1046+
indent + " }\n\n",
1047+
sinceVersion
1048+
);
1049+
}
1050+
9741051
private CharSequence generateTypeFieldNotPresentCondition(final int sinceVersion, final String indent)
9751052
{
9761053
if (0 == sinceVersion)

main/java/uk/co/real_logic/sbe/generation/java/JavaMockPojoGenerator.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,19 +110,18 @@ private CharSequence generateChoices(final String bitSetClassName, final List<To
110110
final String choiceName = token.name();
111111
sb.append(String.format(
112112
"\n" +
113-
" private boolean %s;\n" +
114-
" public boolean %s()\n" +
113+
" private boolean %1$s;\n" +
114+
" public boolean %1$s()\n" +
115115
" {\n" +
116-
" return %s;\n" +
116+
" return %1$s;\n" +
117117
" }\n\n" +
118-
" public %s %s(final boolean value)\n" +
118+
" public %2$s %1$s(final boolean value)\n" +
119119
" {\n" +
120-
" %s = value;\n" +
120+
" %1$s = value;\n" +
121121
" return this;\n" +
122122
" }\n",
123-
choiceName, choiceName, choiceName,
124-
bitSetClassName,
125-
choiceName, choiceName
123+
choiceName,
124+
bitSetClassName
126125
));
127126
}
128127
}

main/java/uk/co/real_logic/sbe/generation/java/JavaUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*/
2626
public class JavaUtil
2727
{
28-
static Map<PrimitiveType, String> typeNameByPrimitiveTypeMap = new EnumMap<>(PrimitiveType.class);
28+
private static Map<PrimitiveType, String> typeNameByPrimitiveTypeMap = new EnumMap<>(PrimitiveType.class);
2929

3030
static
3131
{

main/java/uk/co/real_logic/sbe/util/ValidationUtil.java

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -35,26 +35,28 @@ private static boolean isSbeCppIdentifierPart(final char c)
3535
}
3636

3737
private static final Set<String> CPP_KEYWORDS = new HashSet<>(Arrays.asList(new String[]
38-
{"alignas", "and", "and_eq", "asm", "auto",
39-
"bitand", "bitor", "bool", "break", "case",
40-
"catch", "char", "class", "compl", "const",
41-
"const_cast", "continue", "char16_t", "char32_t", "default",
42-
"delete", "do", "double", "dynamic_cast", "else",
43-
"enum", "explicit", "export", "extern", "false",
44-
"float", "for", "friend", "goto", "if",
45-
"inline", "int", "long", "mutable", "namespace",
46-
"new", "not", "not_eq", "noexcept", "operator",
47-
"or", "or_eq", "private", "protected", "public",
48-
"register", "reinterpret_cast", "return", "short", "signed",
49-
"sizeof", "static", "static_cast", "struct", "switch",
50-
"template", "this", "throw", "true", "try",
51-
"typedef", "typeid", "typename", "union", "unsigned",
52-
"using", "virtual", "void", "volatile", "wchar_t",
53-
"while", "xor", "xor_eq", "override",
54-
// since C++11
55-
"alignof", "constexpr", "decltype", "nullptr", "static_assert", "thread_local",
56-
// since C++11 have special meaning, so avoid
57-
"final"}));
38+
{
39+
"alignas", "and", "and_eq", "asm", "auto",
40+
"bitand", "bitor", "bool", "break", "case",
41+
"catch", "char", "class", "compl", "const",
42+
"const_cast", "continue", "char16_t", "char32_t", "default",
43+
"delete", "do", "double", "dynamic_cast", "else",
44+
"enum", "explicit", "export", "extern", "false",
45+
"float", "for", "friend", "goto", "if",
46+
"inline", "int", "long", "mutable", "namespace",
47+
"new", "not", "not_eq", "noexcept", "operator",
48+
"or", "or_eq", "private", "protected", "public",
49+
"register", "reinterpret_cast", "return", "short", "signed",
50+
"sizeof", "static", "static_cast", "struct", "switch",
51+
"template", "this", "throw", "true", "try",
52+
"typedef", "typeid", "typename", "union", "unsigned",
53+
"using", "virtual", "void", "volatile", "wchar_t",
54+
"while", "xor", "xor_eq", "override",
55+
// since C++11
56+
"alignof", "constexpr", "decltype", "nullptr", "static_assert", "thread_local",
57+
// since C++11 have special meaning, so avoid
58+
"final"
59+
}));
5860

5961
/**
6062
* Check value for validity of usage as a C++ identifier. A programmatic variable
@@ -106,18 +108,20 @@ private static boolean possibleCppKeyword(final String stringVal)
106108
}
107109

108110
private static final Set<String> JAVA_KEYWORDS = new HashSet<>(Arrays.asList(new String[]
109-
{"abstract", "assert", "boolean", "break", "byte",
110-
"case", "catch", "char", "class", "const",
111-
"continue", "default", "do", "double", "else",
112-
"enum", "extends", "final", "finally", "float",
113-
"for", "goto", "if", "implements", "import",
114-
"instanceof", "int", "interface", "long", "native",
115-
"new", "package", "private", "protected", "public",
116-
"return", "short", "static", "strictfp", "super",
117-
"switch", "synchronized", "this", "throw", "throws",
118-
"transient", "try", "void", "volatile", "while",
119-
// literals
120-
"null", "true", "false"}));
111+
{
112+
"abstract", "assert", "boolean", "break", "byte",
113+
"case", "catch", "char", "class", "const",
114+
"continue", "default", "do", "double", "else",
115+
"enum", "extends", "final", "finally", "float",
116+
"for", "goto", "if", "implements", "import",
117+
"instanceof", "int", "interface", "long", "native",
118+
"new", "package", "private", "protected", "public",
119+
"return", "short", "static", "strictfp", "super",
120+
"switch", "synchronized", "this", "throw", "throws",
121+
"transient", "try", "void", "volatile", "while",
122+
// literals
123+
"null", "true", "false"
124+
}));
121125

122126
/**
123127
* Check string for validity of usage as a Java identifier. Avoiding keywords.

0 commit comments

Comments
 (0)