Structs + type unions don't work in Java
- Dominant language
- TypeScript
- Stars
- 2.9k
- Forks
- 267
- Avg merge
- 1d 25m
- Merged PRs (30d)
- 14
Description
## :bug: Bug Report
### Affected Languages
- [ ] `TypeScript` or `Javascript`
- [ ] `Python`
- [x] `Java`
- [ ] .NET (`C#`, `F#`, ...)
- [ ] `Go`
### General Information
* **JSII Version:** 1.29.0
* **Platform:** Darwin 186590cdb71d.ant.amazon.com 18.7.0 Darwin Kernel Version 18.7.0: Mon Mar 8 22:11:48 PST 2021; root:xnu-4903.278.65~1/RELEASE_X86_64 x86_64
### What is the problem?
Structs that have type unions do not work correctly in Java.
For example:
```java
CfnBucket cfnBucket = CfnBucket.Builder.create(this, "CfnBucket").build();
cfnBucket.setAccelerateConfiguration(CfnBucket.AccelerateConfigurationProperty.builder()
.accelerationStatus("Suspended")
.build());
System.out.println(cfnBucket.getAccelerateConfiguration());
```
prints out:
```
software.amazon.jsii.JsiiObject@68a13400
```
while it clearly should return an instance of `CfnBucket.AccelerateConfigurationProperty`.
This is not a problem in other languages; for example, in Python:
```python
bucket = s3.CfnBucket(
self, 'CfnBucket'
)
bucket.accelerate_configuration = s3.CfnBucket.AccelerateConfigurationProperty(
acceleration_status='Suspended',
)
print(bucket.accelerate_configuration)
```
prints out:
```
AccelerateConfigurationProperty(acceleration_status='Suspended')
```
Which is what I would expect.
This is negatively impacting CDK customers that use Java (example: https://github.com/aws/aws-cdk/issues/12338).
Contributor guide
Research direction
Start by reproducing the Java CfnBucket.AccelerateConfigurationProperty example and comparing its getter output with the Python example. Trace how jsii represents and returns Java structs containing type unions; the issue is done when the Java getter returns the expected AccelerateConfigurationProperty instance instead of a generic JsiiObject.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, typescript
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100