Avro
  1. Avro
  2. AVRO-1007

Insufficient validation in generated specific record builder implementations

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.1
    • Fix Version/s: 1.6.2
    • Component/s: None
    • Labels:

      Description

      The are two main problems with the generated build() method in specific record builders:

      • For non-primitive types, if there is no default value and the user does not set the value, build() will execute successfully without throwing an exception
        • Instead, an AvroRuntimeException should be thrown with an exception message indicating the name of the required field that was not set
      • For primitive types, if there is no default value and the user does not set the value, an AvroRuntimeException is thrown with the 'cause' set to a NullPointerException, which is not very helpful
        • The NPE comes from attempting to set the primitive field to the result of defaultValue(), which is null
      1. AVRO-1007.patch
        3 kB
        James Baldassari
      2. AVRO-1007-v2.patch
        8 kB
        James Baldassari
      3. AVRO-1007-v3.patch
        11 kB
        James Baldassari
      4. AVRO-1007-v4.patch
        11 kB
        Scott Carey
      5. AVRO-1007.patch
        5 kB
        Doug Cutting
      6. AVRO-1007.patch
        6 kB
        Doug Cutting
      7. AVRO-1007.patch
        7 kB
        Doug Cutting

        Activity

          People

          • Assignee:
            James Baldassari
            Reporter:
            James Baldassari
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development