2828import org .jboss .pnc .common .version .SuffixedVersion ;
2929import org .jboss .pnc .common .version .VersionParser ;
3030
31- import io .quarkus .bom .decomposer .ReleaseId ;
32- import io .quarkus .bom .decomposer .ReleaseOrigin ;
33- import io .quarkus .bom .decomposer .ReleaseVersion ;
34- import io .quarkus .bootstrap .resolver .maven .BootstrapMavenContext ;
35- import io .quarkus .bootstrap .resolver .maven .BootstrapMavenContextConfig ;
3631import io .quarkus .bootstrap .resolver .maven .BootstrapMavenException ;
3732import io .quarkus .bootstrap .resolver .maven .MavenArtifactResolver ;
3833import io .quarkus .devtools .messagewriter .MessageWriter ;
4237import io .quarkus .domino .ProjectDependencyResolver ;
4338import io .quarkus .domino .ReleaseCollection ;
4439import io .quarkus .domino .ReleaseRepo ;
40+ import io .quarkus .domino .scm .ScmRepository ;
41+ import io .quarkus .domino .scm .ScmRevision ;
4542import io .quarkus .maven .dependency .ArtifactCoords ;
4643import lombok .extern .slf4j .Slf4j ;
4744
@@ -88,7 +85,6 @@ private void setupConfig(ProjectDependencyConfig.Mutable dominoConfig) {
8885 .setWarnOnMissingScm (true )
8986 .setRecipeRepos (config .getRecipeRepos ())
9087 .setProjectArtifacts (artifacts )
91- .setValidateCodeRepoTags (false ) // TODO
9288 .setIncludeAlreadyBuilt (true ); // TODO
9389 }
9490
@@ -175,15 +171,15 @@ private DependencyResult parseReleaseCollection(ReleaseCollection releaseCollect
175171 return result ;
176172 }
177173
178- private void setupDependencies (Map <ReleaseRepo , Project > mapping , Map <ReleaseId , Set <ReleaseId >> depsToCut ) {
174+ private void setupDependencies (Map <ReleaseRepo , Project > mapping , Map <ScmRevision , Set <ScmRevision >> depsToCut ) {
179175 for (var entry : mapping .entrySet ()) {
180176 ReleaseRepo repo = entry .getKey ();
181177 Project project = entry .getValue ();
182- Set <ReleaseId > toCut = depsToCut .getOrDefault (repo .id (), Collections .emptySet ());
178+ Set <ScmRevision > toCut = depsToCut .getOrDefault (repo .getRevision (), Collections .emptySet ());
183179 project .setDependencies (
184180 repo .getDependencies ()
185181 .stream ()
186- .filter (d -> !toCut .contains (d .id ()))
182+ .filter (d -> !toCut .contains (d .getRevision ()))
187183 .map (mapping ::get )
188184 .filter (this ::filterProductized )
189185 .collect (Collectors .toSet ()));
@@ -248,37 +244,37 @@ private boolean filterProductized(Project releaseRepo) {
248244 return true ;
249245 }
250246
251- private Map <ReleaseId , Set <ReleaseId >> processCircularDependencies (
247+ private Map <ScmRevision , Set <ScmRevision >> processCircularDependencies (
252248 Collection <CircularReleaseDependency > circularDependencies ) {
253- Map <ReleaseId , Set <ReleaseId >> depsToCut = new HashMap <>();
249+ Map <ScmRevision , Set <ScmRevision >> depsToCut = new HashMap <>();
254250 if (!circularDependencies .isEmpty ()) {
255251 log .error (
256252 "Detected circular dependencies. This may be caused by incorrect SCM information, "
257253 + "consider updating the recipe repository. We are cutting the dependency loop now, "
258254 + "but this will lead to broken build config." );
259255 for (CircularReleaseDependency circularDependency : circularDependencies ) {
260256 log .error ("Detected loop: " + circularDependency );
261- List <ReleaseId > releaseDependencyChain = circularDependency .getReleaseDependencyChain ();
262- ReleaseId child = releaseDependencyChain .get (releaseDependencyChain .size () - 1 );
263- ReleaseId parent = releaseDependencyChain .get (releaseDependencyChain .size () - 2 );
264- Set <ReleaseId > releaseIds = depsToCut .computeIfAbsent (parent , k -> new HashSet <>());
257+ List <ScmRevision > releaseDependencyChain = circularDependency .getDependencyChain ();
258+ ScmRevision child = releaseDependencyChain .get (releaseDependencyChain .size () - 1 );
259+ ScmRevision parent = releaseDependencyChain .get (releaseDependencyChain .size () - 2 );
260+ Set <ScmRevision > releaseIds = depsToCut .computeIfAbsent (parent , k -> new HashSet <>());
265261 releaseIds .add (child );
266262 }
267263 }
268264 return depsToCut ;
269265 }
270266
271- private Project mapToProject (ReleaseRepo repo , Map <ReleaseId , Set <ReleaseId >> depsToCut ) {
267+ private Project mapToProject (ReleaseRepo repo , Map <ScmRevision , Set <ScmRevision >> depsToCut ) {
272268 Project project = new Project ();
273269 Set <GAV > gavs = repo .getArtifacts ()
274270 .keySet ()
275271 .stream ()
276272 .map (a -> new GAV (a .getGroupId (), a .getArtifactId (), a .getVersion ()))
277273 .collect (Collectors .toSet ());
278274 project .setGavs (gavs );
279- project .setSourceCodeURL (getSourceCodeURL (repo .id ()));
280- project .setSourceCodeRevision (getSourceCodeRevision (repo .id ()));
281- if (depsToCut .containsKey (repo .id ())) {
275+ project .setSourceCodeURL (getSourceCodeURL (repo .getRevision ()));
276+ project .setSourceCodeRevision (getSourceCodeRevision (repo .getRevision ()));
277+ if (depsToCut .containsKey (repo .getRevision ())) {
282278 GAV firstGAV = project .getFirstGAV ();
283279 log .warn ("Project " + firstGAV + " has cut some dependency(ies)." );
284280 project .setCutDependency (true );
@@ -301,20 +297,16 @@ private void setDepth(Project project, int depth) {
301297 }
302298 }
303299
304- private String getSourceCodeURL (ReleaseId releaseId ) {
305- ReleaseOrigin origin = releaseId .origin (); // TODO: this API will probably change
300+ private String getSourceCodeURL (ScmRevision releaseId ) {
301+ ScmRepository origin = releaseId .getRepository ();
306302 if (origin .isUrl ()) {
307- return origin .toString ();
303+ return origin .getUrl ();
308304 }
309305 return null ;
310306 }
311307
312- private String getSourceCodeRevision (ReleaseId releaseId ) {
313- ReleaseVersion version = releaseId .version (); // TODO: this API will probably change
314- if (version .isTag ()) {
315- return version .asString ();
316- }
317- return null ;
308+ private String getSourceCodeRevision (ScmRevision releaseId ) {
309+ return releaseId .getValue ();
318310 }
319311
320312 private static class Slf4jMessageWriter implements MessageWriter {
0 commit comments