diff --git a/artio-codecs/src/main/java/uk/co/real_logic/artio/builder/RejectEmptyTag.java b/artio-codecs/src/main/java/uk/co/real_logic/artio/builder/RejectEmptyTag.java deleted file mode 100644 index 9d4e264dae..0000000000 --- a/artio-codecs/src/main/java/uk/co/real_logic/artio/builder/RejectEmptyTag.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2015-2023 Real Logic Limited. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package uk.co.real_logic.artio.builder; - -public final class RejectEmptyTag -{ - private static final String CODEC_DISABLE_REJECT_EMPTY_TAG_PROP = - "fix.codecs.disable_reject_empty_tag"; - private static final boolean CODEC_DISABLE_REJECT_EMPTY_TAG_ENABLED = - Boolean.getBoolean(CODEC_DISABLE_REJECT_EMPTY_TAG_PROP); - public static final boolean CODEC_REJECT_EMPTY_TAG_ENABLED = - !CODEC_DISABLE_REJECT_EMPTY_TAG_ENABLED; -} diff --git a/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/CodecGenerator.java b/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/CodecGenerator.java index f0ec3e2096..d8a7bb67e2 100644 --- a/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/CodecGenerator.java +++ b/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/CodecGenerator.java @@ -19,7 +19,6 @@ import org.agrona.generation.PackageOutputManager; -import uk.co.real_logic.artio.builder.RejectEmptyTag; import uk.co.real_logic.artio.builder.RejectUnknownEnumValue; import uk.co.real_logic.artio.builder.RejectUnknownField; import uk.co.real_logic.artio.builder.Validation; @@ -166,7 +165,6 @@ private static void generateDictionary( parentPackage, encoderOutput, Validation.class, - RejectEmptyTag.class, RejectUnknownField.class, RejectUnknownEnumValue.class, codecRejectUnknownEnumValueEnabled, @@ -180,11 +178,11 @@ private static void generateDictionary( encoderPackage, decoderOutput, Validation.class, - RejectEmptyTag.class, RejectUnknownField.class, RejectUnknownEnumValue.class, false, configuration.wrapEmptyBuffer(), + false, codecRejectUnknownEnumValueEnabled, configuration.fixTagsInJavadoc()).generate(); @@ -203,11 +201,11 @@ private static void generateDictionary( parentPackage, encoderPackage, flyweightDecoderOutput, Validation.class, - RejectEmptyTag.class, RejectUnknownField.class, RejectUnknownEnumValue.class, true, configuration.wrapEmptyBuffer(), + false, codecRejectUnknownEnumValueEnabled, configuration.fixTagsInJavadoc()).generate(); } diff --git a/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/DecoderGenerator.java b/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/DecoderGenerator.java index cf973ffaae..b337589c5d 100644 --- a/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/DecoderGenerator.java +++ b/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/DecoderGenerator.java @@ -102,6 +102,7 @@ class DecoderGenerator extends Generator public static final int TAG_APPEARS_MORE_THAN_ONCE = RejectReason.TAG_APPEARS_MORE_THAN_ONCE.representation(); public static final int TAG_SPECIFIED_OUT_OF_REQUIRED_ORDER = 14; + private final boolean allowEmptyTags; static String decoderClassName(final Aggregate aggregate) { @@ -128,20 +129,21 @@ static String decoderClassName(final String name) final String encoderPackage, final OutputManager outputManager, final Class validationClass, - final Class rejectEmptyTagClass, final Class rejectUnknownFieldClass, final Class rejectUnknownEnumValueClass, final boolean flyweightsEnabled, final boolean wrapEmptyBuffer, + final boolean allowEmptyTags, final String codecRejectUnknownEnumValueEnabled, final boolean fixTagsInJavadoc) { - super(dictionary, thisPackage, commonPackage, outputManager, validationClass, rejectEmptyTagClass, + super(dictionary, thisPackage, commonPackage, outputManager, validationClass, rejectUnknownFieldClass, rejectUnknownEnumValueClass, flyweightsEnabled, codecRejectUnknownEnumValueEnabled, fixTagsInJavadoc); this.initialBufferSize = initialBufferSize; this.encoderPackage = encoderPackage; this.wrapEmptyBuffer = wrapEmptyBuffer; + this.allowEmptyTags = allowEmptyTags; } public void generate() @@ -1759,11 +1761,12 @@ private String generateDecodePrefix( " invalidTagId = tag;\n" + " rejectReason = " + INVALID_TAG_NUMBER + ";\n" + " }\n" + - " else if (" + CODEC_REJECT_EMPTY_TAG_ENABLED + " && valueLength == 0)\n" + + (allowEmptyTags ? "" : + " else if (valueLength == 0)\n" + " {\n" + " invalidTagId = tag;\n" + " rejectReason = " + TAG_SPECIFIED_WITHOUT_A_VALUE + ";\n" + - " }\n" + + " }\n") + headerValidation(isHeader) + (isGroup ? "" : " if (!alreadyVisitedFields.add(tag))\n" + diff --git a/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/EncoderGenerator.java b/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/EncoderGenerator.java index d8876aab9b..aeef53ca25 100644 --- a/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/EncoderGenerator.java +++ b/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/EncoderGenerator.java @@ -162,13 +162,12 @@ static String encoderClassName(final String name) final String builderCommonPackage, final OutputManager outputManager, final Class validationClass, - final Class rejectEmptyTagClass, final Class rejectUnknownFieldClass, final Class rejectUnknownEnumValueClass, final String codecRejectUnknownEnumValueEnabled, final boolean fixTagsInJavadoc) { - super(dictionary, builderPackage, builderCommonPackage, outputManager, validationClass, rejectEmptyTagClass, + super(dictionary, builderPackage, builderCommonPackage, outputManager, validationClass, rejectUnknownFieldClass, rejectUnknownEnumValueClass, false, codecRejectUnknownEnumValueEnabled, fixTagsInJavadoc); diff --git a/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/Generator.java b/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/Generator.java index 9935cbaac5..09c7a5ba75 100644 --- a/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/Generator.java +++ b/artio-codecs/src/main/java/uk/co/real_logic/artio/dictionary/generation/Generator.java @@ -93,7 +93,6 @@ protected String commonCompoundImports(final String form, final boolean headerWr private final String commonPackage; protected final OutputManager outputManager; protected final Class validationClass; - protected final Class rejectEmptyTagClass; protected final Class rejectUnknownFieldClass; private final Class rejectUnknownEnumValueClass; protected final boolean flyweightsEnabled; @@ -109,7 +108,6 @@ protected Generator( final String commonPackage, final OutputManager outputManager, final Class validationClass, - final Class rejectEmptyTagClass, final Class rejectUnknownFieldClass, final Class rejectUnknownEnumValueClass, final boolean flyweightsEnabled, @@ -121,7 +119,6 @@ protected Generator( this.commonPackage = commonPackage; this.outputManager = outputManager; this.validationClass = validationClass; - this.rejectEmptyTagClass = rejectEmptyTagClass; this.rejectUnknownFieldClass = rejectUnknownFieldClass; this.rejectUnknownEnumValueClass = rejectUnknownEnumValueClass; this.flyweightsEnabled = flyweightsEnabled; @@ -183,7 +180,6 @@ protected void generateImports( out .append(importStaticFor(StandardCharsets.class, "US_ASCII")) .append(importStaticFor(validationClass, CODEC_VALIDATION_ENABLED)) - .append(importStaticFor(rejectEmptyTagClass, CODEC_REJECT_EMPTY_TAG_ENABLED)) .append(importStaticFor(rejectUnknownFieldClass, CODEC_REJECT_UNKNOWN_FIELD_ENABLED)) .append(importStaticFor(rejectUnknownEnumValueClass, RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY)); diff --git a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/AbstractDecoderGeneratorTest.java b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/AbstractDecoderGeneratorTest.java index 1672108275..993d0b6662 100644 --- a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/AbstractDecoderGeneratorTest.java +++ b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/AbstractDecoderGeneratorTest.java @@ -128,7 +128,6 @@ private static Map generateSources( ) { final Class validationClass = validation ? ValidationOn.class : ValidationOff.class; - final Class rejectEmptyTag = rejectingEmptyTags ? RejectEmptyTagOn.class : RejectEmptyTagOff.class; final Class rejectUnknownField = rejectingUnknownFields ? RejectUnknownFieldOn.class : RejectUnknownFieldOff.class; final Class rejectUnknownEnumValue = rejectingUnknownEnumValue ? @@ -139,11 +138,11 @@ private static Map generateSources( final EnumGenerator enumGenerator = new EnumGenerator(MESSAGE_EXAMPLE, TEST_PARENT_PACKAGE, outputManager); final DecoderGenerator decoderGenerator = new DecoderGenerator( MESSAGE_EXAMPLE, 1, TEST_PACKAGE, TEST_PARENT_PACKAGE, TEST_PACKAGE, - outputManager, validationClass, rejectEmptyTag, rejectUnknownField, - rejectUnknownEnumValue, flyweightStringsEnabled, wrapEmptyBuffer, + outputManager, validationClass, rejectUnknownField, + rejectUnknownEnumValue, flyweightStringsEnabled, wrapEmptyBuffer, !rejectingEmptyTags, String.valueOf(rejectingUnknownEnumValue), true); final EncoderGenerator encoderGenerator = new EncoderGenerator(MESSAGE_EXAMPLE, TEST_PACKAGE, - TEST_PARENT_PACKAGE, outputManager, ValidationOn.class, RejectEmptyTagOn.class, RejectUnknownFieldOn.class, + TEST_PARENT_PACKAGE, outputManager, ValidationOn.class, RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); constantGenerator.generate(); diff --git a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/AcceptorGeneratorTest.java b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/AcceptorGeneratorTest.java index 71fc149002..ad39f090b5 100644 --- a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/AcceptorGeneratorTest.java +++ b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/AcceptorGeneratorTest.java @@ -40,11 +40,11 @@ public class AcceptorGeneratorTest private static final EnumGenerator ENUM_GENERATOR = new EnumGenerator( MESSAGE_EXAMPLE, TEST_PACKAGE, OUTPUT_MANAGER); private static final EncoderGenerator ENCODER_GENERATOR = new EncoderGenerator( - MESSAGE_EXAMPLE, TEST_PACKAGE, TEST_PARENT_PACKAGE, OUTPUT_MANAGER, ValidationOn.class, RejectEmptyTagOn.class, + MESSAGE_EXAMPLE, TEST_PACKAGE, TEST_PARENT_PACKAGE, OUTPUT_MANAGER, ValidationOn.class, RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); private static final DecoderGenerator DECODER_GENERATOR = new DecoderGenerator( MESSAGE_EXAMPLE, 1, TEST_PACKAGE, TEST_PARENT_PACKAGE, TEST_PACKAGE, OUTPUT_MANAGER, ValidationOn.class, - RejectEmptyTagOn.class, RejectUnknownFieldOff.class, RejectUnknownEnumValueOn.class, false, false, + RejectUnknownFieldOff.class, RejectUnknownEnumValueOn.class, false, false, false, Generator.RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); private static final AcceptorGenerator ACCEPTOR_GENERATOR = new AcceptorGenerator( MESSAGE_EXAMPLE, TEST_PACKAGE, OUTPUT_MANAGER); diff --git a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/CopyToEncoderGeneratorTest.java b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/CopyToEncoderGeneratorTest.java index 6a527d3cb9..c7a55f781d 100644 --- a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/CopyToEncoderGeneratorTest.java +++ b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/CopyToEncoderGeneratorTest.java @@ -75,11 +75,11 @@ private static Map generateClasses() final EnumGenerator enumGenerator = new EnumGenerator(MESSAGE_EXAMPLE, TEST_PARENT_PACKAGE, outputManager); final DecoderGenerator decoderGenerator = new DecoderGenerator( MESSAGE_EXAMPLE, 1, TEST_PACKAGE, - TEST_PARENT_PACKAGE, TEST_PACKAGE, outputManager, ValidationOn.class, RejectEmptyTagOn.class, - RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, false, false, + TEST_PARENT_PACKAGE, TEST_PACKAGE, outputManager, ValidationOn.class, + RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, false, false, false, RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); final EncoderGenerator encoderGenerator = new EncoderGenerator(MESSAGE_EXAMPLE, TEST_PACKAGE, - TEST_PARENT_PACKAGE, outputManager, ValidationOn.class, RejectEmptyTagOn.class, RejectUnknownFieldOn.class, + TEST_PARENT_PACKAGE, outputManager, ValidationOn.class, RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); constantGenerator.generate(); diff --git a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/EncoderGeneratorTest.java b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/EncoderGeneratorTest.java index 4c02312630..3b40fc8913 100644 --- a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/EncoderGeneratorTest.java +++ b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/EncoderGeneratorTest.java @@ -82,12 +82,11 @@ private static Map generateSources(final boolean validatio final Class validationClass = validation ? ValidationOn.class : ValidationOff.class; final Class rejectUnknownField = RejectUnknownFieldOff.class; final Class rejectUnknownEnumValue = RejectUnknownEnumValueOn.class; - final Class rejectEmptyTag = RejectEmptyTagOn.class; final StringWriterOutputManager outputManager = new StringWriterOutputManager(); final EnumGenerator enumGenerator = new EnumGenerator(MESSAGE_EXAMPLE, TEST_PARENT_PACKAGE, outputManager); final EncoderGenerator encoderGenerator = new EncoderGenerator(MESSAGE_EXAMPLE, TEST_PACKAGE, TEST_PARENT_PACKAGE, outputManager, validationClass, - rejectEmptyTag, rejectUnknownField, rejectUnknownEnumValue, + rejectUnknownField, rejectUnknownEnumValue, Generator.RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); enumGenerator.generate(); encoderGenerator.generate(); diff --git a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/PrinterGeneratorTest.java b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/PrinterGeneratorTest.java index b0e678c521..4d0ef5d328 100644 --- a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/PrinterGeneratorTest.java +++ b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/PrinterGeneratorTest.java @@ -40,11 +40,11 @@ public class PrinterGeneratorTest private static final DecoderGenerator DECODER_GENERATOR = new DecoderGenerator( MESSAGE_EXAMPLE, 1, TEST_PACKAGE, TEST_PARENT_PACKAGE, TEST_PACKAGE, - OUTPUT_MANAGER, ValidationOn.class, RejectEmptyTagOn.class, - RejectUnknownFieldOff.class, RejectUnknownEnumValueOn.class, false, false, + OUTPUT_MANAGER, ValidationOn.class, + RejectUnknownFieldOff.class, RejectUnknownEnumValueOn.class, false, false, false, Generator.RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); private static final EncoderGenerator ENCODER_GENERATOR = new EncoderGenerator( - MESSAGE_EXAMPLE, TEST_PACKAGE, TEST_PARENT_PACKAGE, OUTPUT_MANAGER, ValidationOn.class, RejectEmptyTagOn.class, + MESSAGE_EXAMPLE, TEST_PACKAGE, TEST_PARENT_PACKAGE, OUTPUT_MANAGER, ValidationOn.class, RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); diff --git a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/RejectEmptyTagOff.java b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/RejectEmptyTagOff.java deleted file mode 100644 index 3e2ccc1006..0000000000 --- a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/RejectEmptyTagOff.java +++ /dev/null @@ -1,6 +0,0 @@ -package uk.co.real_logic.artio.dictionary.generation; - -public class RejectEmptyTagOff -{ - public static final boolean CODEC_REJECT_EMPTY_TAG_ENABLED = false; -} diff --git a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/RejectEmptyTagOn.java b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/RejectEmptyTagOn.java deleted file mode 100644 index ea475c80a7..0000000000 --- a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/RejectEmptyTagOn.java +++ /dev/null @@ -1,6 +0,0 @@ -package uk.co.real_logic.artio.dictionary.generation; - -public class RejectEmptyTagOn -{ - public static final boolean CODEC_REJECT_EMPTY_TAG_ENABLED = true; -} diff --git a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/ToEncoderDecoderGeneratorTest.java b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/ToEncoderDecoderGeneratorTest.java index 03e6a795a5..e35bb75174 100644 --- a/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/ToEncoderDecoderGeneratorTest.java +++ b/artio-codecs/src/test/java/uk/co/real_logic/artio/dictionary/generation/ToEncoderDecoderGeneratorTest.java @@ -92,11 +92,11 @@ private static Map generateClasses(final boolean flyweight final EnumGenerator enumGenerator = new EnumGenerator(MESSAGE_EXAMPLE, TEST_PARENT_PACKAGE, outputManager); final DecoderGenerator decoderGenerator = new DecoderGenerator( MESSAGE_EXAMPLE, 1, TEST_PACKAGE, - TEST_PARENT_PACKAGE, TEST_PACKAGE, outputManager, ValidationOn.class, RejectEmptyTagOn.class, - RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, flyweightStringsEnabled, false, + TEST_PARENT_PACKAGE, TEST_PACKAGE, outputManager, ValidationOn.class, + RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, flyweightStringsEnabled, false, false, RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); final EncoderGenerator encoderGenerator = new EncoderGenerator(MESSAGE_EXAMPLE, TEST_PACKAGE, - TEST_PARENT_PACKAGE, outputManager, ValidationOn.class, RejectEmptyTagOn.class, RejectUnknownFieldOn.class, + TEST_PARENT_PACKAGE, outputManager, ValidationOn.class, RejectUnknownFieldOn.class, RejectUnknownEnumValueOn.class, RUNTIME_REJECT_UNKNOWN_ENUM_VALUE_PROPERTY, true); constantGenerator.generate();