Open rkennedy-mode opened 1 year ago
@rkennedy-mode Apologies, I thought I had posted a comment here before, but clearly I didn't.
It's definitely an odd behavior, and we think there's a reason behind it when we made the design, but the reason was not documented. Right now this is a bug.
Any updates on this issue?
Having the same problem. I can't see what the reason would be, it just seems plain wrong. It should return AttributeConverter<?>
.
Describe the bug
The
TableSchema<T>
interface has a method,converterForAttribute(Object key)
, which returns anAttributeConverter<T>
. This AttributeConverter is meant to convert the attribute behind the given key. Unfortunately, the generic type here (T
) is the type for the table record, not for the attribute.If I have the following DynamoDbBean (non-compilable, just for explanation purposes):
If then create a corresponding
DynamoDbTable<ShoppingCartItem>
and try fetching the converter for the secondary partition key:The
AttributeConverter
returned is of typeAttributeConverter<ShoppingCartItem>
instead of typeAttributeConverter<UUID>
. This makes it impossible to use the TableSchema to fetch the corresponding AttributeConverter, because it will always return an AttributeConverter scoped to the type of the table, not of the attribute.Expected Behavior
TableSchema.converterForAttribute(Object key)
should return a generic type other thanAttributeConverter<T>
so callers can use it properly.Current Behavior
Described above.
Reproduction Steps
Described above.
Possible Solution
Change the return type of
TableSchema.converterForAttribute(Object key)
.Additional Information/Context
No response
AWS Java SDK version used
dynamodb-enhanced-2.20.56
JDK version used
1.8
Operating System and version
macOS 13.3.1