Skip to content

Support serializing ByteArrayOutputStream as "simple" Binary value #3522

@cowtowncoder

Description

@cowtowncoder

(note: follow-up to #3493)

Before Jackson 2.12, apparently it was possible to serialize ByteArrayOutputStream values as a POJO -- if (and only if) auto-detection of all visibility levels (including private) was enabled. If so, a POJO with buf and length fields were produced.
With 2.13 the default visibility settings for JDK types were changed to only detect public accessors; this also prevents custom default visibility from being applied. As a result, ByteArrayOutputStream values are no longer serializable.

But it might make sense to make it serializable again. However, the representation as POJO does not make sense: if serialization is to be used, it should:

  1. Use public ByteArrayOutStream.toByteArray() to access content
  2. Serialize contents as a Binary value: for JSON backend this means Base64-encoded String; for other backends whatever their representation of Binary values is

I realize that this behavior is different from the earlier one so it is an open question if this should be deferred until Jackson 3.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.0Issue planned for initial 3.0 release3.0-release-notesIssues relevant for 3.0 release notes.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions