Skip to content

Commit

Permalink
[Java] Check for being in a composite when generating array access me…
Browse files Browse the repository at this point in the history
…thods based on version.
  • Loading branch information
mjpt777 committed Jan 18, 2024
1 parent ab93360 commit 363f450
Showing 1 changed file with 19 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,7 @@ public JavaGenerator(
shouldDecodeUnknownEnumValues,
shouldSupportTypesPackageNames,
PrecedenceChecks.newInstance(new PrecedenceChecks.Context()),
outputManager
);
outputManager);
}

/**
Expand Down Expand Up @@ -1466,7 +1465,7 @@ private void generateDecoderVarData(
sb.append("\n")
.append(indent).append(" public int ").append(methodPropName).append("Length()\n")
.append(indent).append(" {\n")
.append(generateArrayFieldNotPresentCondition(token.version(), indent))
.append(generateArrayFieldNotPresentCondition(false, token.version(), indent))
.append(lengthAccessOrderListenerCall)
.append(indent).append(" final int limit = parentMessage.limit();\n")
.append(indent).append(" return ").append(PrimitiveType.UINT32 == lengthType ? "(int)" : "")
Expand Down Expand Up @@ -1563,7 +1562,7 @@ private void generateDataDecodeMethods(
indent + " return dataLength;\n" +
indent + " }\n",
Generators.toUpperFirstChar(propertyName),
generateStringNotPresentConditionForAppendable(token.version(), indent),
generateStringNotPresentConditionForAppendable(false, token.version(), indent),
sizeOfLengthField,
PrimitiveType.UINT32 == lengthType ? "(int)" : "",
generateGet(lengthType, "limit", byteOrderStr),
Expand Down Expand Up @@ -1621,7 +1620,7 @@ private void generateDataDecodeMethods(
indent + " return new String(tmp, %6$s);\n" +
indent + " }\n",
formatPropertyName(propertyName),
generateStringNotPresentCondition(token.version(), indent),
generateStringNotPresentCondition(false, token.version(), indent),
sizeOfLengthField,
PrimitiveType.UINT32 == lengthType ? "(int)" : "",
generateGet(lengthType, "limit", byteOrderStr),
Expand All @@ -1644,7 +1643,7 @@ private void generateDataDecodeMethods(
indent + " return dataLength;\n" +
indent + " }\n",
Generators.toUpperFirstChar(propertyName),
generateStringNotPresentConditionForAppendable(token.version(), indent),
generateStringNotPresentConditionForAppendable(false, token.version(), indent),
sizeOfLengthField,
PrimitiveType.UINT32 == lengthType ? "(int)" : "",
generateGet(lengthType, "limit", byteOrderStr),
Expand Down Expand Up @@ -1853,7 +1852,7 @@ private void generateVarDataTypedDecoder(
indent + " }\n",
propertyName,
exchangeType,
generateArrayFieldNotPresentCondition(token.version(), indent),
generateArrayFieldNotPresentCondition(false, token.version(), indent),
accessOrderListenerCall,
sizeOfLengthField,
PrimitiveType.UINT32 == lengthType ? "(int)" : "",
Expand Down Expand Up @@ -2713,9 +2712,10 @@ private CharSequence generateFieldNotPresentCondition(
indent + " }\n\n";
}

private static CharSequence generateArrayFieldNotPresentCondition(final int sinceVersion, final String indent)
private static CharSequence generateArrayFieldNotPresentCondition(
final boolean inComposite, final int sinceVersion, final String indent)
{
if (0 == sinceVersion)
if (inComposite || 0 == sinceVersion)
{
return "";
}
Expand All @@ -2728,9 +2728,9 @@ private static CharSequence generateArrayFieldNotPresentCondition(final int sinc
}

private static CharSequence generateStringNotPresentConditionForAppendable(
final int sinceVersion, final String indent)
final boolean inComposite, final int sinceVersion, final String indent)
{
if (0 == sinceVersion)
if (inComposite || 0 == sinceVersion)
{
return "";
}
Expand All @@ -2742,9 +2742,10 @@ private static CharSequence generateStringNotPresentConditionForAppendable(
indent + " }\n\n";
}

private static CharSequence generateStringNotPresentCondition(final int sinceVersion, final String indent)
private static CharSequence generateStringNotPresentCondition(
final boolean inComposite, final int sinceVersion, final String indent)
{
if (0 == sinceVersion)
if (inComposite || 0 == sinceVersion)
{
return "";
}
Expand Down Expand Up @@ -2836,7 +2837,7 @@ private CharSequence generatePrimitiveArrayPropertyDecode(
indent + " }\n",
Generators.toUpperFirstChar(propertyName),
fieldLength,
generateArrayFieldNotPresentCondition(propertyToken.version(), indent),
generateArrayFieldNotPresentCondition(inComposite, propertyToken.version(), indent),
accessOrderListenerCall,
offset);

Expand All @@ -2852,7 +2853,7 @@ private CharSequence generatePrimitiveArrayPropertyDecode(
indent + " return new String(dst, 0, end, %s);\n" +
indent + " }\n\n",
propertyName,
generateStringNotPresentCondition(propertyToken.version(), indent),
generateStringNotPresentCondition(inComposite, propertyToken.version(), indent),
accessOrderListenerCall,
fieldLength,
offset,
Expand Down Expand Up @@ -2886,7 +2887,7 @@ private CharSequence generatePrimitiveArrayPropertyDecode(
indent + " return %3$d;\n" +
indent + " }\n\n",
Generators.toUpperFirstChar(propertyName),
generateStringNotPresentConditionForAppendable(propertyToken.version(), indent),
generateStringNotPresentConditionForAppendable(inComposite, propertyToken.version(), indent),
fieldLength,
offset,
accessOrderListenerCall);
Expand All @@ -2904,7 +2905,7 @@ else if (encoding.primitiveType() == PrimitiveType.UINT8)
indent + " return bytesCopied;\n" +
indent + " }\n",
Generators.toUpperFirstChar(propertyName),
generateArrayFieldNotPresentCondition(propertyToken.version(), indent),
generateArrayFieldNotPresentCondition(inComposite, propertyToken.version(), indent),
accessOrderListenerCall,
fieldLength,
offset);
Expand All @@ -2920,7 +2921,7 @@ else if (encoding.primitiveType() == PrimitiveType.UINT8)
indent + " }\n",
Generators.toUpperFirstChar(propertyName),
fqMutableBuffer,
generateArrayFieldNotPresentCondition(propertyToken.version(), indent),
generateArrayFieldNotPresentCondition(inComposite, propertyToken.version(), indent),
accessOrderListenerCall,
fieldLength,
offset);
Expand Down

0 comments on commit 363f450

Please sign in to comment.