58
58
import java .util .HashSet ;
59
59
import java .util .Iterator ;
60
60
import java .util .List ;
61
+ import java .util .Map ;
61
62
import java .util .Optional ;
62
63
import java .util .Set ;
63
64
import java .util .stream .Collectors ;
@@ -105,7 +106,6 @@ protected List<SourceFile> visit(List<SourceFile> before, ExecutionContext ctx)
105
106
Optional <MavenResolutionResult > mavenModels = MavenBuildFileUtil .findMavenResolution (mavenFiles .get (i ));
106
107
Optional <MavenResolutionResult > newMavenModels = MavenBuildFileUtil .findMavenResolution (newMavenFiles .get (i ));
107
108
mavenFiles .get (i ).withMarkers (Markers .build (Arrays .asList (newMavenModels .get ())));
108
- // Xml.Document m = mavenFiles.get(i).getMarkers().withModel(newMavenFiles.get(i).getModel());
109
109
// FIXME: 497 verify correctness
110
110
mavenFiles .set (i , newMavenFiles .get (i ));
111
111
}
@@ -157,8 +157,27 @@ public MavenResolutionResult getPom() {
157
157
158
158
@ Override
159
159
public void addDependency (Dependency dependency ) {
160
- addDependencyInner (dependency );
161
- eventPublisher .publishEvent (new DependenciesChangedEvent (getResolvedDependenciesPaths ()));
160
+ if (!containsDependency (dependency )) {
161
+ addDependencyInner (dependency );
162
+ eventPublisher .publishEvent (new DependenciesChangedEvent (getResolvedDependenciesPaths ()));
163
+ }
164
+ }
165
+
166
+ private boolean containsDependency (Dependency dependency ) {
167
+ List <ResolvedDependency > listToSearch ;
168
+
169
+ Map <Scope , List <ResolvedDependency >> projectDependencies = getPom ().getDependencies ();
170
+
171
+ listToSearch = dependency .getScope () == null ? projectDependencies .get (Scope .Compile ) :
172
+ projectDependencies .get (Scope .fromName (dependency .getScope ()));
173
+
174
+ return listToSearch
175
+ .stream ()
176
+ .anyMatch (
177
+ d -> d .getArtifactId ().equals (dependency .getArtifactId ())
178
+ && d .getGroupId ().equals (dependency .getGroupId ())
179
+ && d .getVersion ().equals (dependency .getVersion ())
180
+ );
162
181
}
163
182
164
183
@ Override
@@ -218,21 +237,20 @@ public List<Dependency> getDeclaredDependencies(Scope... scopes) {
218
237
// returns dependencies as declared in xml
219
238
List <org .openrewrite .maven .tree .Dependency > requestedDependencies = getPom ().getPom ().getRequestedDependencies ();
220
239
// FIXME: #7 use getPom().getDependencies() instead ?
221
- List < Dependency > declaredDependenciesWithEffectiveVersions = requestedDependencies .stream ()
240
+ return requestedDependencies .stream ()
222
241
.filter (d -> {
223
242
if (scopes .length == 0 ) {
224
243
return true ;
225
244
} else {
226
245
// FIXME: scope test should also return compile!
227
- return Arrays .asList ( scopes ). stream ().anyMatch (scope -> {
246
+ return Arrays .stream (scopes ).anyMatch (scope -> {
228
247
String effectiveScope = d .getScope () == null ? "compile" : d .getScope ();
229
248
return scope .toString ().equalsIgnoreCase (effectiveScope );
230
249
});
231
250
}
232
251
})
233
- .map (d -> mapDependency ( d ) )
252
+ .map (this :: mapDependency )
234
253
.collect (Collectors .toList ());
235
- return declaredDependenciesWithEffectiveVersions ;
236
254
}
237
255
238
256
/**
@@ -371,7 +389,6 @@ private String scopeString(Scope scope) {
371
389
}
372
390
373
391
protected void addDependenciesInner (List <Dependency > dependencies ) {
374
- // dependencies = dependencies.stream().filter(d -> hasExactDeclaredDependency(d)).collect(Collectors.toList());
375
392
if (!dependencies .isEmpty ()) {
376
393
Recipe r = getAddDependencyRecipe (dependencies .get (0 ));
377
394
dependencies .stream ().skip (1 ).forEach (d -> r .doNext (getAddDependencyRecipe (d )));
@@ -385,35 +402,9 @@ protected void addDependenciesInner(List<Dependency> dependencies) {
385
402
excludeDependenciesInner (exclusions );
386
403
387
404
updateClasspathRegistry ();
388
-
389
- // javaParser.
390
-
391
- /*
392
- Field classpathField = ReflectionUtils.findField(Java11Parser.class, "classpath");
393
- ReflectionUtils.makeAccessible(classpathField);
394
- Object field1 = ReflectionUtils.getField(classpathField, ((RewriteJavaParser)javaParser).getJavaParser());
395
- Collection<Path> field = (Collection<Path>) field1;
396
- if(field1 == null) {
397
-
398
- }
399
-
400
- field.addAll(ClasspathRegistry.getInstance().getCurrentDependencies());
401
- javaParser.setClasspath(field);
402
-
403
- // TODO: #7 update classpath for JavaParser, publish event that classpath changed which triggers a recompile
404
-
405
- timeExceeded = System.currentTimeMillis() - before;
406
- System.out.println("Took " + (timeExceeded/1000) + " sec.");
407
-
408
- */
409
405
}
410
406
}
411
407
412
- private boolean hasEffectiveDependency (Dependency d ) {
413
- return getEffectiveDependencies ().stream ()
414
- .anyMatch (dep -> d .getCoordinates ().equals (dep .getCoordinates ()));
415
- }
416
-
417
408
/**
418
409
* Does not updateClasspathRegistry
419
410
*/
@@ -524,56 +515,6 @@ public List<Path> getResolvedDependenciesPaths() {
524
515
return getPom ().getDependencies ().get (Scope .Provided ).stream ()
525
516
.map (rewriteMavenArtifactDownloader ::downloadArtifact )
526
517
.collect (Collectors .toList ());
527
-
528
- /*
529
- Field classpathField = ReflectionUtils.findField(Java11Parser.class, "classpath");
530
- ReflectionUtils.makeAccessible(classpathField);
531
- Object field1 = ReflectionUtils.getField(classpathField, ((RewriteJavaParser)javaParser).getJavaParser());
532
- Collection<Path> field = (Collection<Path>) field1;
533
- return new ArrayList<>(field);
534
-
535
- */
536
-
537
- // return new ArrayList<>(ClasspathRegistry.getInstance().getCurrentDependencies());
538
- //
539
- // try {
540
- // MavenResolvedArtifact[] artifacts = new MavenResolvedArtifact[0];
541
- // File file = getAbsolutePath().toFile();
542
- // if (file.exists()) {
543
- // MavenWorkingSession mavenWorkingSession = new MavenWorkingSessionImpl().loadPomFromFile(file);
544
- // if (!mavenWorkingSession.getDeclaredDependencies().isEmpty()) {
545
- // artifacts = org.jboss.shrinkwrap.resolver.api.maven.Maven.resolver().loadPomFromFile(file)
546
- // .importDependencies(ScopeType.values())
547
- // .resolve().withTransitivity().asResolvedArtifact();
548
- // }
549
- // } else {
550
- // List<MavenDependency> mavenDependencies = getDeclaredDependencies().stream()
551
- // .map(d -> MavenDependencies.createDependency(
552
- // MavenCoordinates.createCoordinate(
553
- // d.getGroupId(), d.getArtifactId(), d.getVersion(),
554
- // d.getType() == null ? PackagingType.JAR : PackagingType.of(d.getType()),
555
- // d.getClassifier()),
556
- // ScopeType.fromScopeType(d.getScope()),
557
- // false))
558
- // .collect(Collectors.toList());
559
- //
560
- // if (mavenDependencies.isEmpty()) {
561
- // return Collections.emptyList();
562
- // }
563
- //
564
- // artifacts = org.jboss.shrinkwrap.resolver.api.maven.Maven.resolver()
565
- // .addDependencies(mavenDependencies)
566
- // .resolve().withTransitivity().asResolvedArtifact();
567
- // }
568
- //
569
- // return Arrays.stream(artifacts)
570
- // .map(a -> a.asFile().toPath())
571
- // .collect(Collectors.toList());
572
- // } catch (
573
- // Exception e) {
574
- // throw new RuntimeException(e);
575
- // }
576
-
577
518
}
578
519
579
520
@ Override
@@ -697,8 +638,6 @@ public void upgradeParentVersion(String version) {
697
638
apply (
698
639
new UpgradeParentVersion (parent .getGroupId (), parent .getArtifactId (), version , null )
699
640
);
700
- // List<Xml.Document> parse = MavenParser.builder().build().parseInputs(List.of(new Parser.Input(getAbsolutePath(), () -> new ByteArrayInputStream(print().getBytes(StandardCharsets.UTF_8)))), getAbsoluteProjectDir(), executionContext);
701
- // replaceWith(parse.get(0));
702
641
}
703
642
}
704
643
0 commit comments