[Proposal] Enable Lombok.toBuilder annotation flag in ResourceModel template
还没有人认领这个 Issue。
评估
调研方向
从 issue 中链接的 python/rpdk/java/templates/init/guided_aws/ResourceModel.java 开始,检查生成的 ResourceModel 注解是如何组装的。确定是否应默认启用 toBuilder,或将其作为 schema flag 暴露,然后验证生成的 Java model 是否支持所请求的 builder-copy 工作流。
由索引模型根据 Issue 内容生成。
描述
Dear team,
I wonder if you folks would have any concerns about enabling toBuilder attribute for Lombok @Builder by default or with an additional schema flag?
At the moment, ResourceModel template generates non-parametrized @Builder: https://github.com/aws-cloudformation/cloudformation-cli-java-plugin/blob/master/python/rpdk/java/templates/init/guided_aws/ResourceModel.java#L20
One of the reasons I would like to see this flag enabled is a significant simplification of overriding massive resource model definitions in testing, especially in testing an UpdateHandler.
Here is an example:
public class AbstractTestBase {
protected static final ResourceModel MODEL_BEFORE;
protected static final ResourceModel MODEL_AFTER;
static {
MODEL_BEFORE = ResourceModel.builder()
.foo("foo-before")
.bar("bar-before")
.baz("baz-before")
.build();
MODEL_AFTER = ResourceModel.builder()
.foo("foo-before")
.bar("bar-before")
.baz("totally-different-baz")
.build();
}
}
Assume I'm using these models in UpdateHandler test suite. If the update flow has a broad branching based on model attribute invariants, one has to initiate separate model instances for each branch case. It's completely fine for a 5-10 attribute models, but the burden of carrying things around grows once one has to deal with a 30-50 attribute model.
Having toBuilder = true enabled in ResourceModel definition would let one define models like
public class AbstractTestBase {
protected static final ResourceModel MODEL_BEFORE;
protected static final ResourceModel MODEL_AFTER;
static {
MODEL_BEFORE = ResourceModel.builder()
.foo("foo-before")
.bar("bar-before")
.baz("baz-before")
.build();
MODEL_AFTER = MODEL_BEFORE.toBuilder()
.baz("totally-different-baz")
.build();
}
}
In fact, being able to override a static model locally within the current test case scope is even better, it could look like:
public class UpdateHandlerTest extends AbstractTestBase {
//...
public void handleRequest_SimpleSuccess() {
final ResourceModel modelWithUpdatedBaz = MODEL_BEFORE.toBuilder()
.baz("totally-different-baz")
.build();
//...
}
}
- 主要语言
- Java
- 星标
- 30
- 派生
- 48
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
aws-cloudformation/cloudformation-cli-java-plugin 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 25/100
aws-cloudformation/cloudformation-cli-java-plugin#415 · 1 条评论 ·
-
难度 4/5 3-5 天 新手友好度 42/100
-
难度 5/5 一周以上 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 20/100
-
injectCredentialsAndInvokeV2 method in proxy class doesn't support API's like PutObject from S3. 未关闭
难度 5/5 一周以上 新手友好度 25/100
查看 aws-cloudformation/cloudformation-cli-java-plugin 的全部 Issue
相似的 Issue
-
bug untriaged
难度 2/5 1-3 小时 新手友好度 84/100
opensearch-project/ml-commons#5094 ·
-
bug
难度 2/5 1-3 小时 新手友好度 85/100
-
emitter:client:csharp feature
难度 2/5 1-3 小时 新手友好度 72/100
-
affects/8.10 affects/8.9 component/clients kind/bug likelihood/mid severity/mid
难度 2/5 1-3 小时 新手友好度 78/100
-
bug frontend maui-pilot
难度 2/5 1-3 小时 新手友好度 72/100