@@ -117,7 +117,14 @@ abstract class ParseV2SupportedConfigurationsTask @Inject constructor(
117117 PrintWriter (outFile).use { out ->
118118 out .println (" package $packageName ;" )
119119 out .println ()
120- out .println (" import java.util.*;" )
120+ out .println (" import java.util.HashMap;" )
121+ out .println (" import java.util.List;" )
122+ out .println (" import java.util.Map;" )
123+ out .println (" import static java.util.Arrays.asList;" )
124+ out .println (" import static java.util.Collections.emptyList;" )
125+ out .println (" import static java.util.Collections.singletonList;" )
126+ out .println (" import static java.util.Collections.unmodifiableList;" )
127+ out .println (" import static java.util.Collections.unmodifiableMap;" )
121128 out .println ()
122129 out .println (" public final class $className {" )
123130 out .println ()
@@ -145,7 +152,7 @@ abstract class ParseV2SupportedConfigurationsTask @Inject constructor(
145152 out .println (" Map<String, List<SupportedConfiguration>> supportedMap = new HashMap<>();" )
146153 out .println (" initSupported1(supportedMap);" )
147154 out .println (" initSupported2(supportedMap);" )
148- out .println (" return Collections. unmodifiableMap(supportedMap);" )
155+ out .println (" return unmodifiableMap(supportedMap);" )
149156 out .println (" }" )
150157 out .println ()
151158
@@ -155,41 +162,15 @@ abstract class ParseV2SupportedConfigurationsTask @Inject constructor(
155162 // initSupported1() - first half
156163 out .println (" private static void initSupported1(Map<String, List<SupportedConfiguration>> supportedMap) {" )
157164 for ((key, configList) in sortedSupported.take(midpoint)) {
158- out .print (" supportedMap.put(\" ${esc(key)} \" , Collections.unmodifiableList(Arrays.asList(" )
159- val configIter = configList.iterator()
160- while (configIter.hasNext()) {
161- val config = configIter.next()
162- out .print (" new SupportedConfiguration(" )
163- out .print (" ${escNullableString(config.version)} , " )
164- out .print (" ${escNullableString(config.type)} , " )
165- out .print (" ${escNullableString(config.default)} , " )
166- out .print (" Arrays.asList(${quoteList(config.aliases)} ), " )
167- out .print (" Arrays.asList(${quoteList(config.propertyKeys)} )" )
168- out .print (" )" )
169- if (configIter.hasNext()) out .print (" , " )
170- }
171- out .println (" )));" )
165+ out .println (" supportedMap.put(\" ${esc(key)} \" , ${supportedConfigListLiteral(configList)} );" )
172166 }
173167 out .println (" }" )
174168 out .println ()
175169
176170 // initSupported2() - second half
177171 out .println (" private static void initSupported2(Map<String, List<SupportedConfiguration>> supportedMap) {" )
178172 for ((key, configList) in sortedSupported.drop(midpoint)) {
179- out .print (" supportedMap.put(\" ${esc(key)} \" , Collections.unmodifiableList(Arrays.asList(" )
180- val configIter = configList.iterator()
181- while (configIter.hasNext()) {
182- val config = configIter.next()
183- out .print (" new SupportedConfiguration(" )
184- out .print (" ${escNullableString(config.version)} , " )
185- out .print (" ${escNullableString(config.type)} , " )
186- out .print (" ${escNullableString(config.default)} , " )
187- out .print (" Arrays.asList(${quoteList(config.aliases)} ), " )
188- out .print (" Arrays.asList(${quoteList(config.propertyKeys)} )" )
189- out .print (" )" )
190- if (configIter.hasNext()) out .print (" , " )
191- }
192- out .println (" )));" )
173+ out .println (" supportedMap.put(\" ${esc(key)} \" , ${supportedConfigListLiteral(configList)} );" )
193174 }
194175 out .println (" }" )
195176 out .println ()
@@ -200,12 +181,12 @@ abstract class ParseV2SupportedConfigurationsTask @Inject constructor(
200181 out .println (" Map<String, List<String>> aliasesMap = new HashMap<>();" )
201182 for ((canonical, list) in aliases.toSortedMap()) {
202183 out .printf(
203- " aliasesMap.put(\" %s\" , Collections.unmodifiableList(Arrays.asList(%s)) );\n " ,
184+ " aliasesMap.put(\" %s\" , %s );\n " ,
204185 esc(canonical),
205- quoteList (list)
186+ unmodifiableListLiteral (list)
206187 )
207188 }
208- out .println (" return Collections. unmodifiableMap(aliasesMap);" )
189+ out .println (" return unmodifiableMap(aliasesMap);" )
209190 out .println (" }" )
210191 out .println ()
211192
@@ -215,7 +196,7 @@ abstract class ParseV2SupportedConfigurationsTask @Inject constructor(
215196 for ((alias, target) in aliasMapping.toSortedMap()) {
216197 out .printf(" aliasMappingMap.put(\" %s\" , \" %s\" );\n " , esc(alias), esc(target))
217198 }
218- out .println (" return Collections. unmodifiableMap(aliasMappingMap);" )
199+ out .println (" return unmodifiableMap(aliasMappingMap);" )
219200 out .println (" }" )
220201 out .println ()
221202
@@ -225,7 +206,7 @@ abstract class ParseV2SupportedConfigurationsTask @Inject constructor(
225206 for ((oldKey, note) in deprecated.toSortedMap()) {
226207 out .printf(" deprecatedMap.put(\" %s\" , \" %s\" );\n " , esc(oldKey), esc(note))
227208 }
228- out .println (" return Collections. unmodifiableMap(deprecatedMap);" )
209+ out .println (" return unmodifiableMap(deprecatedMap);" )
229210 out .println (" }" )
230211 out .println ()
231212
@@ -235,15 +216,36 @@ abstract class ParseV2SupportedConfigurationsTask @Inject constructor(
235216 for ((propertyKey, config) in reversePropertyKeysMap.toSortedMap()) {
236217 out .printf(" reversePropertyKeysMapping.put(\" %s\" , \" %s\" );\n " , esc(propertyKey), esc(config))
237218 }
238- out .println (" return Collections. unmodifiableMap(reversePropertyKeysMapping);" )
219+ out .println (" return unmodifiableMap(reversePropertyKeysMapping);" )
239220 out .println (" }" )
240221 out .println (" }" )
241222 }
242223 }
243224
225+ private fun supportedConfigLiteral (config : SupportedConfigurationItem ): String =
226+ " new SupportedConfiguration(${escNullableString(config.version)} , ${escNullableString(config.type)} , ${escNullableString(config.default)} , ${listLiteral(config.aliases)} , ${listLiteral(config.propertyKeys)} )"
227+
228+ private fun supportedConfigListLiteral (configList : List <SupportedConfigurationItem >): String = when (configList.size) {
229+ 0 -> " emptyList()"
230+ 1 -> " singletonList(${supportedConfigLiteral(configList[0 ])} )"
231+ else -> " unmodifiableList(asList(${configList.joinToString(" , " ) { supportedConfigLiteral(it) }} ))"
232+ }
233+
244234 private fun quoteList (list : List <String >): String =
245235 list.joinToString(" , " ) { " \" ${esc(it)} \" " }
246236
237+ private fun listLiteral (list : List <String >): String = when (list.size) {
238+ 0 -> " emptyList()"
239+ 1 -> " singletonList(${quoteList(list)} )"
240+ else -> " asList(${quoteList(list)} )"
241+ }
242+
243+ private fun unmodifiableListLiteral (list : List <String >): String = when (list.size) {
244+ 0 -> " emptyList()"
245+ 1 -> " singletonList(${quoteList(list)} )"
246+ else -> " unmodifiableList(asList(${quoteList(list)} ))"
247+ }
248+
247249 private fun esc (s : String ): String =
248250 s.replace(" \\ " , " \\\\ " ).replace(" \" " , " \\\" " )
249251
0 commit comments