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

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

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 0.10.0
    • Java - Compiler
    • 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

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

            Dates

              Created:
              Updated:
              Resolved: