Skip to content

Commit 4af4b79

Browse files
authored
Merge pull request #41 from tomzo/fix-repo-level-pattern
fix repo-level configuration not being applied #40
2 parents b395da0 + 4417dbf commit 4af4b79

File tree

3 files changed

+80
-10
lines changed

3 files changed

+80
-10
lines changed

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,20 @@ private GoPluginApiResponse handleGetIconRequest() {
9494
}
9595
}
9696

97-
String getPipelinePattern() {
97+
String getPipelinePattern(ParsedRequest parseDirectoryReq) {
98+
String configRepoLevelPattern = parseDirectoryReq.getConfigurationKey(PLUGIN_SETTINGS_PIPELINE_PATTERN);
99+
if(!isBlank(configRepoLevelPattern))
100+
return configRepoLevelPattern;
98101
if (null != settings && !isBlank(settings.getPipelinePattern())) {
99102
return settings.getPipelinePattern();
100103
}
101104
return DEFAULT_PIPELINE_PATTERN;
102105
}
103106

104-
String getEnvironmentPattern() {
107+
String getEnvironmentPattern(ParsedRequest parseDirectoryReq) {
108+
String configRepoLevelPattern = parseDirectoryReq.getConfigurationKey(PLUGIN_SETTINGS_ENVIRONMENT_PATTERN);
109+
if(!isBlank(configRepoLevelPattern))
110+
return configRepoLevelPattern;
105111
if (null != settings && !isBlank(settings.getEnvironmentPattern())) {
106112
return settings.getEnvironmentPattern();
107113
}
@@ -147,8 +153,8 @@ private Map<String, Object> createField(String displayName, String defaultValue,
147153

148154
private GoPluginApiResponse handleParseContentRequest(GoPluginApiRequest request) {
149155
return handlingErrors(() -> {
150-
FilenameMatcher matcher = new FilenameMatcher(getPipelinePattern(), getEnvironmentPattern());
151156
ParsedRequest parsed = ParsedRequest.parse(request);
157+
FilenameMatcher matcher = new FilenameMatcher(getPipelinePattern(parsed), getEnvironmentPattern(parsed));
152158
Map<String, String> contents = parsed.getParam("contents");
153159

154160
JsonConfigCollection result = new JsonConfigCollection();
@@ -201,7 +207,7 @@ private GoPluginApiResponse handleParseDirectoryRequest(GoPluginApiRequest reque
201207
ConfigDirectoryScanner scanner = new AntDirectoryScanner();
202208

203209
ConfigDirectoryParser configDirectoryParser = new ConfigDirectoryParser(
204-
scanner, parser, getPipelinePattern(), getEnvironmentPattern()
210+
scanner, parser, getPipelinePattern(parsed), getEnvironmentPattern(parsed)
205211
);
206212

207213
JsonConfigCollection config = configDirectoryParser.parseDirectory(baseDir);

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,6 @@ String getConfigurationKey(String keyName) {
9898

9999
if (key.equals(keyName)) {
100100
value = configObj.getAsJsonPrimitive("value").getAsString();
101-
} else {
102-
throw new RequestParseException(format(INVALID_REPO_CONFIGURATION_KEY, key));
103101
}
104102
}
105103
}

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

Lines changed: 70 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,14 +112,22 @@ public void shouldConsumePluginSettingsOnConfigChangeRequest() throws UnhandledR
112112
body.put(PLUGIN_SETTINGS_ENVIRONMENT_PATTERN, "*.foo.envs.json");
113113
request.setRequestBody(JSONUtils.toJSON(body));
114114

115-
assertEquals(DEFAULT_PIPELINE_PATTERN, plugin.getPipelinePattern());
116-
assertEquals(DEFAULT_ENVIRONMENT_PATTERN, plugin.getEnvironmentPattern());
115+
DefaultGoPluginApiRequest parseDirectoryRequest = new DefaultGoPluginApiRequest("configrepo", "1.0", "parse-directory");
116+
String requestBody = "{\n" +
117+
" \"directory\":\"emptyDir\",\n" +
118+
" \"configurations\":[]\n" +
119+
"}";
120+
parseDirectoryRequest.setRequestBody(requestBody);
121+
ParsedRequest parsed = ParsedRequest.parse(parseDirectoryRequest);
122+
123+
assertEquals(DEFAULT_PIPELINE_PATTERN, plugin.getPipelinePattern(parsed));
124+
assertEquals(DEFAULT_ENVIRONMENT_PATTERN, plugin.getEnvironmentPattern(parsed));
117125

118126
GoPluginApiResponse response = plugin.handle(request);
119127

120128
assertThat(response.responseCode(), is(SUCCESS_RESPONSE_CODE));
121-
assertEquals("*.foo.pipes.json", plugin.getPipelinePattern());
122-
assertEquals("*.foo.envs.json", plugin.getEnvironmentPattern());
129+
assertEquals("*.foo.pipes.json", plugin.getPipelinePattern(parsed));
130+
assertEquals("*.foo.envs.json", plugin.getEnvironmentPattern(parsed));
123131
}
124132

125133

@@ -157,6 +165,64 @@ public void shouldContainPipelinePatternInResponseToGetConfigurationRequest() th
157165
assertThat(pipelinePatternConfigAsJsonObject.get("display-order").getAsInt(), is(0));
158166
}
159167

168+
@Test
169+
public void getPipelinePatternShouldReturnValueAtConfigRepoLevelIfDefined() {
170+
DefaultGoPluginApiRequest parseDirectoryRequest = new DefaultGoPluginApiRequest("configrepo", "1.0", "parse-directory");
171+
String requestBody = "{\n" +
172+
" \"directory\":\"emptyDir\",\n" +
173+
" \"configurations\":[" +
174+
"{" +
175+
"\"key\" : \"pipeline_pattern\"," +
176+
"\"value\" : \"**/*.goprodpipeline.json\" " +
177+
"}" +
178+
"]\n" +
179+
"}";
180+
parseDirectoryRequest.setRequestBody(requestBody);
181+
ParsedRequest parsed = ParsedRequest.parse(parseDirectoryRequest);
182+
String pattern = plugin.getPipelinePattern(parsed);
183+
assertThat(pattern, is("**/*.goprodpipeline.json"));
184+
}
185+
186+
@Test
187+
public void getEnvironmentPatternShouldReturnValueAtConfigRepoLevelIfDefined() {
188+
DefaultGoPluginApiRequest parseDirectoryRequest = new DefaultGoPluginApiRequest("configrepo", "1.0", "parse-directory");
189+
String requestBody = "{\n" +
190+
" \"directory\":\"emptyDir\",\n" +
191+
" \"configurations\":[" +
192+
"{" +
193+
"\"key\" : \"environment_pattern\"," +
194+
"\"value\" : \"**/*.goprodenvironment.json\" " +
195+
"}" +
196+
"]\n" +
197+
"}";
198+
parseDirectoryRequest.setRequestBody(requestBody);
199+
ParsedRequest parsed = ParsedRequest.parse(parseDirectoryRequest);
200+
String pattern = plugin.getEnvironmentPattern(parsed);
201+
assertThat(pattern, is("**/*.goprodenvironment.json"));
202+
}
203+
204+
@Test
205+
public void getEnvironmentPatternShouldReturnValueAtConfigRepoLevelIfBothPatternsDefined() {
206+
DefaultGoPluginApiRequest parseDirectoryRequest = new DefaultGoPluginApiRequest("configrepo", "1.0", "parse-directory");
207+
String requestBody = "{\n" +
208+
" \"directory\":\"emptyDir\",\n" +
209+
" \"configurations\":[" +
210+
"{" +
211+
"\"key\" : \"environment_pattern\"," +
212+
"\"value\" : \"**/*.goprodenvironment.json\" " +
213+
"}," +
214+
"{" +
215+
"\"key\" : \"pipeline_pattern\"," +
216+
"\"value\" : \"**/*.goprodpipeline.json\" " +
217+
"}" +
218+
"]\n" +
219+
"}";
220+
parseDirectoryRequest.setRequestBody(requestBody);
221+
ParsedRequest parsed = ParsedRequest.parse(parseDirectoryRequest);
222+
String pattern = plugin.getEnvironmentPattern(parsed);
223+
assertThat(pattern, is("**/*.goprodenvironment.json"));
224+
}
225+
160226
private JsonObject getJsonObjectFromResponse(GoPluginApiResponse response) {
161227
String responseBody = response.responseBody();
162228
return parser.parse(responseBody).getAsJsonObject();

0 commit comments

Comments
 (0)