Skip to content

Commit 8e5c6e9

Browse files
authored
Transform defaultClient to create (#5374)
* Transform defaultClient to create * Fix return type and spacing
1 parent 1ee64ee commit 8e5c6e9

File tree

2 files changed

+125
-11
lines changed

2 files changed

+125
-11
lines changed

migration-tool/src/main/java/software/amazon/awssdk/migration/recipe/V1BuilderVariationsToV2Builder.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
8080
}
8181

8282
if (isV2ClientBuilder(selectType)) {
83-
return renameStandardToBuilder(method, selectType);
83+
return renameStandardToBuilderOrDefaultClientToCreate(method, selectType);
8484
}
8585

8686
return method;
@@ -90,18 +90,29 @@ private static boolean shouldChangeMethod(JavaType selectType) {
9090
return isV2ClientBuilder(selectType) || isV2AsyncClientClass(selectType);
9191
}
9292

93-
private J.MethodInvocation renameStandardToBuilder(J.MethodInvocation method, JavaType selectType) {
93+
private J.MethodInvocation renameStandardToBuilderOrDefaultClientToCreate(J.MethodInvocation method,
94+
JavaType selectType) {
9495
String methodName = method.getSimpleName();
9596
JavaType.Method mt = method.getMethodType();
9697
JavaType.FullyQualified fullyQualified = TypeUtils.asFullyQualified(selectType);
9798

98-
if (mt == null || !"standard".equals(methodName) || fullyQualified == null) {
99+
if (mt == null || fullyQualified == null) {
99100
return method;
100101
}
101102

102-
methodName = "builder";
103-
104103
JavaType.FullyQualified v2Client = SdkTypeUtils.v2ClientFromClientBuilder(fullyQualified);
104+
JavaType.FullyQualified returnType;
105+
106+
if ("standard".equals(methodName)) {
107+
methodName = "builder";
108+
returnType = fullyQualified;
109+
} else if ("defaultClient".equals(methodName)) {
110+
methodName = "create";
111+
returnType = v2Client;
112+
} else {
113+
return method;
114+
}
115+
105116
J.Identifier id = new J.Identifier(
106117
Tree.randomId(),
107118
Space.EMPTY,
@@ -112,7 +123,7 @@ private J.MethodInvocation renameStandardToBuilder(J.MethodInvocation method, Ja
112123
null
113124
);
114125

115-
J.Identifier builderMethod = new J.Identifier(
126+
J.Identifier builderOrCreateMethod = new J.Identifier(
116127
Tree.randomId(),
117128
Space.EMPTY,
118129
Markers.EMPTY,
@@ -127,7 +138,7 @@ private J.MethodInvocation renameStandardToBuilder(J.MethodInvocation method, Ja
127138
0L,
128139
v2Client,
129140
methodName,
130-
v2Client,
141+
returnType,
131142
Collections.emptyList(),
132143
Collections.emptyList(),
133144
Collections.emptyList(),
@@ -136,11 +147,11 @@ private J.MethodInvocation renameStandardToBuilder(J.MethodInvocation method, Ja
136147

137148
J.MethodInvocation builderInvoke = new J.MethodInvocation(
138149
Tree.randomId(),
139-
Space.EMPTY,
150+
method.getPrefix(),
140151
Markers.EMPTY,
141152
JRightPadded.build(id),
142153
null,
143-
builderMethod,
154+
builderOrCreateMethod,
144155
JContainer.empty(),
145156
methodType
146157
);

migration-tool/src/test/java/software/amazon/awssdk/migration/recipe/V1BuilderVariationsToV2BuilderTest.java

Lines changed: 105 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void asyncClient_useAsyncBuilder_shouldRewrite() {
6161

6262
@Test
6363
@EnabledOnJre({JRE.JAVA_8})
64-
public void syncClientBuilder_useStandardBuilder_shouldRewrite() {
64+
public void syncClientBuilder_useStandardBuilderWithBuild_shouldRewrite() {
6565
rewriteRun(
6666
recipeSpec -> recipeSpec.expectedCyclesThatMakeChanges(2),
6767
java(
@@ -86,7 +86,7 @@ public void syncClientBuilder_useStandardBuilder_shouldRewrite() {
8686

8787
@Test
8888
@EnabledOnJre({JRE.JAVA_8})
89-
public void asyncClientBuilder_useStandardBuilder_shouldRewrite() {
89+
public void asyncClientBuilder_useStandardBuilderWithBuild_shouldRewrite() {
9090
rewriteRun(
9191
recipeSpec -> recipeSpec.expectedCyclesThatMakeChanges(2),
9292
java(
@@ -108,4 +108,107 @@ public void asyncClientBuilder_useStandardBuilder_shouldRewrite() {
108108
)
109109
);
110110
}
111+
112+
@Test
113+
@EnabledOnJre({JRE.JAVA_8})
114+
public void syncClientBuilder_useStandardBuilderWithoutBuild_shouldRewrite() {
115+
rewriteRun(
116+
recipeSpec -> recipeSpec.expectedCyclesThatMakeChanges(2),
117+
java(
118+
"import com.amazonaws.services.sqs.AmazonSQS;\n"
119+
+ "import com.amazonaws.services.sqs.AmazonSQSClientBuilder;\n"
120+
+ "\n"
121+
+ "public class Example {\n"
122+
+ " public static void main(String[] args) {\n"
123+
+ " AmazonSQSClientBuilder sqs = AmazonSQSClientBuilder.standard();\n"
124+
+ " }\n"
125+
+ "}\n",
126+
"import software.amazon.awssdk.services.sqs.SqsClient;\n"
127+
+ "import software.amazon.awssdk.services.sqs.SqsClientBuilder;\n"
128+
+ "\n"
129+
+ "public class Example {\n"
130+
+ " public static void main(String[] args) {\n"
131+
+ " SqsClientBuilder sqs = SqsClient.builder();\n"
132+
+ " }\n"
133+
+ "}"
134+
)
135+
);
136+
}
137+
138+
@Test
139+
@EnabledOnJre({JRE.JAVA_8})
140+
public void asyncClientBuilder_useStandardBuilderWithoutBuild_shouldRewrite() {
141+
rewriteRun(
142+
recipeSpec -> recipeSpec.expectedCyclesThatMakeChanges(2),
143+
java(
144+
"import com.amazonaws.services.sqs.AmazonSQSAsync;\n"
145+
+ "import com.amazonaws.services.sqs.AmazonSQSAsyncClientBuilder;\n"
146+
+ "\n"
147+
+ "public class Example {\n"
148+
+ " public static void main(String[] args) {\n"
149+
+ " AmazonSQSAsyncClientBuilder sqs = AmazonSQSAsyncClientBuilder.standard();\n"
150+
+ " }\n"
151+
+ "}\n",
152+
"import software.amazon.awssdk.services.sqs.SqsAsyncClient;\n"
153+
+ "import software.amazon.awssdk.services.sqs.SqsAsyncClientBuilder;\n"
154+
+ "\n"
155+
+ "public class Example {\n"
156+
+ " public static void main(String[] args) {\n"
157+
+ " SqsAsyncClientBuilder sqs = SqsAsyncClient.builder();\n"
158+
+ " }\n"
159+
+ "}"
160+
)
161+
);
162+
}
163+
164+
165+
@Test
166+
@EnabledOnJre({JRE.JAVA_8})
167+
public void syncClientBuilder_useCreate_shouldRewrite() {
168+
rewriteRun(
169+
recipeSpec -> recipeSpec.expectedCyclesThatMakeChanges(2),
170+
java(
171+
"import com.amazonaws.services.sqs.AmazonSQS;\n"
172+
+ "import com.amazonaws.services.sqs.AmazonSQSClientBuilder;\n"
173+
+ "\n"
174+
+ "public class Example {\n"
175+
+ " public static void main(String[] args) {\n"
176+
+ " AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient();\n"
177+
+ " }\n"
178+
+ "}\n",
179+
"import software.amazon.awssdk.services.sqs.SqsClient;\n"
180+
+ "\n"
181+
+ "public class Example {\n"
182+
+ " public static void main(String[] args) {\n"
183+
+ " SqsClient sqs = SqsClient.create();\n"
184+
+ " }\n"
185+
+ "}"
186+
)
187+
);
188+
}
189+
190+
@Test
191+
@EnabledOnJre({JRE.JAVA_8})
192+
public void asyncClientBuilder_useCreate_shouldRewrite() {
193+
rewriteRun(
194+
recipeSpec -> recipeSpec.expectedCyclesThatMakeChanges(2),
195+
java(
196+
"import com.amazonaws.services.sqs.AmazonSQSAsync;\n"
197+
+ "import com.amazonaws.services.sqs.AmazonSQSAsyncClientBuilder;\n"
198+
+ "\n"
199+
+ "public class Example {\n"
200+
+ " public static void main(String[] args) {\n"
201+
+ " AmazonSQSAsync sqs = AmazonSQSAsyncClientBuilder.defaultClient();\n"
202+
+ " }\n"
203+
+ "}\n",
204+
"import software.amazon.awssdk.services.sqs.SqsAsyncClient;\n"
205+
+ "\n"
206+
+ "public class Example {\n"
207+
+ " public static void main(String[] args) {\n"
208+
+ " SqsAsyncClient sqs = SqsAsyncClient.create();\n"
209+
+ " }\n"
210+
+ "}"
211+
)
212+
);
213+
}
111214
}

0 commit comments

Comments
 (0)