Skip to content

Commit b2d4a68

Browse files
committed
fix last inconsistencies in generics (use collections, not arrays)
1 parent 1b84f2e commit b2d4a68

File tree

7 files changed

+66
-75
lines changed

7 files changed

+66
-75
lines changed

src/java/org/apache/ivy/core/search/SearchEngine.java

+29-46
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.ArrayList;
2121
import java.util.Arrays;
2222
import java.util.Collection;
23+
import java.util.Collections;
2324
import java.util.HashMap;
2425
import java.util.HashSet;
2526
import java.util.LinkedHashSet;
@@ -59,9 +60,8 @@ public String[] listTokenValues(String token, Map<String, Object> otherTokenValu
5960
Set<String> entries = new LinkedHashSet<>();
6061

6162
for (DependencyResolver resolver : settings.getResolvers()) {
62-
Map<String, String>[] values = resolver.listTokenValues(new String[] {token},
63-
otherTokenValues);
64-
for (Map<String, String> value : values) {
63+
for (Map<String, String> value : resolver.listTokenValues(
64+
Collections.singleton(token), otherTokenValues)) {
6565
entries.add(value.get(token));
6666
}
6767
}
@@ -73,11 +73,10 @@ public OrganisationEntry[] listOrganisationEntries() {
7373
Set<OrganisationEntry> entries = new HashSet<>();
7474

7575
for (DependencyResolver resolver : settings.getResolvers()) {
76-
Map<String, String>[] orgs = resolver.listTokenValues(
77-
new String[] {IvyPatternHelper.ORGANISATION_KEY}, new HashMap<String, Object>());
78-
for (Map<String, String> oe : orgs) {
79-
String org = oe.get(IvyPatternHelper.ORGANISATION_KEY);
80-
entries.add(new OrganisationEntry(resolver, org));
76+
for (Map<String, String> oe : resolver.listTokenValues(
77+
Collections.singleton(IvyPatternHelper.ORGANISATION_KEY),
78+
new HashMap<String, Object>())) {
79+
entries.add(new OrganisationEntry(resolver, oe.get(IvyPatternHelper.ORGANISATION_KEY)));
8180
}
8281
}
8382

@@ -88,9 +87,9 @@ public String[] listOrganisations() {
8887
Set<String> entries = new HashSet<>();
8988

9089
for (DependencyResolver resolver : settings.getResolvers()) {
91-
Map<String, String>[] orgs = resolver.listTokenValues(
92-
new String[] {IvyPatternHelper.ORGANISATION_KEY}, new HashMap<String, Object>());
93-
for (Map<String, String> org : orgs) {
90+
for (Map<String, String> org : resolver.listTokenValues(
91+
Collections.singleton(IvyPatternHelper.ORGANISATION_KEY),
92+
new HashMap<String, Object>())) {
9493
entries.add(org.get(IvyPatternHelper.ORGANISATION_KEY));
9594
}
9695
}
@@ -105,11 +104,9 @@ public ModuleEntry[] listModuleEntries(OrganisationEntry org) {
105104
tokenValues.put(IvyPatternHelper.ORGANISATION_KEY, org.getOrganisation());
106105

107106
for (DependencyResolver resolver : settings.getResolvers()) {
108-
Map<String, String>[] modules = resolver.listTokenValues(
109-
new String[] {IvyPatternHelper.MODULE_KEY}, tokenValues);
110-
for (Map<String, String> me : modules) {
111-
String module = me.get(IvyPatternHelper.MODULE_KEY);
112-
entries.add(new ModuleEntry(org, module));
107+
for (Map<String, String> me : resolver.listTokenValues(
108+
Collections.singleton(IvyPatternHelper.MODULE_KEY), tokenValues)) {
109+
entries.add(new ModuleEntry(org, me.get(IvyPatternHelper.MODULE_KEY)));
113110
}
114111
}
115112

@@ -123,9 +120,8 @@ public String[] listModules(String org) {
123120
tokenValues.put(IvyPatternHelper.ORGANISATION_KEY, org);
124121

125122
for (DependencyResolver resolver : settings.getResolvers()) {
126-
Map<String, String>[] modules = resolver.listTokenValues(
127-
new String[] {IvyPatternHelper.MODULE_KEY}, tokenValues);
128-
for (Map<String, String> module : modules) {
123+
for (Map<String, String> module : resolver.listTokenValues(
124+
Collections.singleton(IvyPatternHelper.MODULE_KEY), tokenValues)) {
129125
entries.add(module.get(IvyPatternHelper.MODULE_KEY));
130126
}
131127
}
@@ -141,9 +137,8 @@ public RevisionEntry[] listRevisionEntries(ModuleEntry module) {
141137
tokenValues.put(IvyPatternHelper.MODULE_KEY, module.getModule());
142138

143139
for (DependencyResolver resolver : settings.getResolvers()) {
144-
Map<String, String>[] revisions = resolver.listTokenValues(
145-
new String[] {IvyPatternHelper.REVISION_KEY}, tokenValues);
146-
for (Map<String, String> revision : revisions) {
140+
for (Map<String, String> revision : resolver.listTokenValues(
141+
Collections.singleton(IvyPatternHelper.REVISION_KEY), tokenValues)) {
147142
entries.add(new RevisionEntry(module, revision.get(IvyPatternHelper.REVISION_KEY)));
148143
}
149144
}
@@ -159,9 +154,8 @@ public String[] listRevisions(String org, String module) {
159154
tokenValues.put(IvyPatternHelper.MODULE_KEY, module);
160155

161156
for (DependencyResolver resolver : settings.getResolvers()) {
162-
Map<String, String>[] revisions = resolver.listTokenValues(
163-
new String[] {IvyPatternHelper.REVISION_KEY}, tokenValues);
164-
for (Map<String, String> revision : revisions) {
157+
for (Map<String, String> revision : resolver.listTokenValues(
158+
Collections.singleton(IvyPatternHelper.REVISION_KEY), tokenValues)) {
165159
entries.add(revision.get(IvyPatternHelper.REVISION_KEY));
166160
}
167161
}
@@ -188,17 +182,13 @@ public ModuleId[] listModules(ModuleId moduleCrit, PatternMatcher matcher) {
188182
IvyPatternHelper.ORGANISATION_KEY);
189183
addMatcher(matcher, moduleCrit.getName(), criteria, IvyPatternHelper.MODULE_KEY);
190184

191-
String[] tokensToList = new String[] {IvyPatternHelper.ORGANISATION_KEY,
192-
IvyPatternHelper.MODULE_KEY};
193-
194185
for (DependencyResolver resolver : settings.getResolvers()) {
195-
Map<String, String>[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
196-
for (Map<String, String> moduleId : moduleIdAsMap) {
197-
String org = moduleId.get(IvyPatternHelper.ORGANISATION_KEY);
198-
String name = moduleId.get(IvyPatternHelper.MODULE_KEY);
199-
ModuleId modId = ModuleId.newInstance(org, name);
200-
ret.add(NameSpaceHelper.transform(modId, resolver.getNamespace()
201-
.getToSystemTransformer()));
186+
for (Map<String, String> moduleId : resolver.listTokenValues(new HashSet<>(
187+
Arrays.asList(IvyPatternHelper.ORGANISATION_KEY, IvyPatternHelper.MODULE_KEY)), criteria)) {
188+
ModuleId modId = ModuleId.newInstance(moduleId.get(IvyPatternHelper.ORGANISATION_KEY),
189+
moduleId.get(IvyPatternHelper.MODULE_KEY));
190+
ret.add(NameSpaceHelper.transform(modId,
191+
resolver.getNamespace().getToSystemTransformer()));
202192
}
203193
}
204194

@@ -224,12 +214,9 @@ public ModuleRevisionId[] listModules(ModuleRevisionId moduleCrit, PatternMatche
224214
addMatcher(matcher, entry.getValue(), criteria, entry.getKey());
225215
}
226216

227-
String[] tokensToList = moduleCrit.getAttributes().keySet()
228-
.toArray(new String[moduleCrit.getAttributes().size()]);
229-
230217
for (DependencyResolver resolver : settings.getResolvers()) {
231-
Map<String, String>[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
232-
for (Map<String, String> moduleId : moduleIdAsMap) {
218+
for (Map<String, String> moduleId : resolver.listTokenValues(moduleCrit.getAttributes().keySet(),
219+
criteria)) {
233220
String org = moduleId.get(IvyPatternHelper.ORGANISATION_KEY);
234221
String name = moduleId.get(IvyPatternHelper.MODULE_KEY);
235222
String branch = moduleId.get(IvyPatternHelper.BRANCH_KEY);
@@ -280,12 +267,9 @@ public ModuleRevisionId[] listModules(DependencyResolver resolver, ModuleRevisio
280267
addMatcher(matcher, entry.getValue(), criteria, entry.getKey());
281268
}
282269

283-
String[] tokensToList = moduleCrit.getAttributes().keySet()
284-
.toArray(new String[moduleCrit.getAttributes().size()]);
285-
286-
Map<String, String>[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
287270
Set<ModuleRevisionId> result = new LinkedHashSet<>(); // we use a Set to remove duplicates
288-
for (Map<String, String> moduleId : moduleIdAsMap) {
271+
for (Map<String, String> moduleId : resolver.listTokenValues(moduleCrit.getAttributes().keySet(),
272+
criteria)) {
289273
String org = moduleId.get(IvyPatternHelper.ORGANISATION_KEY);
290274
String name = moduleId.get(IvyPatternHelper.MODULE_KEY);
291275
String branch = moduleId.get(IvyPatternHelper.BRANCH_KEY);
@@ -368,7 +352,6 @@ public Collection<ModuleRevisionId> findModuleRevisionIds(DependencyResolver res
368352
+ " on " + resolverName);
369353
boolean foundModule = false;
370354
for (ModuleEntry mEntry : modules) {
371-
372355
ModuleId foundMid = new ModuleId(mEntry.getOrganisation(), mEntry.getModule());
373356
ModuleId systemMid = foundMid;
374357
if (fromNamespace != null) {

src/java/org/apache/ivy/osgi/repo/AbstractOSGiResolver.java

+1-8
Original file line numberDiff line numberDiff line change
@@ -403,15 +403,8 @@ private void filterCapabilityValues(Set<String> capabilityValues,
403403
}
404404
}
405405

406-
@SuppressWarnings("unchecked")
407406
@Override
408-
public Map<String, String>[] listTokenValues(String[] tokens, Map<String, Object> criteria) {
409-
Set<String> tokenSet = new HashSet<>(Arrays.asList(tokens));
410-
Set<Map<String, String>> listTokenValues = listTokenValues(tokenSet, criteria);
411-
return listTokenValues.toArray(new Map[listTokenValues.size()]);
412-
}
413-
414-
private Set<Map<String, String>> listTokenValues(Set<String> tokens,
407+
public Set<Map<String, String>> listTokenValues(Set<String> tokens,
415408
Map<String, Object> criteria) {
416409
Map<String, String> stringCriteria = new HashMap<>();
417410
for (Map.Entry<String, Object> entry : criteria.entrySet()) {

src/java/org/apache/ivy/plugins/resolver/AbstractPatternsBasedResolver.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,8 @@ protected Collection<String> findArtifactNames(Map<String, String> tokenValues,
156156
return names;
157157
}
158158

159-
@SuppressWarnings("unchecked")
160159
@Override
161-
public Map<String, String>[] listTokenValues(String[] tokens, Map<String, Object> criteria) {
160+
public Set<Map<String, String>> listTokenValues(Set<String> tokens, Map<String, Object> criteria) {
162161
Set<Map<String, String>> result = new LinkedHashSet<>();
163162

164163
// use ivy patterns
@@ -184,17 +183,17 @@ public Map<String, String>[] listTokenValues(String[] tokens, Map<String, Object
184183
}
185184
}
186185

187-
return result.toArray(new Map[result.size()]);
186+
return result;
188187
}
189188

190189
protected String getModuleDescriptorExtension() {
191190
return "xml";
192191
}
193192

194-
private Set<Map<String, String>> resolveTokenValues(String[] tokens, String pattern,
193+
private Set<Map<String, String>> resolveTokenValues(Set<String> tokens, String pattern,
195194
Map<String, Object> criteria, boolean noMd) {
196195
Set<Map<String, String>> result = new LinkedHashSet<>();
197-
Set<String> tokenSet = new HashSet<>(Arrays.asList(tokens));
196+
Set<String> tokenSet = new HashSet<>(tokens);
198197

199198
Map<String, String> tokenValues = new HashMap<>();
200199
for (Map.Entry<String, Object> entry : criteria.entrySet()) {
@@ -250,8 +249,7 @@ private Set<Map<String, String>> resolveTokenValues(String[] tokens, String patt
250249
} else if (noMd && "module".equals(token)) {
251250
newCriteria.put("artifact", value);
252251
}
253-
result.addAll(resolveTokenValues(tokenSet.toArray(new String[tokenSet.size()]),
254-
moreResolvedPattern, newCriteria, noMd));
252+
result.addAll(resolveTokenValues(tokenSet, moreResolvedPattern, newCriteria, noMd));
255253
}
256254

257255
return result;

src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java

+15
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
import java.io.IOException;
2222
import java.util.Arrays;
2323
import java.util.Date;
24+
import java.util.HashSet;
2425
import java.util.Map;
26+
import java.util.Set;
2527

2628
import org.apache.ivy.core.IvyContext;
2729
import org.apache.ivy.core.LogOptions;
@@ -178,7 +180,20 @@ public String[] listTokenValues(String token, Map<String, String> otherTokenValu
178180
return new String[0];
179181
}
180182

183+
// new API: provide the default implementation for third party extensions that lack it
184+
@SuppressWarnings("deprecation")
185+
public Set<Map<String, String>> listTokenValues(Set<String> tokens, Map<String, Object> criteria) {
186+
Set<Map<String, String>> tokenValueSet = new HashSet<>();
187+
for (Map<String, String> tokenValue :
188+
listTokenValues(tokens.toArray(new String[tokens.size()]), criteria)) {
189+
tokenValueSet.add(tokenValue);
190+
}
191+
return tokenValueSet;
192+
}
193+
194+
// old API
181195
@SuppressWarnings("unchecked")
196+
@Deprecated
182197
public Map<String, String>[] listTokenValues(String[] tokens, Map<String, Object> criteria) {
183198
return new Map[0];
184199
}

src/java/org/apache/ivy/plugins/resolver/ChainResolver.java

+3-7
Original file line numberDiff line numberDiff line change
@@ -178,17 +178,13 @@ public ResolvedResource findIvyFileRef(DependencyDescriptor dd, ResolveData data
178178
return null;
179179
}
180180

181-
@SuppressWarnings("unchecked")
182181
@Override
183-
public Map<String, String>[] listTokenValues(String[] tokens, Map<String, Object> criteria) {
182+
public Set<Map<String, String>> listTokenValues(Set<String> tokens, Map<String, Object> criteria) {
184183
Set<Map<String, String>> result = new HashSet<>();
185184
for (DependencyResolver resolver : chain) {
186-
Map<String, String>[] temp = resolver.listTokenValues(tokens,
187-
new HashMap<>(criteria));
188-
result.addAll(Arrays.asList(temp));
185+
result.addAll(resolver.listTokenValues(tokens, new HashMap<>(criteria)));
189186
}
190-
191-
return result.toArray(new Map[result.size()]);
187+
return result;
192188
}
193189

194190
@Override

src/java/org/apache/ivy/plugins/resolver/DependencyResolver.java

+4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.IOException;
2222
import java.text.ParseException;
2323
import java.util.Map;
24+
import java.util.Set;
2425

2526
import org.apache.ivy.core.cache.ArtifactOrigin;
2627
import org.apache.ivy.core.cache.RepositoryCacheManager;
@@ -188,6 +189,9 @@ ResolvedModuleRevision getDependency(DependencyDescriptor dd, ResolveData data)
188189
* the token which have values
189190
* @return the list of token values, must not be <code>null</code>
190191
*/
192+
Set<Map<String, String>> listTokenValues(Set<String> tokens, Map<String, Object> criteria);
193+
194+
@Deprecated
191195
Map<String, String>[] listTokenValues(String[] tokens, Map<String, Object> criteria);
192196

193197
OrganisationEntry[] listOrganisations();

test/java/org/apache/ivy/plugins/resolver/IBiblioResolverTest.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import static org.junit.Assert.assertNull;
2525
import static org.junit.Assert.assertTrue;
2626

27+
import java.util.Collections;
2728
import java.util.HashMap;
2829
import java.util.HashSet;
2930
import java.util.List;
@@ -155,7 +156,6 @@ public void testInitFromConf() throws Exception {
155156
l.get(0));
156157
}
157158

158-
@SuppressWarnings({"rawtypes", "unchecked"})
159159
@Test
160160
public void testMaven2Listing() {
161161
IBiblioResolver resolver = new IBiblioResolver();
@@ -173,20 +173,22 @@ public void testMaven2Listing() {
173173
RevisionEntry[] revisions = resolver.listRevisions(modules[0]);
174174
assertTrue(revisions.length > 0);
175175

176-
Map otherTokenValues = new HashMap();
176+
Map<String, String> otherTokenValues = new HashMap<>();
177177
otherTokenValues.put(IvyPatternHelper.ORGANISATION_KEY, "commons-lang");
178178
String[] values = resolver.listTokenValues(IvyPatternHelper.MODULE_KEY, otherTokenValues);
179179
assertNotNull(values);
180180
assertEquals(1, values.length);
181181
assertEquals("commons-lang", values[0]);
182182

183-
Map[] valuesMaps = resolver.listTokenValues(new String[] {IvyPatternHelper.MODULE_KEY},
184-
otherTokenValues);
185-
Set vals = new HashSet();
186-
for (Map valuesMap : valuesMaps) {
183+
Map<String, Object> criteria = new HashMap<>();
184+
criteria.putAll(otherTokenValues);
185+
Set<Map<String, String>> valuesMaps = resolver.listTokenValues(
186+
Collections.singleton(IvyPatternHelper.MODULE_KEY), criteria);
187+
Set<String> vals = new HashSet<>();
188+
for (Map<String, String> valuesMap : valuesMaps) {
187189
vals.add(valuesMap.get(IvyPatternHelper.MODULE_KEY));
188190
}
189-
values = (String[]) vals.toArray(new String[vals.size()]);
191+
values = vals.toArray(new String[vals.size()]);
190192
assertEquals(1, values.length);
191193
assertEquals("commons-lang", values[0]);
192194
}

0 commit comments

Comments
 (0)