Skip to content

Commit ba9c48b

Browse files
authored
[MRESOLVER-520] Collapse repeated code blocks (apache#456)
Handling of generators, decorators were all duplications. --- https://issues.apache.org/jira/browse/MRESOLVER-520
1 parent e676041 commit ba9c48b

File tree

5 files changed

+106
-109
lines changed

5 files changed

+106
-109
lines changed

maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java

Lines changed: 7 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,8 @@ private DeployResult deploy(SyncContext syncContext, RepositorySystemSession ses
163163
}
164164

165165
List<Artifact> artifacts = new ArrayList<>(request.getArtifacts());
166-
List<? extends ArtifactGenerator> artifactGenerators = getArtifactGenerators(session, request);
166+
List<? extends ArtifactGenerator> artifactGenerators =
167+
Utils.getArtifactGenerators(session, artifactFactories, request);
167168
try {
168169
List<Artifact> generatedArtifacts = new ArrayList<>();
169170
for (ArtifactGenerator artifactGenerator : artifactGenerators) {
@@ -179,15 +180,16 @@ private DeployResult deploy(SyncContext syncContext, RepositorySystemSession ses
179180
}
180181
artifacts.addAll(generatedArtifacts);
181182

182-
List<? extends MetadataGenerator> generators = getMetadataGenerators(session, request);
183+
List<? extends MetadataGenerator> metadataGenerators =
184+
Utils.getMetadataGenerators(session, metadataFactories, request);
183185

184186
List<ArtifactUpload> artifactUploads = new ArrayList<>();
185187
List<MetadataUpload> metadataUploads = new ArrayList<>();
186188
IdentityHashMap<Metadata, Object> processedMetadata = new IdentityHashMap<>();
187189

188190
EventCatapult catapult = new EventCatapult(session, trace, repository, repositoryEventDispatcher);
189191

190-
List<Metadata> metadatas = Utils.prepareMetadata(generators, artifacts);
192+
List<Metadata> metadatas = Utils.prepareMetadata(metadataGenerators, artifacts);
191193

192194
syncContext.acquire(artifacts, Utils.combine(request.getMetadata(), metadatas));
193195

@@ -199,7 +201,7 @@ private DeployResult deploy(SyncContext syncContext, RepositorySystemSession ses
199201
for (ListIterator<Artifact> iterator = artifacts.listIterator(); iterator.hasNext(); ) {
200202
Artifact artifact = iterator.next();
201203

202-
for (MetadataGenerator generator : generators) {
204+
for (MetadataGenerator generator : metadataGenerators) {
203205
artifact = generator.transformArtifact(artifact);
204206
}
205207

@@ -225,7 +227,7 @@ private DeployResult deploy(SyncContext syncContext, RepositorySystemSession ses
225227
}
226228
}
227229

228-
metadatas = Utils.finishMetadata(generators, artifacts);
230+
metadatas = Utils.finishMetadata(metadataGenerators, artifacts);
229231

230232
syncContext.acquire(null, metadatas);
231233

@@ -266,40 +268,6 @@ private DeployResult deploy(SyncContext syncContext, RepositorySystemSession ses
266268
return result;
267269
}
268270

269-
private List<? extends ArtifactGenerator> getArtifactGenerators(
270-
RepositorySystemSession session, DeployRequest request) {
271-
PrioritizedComponents<ArtifactGeneratorFactory> factories =
272-
Utils.sortArtifactGeneratorFactories(session, artifactFactories);
273-
274-
List<ArtifactGenerator> generators = new ArrayList<>();
275-
276-
for (PrioritizedComponent<ArtifactGeneratorFactory> factory : factories.getEnabled()) {
277-
ArtifactGenerator generator = factory.getComponent().newInstance(session, request);
278-
if (generator != null) {
279-
generators.add(generator);
280-
}
281-
}
282-
283-
return generators;
284-
}
285-
286-
private List<? extends MetadataGenerator> getMetadataGenerators(
287-
RepositorySystemSession session, DeployRequest request) {
288-
PrioritizedComponents<MetadataGeneratorFactory> factories =
289-
Utils.sortMetadataGeneratorFactories(session, metadataFactories);
290-
291-
List<MetadataGenerator> generators = new ArrayList<>();
292-
293-
for (PrioritizedComponent<MetadataGeneratorFactory> factory : factories.getEnabled()) {
294-
MetadataGenerator generator = factory.getComponent().newInstance(session, request);
295-
if (generator != null) {
296-
generators.add(generator);
297-
}
298-
}
299-
300-
return generators;
301-
}
302-
303271
private void upload(
304272
Collection<MetadataUpload> metadataUploads,
305273
RepositorySystemSession session,

maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java

Lines changed: 4 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ private InstallResult install(SyncContext syncContext, RepositorySystemSession s
107107
RequestTrace trace = RequestTrace.newChild(request.getTrace(), request);
108108

109109
List<Artifact> artifacts = new ArrayList<>(request.getArtifacts());
110-
List<? extends ArtifactGenerator> artifactGenerators = getArtifactGenerators(session, request);
110+
List<? extends ArtifactGenerator> artifactGenerators =
111+
Utils.getArtifactGenerators(session, artifactFactories, request);
111112
try {
112113
List<Artifact> generatedArtifacts = new ArrayList<>();
113114
for (ArtifactGenerator artifactGenerator : artifactGenerators) {
@@ -123,7 +124,8 @@ private InstallResult install(SyncContext syncContext, RepositorySystemSession s
123124
}
124125
artifacts.addAll(generatedArtifacts);
125126

126-
List<? extends MetadataGenerator> metadataGenerators = getMetadataGenerators(session, request);
127+
List<? extends MetadataGenerator> metadataGenerators =
128+
Utils.getMetadataGenerators(session, metadataFactories, request);
127129

128130
IdentityHashMap<Metadata, Object> processedMetadata = new IdentityHashMap<>();
129131

@@ -181,40 +183,6 @@ private InstallResult install(SyncContext syncContext, RepositorySystemSession s
181183
}
182184
}
183185

184-
private List<? extends ArtifactGenerator> getArtifactGenerators(
185-
RepositorySystemSession session, InstallRequest request) {
186-
PrioritizedComponents<ArtifactGeneratorFactory> factories =
187-
Utils.sortArtifactGeneratorFactories(session, artifactFactories);
188-
189-
List<ArtifactGenerator> generators = new ArrayList<>();
190-
191-
for (PrioritizedComponent<ArtifactGeneratorFactory> factory : factories.getEnabled()) {
192-
ArtifactGenerator generator = factory.getComponent().newInstance(session, request);
193-
if (generator != null) {
194-
generators.add(generator);
195-
}
196-
}
197-
198-
return generators;
199-
}
200-
201-
private List<? extends MetadataGenerator> getMetadataGenerators(
202-
RepositorySystemSession session, InstallRequest request) {
203-
PrioritizedComponents<MetadataGeneratorFactory> factories =
204-
Utils.sortMetadataGeneratorFactories(session, metadataFactories);
205-
206-
List<MetadataGenerator> generators = new ArrayList<>();
207-
208-
for (PrioritizedComponent<MetadataGeneratorFactory> factory : factories.getEnabled()) {
209-
MetadataGenerator generator = factory.getComponent().newInstance(session, request);
210-
if (generator != null) {
211-
generators.add(generator);
212-
}
213-
}
214-
215-
return generators;
216-
}
217-
218186
private void install(RepositorySystemSession session, RequestTrace trace, Artifact artifact)
219187
throws InstallationException {
220188
final LocalRepositoryManager lrm = session.getLocalRepositoryManager();

maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -198,25 +198,12 @@ public ArtifactDescriptorResult readArtifactDescriptor(
198198
requireNonNull(request, "request cannot be null");
199199

200200
ArtifactDescriptorResult descriptorResult = artifactDescriptorReader.readArtifactDescriptor(session, request);
201-
for (ArtifactDecorator decorator : getArtifactDecorators(session)) {
201+
for (ArtifactDecorator decorator : Utils.getArtifactDecorators(session, artifactDecoratorFactories)) {
202202
descriptorResult.setArtifact(decorator.decorateArtifact(descriptorResult));
203203
}
204204
return descriptorResult;
205205
}
206206

207-
private List<? extends ArtifactDecorator> getArtifactDecorators(RepositorySystemSession session) {
208-
PrioritizedComponents<ArtifactDecoratorFactory> factories =
209-
Utils.sortArtifactDecoratorFactories(session, artifactDecoratorFactories);
210-
List<ArtifactDecorator> decorators = new ArrayList<>();
211-
for (PrioritizedComponent<ArtifactDecoratorFactory> factory : factories.getEnabled()) {
212-
ArtifactDecorator decorator = factory.getComponent().newInstance(session);
213-
if (decorator != null) {
214-
decorators.add(decorator);
215-
}
216-
}
217-
return decorators;
218-
}
219-
220207
@Override
221208
public ArtifactResult resolveArtifact(RepositorySystemSession session, ArtifactRequest request)
222209
throws ArtifactResolutionException {

maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/Utils.java

Lines changed: 91 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,18 @@
2525

2626
import org.eclipse.aether.RepositorySystemSession;
2727
import org.eclipse.aether.artifact.Artifact;
28+
import org.eclipse.aether.deployment.DeployRequest;
2829
import org.eclipse.aether.impl.MetadataGenerator;
2930
import org.eclipse.aether.impl.MetadataGeneratorFactory;
3031
import org.eclipse.aether.impl.OfflineController;
32+
import org.eclipse.aether.installation.InstallRequest;
3133
import org.eclipse.aether.metadata.Metadata;
3234
import org.eclipse.aether.repository.RemoteRepository;
3335
import org.eclipse.aether.resolution.ResolutionErrorPolicy;
3436
import org.eclipse.aether.resolution.ResolutionErrorPolicyRequest;
37+
import org.eclipse.aether.spi.artifact.decorator.ArtifactDecorator;
3538
import org.eclipse.aether.spi.artifact.decorator.ArtifactDecoratorFactory;
39+
import org.eclipse.aether.spi.artifact.generator.ArtifactGenerator;
3640
import org.eclipse.aether.spi.artifact.generator.ArtifactGeneratorFactory;
3741
import org.eclipse.aether.transfer.RepositoryOfflineException;
3842

@@ -41,21 +45,105 @@
4145
*/
4246
public final class Utils {
4347

44-
public static PrioritizedComponents<ArtifactDecoratorFactory> sortArtifactDecoratorFactories(
48+
private static PrioritizedComponents<ArtifactDecoratorFactory> sortArtifactDecoratorFactories(
4549
RepositorySystemSession session, Map<String, ArtifactDecoratorFactory> factories) {
4650
return PrioritizedComponents.reuseOrCreate(session, factories, ArtifactDecoratorFactory::getPriority);
4751
}
4852

49-
public static PrioritizedComponents<ArtifactGeneratorFactory> sortArtifactGeneratorFactories(
53+
public static List<? extends ArtifactDecorator> getArtifactDecorators(
54+
RepositorySystemSession session, Map<String, ArtifactDecoratorFactory> artifactDecoratorFactories) {
55+
PrioritizedComponents<ArtifactDecoratorFactory> factories =
56+
sortArtifactDecoratorFactories(session, artifactDecoratorFactories);
57+
List<ArtifactDecorator> decorators = new ArrayList<>();
58+
for (PrioritizedComponent<ArtifactDecoratorFactory> factory : factories.getEnabled()) {
59+
ArtifactDecorator decorator = factory.getComponent().newInstance(session);
60+
if (decorator != null) {
61+
decorators.add(decorator);
62+
}
63+
}
64+
return decorators;
65+
}
66+
67+
private static PrioritizedComponents<ArtifactGeneratorFactory> sortArtifactGeneratorFactories(
5068
RepositorySystemSession session, Map<String, ArtifactGeneratorFactory> factories) {
5169
return PrioritizedComponents.reuseOrCreate(session, factories, ArtifactGeneratorFactory::getPriority);
5270
}
5371

54-
public static PrioritizedComponents<MetadataGeneratorFactory> sortMetadataGeneratorFactories(
72+
private static List<? extends ArtifactGenerator> doGetArtifactGenerators(
73+
RepositorySystemSession session, Map<String, ArtifactGeneratorFactory> artifactFactories, Object request) {
74+
PrioritizedComponents<ArtifactGeneratorFactory> factories =
75+
sortArtifactGeneratorFactories(session, artifactFactories);
76+
List<ArtifactGenerator> generators = new ArrayList<>();
77+
for (PrioritizedComponent<ArtifactGeneratorFactory> factory : factories.getEnabled()) {
78+
ArtifactGenerator generator;
79+
if (request instanceof InstallRequest) {
80+
generator = factory.getComponent().newInstance(session, (InstallRequest) request);
81+
} else if (request instanceof DeployRequest) {
82+
generator = factory.getComponent().newInstance(session, (DeployRequest) request);
83+
} else {
84+
throw new IllegalArgumentException("Unknown request");
85+
}
86+
if (generator != null) {
87+
generators.add(generator);
88+
}
89+
}
90+
return generators;
91+
}
92+
93+
public static List<? extends ArtifactGenerator> getArtifactGenerators(
94+
RepositorySystemSession session,
95+
Map<String, ArtifactGeneratorFactory> artifactFactories,
96+
InstallRequest request) {
97+
return doGetArtifactGenerators(session, artifactFactories, request);
98+
}
99+
100+
public static List<? extends ArtifactGenerator> getArtifactGenerators(
101+
RepositorySystemSession session,
102+
Map<String, ArtifactGeneratorFactory> artifactFactories,
103+
DeployRequest request) {
104+
return doGetArtifactGenerators(session, artifactFactories, request);
105+
}
106+
107+
private static PrioritizedComponents<MetadataGeneratorFactory> sortMetadataGeneratorFactories(
55108
RepositorySystemSession session, Map<String, MetadataGeneratorFactory> factories) {
56109
return PrioritizedComponents.reuseOrCreate(session, factories, MetadataGeneratorFactory::getPriority);
57110
}
58111

112+
private static List<? extends MetadataGenerator> doGetMetadataGenerators(
113+
RepositorySystemSession session, Map<String, MetadataGeneratorFactory> metadataFactories, Object request) {
114+
PrioritizedComponents<MetadataGeneratorFactory> factories =
115+
sortMetadataGeneratorFactories(session, metadataFactories);
116+
List<MetadataGenerator> generators = new ArrayList<>();
117+
for (PrioritizedComponent<MetadataGeneratorFactory> factory : factories.getEnabled()) {
118+
MetadataGenerator generator;
119+
if (request instanceof InstallRequest) {
120+
generator = factory.getComponent().newInstance(session, (InstallRequest) request);
121+
} else if (request instanceof DeployRequest) {
122+
generator = factory.getComponent().newInstance(session, (DeployRequest) request);
123+
} else {
124+
throw new IllegalArgumentException("Unknown request");
125+
}
126+
if (generator != null) {
127+
generators.add(generator);
128+
}
129+
}
130+
return generators;
131+
}
132+
133+
public static List<? extends MetadataGenerator> getMetadataGenerators(
134+
RepositorySystemSession session,
135+
Map<String, MetadataGeneratorFactory> metadataFactories,
136+
InstallRequest request) {
137+
return doGetMetadataGenerators(session, metadataFactories, request);
138+
}
139+
140+
public static List<? extends MetadataGenerator> getMetadataGenerators(
141+
RepositorySystemSession session,
142+
Map<String, MetadataGeneratorFactory> metadataFactories,
143+
DeployRequest request) {
144+
return doGetMetadataGenerators(session, metadataFactories, request);
145+
}
146+
59147
public static List<Metadata> prepareMetadata(
60148
List<? extends MetadataGenerator> generators, List<? extends Artifact> artifacts) {
61149
List<Metadata> metadatas = new ArrayList<>();

maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@
4545
import org.eclipse.aether.impl.RemoteRepositoryManager;
4646
import org.eclipse.aether.impl.VersionRangeResolver;
4747
import org.eclipse.aether.impl.scope.InternalScopeManager;
48-
import org.eclipse.aether.internal.impl.PrioritizedComponent;
49-
import org.eclipse.aether.internal.impl.PrioritizedComponents;
5048
import org.eclipse.aether.internal.impl.Utils;
5149
import org.eclipse.aether.repository.ArtifactRepository;
5250
import org.eclipse.aether.repository.RemoteRepository;
@@ -175,7 +173,8 @@ public final CollectResult collectDependencies(RepositorySystemSession session,
175173
descriptorResult = new ArtifactDescriptorResult(descriptorRequest);
176174
} else {
177175
descriptorResult = descriptorReader.readArtifactDescriptor(session, descriptorRequest);
178-
for (ArtifactDecorator decorator : getArtifactDecorators(session)) {
176+
for (ArtifactDecorator decorator :
177+
Utils.getArtifactDecorators(session, artifactDecoratorFactories)) {
179178
descriptorResult.setArtifact(decorator.decorateArtifact(descriptorResult));
180179
}
181180
}
@@ -483,7 +482,7 @@ protected ArtifactDescriptorResult resolveCachedArtifactDescriptor(
483482
if (descriptorResult == null) {
484483
try {
485484
descriptorResult = descriptorReader.readArtifactDescriptor(session, descriptorRequest);
486-
for (ArtifactDecorator decorator : getArtifactDecorators(session)) {
485+
for (ArtifactDecorator decorator : Utils.getArtifactDecorators(session, artifactDecoratorFactories)) {
487486
descriptorResult.setArtifact(decorator.decorateArtifact(descriptorResult));
488487
}
489488
pool.putDescriptor(key, descriptorResult);
@@ -498,19 +497,6 @@ protected ArtifactDescriptorResult resolveCachedArtifactDescriptor(
498497
return descriptorResult;
499498
}
500499

501-
private List<? extends ArtifactDecorator> getArtifactDecorators(RepositorySystemSession session) {
502-
PrioritizedComponents<ArtifactDecoratorFactory> factories =
503-
Utils.sortArtifactDecoratorFactories(session, artifactDecoratorFactories);
504-
List<ArtifactDecorator> decorators = new ArrayList<>();
505-
for (PrioritizedComponent<ArtifactDecoratorFactory> factory : factories.getEnabled()) {
506-
ArtifactDecorator decorator = factory.getComponent().newInstance(session);
507-
if (decorator != null) {
508-
decorators.add(decorator);
509-
}
510-
}
511-
return decorators;
512-
}
513-
514500
/**
515501
* Helper class used during collection.
516502
*/

0 commit comments

Comments
 (0)