Skip to content

Commit c27a335

Browse files
author
Fred Simon
committed
Merge branch 'master' into gradle - WIP tests and compile still fails
Conflicts: build-info-client/src/main/java/org/jfrog/build/client/ClientProperties.java build-info-extractor-gradle/src/main/groovy/org/jfrog/build/ArtifactoryPlugin.groovy build-info-extractor-gradle/src/main/java/org/jfrog/build/ArtifactoryPluginUtils.java build-info-extractor-ivy/src/main/java/org/jfrog/build/util/IvyResolverHelper.java
2 parents 20eff7b + 304f449 commit c27a335

File tree

24 files changed

+1109
-161
lines changed

24 files changed

+1109
-161
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.jfrog.build.api;
2+
3+
/**
4+
* @author Tomer Cohen
5+
*/
6+
public interface ArtifactoryResolutionProperties {
7+
8+
String ARTIFACT_BUILD_ROOT_KEY = "ARTIFACTORY_BUILD_ROOT";
9+
10+
String ARTIFACTORY_BUILD_ROOT_MATRIX_PARAM_KEY = "build.root";
11+
}

build-info-api/src/main/java/org/jfrog/build/api/Build.java

+20
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
*/
1616
package org.jfrog.build.api;
1717

18+
import com.google.common.collect.Lists;
1819
import com.thoughtworks.xstream.annotations.XStreamAlias;
20+
import org.jfrog.build.api.release.Status;
1921

2022
import java.text.SimpleDateFormat;
2123
import java.util.Date;
@@ -58,6 +60,8 @@ public class Build extends BaseBuildBean {
5860
@XStreamAlias(MODULES)
5961
private List<Module> modules;
6062

63+
private List<Status> statuses;
64+
6165
/**
6266
* Returns the version of the build
6367
*
@@ -400,4 +404,20 @@ public void setBuildRetention(BuildRetention buildRetention) {
400404
public BuildRetention getBuildRetention() {
401405
return buildRetention;
402406
}
407+
408+
public List<Status> getStatuses() {
409+
return statuses;
410+
}
411+
412+
public void addStatus(Status status) {
413+
if (statuses == null) {
414+
statuses = Lists.newArrayList();
415+
}
416+
417+
statuses.add(status);
418+
}
419+
420+
public void setStatuses(List<Status> statuses) {
421+
this.statuses = statuses;
422+
}
403423
}

build-info-api/src/main/java/org/jfrog/build/api/builder/BuildInfoBuilder.java

+17-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.jfrog.build.api.BuildType;
2626
import org.jfrog.build.api.LicenseControl;
2727
import org.jfrog.build.api.Module;
28+
import org.jfrog.build.api.release.Status;
2829

2930
import java.text.SimpleDateFormat;
3031
import java.util.Date;
@@ -53,6 +54,7 @@ public class BuildInfoBuilder {
5354
private String parentNumber;
5455
private String vcsRevision;
5556
private List<Module> modules;
57+
private List<Status> statuses;
5658
private Properties properties;
5759
private LicenseControl licenseControl;
5860
private BuildRetention buildRetention;
@@ -94,6 +96,7 @@ public Build build() {
9496
build.setParentName(parentName);
9597
build.setParentNumber(parentNumber);
9698
build.setModules(modules);
99+
build.setStatuses(statuses);
97100
build.setProperties(properties);
98101
build.setVcsRevision(vcsRevision);
99102
build.setLicenseControl(licenseControl);
@@ -279,6 +282,19 @@ public BuildInfoBuilder modules(List<Module> modules) {
279282
return this;
280283
}
281284

285+
public BuildInfoBuilder statuses(List<Status> statuses) {
286+
this.statuses = statuses;
287+
return this;
288+
}
289+
290+
public BuildInfoBuilder addStatus(Status status) {
291+
if (statuses == null) {
292+
statuses = Lists.newArrayList();
293+
}
294+
statuses.add(status);
295+
return this;
296+
}
297+
282298
/**
283299
* Sets the violation notifications of the build
284300
*
@@ -290,7 +306,7 @@ public BuildInfoBuilder licenseControl(LicenseControl licenseControl) {
290306
return this;
291307
}
292308

293-
/**
309+
/**
294310
* Sets the post build retention period
295311
*
296312
* @param licenseControl Build violation recipients.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package org.jfrog.build.api.builder;
2+
3+
import org.jfrog.build.api.Build;
4+
import org.jfrog.build.api.release.Status;
5+
6+
import java.text.SimpleDateFormat;
7+
import java.util.Date;
8+
9+
/**
10+
* @author Noam Y. Tenne
11+
*/
12+
public class StatusBuilder {
13+
14+
private String status;
15+
private String comment;
16+
private String repository;
17+
private String timestamp;
18+
private String user;
19+
private String ciUser;
20+
21+
public StatusBuilder(String status) {
22+
this.status = status;
23+
}
24+
25+
public StatusBuilder comment(String comment) {
26+
this.comment = comment;
27+
return this;
28+
}
29+
30+
public StatusBuilder repository(String repository) {
31+
this.repository = repository;
32+
return this;
33+
}
34+
35+
public StatusBuilder timestamp(String timestamp) {
36+
this.timestamp = timestamp;
37+
return this;
38+
}
39+
40+
public StatusBuilder timestampDate(Date timestampDate) {
41+
if (timestampDate == null) {
42+
throw new IllegalArgumentException("Cannot format a null date.");
43+
}
44+
this.timestamp = new SimpleDateFormat(Build.STARTED_FORMAT).format(timestampDate);
45+
return this;
46+
}
47+
48+
public StatusBuilder user(String user) {
49+
this.user = user;
50+
return this;
51+
}
52+
53+
public StatusBuilder ciUser(String ciUser) {
54+
this.ciUser = ciUser;
55+
return this;
56+
}
57+
58+
public Status build() {
59+
if (status == null) {
60+
throw new IllegalArgumentException("Status must have a type.");
61+
}
62+
if (timestamp == null) {
63+
throw new IllegalArgumentException("Status must have a timestamp.");
64+
}
65+
return new Status(status, comment, repository, timestamp, user, ciUser);
66+
}
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package org.jfrog.build.api.release;
2+
3+
import org.jfrog.build.api.Build;
4+
5+
import java.io.Serializable;
6+
import java.text.ParseException;
7+
import java.text.SimpleDateFormat;
8+
import java.util.Date;
9+
10+
/**
11+
* @author Noam Y. Tenne
12+
*/
13+
public class Status implements Serializable {
14+
15+
public static final String STAGED = "Staged";
16+
public static final String RELEASED = "Released";
17+
public static final String ROLLED_BACK = "Rolled-back";
18+
19+
private String status;
20+
private String comment;
21+
private String repository;
22+
private String timestamp;
23+
private String user;
24+
private String ciUser;
25+
26+
public Status() {
27+
}
28+
29+
public Status(String status, String comment, String repository, String timestamp, String user, String ciUser) {
30+
this.status = status;
31+
this.comment = comment;
32+
this.repository = repository;
33+
this.timestamp = timestamp;
34+
this.user = user;
35+
this.ciUser = ciUser;
36+
}
37+
38+
public String getStatus() {
39+
return status;
40+
}
41+
42+
public void setStatus(String status) {
43+
this.status = status;
44+
}
45+
46+
public String getComment() {
47+
return comment;
48+
}
49+
50+
public void setComment(String comment) {
51+
this.comment = comment;
52+
}
53+
54+
public String getRepository() {
55+
return repository;
56+
}
57+
58+
public void setRepository(String repository) {
59+
this.repository = repository;
60+
}
61+
62+
public String getTimestamp() {
63+
return timestamp;
64+
}
65+
66+
public Date getTimestampDate() {
67+
if (timestamp == null) {
68+
throw new IllegalArgumentException("Cannot parse a null timestamp as a date");
69+
}
70+
SimpleDateFormat format = new SimpleDateFormat(Build.STARTED_FORMAT);
71+
try {
72+
return format.parse(timestamp);
73+
} catch (ParseException e) {
74+
throw new RuntimeException(e);
75+
}
76+
}
77+
78+
public void setTimestamp(String timestamp) {
79+
this.timestamp = timestamp;
80+
}
81+
82+
public String getUser() {
83+
return user;
84+
}
85+
86+
public void setUser(String user) {
87+
this.user = user;
88+
}
89+
90+
public String getCiUser() {
91+
return ciUser;
92+
}
93+
94+
public void setCiUser(String ciUser) {
95+
this.ciUser = ciUser;
96+
}
97+
}

build-info-api/src/test/java/org/jfrog/build/api/BuildTest.java

+24
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
package org.jfrog.build.api;
1818

1919
import com.google.common.collect.Lists;
20+
import org.jfrog.build.api.builder.StatusBuilder;
21+
import org.jfrog.build.api.release.Status;
2022
import org.testng.annotations.Test;
2123

2224
import java.text.ParseException;
@@ -74,6 +76,7 @@ public void testSetters() {
7476
String parentNumber = "5";
7577
String vcsRevision = "2421";
7678
List<Module> modules = Lists.newArrayList();
79+
List<Status> statuses = Lists.newArrayList();
7780
Properties properties = new Properties();
7881

7982
Build build = new Build();
@@ -89,6 +92,7 @@ public void testSetters() {
8992
build.setParentName(parentName);
9093
build.setParentNumber(parentNumber);
9194
build.setModules(modules);
95+
build.setStatuses(statuses);
9296
build.setProperties(properties);
9397
build.setVcsRevision(vcsRevision);
9498

@@ -106,6 +110,8 @@ public void testSetters() {
106110
assertEquals(build.getVcsRevision(), vcsRevision, "Unexpected build vcs revision.");
107111
assertEquals(build.getModules(), modules, "Unexpected build modules.");
108112
assertTrue(build.getModules().isEmpty(), "Build modules list should not have been populated.");
113+
assertEquals(build.getStatuses(), statuses, "Unexpected build statuses.");
114+
assertTrue(build.getStatuses().isEmpty(), "Build statuses list should not have been populated.");
109115
assertEquals(build.getProperties(), properties, "Unexpected build properties.");
110116
assertTrue(build.getProperties().isEmpty(), "Build properties list should not have been populated.");
111117
}
@@ -127,4 +133,22 @@ public void testStartedSetters() throws ParseException {
127133
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(Build.STARTED_FORMAT);
128134
assertEquals(build.getStarted(), simpleDateFormat.format(startedDate), "Unexpected build started.");
129135
}
136+
137+
public void testStatusAddMethod() {
138+
Build build = new Build();
139+
assertNull(build.getStatuses(), "Default status list should be null.");
140+
141+
Status status = new StatusBuilder(Status.RELEASED).repository("bla").timestamp("bla").user("bla").build();
142+
build.addStatus(status);
143+
144+
assertFalse(build.getStatuses().isEmpty(), "Status object should have been added.");
145+
assertEquals(build.getStatuses().get(0), status, "Unexpected status object.");
146+
147+
Status anotherStatus =
148+
new StatusBuilder(Status.RELEASED).repository("bla").timestamp("bla").user("bla").build();
149+
build.addStatus(anotherStatus);
150+
151+
assertEquals(build.getStatuses().size(), 2, "Second status object should have been added.");
152+
assertEquals(build.getStatuses().get(1), anotherStatus, "Unexpected status object.");
153+
}
130154
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.jfrog.build.api;
2+
3+
import org.jfrog.build.api.release.Status;
4+
import org.testng.annotations.Test;
5+
6+
import static org.testng.Assert.assertEquals;
7+
8+
/**
9+
* @author Noam Y. Tenne
10+
*/
11+
@Test
12+
public class StatusTest {
13+
14+
public void testConstructor() {
15+
Status status = new Status(Status.ROLLED_BACK, "momo", "popo", "koko", "jojo", "bobo");
16+
assertEquals(status.getStatus(), Status.ROLLED_BACK, "Unexpected status.");
17+
assertEquals(status.getComment(), "momo", "Unexpected comment.");
18+
assertEquals(status.getRepository(), "popo", "Unexpected repository.");
19+
assertEquals(status.getTimestamp(), "koko", "Unexpected timestamp.");
20+
assertEquals(status.getUser(), "jojo", "Unexpected user.");
21+
assertEquals(status.getCiUser(), "bobo", "Unexpected user.");
22+
}
23+
}

build-info-api/src/test/java/org/jfrog/build/api/builder/BuildInfoBuilderTest.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.jfrog.build.api.BuildAgent;
2323
import org.jfrog.build.api.BuildType;
2424
import org.jfrog.build.api.Module;
25+
import org.jfrog.build.api.release.Status;
2526
import org.testng.annotations.Test;
2627

2728
import java.text.ParseException;
@@ -127,13 +128,19 @@ public void testBuilderAddMethod() {
127128
Module module = new Module();
128129
String propertyKey = "key";
129130
String propertyValue = "value";
131+
Status status = new StatusBuilder("momo").timestampDate(new Date()).build();
130132

131133
Build build = new BuildInfoBuilder("test").number("4").started("test").addModule(module)
132-
.addProperty(propertyKey, propertyValue).build();
134+
.addProperty(propertyKey, propertyValue).addStatus(status).build();
133135
List<Module> modules = build.getModules();
134136
assertFalse(modules.isEmpty(), "A build module should have been added.");
135137
assertEquals(modules.get(0), module, "Unexpected build module.");
138+
136139
assertTrue(build.getProperties().containsKey(propertyKey), "A build property should have been added.");
137140
assertEquals(build.getProperties().get(propertyKey), propertyValue, "Unexpected build property value.");
141+
142+
List<Status> statuses = build.getStatuses();
143+
assertFalse(statuses.isEmpty(), "Expected a status to be added.");
144+
assertEquals(statuses.get(0), status, "Unexpected added status.");
138145
}
139146
}

0 commit comments

Comments
 (0)