Skip to content
This repository was archived by the owner on Jun 9, 2021. It is now read-only.

Commit 296f894

Browse files
committed
Finding current user correctly #107
* Was looking up currently logged in user with the users username. That caused NullPointerException if username not same as user slug.
1 parent 97dc36d commit 296f894

File tree

4 files changed

+24
-19
lines changed

4 files changed

+24
-19
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Changelog of Pull Request Notifier for Bitbucket.
66
### No issue
77
Using git changelog plugin 1.20
88

9-
[2a8a6b934a6a6b2](https://github.com/tomasbjerre/pull-request-notifier-for-bitbucket/commit/2a8a6b934a6a6b2) Tomas Bjerre *2016-03-15 21:10:32*
9+
[97dc36d24773408](https://github.com/tomasbjerre/pull-request-notifier-for-bitbucket/commit/97dc36d24773408) Tomas Bjerre *2016-03-15 21:15:55*
1010

1111
## 2.16
1212
### GitHub [#103](https://github.com/tomasbjerre/pull-request-notifier-for-bitbucket/issues/103) Support Bitbucket Server 4.4

src/main/java/se/bjurr/prnfb/ManualResource.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,12 @@
4242
import se.bjurr.prnfb.settings.PrnfbSettings;
4343

4444
import com.atlassian.annotations.security.XsrfProtectionExcluded;
45+
import com.atlassian.bitbucket.auth.AuthenticationContext;
4546
import com.atlassian.bitbucket.pull.PullRequest;
4647
import com.atlassian.bitbucket.pull.PullRequestService;
4748
import com.atlassian.bitbucket.repository.RepositoryService;
4849
import com.atlassian.bitbucket.server.ApplicationPropertiesService;
49-
import com.atlassian.bitbucket.user.ApplicationUser;
5050
import com.atlassian.bitbucket.user.SecurityService;
51-
import com.atlassian.bitbucket.user.UserService;
5251
import com.atlassian.sal.api.pluginsettings.PluginSettingsFactory;
5352
import com.atlassian.sal.api.user.UserKey;
5453
import com.atlassian.sal.api.user.UserManager;
@@ -59,13 +58,13 @@
5958
public class ManualResource {
6059
private static Gson gson = new Gson();
6160
private final UserManager userManager;
62-
private final UserService userService;
6361
private final PullRequestService pullRequestService;
6462
private final PrnfbPullRequestEventListener prnfbPullRequestEventListener;
6563
private final SecurityService securityService;
6664
private final PluginSettingsFactory pluginSettingsFactory;
6765
private final ApplicationPropertiesService propertiesService;
6866
private final RepositoryService repositoryService;
67+
private final AuthenticationContext authenticationContext;
6968
private static final List<AdminFormValues.BUTTON_VISIBILITY> adminOk = newArrayList();
7069
private static final List<AdminFormValues.BUTTON_VISIBILITY> systemAdminOk = newArrayList();
7170
static {
@@ -74,11 +73,12 @@ public class ManualResource {
7473
systemAdminOk.add(SYSTEM_ADMIN);
7574
}
7675

77-
public ManualResource(UserManager userManager, UserService userService, PluginSettingsFactory pluginSettingsFactory,
78-
PullRequestService pullRequestService, PrnfbPullRequestEventListener prnfbPullRequestEventListener,
79-
RepositoryService repositoryService, ApplicationPropertiesService propertiesService, SecurityService securityService) {
76+
public ManualResource(AuthenticationContext authenticationContext, UserManager userManager,
77+
PluginSettingsFactory pluginSettingsFactory, PullRequestService pullRequestService,
78+
PrnfbPullRequestEventListener prnfbPullRequestEventListener, RepositoryService repositoryService,
79+
ApplicationPropertiesService propertiesService, SecurityService securityService) {
80+
this.authenticationContext = authenticationContext;
8081
this.userManager = userManager;
81-
this.userService = userService;
8282
this.pullRequestService = pullRequestService;
8383
this.prnfbPullRequestEventListener = prnfbPullRequestEventListener;
8484
this.securityService = securityService;
@@ -159,9 +159,8 @@ private Map<PrnfbVariable, Supplier<String>> getVariables(final PrnfbSettings se
159159

160160
private PrnfbRenderer getRenderer(final PullRequest pullRequest, PrnfbNotification prnfbNotification,
161161
PrnfbPullRequestAction pullRequestAction, Map<PrnfbVariable, Supplier<String>> variables, HttpServletRequest request) {
162-
ApplicationUser bitbucketUser = userService.getUserBySlug(userManager.getRemoteUser(request).getUsername());
163-
return new PrnfbRenderer(pullRequest, pullRequestAction, bitbucketUser, repositoryService, propertiesService,
164-
prnfbNotification, variables);
162+
return new PrnfbRenderer(pullRequest, pullRequestAction, authenticationContext.getCurrentUser(), repositoryService,
163+
propertiesService, prnfbNotification, variables);
165164
}
166165

167166
static boolean allowedUseButton(PrnfbButton candidate, boolean isAdmin, boolean isSystemAdmin) {

src/test/java/se/bjurr/prnb/admin/utils/PrnfbTestBuilder.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import se.bjurr.prnfb.settings.PrnfbSettings;
5555
import se.bjurr.prnfb.settings.SettingsStorage;
5656

57+
import com.atlassian.bitbucket.auth.AuthenticationContext;
5758
import com.atlassian.bitbucket.event.pull.PullRequestEvent;
5859
import com.atlassian.bitbucket.permission.Permission;
5960
import com.atlassian.bitbucket.pull.PullRequest;
@@ -63,7 +64,6 @@
6364
import com.atlassian.bitbucket.server.ApplicationPropertiesService;
6465
import com.atlassian.bitbucket.user.EscalatedSecurityContext;
6566
import com.atlassian.bitbucket.user.SecurityService;
66-
import com.atlassian.bitbucket.user.UserService;
6767
import com.atlassian.bitbucket.util.Operation;
6868
import com.atlassian.sal.api.pluginsettings.PluginSettings;
6969
import com.atlassian.sal.api.pluginsettings.PluginSettingsFactory;
@@ -134,6 +134,8 @@ public static PrnfbTestBuilder prnfbTestBuilder() {
134134

135135
private PullRequest pullRequest;
136136

137+
private AuthenticationContext authenticationContext;
138+
137139
private PrnfbTestBuilder() {
138140
fakeRandomCounter = 0L;
139141
fakeRandom(new FakeRandom());
@@ -159,10 +161,10 @@ public <T> T execute(TransactionCallback<T> action) {
159161
pullRequestService = mock(PullRequestService.class);
160162
listener = new PrnfbPullRequestEventListener(pluginSettingsFactory, repositoryService, propertiesService,
161163
pullRequestService, new SyncExecutorService());
162-
UserService userService = mock(UserService.class);
163164
withPullRequest(pullRequestEventBuilder().build().getPullRequest());
164-
manualResouce = new ManualResource(userManager, userService, pluginSettingsFactory, pullRequestService, listener,
165-
repositoryService, propertiesService, securityService);
165+
authenticationContext = mock(AuthenticationContext.class);
166+
manualResouce = new ManualResource(authenticationContext, userManager, pluginSettingsFactory, pullRequestService,
167+
listener, repositoryService, propertiesService, securityService);
166168
}
167169

168170
public PrnfbTestBuilder delete(String id) throws Exception {

src/test/java/se/bjurr/prnfb/admin/PrnfbPullRequestEventListenerTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1603,19 +1603,23 @@ public void testThatEventTriggeredByButtonCanResultInSeveralNotifications() thro
16031603
.withFieldValue(FORM_TYPE, TRIGGER_CONFIG_FORM.name()) //
16041604
.build() //
16051605
) //
1606-
.store().withNotification( //
1606+
.store()//
1607+
.withNotification( //
16071608
notificationBuilder() //
16081609
.withFieldValue(url, "http://bjurr.se/?456=${" + BUTTON_TRIGGER_TITLE + "}") //
16091610
.withFieldValue(events, BUTTON_TRIGGER) //
16101611
.withFieldValue(filter_string, "${" + BUTTON_TRIGGER_TITLE + "}") //
16111612
.withFieldValue(filter_regexp, "button") //
1612-
.withFieldValue(FORM_TYPE, TRIGGER_CONFIG_FORM.name()).build()) //
1613-
.store().withNotification( //
1613+
.withFieldValue(FORM_TYPE, TRIGGER_CONFIG_FORM.name())//
1614+
.build()) //
1615+
.store()//
1616+
.withNotification( //
16141617
notificationBuilder() //
16151618
.withFieldValue(FORM_IDENTIFIER, "Button Form") //
16161619
.withFieldValue(FORM_TYPE, BUTTON_CONFIG_FORM.name()) //
16171620
.withFieldValue(button_title, "button text 123") //
1618-
.withFieldValue(button_visibility, EVERYONE.name()).build()) //
1621+
.withFieldValue(button_visibility, EVERYONE.name())//
1622+
.build()) //
16191623
.store() //
16201624
.triggerButton("Button Form") //
16211625
.invokedUrl(0, "http://bjurr.se/?123=button+text+123") //

0 commit comments

Comments
 (0)