Skip to content

Commit 2d378ee

Browse files
committed
Add support for build type
1 parent 0584d27 commit 2d378ee

File tree

7 files changed

+76
-46
lines changed

7 files changed

+76
-46
lines changed

core/src/main/java/org/jboss/pnc/build/finder/core/BuildFinder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import com.redhat.red.build.koji.KojiClientException;
7474
import com.redhat.red.build.koji.model.xmlrpc.KojiArchiveInfo;
7575
import com.redhat.red.build.koji.model.xmlrpc.KojiArchiveQuery;
76+
import com.redhat.red.build.koji.model.xmlrpc.KojiBtype;
7677
import com.redhat.red.build.koji.model.xmlrpc.KojiBuildInfo;
7778
import com.redhat.red.build.koji.model.xmlrpc.KojiBuildState;
7879
import com.redhat.red.build.koji.model.xmlrpc.KojiIdOrName;
@@ -416,7 +417,7 @@ private void handleRPMs(Collection<Entry<Checksum, Collection<String>>> rpmEntri
416417
if (cacheManager != null) {
417418
KojiBuild cachedBuild = buildCache.put(id, build);
418419

419-
if (cachedBuild != null && !cachedBuild.getBuildInfo().getTypeNames().contains("rpm")) {
420+
if (cachedBuild != null && !cachedBuild.getBuildInfo().getTypeNames().contains(KojiBtype.rpm)) {
420421
LOGGER.warn("Build id {} was already cached, but this should never happen", red(id));
421422
}
422423
}

core/src/main/java/org/jboss/pnc/build/finder/koji/KojiBuild.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import com.fasterxml.jackson.annotation.JsonIgnore;
3030
import com.redhat.red.build.koji.model.xmlrpc.KojiArchiveInfo;
31+
import com.redhat.red.build.koji.model.xmlrpc.KojiBtype;
3132
import com.redhat.red.build.koji.model.xmlrpc.KojiBuildInfo;
3233
import com.redhat.red.build.koji.model.xmlrpc.KojiBuildRequest;
3334
import com.redhat.red.build.koji.model.xmlrpc.KojiRpmInfo;
@@ -58,7 +59,7 @@ public class KojiBuild {
5859

5960
private List<KojiTagInfo> tags;
6061

61-
private transient List<String> types;
62+
private transient List<KojiBtype> types;
6263

6364
private List<KojiRpmInfo> remoteRpms;
6465

@@ -82,7 +83,7 @@ public KojiBuild(
8283
List<KojiLocalArchive> archives,
8384
List<KojiArchiveInfo> remoteArchives,
8485
List<KojiTagInfo> tags,
85-
List<String> types,
86+
List<KojiBtype> types,
8687
List<KojiRpmInfo> remoteRpms) {
8788
this.buildInfo = buildInfo;
8889
this.taskInfo = taskInfo;
@@ -156,15 +157,33 @@ public void setTags(List<KojiTagInfo> tags) {
156157
this.tags = tags;
157158
}
158159

159-
public List<String> getTypes() {
160+
/**
161+
* Gets the types.
162+
*
163+
* @return the types
164+
* @deprecated Use {@link KojiBuildInfo#getTypeNames()}
165+
*/
166+
@Deprecated(since = "2.7.0", forRemoval = true)
167+
public List<KojiBtype> getTypes() {
160168
if (types == null && buildInfo != null && buildInfo.getTypeNames() != null) {
161169
types = buildInfo.getTypeNames();
162170
}
163171

164172
return types;
165173
}
166174

167-
public void setTypes(List<String> types) {
175+
/**
176+
* Sets the types.
177+
*
178+
* @param types the types to set
179+
* @deprecated Use {@link KojiBuildInfo#setTypeNames(List)}.
180+
*/
181+
@Deprecated(since = "2.7.0", forRemoval = true)
182+
public void setTypes(List<KojiBtype> types) {
183+
if (buildInfo != null) {
184+
buildInfo.setTypeNames(types);
185+
}
186+
168187
this.types = types;
169188
}
170189

core/src/main/java/org/jboss/pnc/build/finder/koji/KojiLocalArchive.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.fasterxml.jackson.annotation.JsonIgnore;
2525
import com.fasterxml.jackson.annotation.JsonProperty;
2626
import com.redhat.red.build.koji.model.xmlrpc.KojiArchiveInfo;
27+
import com.redhat.red.build.koji.model.xmlrpc.KojiBtype;
2728
import com.redhat.red.build.koji.model.xmlrpc.KojiRpmInfo;
2829

2930
public class KojiLocalArchive {
@@ -69,16 +70,16 @@ public static boolean isMissingBuildTypeInfo(KojiArchiveInfo archive) {
6970
return false;
7071
}
7172

72-
String archiveBuildType = archive.getBuildType();
73+
KojiBtype archiveBuildType = archive.getBuildType();
7374

7475
if (archiveBuildType == null) {
7576
return false;
7677
}
7778

7879
return switch (archiveBuildType) {
79-
case "image" -> archive.getArch() == null;
80-
case "maven" -> archive.getGroupId() == null;
81-
case "win" -> archive.getPlatforms() == null;
80+
case maven -> archive.getGroupId() == null;
81+
case win -> archive.getPlatforms() == null;
82+
case image -> archive.getArch() == null;
8283
default -> false;
8384
};
8485
}

core/src/main/java/org/jboss/pnc/build/finder/pnc/client/PncUtils.java

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
import static com.redhat.red.build.koji.model.json.KojiJsonConstants.BUILD_SYSTEM;
1919
import static com.redhat.red.build.koji.model.json.KojiJsonConstants.EXTERNAL_BUILD_ID;
20+
import static com.redhat.red.build.koji.model.xmlrpc.KojiBtype.maven;
21+
import static com.redhat.red.build.koji.model.xmlrpc.KojiBtype.npm;
2022
import static org.apache.commons.lang3.ArrayUtils.EMPTY_STRING_ARRAY;
2123
import static org.jboss.pnc.api.constants.Attributes.BREW_TAG_PREFIX;
2224
import static org.jboss.pnc.api.constants.Attributes.BUILD_BREW_NAME;
@@ -40,10 +42,9 @@
4042
import org.jboss.pnc.dto.ArtifactRef;
4143
import org.jboss.pnc.dto.Build;
4244
import org.jboss.pnc.enums.BuildType;
43-
import org.slf4j.Logger;
44-
import org.slf4j.LoggerFactory;
4545

4646
import com.redhat.red.build.koji.model.xmlrpc.KojiArchiveInfo;
47+
import com.redhat.red.build.koji.model.xmlrpc.KojiBtype;
4748
import com.redhat.red.build.koji.model.xmlrpc.KojiBuildInfo;
4849
import com.redhat.red.build.koji.model.xmlrpc.KojiBuildState;
4950
import com.redhat.red.build.koji.model.xmlrpc.KojiChecksumType;
@@ -52,8 +53,6 @@
5253
import com.redhat.red.build.koji.model.xmlrpc.KojiTaskRequest;
5354

5455
public final class PncUtils {
55-
private static final Logger LOGGER = LoggerFactory.getLogger(PncUtils.class);
56-
5756
public static final String EXTERNAL_ARCHIVE_ID = "external_archive_id";
5857

5958
public static final String EXTERNAL_BREW_BUILD_ID = "external_brew_build_id";
@@ -68,6 +67,8 @@ public final class PncUtils {
6867

6968
public static final String EXTERNAL_VERSION_ID = "external_version_id";
7069

70+
public static final String EXTERNAL_BUILD_TYPE = "external_build_type";
71+
7172
public static final String GRADLE = "gradle";
7273

7374
public static final String MAVEN = "maven";
@@ -201,8 +202,6 @@ public static KojiBuild pncBuildToKojiBuild(PncBuild pncBuild) {
201202
KojiBuild kojiBuild = new KojiBuild();
202203
Build build = pncBuild.getBuild();
203204

204-
setKojiBuildType(pncBuild, kojiBuild);
205-
206205
KojiBuildInfo buildInfo = new KojiBuildInfo();
207206
setMavenBuildInfoFromBuildRecord(pncBuild, buildInfo);
208207

@@ -227,7 +226,7 @@ public static KojiBuild pncBuildToKojiBuild(PncBuild pncBuild) {
227226
+ build.getScmRepository().getInternalUrl()
228227
+ (build.getScmRevision() != null ? "#" + build.getScmRevision() : ""));
229228

230-
Map<String, Object> extra = new HashMap<>(8, 1.0f);
229+
Map<String, Object> extra = new HashMap<>(9, 1.0f);
231230

232231
extra.put(BUILD_SYSTEM, PNC);
233232
extra.put(EXTERNAL_BUILD_ID, build.getId());
@@ -275,32 +274,45 @@ public static KojiBuild pncBuildToKojiBuild(PncBuild pncBuild) {
275274
kojiBuild.setTaskRequest(taskRequest);
276275
});
277276

277+
addPncBuildTypeToExtra(pncBuild.getBuild().getBuildConfigRevision().getBuildType(), extra);
278278
buildInfo.setExtra(extra);
279+
buildInfo.setTypeNames(List.of(getBuildType(pncBuild)));
279280

280281
kojiBuild.setBuildInfo(buildInfo);
281282

282283
return kojiBuild;
283284
}
284285

285-
private static void setKojiBuildType(PncBuild pncBuild, KojiBuild kojiBuild) {
286-
switch (pncBuild.getBuild().getBuildConfigRevision().getBuildType()) {
286+
private static void addPncBuildTypeToExtra(BuildType buildType, Map<String, Object> extra) {
287+
switch (buildType) {
287288
case NPM:
288-
kojiBuild.setTypes(Collections.singletonList(NPM));
289+
extra.put(EXTERNAL_BUILD_TYPE, NPM);
289290
break;
290291
case GRADLE:
291-
kojiBuild.setTypes(Collections.singletonList(GRADLE));
292+
extra.put(EXTERNAL_BUILD_TYPE, GRADLE);
292293
break;
293294
case SBT:
294-
kojiBuild.setTypes(Collections.singletonList(SBT));
295+
extra.put(EXTERNAL_BUILD_TYPE, SBT);
295296
break;
296297
case MVN:
298+
extra.put(EXTERNAL_BUILD_TYPE, MAVEN);
299+
break;
297300
default:
298-
kojiBuild.setTypes(Collections.singletonList(MAVEN));
301+
extra.put(EXTERNAL_BUILD_TYPE, UNKNOWN);
299302
}
300303
}
301304

302-
public static KojiArchiveInfo artifactToKojiArchiveInfo(PncBuild pncbuild, ArtifactRef artifact) {
303-
Build build = pncbuild.getBuild();
305+
private static KojiBtype getBuildType(PncBuild pncBuild) {
306+
BuildType buildType = pncBuild.getBuild().getBuildConfigRevision().getBuildType();
307+
308+
return switch (buildType) {
309+
case MVN, GRADLE, SBT -> maven;
310+
case NPM -> npm;
311+
};
312+
}
313+
314+
public static KojiArchiveInfo artifactToKojiArchiveInfo(PncBuild pncBuild, ArtifactRef artifact) {
315+
Build build = pncBuild.getBuild();
304316
KojiArchiveInfo archiveInfo = new KojiArchiveInfo();
305317

306318
try {
@@ -315,14 +327,17 @@ public static KojiArchiveInfo artifactToKojiArchiveInfo(PncBuild pncbuild, Artif
315327
archiveInfo.setArchiveId(-1);
316328
}
317329

318-
Map<String, Object> extra = new HashMap<>(2, 1.0f);
330+
Map<String, Object> extra = new HashMap<>(3, 1.0f);
319331
extra.put(EXTERNAL_BUILD_ID, build.getId());
320332
extra.put(EXTERNAL_ARCHIVE_ID, artifact.getId());
333+
BuildType buildType = pncBuild.getBuild().getBuildConfigRevision().getBuildType();
334+
addPncBuildTypeToExtra(buildType, extra);
321335
archiveInfo.setExtra(extra);
336+
322337
archiveInfo.setArch("noarch");
323338
archiveInfo.setFilename(artifact.getFilename());
324339

325-
archiveInfo.setBuildType(getBuildType(pncbuild));
340+
archiveInfo.setBuildType(getBuildType(pncBuild));
326341
archiveInfo.setChecksumType(KojiChecksumType.md5);
327342
archiveInfo.setChecksum(artifact.getMd5());
328343

@@ -332,7 +347,7 @@ public static KojiArchiveInfo artifactToKojiArchiveInfo(PncBuild pncbuild, Artif
332347
archiveInfo.setSize(-1);
333348
}
334349

335-
switch (pncbuild.getBuild().getBuildConfigRevision().getBuildType()) {
350+
switch (buildType) {
336351
case NPM:
337352
// How do we set ArtifactInfo for NPM builds?
338353
break;
@@ -354,17 +369,6 @@ public static KojiArchiveInfo artifactToKojiArchiveInfo(PncBuild pncbuild, Artif
354369
return archiveInfo;
355370
}
356371

357-
private static String getBuildType(PncBuild pncBuild) {
358-
BuildType buildType = pncBuild.getBuild().getBuildConfigRevision().getBuildType();
359-
360-
return switch (buildType) {
361-
case MVN -> MAVEN;
362-
case GRADLE -> GRADLE;
363-
case NPM -> NPM;
364-
case SBT -> SBT;
365-
};
366-
}
367-
368372
public static void fixNullVersion(KojiBuild kojibuild, KojiArchiveInfo archiveInfo) {
369373
KojiBuildInfo buildInfo = kojibuild.getBuildInfo();
370374
String buildVersion = buildInfo.getVersion();

pom.xml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
<version.com.j2html>1.6.0</version.com.j2html>
8585
<version.com.mycila>4.6</version.com.mycila>
8686
<version.com.puppycrawl.tools>10.21.0</version.com.puppycrawl.tools>
87-
<version.com.redhat.red.build.kojiji>2.20</version.com.redhat.red.build.kojiji>
87+
<version.com.redhat.red.build.kojiji>2.21</version.com.redhat.red.build.kojiji>
8888
<version.commons-codec>1.17.1</version.commons-codec>
8989
<version.commons-io>2.18.0</version.commons-io>
9090
<version.commons-validator>1.9.0</version.commons-validator>
@@ -145,7 +145,8 @@
145145
<version.org.jboss.byteman>4.0.23</version.org.jboss.byteman>
146146
<version.org.jboss.logging>3.6.1.Final</version.org.jboss.logging>
147147
<version.org.jboss.logmanager>3.1.1.Final</version.org.jboss.logmanager>
148-
<version.org.jboss.pnc>3.0.4</version.org.jboss.pnc>
148+
<version.org.jboss.pnc.pnc>3.0.4</version.org.jboss.pnc.pnc>
149+
<version.org.jboss.pnc.pnc-api>3.0.6-SNAPSHOT</version.org.jboss.pnc.pnc-api>
149150
<version.org.jeasy>5.0.0</version.org.jeasy>
150151
<version.org.jetbrains.kotlin>1.6.21</version.org.jetbrains.kotlin>
151152
<version.org.json.json>20200518</version.org.json.json>
@@ -387,7 +388,7 @@
387388
<dependency>
388389
<groupId>org.jboss.pnc</groupId>
389390
<artifactId>dto</artifactId>
390-
<version>${version.org.jboss.pnc}</version>
391+
<version>${version.org.jboss.pnc.pnc}</version>
391392
<classifier>patch-builders${jakarta}</classifier>
392393
<exclusions>
393394
<exclusion>
@@ -400,12 +401,12 @@
400401
<dependency>
401402
<groupId>org.jboss.pnc</groupId>
402403
<artifactId>pnc-api</artifactId>
403-
<version>${version.org.jboss.pnc}</version>
404+
<version>${version.org.jboss.pnc.pnc-api}</version>
404405
</dependency>
405406
<dependency>
406407
<groupId>org.jboss.pnc</groupId>
407408
<artifactId>rest-client${jakarta}</artifactId>
408-
<version>${version.org.jboss.pnc}</version>
409+
<version>${version.org.jboss.pnc.pnc}</version>
409410
<exclusions>
410411
<exclusion>
411412
<groupId>org.jboss.pnc.dto</groupId>

report/src/main/java/org/jboss/pnc/build/finder/report/GAVReport.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.jboss.pnc.build.finder.report;
1717

18+
import static com.redhat.red.build.koji.model.xmlrpc.KojiBtype.maven;
1819
import static j2html.TagCreator.attrs;
1920
import static j2html.TagCreator.caption;
2021
import static j2html.TagCreator.each;
@@ -48,7 +49,9 @@ public GAVReport(File outputDirectory, Collection<KojiBuild> builds) {
4849
setOutputDirectory(outputDirectory);
4950
this.gavs = builds.stream()
5051
.filter(BuildFinderUtils::isNotBuildZero)
51-
.filter(build -> build.getTypes() != null && build.getTypes().contains("maven"))
52+
.filter(
53+
build -> build.getBuildInfo() != null && build.getBuildInfo().getTypeNames() != null
54+
&& build.getBuildInfo().getTypeNames().contains(maven))
5255
.flatMap(build -> build.getArchives().stream())
5356
.map(
5457
localArchive -> localArchive.getArchive().getGroupId() + ":"

report/src/test/java/org/jboss/pnc/build/finder/report/ReportTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static com.redhat.red.build.koji.model.json.KojiJsonConstants.EXTERNAL_BUILD_URL;
2222
import static com.redhat.red.build.koji.model.json.KojiJsonConstants.GROUP_ID;
2323
import static com.redhat.red.build.koji.model.json.KojiJsonConstants.VERSION;
24+
import static com.redhat.red.build.koji.model.xmlrpc.KojiBtype.maven;
2425
import static org.assertj.core.api.Assertions.as;
2526
import static org.assertj.core.api.Assertions.assertThat;
2627
import static org.assertj.core.api.Assertions.contentOf;
@@ -67,7 +68,7 @@ static void setupBuilds(@TempDir File folder) throws IOException {
6768

6869
builds = Collections.unmodifiableList(buildList);
6970

70-
assertThat(buildList).hasSameSizeAs(buildMap.entrySet());
71+
assertThat(builds).hasSameSizeAs(buildMap.entrySet());
7172

7273
testLoad(folder);
7374
}
@@ -130,7 +131,7 @@ void testBuilds3() {
130131
KojiBuild build = builds.get(3);
131132
assertThat(build.isMaven()).isTrue();
132133
assertThat(build.isImport()).isFalse();
133-
assertThat(build.getTypes()).containsExactly("maven");
134+
assertThat(build.getBuildInfo().getTypeNames()).containsExactly(maven);
134135
assertThat(build.getSource()).get(as(STRING))
135136
.isEqualTo("svn+http://svn.apache.org/repos/asf/commons/proper/beanutils/tags/BEANUTILS_1_9_2#1598386");
136137
assertThat(build.getScmSourcesZip()).get().extracting("filename", as(STRING)).endsWith("-scm-sources.zip");

0 commit comments

Comments
 (0)