Skip to content

Commit dcb7244

Browse files
committed
#59 upgrade to 6.0 api, use optional settings properly
1 parent df80c2f commit dcb7244

File tree

3 files changed

+89
-69
lines changed

3 files changed

+89
-69
lines changed

src/main/java/com/trimble/tekla/TeamcityPullrequestEventListener.java

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.trimble.tekla.teamcity.TeamcityLogger;
3535
import java.util.ArrayList;
3636
import java.util.HashSet;
37+
import java.util.Optional;
3738
import java.util.Set;
3839

3940
@Named
@@ -59,12 +60,16 @@ public TeamcityPullrequestEventListener(
5960
public void onPullRequestOpenedEvent(final PullRequestOpenedEvent event) throws IOException, JSONException {
6061
final PullRequest pr = event.getPullRequest();
6162
final Repository repo = pr.getFromRef().getRepository();
62-
final Settings settings = this.settingsService.getSettings(repo).get();
63+
final Optional<Settings> settings = this.settingsService.getSettings(repo);
64+
65+
if(!settings.isPresent()) {
66+
return;
67+
}
6368

6469
try {
6570
TriggerBuildFromPullRequest(pr, false);
6671
} catch (final IOException | JSONException ex) {
67-
TeamcityLogger.logMessage(settings, "PullRequest Opened Event Failed: " + ex.getMessage());
72+
TeamcityLogger.logMessage(settings.get(), "PullRequest Opened Event Failed: " + ex.getMessage());
6873
}
6974
}
7075

@@ -73,13 +78,18 @@ public void onPullRequestParticipantsUpdatedEvent(final PullRequestParticipantsU
7378
final PullRequest pr = event.getPullRequest();
7479
final Set<PullRequestParticipant> reviewers = pr.getReviewers();
7580
final Repository repo = pr.getFromRef().getRepository();
76-
final Settings settings = this.settingsService.getSettings(repo).get();
81+
final Optional<Settings> settings = this.settingsService.getSettings(repo);
82+
83+
if(!settings.isPresent()) {
84+
return;
85+
}
86+
7787
if (event.getAddedParticipants().size() > 0 && reviewers.size() > 0) {
7888
// trigger only when number of participations is 2 or higher (author + reviewer)
7989
try {
8090
TriggerBuildFromPullRequest(event.getPullRequest(), true);
8191
} catch (final IOException | JSONException ex) {
82-
TeamcityLogger.logMessage(settings, "PullRequest Reviwer update event failed: " + ex.getMessage());
92+
TeamcityLogger.logMessage(settings.get(), "PullRequest Reviwer update event failed: " + ex.getMessage());
8393
}
8494
}
8595
}
@@ -95,27 +105,34 @@ public void onPullRequestRescoped(final PullRequestRescopedEvent event) throws I
95105

96106
final PullRequest pr = event.getPullRequest();
97107
final Repository repo = pr.getFromRef().getRepository();
98-
final Settings settings = this.settingsService.getSettings(repo).get();
99-
108+
final Optional<Settings> settings = this.settingsService.getSettings(repo);
109+
if(!settings.isPresent()) {
110+
return;
111+
}
100112

101113
try {
102-
TeamcityLogger.logMessage(settings, "Run PullRequest Rescoped Event : " + pr.getFromRef().getDisplayId());
114+
TeamcityLogger.logMessage(settings.get(), "Run PullRequest Rescoped Event : " + pr.getFromRef().getDisplayId());
103115
TriggerBuildFromPullRequest(pr, false);
104116
} catch (final IOException | JSONException ex) {
105-
TeamcityLogger.logMessage(settings, "PullRequest Rescoped Event Failed: " + ex.getMessage() + " " + pr.getFromRef().getDisplayId());
117+
TeamcityLogger.logMessage(settings.get(), "PullRequest Rescoped Event Failed: " + ex.getMessage() + " " + pr.getFromRef().getDisplayId());
106118
}
107119
}
108120

109121
private void TriggerBuildFromPullRequest(final PullRequest pr, Boolean UpdatedReviewers) throws IOException, JSONException {
110122
final Repository repo = pr.getFromRef().getRepository();
111-
final Settings settings = this.settingsService.getSettings(repo).get();
123+
final Optional<Settings> settings = this.settingsService.getSettings(repo);
124+
125+
if(!settings.isPresent()) {
126+
return;
127+
}
128+
112129
final String password = this.connectionSettings.getPassword(pr.getFromRef().getRepository());
113130
// has one reviewer
114131
final Boolean areParticipants = !pr.getReviewers().isEmpty();
115132
final TeamcityConfiguration conf
116133
= new TeamcityConfiguration(
117-
settings.getString("teamCityUrl"),
118-
settings.getString("teamCityUserName"),
134+
settings.get().getString("teamCityUrl"),
135+
settings.get().getString("teamCityUserName"),
119136
password);
120137

121138
final String branch = pr.getFromRef().getId();

src/main/java/com/trimble/tekla/WebhookIsEnabledCondition.java

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.atlassian.plugin.PluginParseException;
1818
import com.atlassian.plugin.web.Condition;
1919
import com.trimble.tekla.pojo.Trigger;
20+
import java.util.Optional;
2021
import java.util.regex.Matcher;
2122
import java.util.regex.Pattern;
2223
import javax.servlet.http.HttpServletRequest;
@@ -57,32 +58,35 @@ public boolean shouldDisplay(final Map<String, Object> context) {
5758
if (repository == null) {
5859
return false;
5960
}
60-
final RepositoryHook hook = this.settingsService.getRepositoryHook(repository);
61-
final Settings settings = this.settingsService.getSettings(repository).get();
62-
63-
if (settings == null || hook == null || !hook.isEnabled()) {
64-
return false;
65-
}
66-
final PullRequest pullrequest = getPullRequest(context, repository);
67-
if (pullrequest == null) {
68-
return false;
69-
}
61+
try {
62+
final RepositoryHook hook = this.settingsService.getRepositoryHook(repository);
63+
final Optional<Settings> settings = this.settingsService.getSettings(repository);
64+
if(!settings.isPresent()) {
65+
return false;
66+
}
67+
68+
if (hook == null || !hook.isEnabled()) {
69+
return false;
70+
}
71+
final PullRequest pullrequest = getPullRequest(context, repository);
72+
if (pullrequest == null) {
73+
return false;
74+
}
7075

71-
final String repositoryTriggersJson = settings.getString(Field.REPOSITORY_TRIGGERS_JSON, StringUtils.EMPTY);
72-
if (repositoryTriggersJson.isEmpty()) {
73-
return false;
74-
}
76+
final String repositoryTriggersJson = settings.get().getString(Field.REPOSITORY_TRIGGERS_JSON, StringUtils.EMPTY);
77+
if (repositoryTriggersJson.isEmpty()) {
78+
return false;
79+
}
7580

76-
// check if builds are configured
77-
final PullRequestRef ref = pullrequest.getFromRef();
78-
final String branch = ref.getId();
81+
// check if builds are configured
82+
final PullRequestRef ref = pullrequest.getFromRef();
83+
final String branch = ref.getId();
7984

80-
try {
8185
final Trigger[] configurations = Trigger.GetBuildConfigurationsFromBranch(repositoryTriggersJson, branch);
8286
if (configurations.length > 0) {
8387
return true;
8488
}
85-
} catch (final IOException ex) {
89+
} catch (final Exception ex) {
8690
}
8791

8892
return false;

src/main/java/com/trimble/tekla/rest/TeamctiyRest.java

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import com.trimble.tekla.teamcity.TeamcityConfiguration;
4747
import com.trimble.tekla.teamcity.TeamcityConnector;
4848
import java.util.Arrays;
49+
import java.util.Optional;
4950

5051
/**
5152
* REST configuration
@@ -165,21 +166,21 @@ public String triggerBuild(
165166
@QueryParam("branch") final String branch,
166167
@QueryParam("prid") final String prid) throws IOException {
167168

168-
final Settings settings = this.settingsService.getSettings(repository).get();
169+
final Optional<Settings> settings = this.settingsService.getSettings(repository);
169170

170171
if (settings == null) {
171172
return "{\"status\": \"error\", \"message\": \"hook not configured\"}";
172173
}
173174

174-
final String url = settings.getString("teamCityUrl", "");
175-
final String username = settings.getString("teamCityUserName", "");
175+
final String url = settings.get().getString("teamCityUrl", "");
176+
final String username = settings.get().getString("teamCityUserName", "");
176177
final String password = this.connectionSettings.getPassword(repository);
177178

178179
if (url.isEmpty()) {
179180
return "{\"status\": \"error\", \"message\": \"invalid id\"}";
180181
}
181182

182-
final String repositoryTriggersJson = settings.getString(Field.REPOSITORY_TRIGGERS_JSON, StringUtils.EMPTY);
183+
final String repositoryTriggersJson = settings.get().getString(Field.REPOSITORY_TRIGGERS_JSON, StringUtils.EMPTY);
183184
if (repositoryTriggersJson.isEmpty()) {
184185
return "{\"status\": \"error\", \"message\": \"hook not configured properly\"}";
185186
}
@@ -203,7 +204,7 @@ public String triggerBuild(
203204
.append(" ")
204205
.append(buildConfig.getBranchConfig());
205206
builder.append(" ")
206-
.append(this.connector.QueueBuild(conf, buildConfig.getBranchConfig(), buildconfig, "Manual Trigger from Bitbucket: Pull Request: " + prid, false, settings)); // handle error todo
207+
.append(this.connector.QueueBuild(conf, buildConfig.getBranchConfig(), buildconfig, "Manual Trigger from Bitbucket: Pull Request: " + prid, false, settings.get())); // handle error todo
207208
} else {
208209
builder.append(" trigger skipped ")
209210
.append(buildconfig)
@@ -225,18 +226,13 @@ public String getBuildsConfiguration(
225226
@QueryParam("branch") final String branch,
226227
@QueryParam("hash") final String hash) throws IOException {
227228

228-
final Settings settings = this.settingsService.getSettings(repository).get();
229-
230-
if (settings == null) {
229+
final Optional<Settings> settings = this.settingsService.getSettings(repository);
230+
if(!settings.isPresent()) {
231231
return "{\"status\": \"error\", \"message\": \"hook not configured\"}";
232232
}
233233

234-
if (settings == null) {
235-
return "{\"status\": \"error\", \"message\": \"hook not configured\"}";
236-
}
237-
238-
final String url = settings.getString("teamCityUrl", "");
239-
final String username = settings.getString("teamCityUserName", "");
234+
final String url = settings.get().getString("teamCityUrl", "");
235+
final String username = settings.get().getString("teamCityUserName", "");
240236
final String password = this.connectionSettings.getPassword(repository);
241237

242238
if (password.isEmpty()) {
@@ -247,7 +243,7 @@ public String getBuildsConfiguration(
247243
return "{\"status\": \"error\", \"message\": \"invalid id\"}";
248244
}
249245

250-
final String repositoryTriggersJson = settings.getString(Field.REPOSITORY_TRIGGERS_JSON, StringUtils.EMPTY);
246+
final String repositoryTriggersJson = settings.get().getString(Field.REPOSITORY_TRIGGERS_JSON, StringUtils.EMPTY);
251247
if (repositoryTriggersJson.isEmpty()) {
252248
return "{\"status\": \"error\", \"message\": \"hook not configured properly\"}";
253249
}
@@ -268,8 +264,8 @@ public String getBuildsConfiguration(
268264
continue;
269265
}
270266
try {
271-
final String returnData = this.connector.GetBuildsForBranch(conf, buildConfig.getBranchConfig(), buildConfig.getTarget(), settings);
272-
final String queueData = this.connector.GetQueueDataForConfiguration(conf, buildConfig.getTarget(), settings);
267+
final String returnData = this.connector.GetBuildsForBranch(conf, buildConfig.getBranchConfig(), buildConfig.getTarget(), settings.get());
268+
final String queueData = this.connector.GetQueueDataForConfiguration(conf, buildConfig.getTarget(), settings.get());
273269
jObj.put(buildConfig.getTarget(), returnData);
274270
jObj.put(buildConfig.getTarget() + "_queue", queueData);
275271
jObj.put(buildConfig.getTarget() + "_wref", url + "/viewType.html?buildTypeId=" + buildConfig);
@@ -294,18 +290,15 @@ public String getExternalConfiguration(
294290
@QueryParam("branch") final String branch,
295291
@QueryParam("hash") final String hash) {
296292

297-
final Settings settings = this.settingsService.getSettings(repository).get();
298-
299-
if (settings == null) {
300-
return "{\"status\": \"error\", \"message\": \"hook not configured\"}";
301-
}
293+
294+
final Optional<Settings> settings = this.settingsService.getSettings(repository);
302295

303-
if (settings == null) {
296+
if (!settings.isPresent()) {
304297
return "{\"status\": \"error\", \"message\": \"hook not configured\"}";
305298
}
306299

307-
final String url = settings.getString("teamCityUrl", "");
308-
final String username = settings.getString("teamCityUserName", "");
300+
final String url = settings.get().getString("teamCityUrl", "");
301+
final String username = settings.get().getString("teamCityUserName", "");
309302
final String password = this.connectionSettings.getPassword(repository);
310303

311304
if (url.isEmpty()) {
@@ -318,7 +311,7 @@ public String getExternalConfiguration(
318311

319312
final TeamcityConfiguration conf = new TeamcityConfiguration(url, username, password);
320313
try {
321-
final String repositoryTriggersJson = settings.getString(Field.REPOSITORY_TRIGGERS_JSON, StringUtils.EMPTY);
314+
final String repositoryTriggersJson = settings.get().getString(Field.REPOSITORY_TRIGGERS_JSON, StringUtils.EMPTY);
322315
if (repositoryTriggersJson.isEmpty()) {
323316
return "{\"status\": \"error\", \"message\": \"hook not configured properly\"}";
324317
}
@@ -331,16 +324,16 @@ public String getExternalConfiguration(
331324
for (final Trigger buildConfig : configurations) {
332325
if ("build".equals(buildConfig.getDownStreamTriggerType()) && !"".equals(buildConfig.getDownStreamTriggerTarget())) {
333326
final String depBuildId = buildConfig.getTarget();
334-
final String returnData = this.connector.GetBuildsForBranch(conf, buildConfig.getBranchConfig(), depBuildId, settings);
335-
final String queueData = this.connector.GetQueueDataForConfiguration(conf, depBuildId, settings);
327+
final String returnData = this.connector.GetBuildsForBranch(conf, buildConfig.getBranchConfig(), depBuildId, settings.get());
328+
final String queueData = this.connector.GetQueueDataForConfiguration(conf, depBuildId, settings.get());
336329
jObj.put(depBuildId + "_dep_wref", url + "/viewType.html?buildTypeId=" + depBuildId);
337330
jObj.put(depBuildId + "_dep", returnData);
338331
jObj.put(depBuildId + "_dep_queue", queueData);
339332

340333
final String [] downBuildIds = buildConfig.getDownStreamTriggerTarget().split(",");
341334
for (String downBuildId : downBuildIds) {
342-
final String returnDataBuildDep = this.connector.GetBuildsForBranch(conf, buildConfig.getBranchConfig(), downBuildId, settings);
343-
final String queueDataBuildDep = this.connector.GetQueueDataForConfiguration(conf, downBuildId, settings);
335+
final String returnDataBuildDep = this.connector.GetBuildsForBranch(conf, buildConfig.getBranchConfig(), downBuildId, settings.get());
336+
final String queueDataBuildDep = this.connector.GetQueueDataForConfiguration(conf, downBuildId, settings.get());
344337
jObj.put(downBuildId + "_build", returnDataBuildDep);
345338
jObj.put(downBuildId + "_build_branch", buildConfig.getBranchConfig());
346339
jObj.put(downBuildId + "_build_wref", url + "/viewType.html?buildTypeId=" + downBuildId);
@@ -359,8 +352,8 @@ public String getExternalConfiguration(
359352
"tab".equals(buildConfig.getDownStreamTriggerType()) && !"".equals(buildConfig.getDownStreamTriggerTarget())) {
360353
final String depBuildId = buildConfig.getTarget();
361354

362-
final String returnData = this.connector.GetBuildsForBranch(conf, buildConfig.getBranchConfig(), depBuildId, settings);
363-
final String queueData = this.connector.GetQueueDataForConfiguration(conf, depBuildId, settings);
355+
final String returnData = this.connector.GetBuildsForBranch(conf, buildConfig.getBranchConfig(), depBuildId, settings.get());
356+
final String queueData = this.connector.GetQueueDataForConfiguration(conf, depBuildId, settings.get());
364357
jObj.put(depBuildId + "_dep", returnData);
365358
jObj.put(depBuildId + "_dep_wref", url + "/viewType.html?buildTypeId=" + depBuildId);
366359
jObj.put(depBuildId + "_dep_queue", queueData);
@@ -408,7 +401,13 @@ public String triggerexternalurl(@Context final Repository repository, @QueryPar
408401
final HttpConnector dummyConnector = new HttpConnector();
409402
String returnData;
410403
try {
411-
returnData = dummyConnector.Get(url, this.settingsService.getSettings(repository).get());
404+
final Optional<Settings> settings = this.settingsService.getSettings(repository);
405+
406+
if (!settings.isPresent()) {
407+
return "{\"status\": \"error\", \"message\": \"hook not configured\"}";
408+
}
409+
410+
returnData = dummyConnector.Get(url, settings.get());
412411
return "{\"status\": \"ok\", \"message\": \" " + returnData + "\" }";
413412
} catch (final IOException ex) {
414413
return "{\"status\": \"failed\", \"message\": \" " + ex.getMessage() + "\" }";
@@ -467,14 +466,14 @@ public Response testconnection(
467466
@Path(value = "build")
468467
public String getbuild(@Context final Repository repository, @QueryParam("id") final String id) {
469468

470-
final Settings settings = this.settingsService.getSettings(repository).get();
469+
final Optional<Settings> settings = this.settingsService.getSettings(repository);
471470

472-
if (settings == null) {
471+
if (!settings.isPresent()) {
473472
return "{\"status\": \"error\", \"message\": \"hook not configured\"}";
474473
}
475474

476-
final String url = settings.getString("teamCityUrl", "");
477-
final String username = settings.getString("teamCityUserName", "");
475+
final String url = settings.get().getString("teamCityUrl", "");
476+
final String username = settings.get().getString("teamCityUserName", "");
478477
final String password = this.connectionSettings.getPassword(repository);
479478

480479
if (url.isEmpty()) {
@@ -486,8 +485,8 @@ public String getbuild(@Context final Repository repository, @QueryParam("id") f
486485
}
487486

488487
final TeamcityConfiguration conf = new TeamcityConfiguration(url, username, password);
489-
try {
490-
return this.connector.GetBuild(conf, id, this.settingsService.getSettings(repository).get());
488+
try {
489+
return this.connector.GetBuild(conf, id, settings.get());
491490
} catch (final IOException ex) {
492491
return "{\"status\": \"error\", \"message\": \"" + ex.getMessage() + "\"}";
493492
}

0 commit comments

Comments
 (0)