Skip to content

Commit 6c9e5b8

Browse files
Merge pull request #99 from jenkinsci/#93-csv-handle
2 parents 7ad7818 + 572d900 commit 6c9e5b8

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

src/main/java/io/jenkins/plugins/reporter/ReportDetails.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.jenkins.plugins.reporter;
22

3+
import com.sun.xml.bind.v2.runtime.output.Encoded;
34
import edu.hm.hafner.echarts.BuildResult;
45
import edu.hm.hafner.echarts.ChartModelConfiguration;
56
import edu.hm.hafner.echarts.JacksonFacade;
@@ -15,6 +16,9 @@
1516
import org.kohsuke.stapler.bind.JavaScriptMethod;
1617

1718
import java.io.IOException;
19+
import java.io.UnsupportedEncodingException;
20+
import java.net.URLDecoder;
21+
import java.net.URLEncoder;
1822
import java.util.*;
1923

2024
public class ReportDetails implements ModelObject {
@@ -202,17 +206,18 @@ private ReportHistory createHistory() {
202206
@SuppressWarnings("unused") // Called by jelly view
203207
public Object getDynamic(final String link, final StaplerRequest request, final StaplerResponse response) {
204208
try {
209+
String decodedLink = URLDecoder.decode(link, "UTF-8");
205210
Item subItem = item.getItems()
206211
.stream()
207-
.filter(i -> Objects.equals(i.getId(), link))
212+
.filter(i -> Objects.equals(i.getId(), decodedLink))
208213
.findFirst()
209214
.orElseThrow(NoSuchElementException::new);
210215

211216
String url = getUrl() + "/" + link;
212-
return new ReportDetails(owner, url, result, Messages.Module_Description(subItem.getName()), subItem,
217+
return new ReportDetails(owner, URLEncoder.encode(url, "UTF-8"), result, Messages.Module_Description(subItem.getName()), subItem,
213218
Optional.of(this));
214219
}
215-
catch (NoSuchElementException ignored) {
220+
catch (NoSuchElementException | UnsupportedEncodingException ignored) {
216221
try {
217222
response.sendRedirect2("../");
218223
}

src/main/java/io/jenkins/plugins/reporter/model/Item.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44
import com.fasterxml.jackson.annotation.JsonInclude;
55
import com.fasterxml.jackson.annotation.JsonProperty;
66
import jline.internal.Nullable;
7+
import org.apache.commons.lang3.StringUtils;
78

89
import java.io.Serializable;
10+
import java.io.UnsupportedEncodingException;
11+
import java.net.URLEncoder;
912
import java.util.LinkedHashMap;
1013
import java.util.List;
1114
import java.util.Map;
@@ -41,6 +44,15 @@ public class Item implements Serializable {
4144
public String getId() {
4245
return id;
4346
}
47+
48+
@JsonIgnore
49+
public String getEncodedId() {
50+
try {
51+
return URLEncoder.encode(getId(), "UTF-8");
52+
} catch (UnsupportedEncodingException e) {
53+
return StringUtils.EMPTY;
54+
}
55+
}
4456

4557
public void setId(String id) {
4658
this.id = id;

src/main/java/io/jenkins/plugins/reporter/model/ItemTableModel.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import io.jenkins.plugins.datatables.TableColumn;
44
import org.apache.commons.text.CaseUtils;
55

6+
import java.io.UnsupportedEncodingException;
7+
import java.net.URLEncoder;
68
import java.util.ArrayList;
79
import java.util.List;
810
import java.util.Map;
@@ -101,7 +103,7 @@ public static class ItemRow {
101103
}
102104

103105
public String getId() {
104-
return item.getId();
106+
return item.getEncodedId();
105107
}
106108

107109
public String getName() {

0 commit comments

Comments
 (0)