Skip to content

Commit 5807954

Browse files
Jakub Zacekkhmarbaise
authored andcommitted
Fixed #309 - Added better support for Maven Modules
- slight modifications based on removement of Guava
1 parent c4f5953 commit 5807954

File tree

8 files changed

+198
-21
lines changed

8 files changed

+198
-21
lines changed

ReleaseNotes.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## Release 0.4.0 (NOT RELEASED YET)
44

5+
* [Fixed Issue 309][issue-309]
6+
7+
* Added possibility to get mode detailed data from Maven Modules from Jobs/Builds
8+
9+
Thanks for that to [Jakub Zacek](https://github.com/dawon).
10+
511
* [Fixed Issue 395][issue-395]
612

713
* Remove google guava lib
@@ -187,7 +193,7 @@
187193
Added new methods to JenkinsServer for stopping and restarting Jenkins. The methods are restart(Boolean crumbFlag), safeRestart(Boolean crumbFlag), exit(Boolean crumbFlag) and safeExit(Boolean crumbFlag)
188194

189195
Thanks for that to [Chids](https://github.com/Chids-gs).
190-
196+
191197
## Release 0.3.7
192198

193199
* Changed Eclipse Formatting configuration.
@@ -1140,6 +1146,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport();
11401146
[issue-291]: https://github.com/jenkinsci/java-client-api/issues/291
11411147
[issue-298]: https://github.com/jenkinsci/java-client-api/issues/298
11421148
[issue-301]: https://github.com/jenkinsci/java-client-api/issues/301
1149+
[issue-309]: https://github.com/jenkinsci/java-client-api/issues/309
11431150
[issue-394]: https://github.com/jenkinsci/java-client-api/issues/394
11441151
[issue-395]: https://github.com/jenkinsci/java-client-api/issues/395
11451152
[issue-396]: https://github.com/jenkinsci/java-client-api/issues/396

jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package com.offbytwo.jenkins.model;
88

99
import com.offbytwo.jenkins.client.JenkinsHttpConnection;
10+
import java.util.function.Predicate;
1011

1112
/**
1213
* The base model.
@@ -17,8 +18,7 @@ public class BaseModel {
1718
* The class.
1819
*/
1920
private String _class;
20-
21-
21+
2222
/**
2323
* Get the class.
2424
* @return class
@@ -47,4 +47,9 @@ public BaseModel setClient(final JenkinsHttpConnection client) {
4747
this.client = client;
4848
return this;
4949
}
50+
51+
protected static Predicate<? super Build> isBuildNumberEqualTo(int buildNumber) {
52+
return build -> build.getNumber() == buildNumber;
53+
}
54+
5055
}

jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,17 @@ public InputStream downloadArtifact(Artifact a) throws IOException, URISyntaxExc
533533
"");
534534
return client.getFile(artifactUri);
535535
}
536+
537+
/**
538+
* Returns {@link MavenModuleWithDetails} based on its name
539+
*
540+
* @param name module name
541+
* @return {@link MavenModuleWithDetails}
542+
* @throws IOException in case of error.
543+
*/
544+
public MavenModuleWithDetails getModule(String name) throws IOException {
545+
return client.get(getUrl() + name, MavenModuleWithDetails.class);
546+
}
536547

537548
@Override
538549
public boolean equals(Object obj) {

jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,13 @@
66

77
package com.offbytwo.jenkins.model;
88

9-
import static org.apache.commons.lang.StringUtils.join;
10-
9+
import com.offbytwo.jenkins.client.util.EncodingUtils;
1110
import java.io.ByteArrayOutputStream;
1211
import java.io.File;
1312
import java.io.IOException;
1413
import java.io.InputStream;
1514
import java.net.URI;
1615
import java.util.Map;
17-
18-
import com.offbytwo.jenkins.client.util.EncodingUtils;
1916
import java.util.function.Function;
2017
import java.util.stream.Collectors;
2118

@@ -186,4 +183,6 @@ public String apply(Map.Entry<String, String> entry) {
186183
return EncodingUtils.formParameter(entry.getKey()) + "=" + EncodingUtils.formParameter(entry.getValue());
187184
}
188185
}
186+
187+
189188
}

jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import java.util.Map;
1919
import java.util.Objects;
2020
import java.util.Optional;
21-
import java.util.function.Predicate;
2221

2322
import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT;
2423
import static java.util.stream.Collectors.toList;
@@ -31,7 +30,7 @@ public class JobWithDetails extends Job {
3130

3231
private boolean buildable;
3332

34-
private List<Build> builds;
33+
private List<Build> builds = Collections.emptyList();
3534

3635
private Build firstBuild;
3736

@@ -438,10 +437,6 @@ public List<Job> getUpstreamProjects() {
438437
}
439438
}
440439

441-
private static Predicate<? super Build> isBuildNumberEqualTo(int buildNumber) {
442-
return build -> build.getNumber() == buildNumber;
443-
}
444-
445440
public QueueItem getQueueItem() {
446441
return this.queueItem;
447442
}
@@ -456,6 +451,18 @@ public QueueItem getQueueItem() {
456451
public Optional<Build> getBuildByNumber(final int buildNumber) {
457452
return builds.stream().filter(isBuildNumberEqualTo(buildNumber)).findFirst();
458453
}
454+
455+
/**
456+
* Get a module of a {@link Job}
457+
*
458+
* @param moduleName name of the {@link MavenModule}
459+
* @return The {@link MavenModuleWithDetails} selected by the given module name
460+
* @throws java.io.IOException in case of errors.
461+
*
462+
*/
463+
public MavenModuleWithDetails getModule(String moduleName) throws IOException {
464+
return client.get(getUrl() + moduleName, MavenModuleWithDetails.class);
465+
}
459466

460467
/**
461468
* Empty description to be used for {@link #updateDescription(String)} or

jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.offbytwo.jenkins.model;
22

33
import com.offbytwo.jenkins.client.util.EncodingUtils;
4-
import com.offbytwo.jenkins.helper.FunctionalHelper;
54
import com.offbytwo.jenkins.helper.Range;
65
import org.apache.http.HttpStatus;
76
import org.apache.http.client.HttpResponseException;
@@ -10,7 +9,6 @@
109
import java.util.Collections;
1110
import java.util.List;
1211
import java.util.Optional;
13-
import java.util.function.Predicate;
1412

1513
import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT;
1614
import static java.util.stream.Collectors.toList;
@@ -276,11 +274,7 @@ public List<Job> getUpstreamProjects() {
276274
}
277275
}
278276

279-
private static Predicate<MavenBuild> isBuildNumberEqualTo(int buildNumber) {
280-
return build -> build.getNumber() == buildNumber;
281-
}
282-
283-
/**
277+
/**
284278
* @param buildNumber The build you would like to select.
285279
* @return Optional which contains the {@link MavenBuild}.
286280
*/

jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModule.java

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,59 @@
1+
/*
2+
* Copyright (c) 2018 Cosmin Stejerean, Karl Heinz Marbaise, and contributors.
3+
*
4+
* Distributed under the MIT license: http://opensource.org/licenses/MIT
5+
*/
16
package com.offbytwo.jenkins.model;
27

8+
import java.io.IOException;
39
import java.util.List;
4-
10+
/**
11+
*
12+
* @author Karl Heinz Marbaise, Ricardo Zanini, René Scheibe, Jakub Zacek
13+
*/
514
public class MavenModule extends BaseModel {
615

716
private List<MavenModuleRecord> moduleRecords;
17+
private String name;
18+
private String url;
19+
private String color;
20+
private String displayName;
21+
22+
public String getName() {
23+
return name;
24+
}
25+
26+
public void setName(String name) {
27+
this.name = name;
28+
}
29+
30+
public String getUrl() {
31+
return url;
32+
}
33+
34+
public void setUrl(String url) {
35+
this.url = url;
36+
}
37+
38+
public String getColor() {
39+
return color;
40+
}
41+
42+
public void setColor(String color) {
43+
this.color = color;
44+
}
45+
46+
public String getDisplayName() {
47+
return displayName;
48+
}
49+
50+
public void setDisplayName(String displayName) {
51+
this.displayName = displayName;
52+
}
53+
54+
public MavenModuleWithDetails details() throws IOException {
55+
return client.get(url, MavenModuleWithDetails.class);
56+
}
857

958
public List<MavenModuleRecord> getModuleRecords() {
1059
return moduleRecords;
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
/*
2+
* Copyright (c) 2018 Cosmin Stejerean, Karl Heinz Marbaise, and contributors.
3+
*
4+
* Distributed under the MIT license: http://opensource.org/licenses/MIT
5+
*/
6+
package com.offbytwo.jenkins.model;
7+
8+
import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT;
9+
import static java.util.stream.Collectors.toList;
10+
11+
import java.io.IOException;
12+
import java.util.Collections;
13+
import java.util.List;
14+
import java.util.stream.Collectors;
15+
16+
/**
17+
* Model Class for Maven Modules
18+
*
19+
* @author Jakub Zacek
20+
*/
21+
public class MavenModuleWithDetails extends BaseModel {
22+
23+
private List<Build> builds = Collections.emptyList();
24+
private List actions = Collections.emptyList();
25+
private String displayName;
26+
private BuildResult result;
27+
private String url;
28+
private long duration;
29+
private long timestamp;
30+
31+
public List getActions() {
32+
return actions;
33+
}
34+
35+
public void setActions(List actions) {
36+
this.actions = actions;
37+
}
38+
39+
public void setBuilds(List<Build> builds) {
40+
this.builds = builds;
41+
}
42+
43+
public List<Build> getBuilds() {
44+
return builds.stream()
45+
.map(SET_CLIENT(this.getClient()))
46+
.collect(toList());
47+
}
48+
49+
public Build getBuildByNumber(final int buildNumber) {
50+
return builds.stream()
51+
.filter(isBuildNumberEqualTo(buildNumber))
52+
.map(SET_CLIENT(this.getClient()))
53+
.findFirst()
54+
.orElse(Build.BUILD_HAS_NEVER_RUN);
55+
}
56+
57+
public String getDisplayName() {
58+
return displayName;
59+
}
60+
61+
public void setDisplayName(String displayName) {
62+
this.displayName = displayName;
63+
}
64+
65+
public BuildResult getResult() {
66+
return result;
67+
}
68+
69+
public void setResult(BuildResult result) {
70+
this.result = result;
71+
}
72+
73+
public String getUrl() {
74+
return url;
75+
}
76+
77+
public void setUrl(String url) {
78+
this.url = url;
79+
}
80+
81+
public long getTimestamp() {
82+
return timestamp;
83+
}
84+
85+
public void setTimestamp(long timestamp) {
86+
this.timestamp = timestamp;
87+
}
88+
89+
public long getDuration() {
90+
return duration;
91+
}
92+
93+
public void setDuration(long duration) {
94+
this.duration = duration;
95+
}
96+
97+
public String getConsoleOutputText() throws IOException {
98+
return client.get(getUrl() + "/logText/progressiveText");
99+
}
100+
101+
public TestReport getTestReport() throws IOException {
102+
return client.get(this.getUrl() + "/testReport/?depth=1", TestReport.class);
103+
}
104+
105+
}

0 commit comments

Comments
 (0)