/
JSONView.java
85 lines (72 loc) · 2.99 KB
/
JSONView.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.phrydde.teamcity;
import com.intellij.openapi.diagnostic.Logger;
import org.springframework.web.servlet.View;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
public class JSONView implements View {
final Logger LOG = Logger.getInstance(JSONView.class.getName());
public String getContentType() {
return "application/json";
}
public void render(Map map, HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
StringBuilder data = new StringBuilder();
String[] jsonp = request.getParameterValues("jsonp");
if (jsonp != null) {
data.append(jsonp[0]).append("(");
}
data.append("{")
.append("\"assignedLabels\":[{}],")
.append("\"mode\":\"NORMAL\",")
.append("\"nodeDescription\":\"TeamCity Hudson clone\",")
.append("\"nodeName\":\"\",")
.append("\"numExecutors\":").append(map.get("numExecutors")).append(",")
.append("\"projectCount\":").append(map.get("projectCount")).append(",")
.append("\"description\":null,")
.append("\"jobs\":[{");
for (int i = 0; i < (Integer)map.get("projectCount"); i++) {
HashMap project = (HashMap)map.get("project-" + String.valueOf(i));
if (project == null) {
LOG.error("Got a null project! project-" + String.valueOf(i));
}
data.append("\"name\":\"").append(project.get("name")).append("\",");
data.append("\"url\":\"").append(project.get("url")).append("\",");
data.append("\"color\":\"").append(project.get("color")).append("\",");
}
// TODO: Loop through and fill this in
// "name":"Broken Build",
// "url":"http://localhost:8080/job/Broken%20Build/",
// "color":"red"
// },
// {
// "name":"Clean Build",
// "url":"http://localhost:8080/job/Clean%20Build/",
// "color":"blue"
// }],
data.append("}],")
.append("\"overallLoad\":{},")
.append("\"primaryView\":{")
.append("\"name\":\"All\",")
.append("\"url\":\"").append(map.get("url")).append("\"")
.append(")},")
.append("\"slaveAgentPort\":0,")
.append("\"useCrumbs\":false,")
.append("\"useSecurity\":false,")
.append("\"views\":[{")
.append("\"name\":\"All\",")
.append("\"url\":\"").append(map.get("url")).append("\"")
.append(")}]")
.append("}");
if (jsonp != null) {
data.append(")\n");
} else {
data.append("\n");
}
PrintWriter writer = response.getWriter();
writer.write(data.toString());
}
}