Skip to content

Commit 8d6d4af

Browse files
committed
update plugin to match with refactored extension point
1 parent dbb7d17 commit 8d6d4af

File tree

7 files changed

+63
-115
lines changed

7 files changed

+63
-115
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222

2323
<groupId>com.thoughtworks.go</groupId>
2424
<artifactId>json-config-plugin</artifactId>
25-
<version>0.1</version>
25+
<version>0.2</version>
2626
<packaging>jar</packaging>
2727

2828
<properties>
2929
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
30-
<go.target.version>15.2.0</go.target.version>
30+
<go.target.version>16.1.0</go.target.version>
3131
<go.version>${project.version}</go.version>
3232
<plugin.version>${project.version}</plugin.version>
3333
</properties>

src/com.tw.go.config.json/ConfigDirectoryParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ else if(env.equals(new JsonObject()))
4343
errors.add(error);
4444
}
4545
else
46-
config.addEnvironment(env);
46+
config.addEnvironment(env,environmentFile);
4747
}
4848
catch (JsonParseException parseException)
4949
{
@@ -72,7 +72,7 @@ else if(pipe.equals(new JsonObject()))
7272
errors.add(error);
7373
}
7474
else
75-
config.addPipeline(pipe);
75+
config.addPipeline(pipe,pipelineFile);
7676
}
7777
catch (JsonParseException parseException)
7878
{

src/com.tw.go.config.json/JsonConfigCollection.java

Lines changed: 14 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6,85 +6,42 @@
66
import com.google.gson.JsonPrimitive;
77

88
public class JsonConfigCollection {
9+
private static final int TARGET_VERSION = 1;
10+
911
private JsonObject mainObject = new JsonObject();
1012
private JsonArray environments = new JsonArray();
11-
private JsonArray groups = new JsonArray();
13+
private JsonArray pipelines = new JsonArray();
14+
private JsonArray errors = new JsonArray();
1215

1316
public JsonConfigCollection()
1417
{
18+
mainObject.add("target_version",new JsonPrimitive(TARGET_VERSION));
1519
mainObject.add("environments",environments);
16-
mainObject.add("groups",groups);
20+
mainObject.add("pipelines",pipelines);
21+
mainObject.add("errors",errors);
1722
}
1823

1924
protected JsonArray getEnvironments()
2025
{
2126
return environments;
2227
}
2328

24-
public void addEnvironment(JsonElement environment) {
29+
public void addEnvironment(JsonElement environment,String location) {
2530
environments.add(environment);
26-
}
27-
public void addGroup(JsonElement group) {
28-
groups.add(group);
29-
}
30-
31-
protected JsonArray getOrCreateDefaultGroupPipelines()
32-
{
33-
return getOrCreateGroupPipelines("");
34-
}
35-
36-
protected JsonArray getOrCreateGroupPipelines(String groupName) {
37-
return getOrCreateGroup(groupName).getAsJsonArray("pipelines");
31+
environment.getAsJsonObject().add("location",new JsonPrimitive(location));
3832
}
3933

4034
public JsonObject getJsonObject()
4135
{
4236
return mainObject;
4337
}
4438

45-
public void addPipeline(JsonElement pipeline) {
46-
JsonObject pipelineObject = pipeline.getAsJsonObject();
47-
JsonPrimitive groupMember = pipelineObject.getAsJsonPrimitive("group");
48-
if(groupMember == null)
49-
getOrCreateDefaultGroupPipelines().add(pipeline);
50-
else
51-
{
52-
String groupName = groupMember.getAsString();
53-
getOrCreateGroupPipelines(groupName).add(pipeline);
54-
}
55-
}
56-
57-
protected JsonObject getOrCreateGroup(String group) {
58-
59-
JsonObject groupObject = tryFindGroup(group);
60-
if(groupObject == null)
61-
{
62-
groupObject = createGroup(group);
63-
}
64-
65-
return groupObject;
66-
}
67-
68-
private JsonObject createGroup(String group) {
69-
JsonObject groupObject;
70-
groupObject = new JsonObject();
71-
groupObject.addProperty("name",group);
72-
JsonArray pipelines = new JsonArray();
73-
groupObject.add("pipelines",pipelines);
74-
groups.add(groupObject);
75-
return groupObject;
39+
public void addPipeline(JsonElement pipeline,String location) {
40+
pipelines.add(pipeline);
41+
pipeline.getAsJsonObject().add("location",new JsonPrimitive(location));
7642
}
7743

78-
private JsonObject tryFindGroup(String group) {
79-
JsonObject groupObject = null;
80-
for(JsonElement e : groups)
81-
{
82-
JsonObject asJsonObject = e.getAsJsonObject();
83-
if(asJsonObject.getAsJsonPrimitive("name").getAsString().equals(group))
84-
{
85-
groupObject = asJsonObject;
86-
}
87-
}
88-
return groupObject;
44+
public JsonArray getPipelines() {
45+
return pipelines;
8946
}
9047
}

src/com.tw.go.config.json/JsonConfigPlugin.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,16 +149,14 @@ private GoPluginApiResponse handleParseDirectoryRequest(GoPluginApiRequest reque
149149
scanner,parser, pipelinePattern, environmentPattern);
150150
JsonConfigCollection config = configDirectoryParser.parseDirectory(baseDir);
151151

152-
JsonObject configJsonObject = config.getJsonObject();
153-
JsonObject responseJsonObject = new JsonObject();
154-
responseJsonObject.add("partialConfig",configJsonObject);
152+
JsonObject responseJsonObject = config.getJsonObject();
155153

156154
return DefaultGoPluginApiResponse.success(gson.toJson(responseJsonObject));
157155
}
158156
catch (ConfigDirectoryParseException e) {
159157
LOGGER.warn(String.format("%s errors occurred while parsing configuration repository.",e.getErrors().size(), e));
160158
JsonObject responseJsonObject = new JsonObject();
161-
responseJsonObject.add("pluginErrors", toJsonArray(e.getErrors()));
159+
responseJsonObject.add("errors", toJsonArray(e.getErrors()));
162160
return DefaultGoPluginApiResponse.success(gson.toJson(responseJsonObject));
163161
}
164162
catch (Exception e) {
@@ -168,7 +166,7 @@ private GoPluginApiResponse handleParseDirectoryRequest(GoPluginApiRequest reque
168166
JsonObject exceptionAsJson = new JsonObject();
169167
exceptionAsJson.addProperty("message",e.getMessage());
170168
errors.add(exceptionAsJson);
171-
responseJsonObject.add("pluginErrors", errors);
169+
responseJsonObject.add("errors", errors);
172170
return DefaultGoPluginApiResponse.error(gson.toJson(responseJsonObject));
173171
}
174172
}

test/com.tw.go.config.json/ConfigDirectoryParserTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void shouldAppendPipelineFromDirectory() throws Exception
7171
{
7272
createFileWithContent("pipe1.gopipeline.json", this.pipe1String);
7373
JsonConfigCollection result = parser.parseDirectory(directory);
74-
assertThat(result.getOrCreateDefaultGroupPipelines().size(), is(1));
74+
assertThat(result.getPipelines().size(), is(1));
7575
}
7676
@Test
7777
public void shouldThrowErrorsWithLocationWhenInvalidContent() throws Exception

test/com.tw.go.config.json/JsonConfigCollectionTest.java

Lines changed: 12 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.google.gson.JsonArray;
44
import com.google.gson.JsonObject;
5+
import com.google.gson.JsonPrimitive;
56
import org.junit.Before;
67
import org.junit.Test;
78

@@ -37,67 +38,34 @@ public void SetUp()
3738
}
3839

3940
@Test
40-
public void shouldReturnEnvironmentsArrayInJsonObjectWhenEmpty()
41+
public void shouldReturnTargetVersion()
4142
{
4243
JsonObject jsonObject = jsonCollection.getJsonObject();
43-
assertThat(jsonObject.get("environments") instanceof JsonArray,is(true));
44-
assertThat(jsonObject.getAsJsonArray("environments"), is(new JsonArray()));
44+
assertThat(jsonObject.get("target_version") instanceof JsonPrimitive,is(true));
45+
assertThat(jsonObject.getAsJsonPrimitive("target_version").getAsInt(), is(1));
4546
}
4647

4748
@Test
48-
public void shouldReturnGroupsArrayInJsonObjectWhenEmpty()
49+
public void shouldReturnEnvironmentsArrayInJsonObjectWhenEmpty()
4950
{
5051
JsonObject jsonObject = jsonCollection.getJsonObject();
51-
assertThat(jsonObject.get("groups") instanceof JsonArray,is(true));
52-
assertThat(jsonObject.getAsJsonArray("groups"), is(new JsonArray()));
52+
assertThat(jsonObject.get("environments") instanceof JsonArray,is(true));
53+
assertThat(jsonObject.getAsJsonArray("environments"), is(new JsonArray()));
5354
}
5455

5556
@Test
56-
public void shouldAddPipelinesToDefaultGroup()
57+
public void shouldAppendPipelinesToPipelinesCollection()
5758
{
58-
jsonCollection.addPipeline(pipe1);
59-
assertThat(jsonCollection.getOrCreateDefaultGroupPipelines().size(), is(1));
60-
}
61-
@Test
62-
public void shouldAppendDefaultGroupToGroupsInJsonObject()
63-
{
64-
jsonCollection.addPipeline(pipe1);
59+
jsonCollection.addPipeline(pipe1,"pipe1.json");
60+
jsonCollection.addPipeline(pipe2,"pipe2.json");
6561
JsonObject jsonObject = jsonCollection.getJsonObject();
66-
assertThat(jsonObject.getAsJsonArray("groups").size(),is(1));
67-
}
68-
@Test
69-
public void shouldAppendOnlyOnceDefaultGroupToGroupsInJsonObjectWhen2PipelinesAdded()
70-
{
71-
jsonCollection.addPipeline(pipe1);
72-
jsonCollection.addPipeline(pipe2);
73-
JsonObject jsonObject = jsonCollection.getJsonObject();
74-
assertThat(jsonObject.getAsJsonArray("groups").size(),is(1));
75-
}
76-
@Test
77-
public void shouldAddPipelinesToNonDefaultGroupWhenGroupProperty()
78-
{
79-
jsonCollection.addPipeline(pipeInGroup);
80-
JsonArray pipelines = jsonCollection.getOrCreateGroupPipelines("mygroup");
81-
assertThat(pipelines.size(),is(1));
82-
}
83-
84-
@Test
85-
public void shouldReturnPipelinesInDefaultGroupInJsonObject()
86-
{
87-
jsonCollection.addPipeline(pipe1);
88-
jsonCollection.addPipeline(pipe2);
89-
JsonObject jsonObject = jsonCollection.getJsonObject();
90-
91-
JsonArray pipelinesInDefault = jsonObject.getAsJsonArray("groups").get(0).getAsJsonObject().getAsJsonArray("pipelines");
92-
assertThat(pipelinesInDefault.size(),is(2));
93-
assertThat(pipelinesInDefault,hasItem(pipe1));
94-
assertThat(pipelinesInDefault,hasItem(pipe2));
62+
assertThat(jsonObject.getAsJsonArray("pipelines").size(),is(2));
9563
}
9664

9765
@Test
9866
public void shouldReturnEnvironmentsInJsonObject()
9967
{
100-
jsonCollection.addEnvironment(devEnv);
68+
jsonCollection.addEnvironment(devEnv,"dev.json");
10169
JsonObject jsonObject = jsonCollection.getJsonObject();
10270
assertThat(jsonObject.getAsJsonArray("environments").size(),is(1));
10371
}

test/com.tw.go.config.json/JsonConfigPluginTest.java

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.tw.go.config.json;
22

3-
import com.google.gson.Gson;
4-
import com.google.gson.JsonElement;
5-
import com.google.gson.JsonObject;
6-
import com.google.gson.JsonParser;
3+
import com.google.gson.*;
74
import com.thoughtworks.go.plugin.api.GoApplicationAccessor;
85
import com.thoughtworks.go.plugin.api.exceptions.UnhandledRequestTypeException;
96
import com.thoughtworks.go.plugin.api.request.DefaultGoPluginApiRequest;
@@ -19,7 +16,9 @@
1916

2017
import java.io.File;
2118
import java.io.IOException;
19+
import java.io.StringReader;
2220

21+
import static junit.framework.Assert.assertTrue;
2322
import static junit.framework.TestCase.assertNull;
2423
import static org.hamcrest.core.Is.is;
2524
import static org.junit.Assert.assertNotNull;
@@ -210,4 +209,30 @@ public void shouldRespondSuccessToParseDirectoryRequestWhenPluginHasConfiguratio
210209
verify(goAccessor,times(1)).submit(any(GoApiRequest.class));
211210
assertThat(response.responseCode(), is(DefaultGoPluginApiResponse.SUCCESS_RESPONSE_CODE));
212211
}
212+
213+
@Test
214+
public void shouldContainValidFieldsInResponseMessage() throws UnhandledRequestTypeException
215+
{
216+
GoApiResponse settingsResponse = DefaultGoApiResponse.success("{}");
217+
when(goAccessor.submit(any(GoApiRequest.class))).thenReturn(settingsResponse);
218+
219+
DefaultGoPluginApiRequest parseDirectoryRequest = new DefaultGoPluginApiRequest("configrepo","1.0","parse-directory");
220+
String requestBody = "{\n" +
221+
" \"directory\":\"emptyDir\",\n" +
222+
" \"configurations\":[]\n" +
223+
"}";
224+
parseDirectoryRequest.setRequestBody(requestBody);
225+
226+
GoPluginApiResponse response = plugin.handle(parseDirectoryRequest);
227+
228+
assertThat(response.responseCode(), is(DefaultGoPluginApiResponse.SUCCESS_RESPONSE_CODE));
229+
final JsonParser parser = new JsonParser();
230+
JsonElement responseObj = parser.parse(response.responseBody());
231+
assertTrue(responseObj.isJsonObject());
232+
JsonObject obj = responseObj.getAsJsonObject();
233+
assertTrue(obj.has("errors"));
234+
assertTrue(obj.has("pipelines"));
235+
assertTrue(obj.has("environments"));
236+
assertTrue(obj.has("target_version"));
237+
}
213238
}

0 commit comments

Comments
 (0)