Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-3486

Java generated `getFieldValue` is incompatible with `setFieldValue` for binary values.

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.10.0
    • Component/s: Java - Compiler
    • Labels:
      None

      Description

      Problem description

      In case of a binary field, getFieldValue returns a byte[] while setFieldValue expects a ByteBuffer.

      This design yields an unexpected requirement and is error prone.

      This is a perfectly fine use-case that a client wants to write a field value from one object to another object of the same thrift generated class:

      obj1.setFieldValue(SOME_FIELD, obj2.getFieldValue(SOME_FIELD))
      

      It is a reasonable assumption that if I use a getter to obtain some property value, the corresponding setter should accept a value of the same type.

      Currently if SOME_FIELD is a binary type field an exception is thrown: java.lang.ClassCastException: [B cannot be cast to java.nio.ByteBuffer.

      Change proposal

      Setter setFieldValue should accept a byte[] value for a binary field.

        Attachments

          Activity

            People

            • Assignee:
              bcg Benjamin Gould
              Reporter:
              Gosp Gospo
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: