aws / aws/aws-sdk-java-v2

DynamoDB Enhanced: Support schema mixins

Open
#5,375 2 comments 0 reactions 0 assignees View on GitHub
dynamodb-enhanced feature-request p3
Dominant language
Java
Stars
2.6k
Forks
1k
Avg merge
2d 9h
Merged PRs (30d)
51

Description

### Describe the feature

For classes that for whatever reason cannot carry Jackson annotations directly, Jackson supports defining a "mixin" interface that mirrors the properties of the class and has the desired annotations. It would be helpful if the Enhanced client had a similar capability.

### Use Case

I have a number of data classes that are defined in client or API dependencies (for example, for message-driven microservices that communicate over SNS/SQS). In particular, I have one domain value class that is a nested property on a top-level record class. If I want to use `TableSchema.fromClass(RecordClass)`, then `NestedClass` also has to carry the `@DynamoDbBean` annotation, but then I have to add otherwise-unnecessary DynamoDB dependencies the client library (even if `optional`).

### Proposed Solution

Add annotation `@DynamoDbMixin(value = Class)` with target `TYPE`. Extend `TableSchema.fromClass(Class)` to also accept `Class mixins...`, where if a type whose schema is being created has a provided mixin, the mixin is introspected to determine the properties to be mapped. The mixin should be checked only for property enumeration and should not require the presence of setters.

### Other Information

_No response_

### Acknowledgements

- [ ] I may be able to implement this feature request
- [ ] This feature might incur a breaking change

### AWS Java SDK version used

2.21.25

### JDK version used

openjdk version "11.0.11" 2021-04-20

### Operating System and version

Gentoo Linux

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.