brachi-wernick opened a new pull request #15699: URL: https://github.com/apache/beam/pull/15699
This PR is a continuous work for https://github.com/apache/beam/pull/15510. Currently there are 2 Coders for Metadata: default one: `org.apache.beam.sdk.io.fs.MetadataCoder` and enhanced one `org.apache.beam.sdk.io.fs.MetadataCoderV2`, the last can also decode-encode `lastModifiedMillis` and it is done in a new coder in order to support backward compatibility. This will be hard to maintain, we will need to create a new coder for any new field that will be added to `Metadata`. So, as suggested in this comment: https://github.com/apache/beam/pull/15510#issuecomment-928390587, I came up with new generic coder : `MetadataDynamicCoder`. `MetadataDynamicCoder` can decode/encode any new fields added to `Metadata` by sending getter, setter and coder. For example creating coder for `lastModifiedMillis`: ``` java new MetadataDynamicCoder() .withCoderForField( VarLongCoder.of(), Metadata::lastModifiedMillis, Metadata.Builder::setLastModifiedMillis); ``` I chose to get explicit getter/setter to avoid reflection which has bad impact on performance. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
