Skip to content

Commit

Permalink
HAP-305 - Issue tracker items in release build
Browse files Browse the repository at this point in the history
* Changes in the model
  • Loading branch information
Shay Yaakov committed Jul 1, 2012
1 parent f9ab847 commit b9b96dd
Show file tree
Hide file tree
Showing 9 changed files with 200 additions and 76 deletions.
Expand Up @@ -41,7 +41,4 @@ public interface BuildInfoFields {
String RELEASE_ENABLED = "promotion.enabled";
String RELEASE_COMMENT = "promotion.comment";
String BUILD_ROOT = "build.root";
String BUILD_ISSUE_TRACKER_NAME = "build.issues.tracker.name";
String BUILD_ISSUE_TRACKER_VERSION = "build.issues.tracker.version";
String BUILD_AFFECTED_ISSUES = "build.issues.affected";
}
Expand Up @@ -30,6 +30,7 @@ public interface BuildInfoProperties {
*/
String BUILD_INFO_PROP_PREFIX = BUILD_INFO_PREFIX + "property.";
String BUILD_INFO_LICENSE_CONTROL_PREFIX = BUILD_INFO_PREFIX + "licenseControl.";
String BUILD_INFO_ISSUES_TRACKER_PREFIX = BUILD_INFO_PREFIX + "issues.";

/**
* Prefix for build info properties that are coming from the CI server.
Expand Down
44 changes: 44 additions & 0 deletions build-info-api/src/main/java/org/jfrog/build/api/Issue.java
Expand Up @@ -10,6 +10,7 @@ public class Issue implements Serializable {
private String key;
private String url;
private String summary;
private boolean aggregated;

public Issue() {
}
Expand All @@ -18,6 +19,7 @@ public Issue(String key, String url, String summary) {
this.key = key;
this.url = url;
this.summary = summary;
this.aggregated = false;
}

public String getKey() {
Expand All @@ -43,4 +45,46 @@ public String getSummary() {
public void setSummary(String summary) {
this.summary = summary;
}

public boolean isAggregated() {
return aggregated;
}

public void setAggregated(boolean aggregated) {
this.aggregated = aggregated;
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Issue)) {
return false;
}

Issue that = (Issue) o;

if (key != null ? !key.equals(that.key) : that.key != null) {
return false;
}

if (url != null ? !url.equals(that.url) : that.url != null) {
return false;
}

if (summary != null ? !summary.equals(that.summary) : that.summary != null) {
return false;
}

return true;
}

@Override
public int hashCode() {
int result = (key != null ? key.hashCode() : 0);
result = 31 * result + (url != null ? url.hashCode() : 0);
result = 31 * result + (summary != null ? summary.hashCode() : 0);
return result;
}
}
30 changes: 24 additions & 6 deletions build-info-api/src/main/java/org/jfrog/build/api/Issues.java
@@ -1,17 +1,19 @@
package org.jfrog.build.api;

import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
* @author Noam Y. Tenne
*/
public class Issues implements Serializable {

private IssueTracker tracker;
private List<Issue> affectedIssues;
private boolean aggregateBuildIssues;
private String aggregationBuildStatus;
private Set<Issue> affectedIssues;

public IssueTracker getTracker() {
return tracker;
Expand All @@ -21,18 +23,34 @@ public void setTracker(IssueTracker tracker) {
this.tracker = tracker;
}

public List<Issue> getAffectedIssues() {
public Set<Issue> getAffectedIssues() {
return affectedIssues;
}

public void addIssue(Issue issue) {
if (affectedIssues == null) {
affectedIssues = Lists.newArrayList();
affectedIssues = Sets.newHashSet();
}
affectedIssues.add(issue);
}

public void setAffectedIssues(List<Issue> affectedIssues) {
public void setAffectedIssues(Set<Issue> affectedIssues) {
this.affectedIssues = affectedIssues;
}

public boolean isAggregateBuildIssues() {
return aggregateBuildIssues;
}

public void setAggregateBuildIssues(boolean aggregateBuildIssues) {
this.aggregateBuildIssues = aggregateBuildIssues;
}

public String getAggregationBuildStatus() {
return aggregationBuildStatus;
}

public void setAggregationBuildStatus(String aggregationBuildStatus) {
this.aggregationBuildStatus = aggregationBuildStatus;
}
}
@@ -0,0 +1,14 @@
package org.jfrog.build.api;

/**
* All the issue tracker related fields which exist inside the build info JSON
*
* @author Shay Yaakov
*/
public interface IssuesTrackerFields {
String ISSUES_TRACKER_NAME = "tracker.name";
String ISSUES_TRACKER_VERSION = "tracker.version";
String AFFECTED_ISSUES = "affectedIssues";
String AGGREGATE_BUILD_ISSUES = "aggregateBuildIssues";
String AGGREGATION_BUILD_STATUS = "aggregationBuildStatus";
}
Expand Up @@ -17,8 +17,8 @@

import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.common.io.Closeables;
import org.apache.commons.lang.StringUtils;
import org.jfrog.build.api.Build;
Expand All @@ -30,15 +30,15 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;

import static org.jfrog.build.api.BuildInfoConfigProperties.*;
import static org.jfrog.build.api.BuildInfoFields.*;
import static org.jfrog.build.api.BuildInfoProperties.BUILD_INFO_LICENSE_CONTROL_PREFIX;
import static org.jfrog.build.api.BuildInfoProperties.BUILD_INFO_PREFIX;
import static org.jfrog.build.api.BuildInfoProperties.*;
import static org.jfrog.build.api.IssuesTrackerFields.*;
import static org.jfrog.build.api.LicenseControlFields.*;
import static org.jfrog.build.client.ClientConfigurationFields.*;
import static org.jfrog.build.client.ClientProperties.*;
Expand Down Expand Up @@ -570,9 +570,72 @@ public Boolean isAutoDiscover() {
}
}

public class IssuesTrackerHandler extends PrefixPropertyHandler {
public IssuesTrackerHandler() {
super(root, BUILD_INFO_ISSUES_TRACKER_PREFIX);
}

public String getIssueTrackerName() {
return getStringValue(ISSUES_TRACKER_NAME);
}

public void setIssueTrackerName(String issueTrackerName) {
setStringValue(ISSUES_TRACKER_NAME, issueTrackerName);
}

public String getIssueTrackerVersion() {
return getStringValue(ISSUES_TRACKER_VERSION);
}

public void setIssueTrackerVersion(String issueTrackerVersion) {
setStringValue(ISSUES_TRACKER_VERSION, issueTrackerVersion);
}

public boolean getAggregateBuildIssues() {
return getBooleanValue(AGGREGATE_BUILD_ISSUES);
}

public void setAggregateBuildIssues(boolean aggregateBuildIssues) {
setBooleanValue(AGGREGATE_BUILD_ISSUES, aggregateBuildIssues);
}

public String getAggregationBuildStatus() {
return getStringValue(AGGREGATION_BUILD_STATUS);
}

public void setAggregationBuildStatus(String aggregationBuildStatus) {
setStringValue(AGGREGATION_BUILD_STATUS, aggregationBuildStatus);
}

public String getAffectedIssues() {
return getStringValue(AFFECTED_ISSUES);
}

public void setAffectedIssues(String affectedIssues) {
setStringValue(AFFECTED_ISSUES, affectedIssues);
}

public Set<Issue> getAffectedIssuesSet() {
Set<Issue> affectedIssuesSet = Sets.newHashSet();
String affectedIssues = getStringValue(AFFECTED_ISSUES);
if (StringUtils.isNotBlank(affectedIssues)) {
String[] issuePairs = affectedIssues.split(",");
for (String pair : issuePairs) {
String[] idAndUrl = pair.split(">>");
if (idAndUrl.length == 3) {
affectedIssuesSet.add(new Issue(idAndUrl[0], idAndUrl[1], idAndUrl[2]));
}
}
}
return affectedIssuesSet;
}
}

public class BuildInfoHandler extends PrefixPropertyHandler {
public final LicenseControlHandler licenseControl = new LicenseControlHandler();

public final IssuesTrackerHandler issues = new IssuesTrackerHandler();

private final Predicate<String> buildVariablesPredicate;

public BuildInfoHandler() {
Expand Down Expand Up @@ -754,45 +817,6 @@ public String getBuildRoot() {
return getStringValue(BUILD_ROOT);
}

public String getIssueTrackerName() {
return getStringValue(BUILD_ISSUE_TRACKER_NAME);
}

public void setIssueTrackerName(String issueTrackerName) {
setStringValue(BUILD_ISSUE_TRACKER_NAME, issueTrackerName);
}

public String getIssueTrackerVersion() {
return getStringValue(BUILD_ISSUE_TRACKER_VERSION);
}

public void setIssueTrackerVersion(String issueTrackerVersion) {
setStringValue(BUILD_ISSUE_TRACKER_VERSION, issueTrackerVersion);
}

public String getAffectedIssues() {
return getStringValue(BUILD_AFFECTED_ISSUES);
}

public void setAffectedIssues(String affectedIssues) {
setStringValue(BUILD_AFFECTED_ISSUES, affectedIssues);
}

public List<Issue> getAffectedIssuesList() {
List<Issue> affectedIssuesList = Lists.newArrayList();
String affectedIssues = getStringValue(BUILD_AFFECTED_ISSUES);
if (StringUtils.isNotBlank(affectedIssues)) {
String[] issuePairs = affectedIssues.split(",");
for (String pair : issuePairs) {
String[] idAndUrl = pair.split(">>");
if (idAndUrl.length == 3) {
affectedIssuesList.add(new Issue(idAndUrl[0], idAndUrl[1], idAndUrl[2]));
}
}
}
return affectedIssuesList;
}

public void addBuildVariables(Map<String, String> buildVariables) {
for (Map.Entry<String, String> entry : buildVariables.entrySet()) {
addBuildVariable(entry.getKey(), entry.getValue());
Expand Down
Expand Up @@ -186,13 +186,15 @@ public Build extract(Project rootProject, BuildInfoExtractorSpec spec) {
.ciUser(principal).user(artifactoryPrincipal).build());
}

String issueTrackerName = clientConf.info.getIssueTrackerName();
String issueTrackerName = clientConf.info.issues.getIssueTrackerName();
if (StringUtils.isNotBlank(issueTrackerName)) {
Issues issues = new Issues();
issues.setTracker(new IssueTracker(issueTrackerName, clientConf.info.getIssueTrackerVersion()));
List<Issue> affectedIssuesList = clientConf.info.getAffectedIssuesList();
if (!affectedIssuesList.isEmpty()) {
issues.setAffectedIssues(affectedIssuesList);
issues.setAggregateBuildIssues(clientConf.info.issues.getAggregateBuildIssues());
issues.setAggregationBuildStatus(clientConf.info.issues.getAggregationBuildStatus());
issues.setTracker(new IssueTracker(issueTrackerName, clientConf.info.issues.getIssueTrackerVersion()));
Set<Issue> affectedIssuesSet = clientConf.info.issues.getAffectedIssuesSet();
if (!affectedIssuesSet.isEmpty()) {
issues.setAffectedIssues(affectedIssuesSet);
}
bib.issues(issues);
}
Expand Down

0 comments on commit b9b96dd

Please sign in to comment.