diff options
author | Maxim Epishchev <epishev@garant.ru> | 2016-02-02 13:08:51 +0300 |
---|---|---|
committer | Maxim Epishchev <epishev@garant.ru> | 2016-02-02 13:13:07 +0300 |
commit | 4b880c7045ebf42974f833ffe9b11084c86c3408 (patch) | |
tree | 0181ae4946f8ee784542e4ff2ecad20658ebfa1d /src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java | |
parent | bcedbd3da1781bdf13db196f5854f945f112e27c (diff) | |
parent | 06eccb61d2aa83b9d3a7e94724a6d207011de2d4 (diff) | |
download | bbprb-4b880c7045ebf42974f833ffe9b11084c86c3408.tar.gz |
Merge branch 'CredentialsSupport' into master
Also bump pom version
Conflicts:
.gitignore
Diffstat (limited to 'src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java')
-rw-r--r-- | src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java | 52 |
1 files changed, 45 insertions, 7 deletions
diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java index 6736ee9..23b0607 100644 --- a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java @@ -13,12 +13,18 @@ import java.util.LinkedList; import java.util.logging.Level; import java.util.regex.Matcher; import java.util.regex.Pattern; +import com.cloudbees.plugins.credentials.CredentialsMatchers; +import com.cloudbees.plugins.credentials.CredentialsProvider; +import com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials; +import com.cloudbees.plugins.credentials.common.UsernamePasswordCredentials; import jenkins.model.Jenkins; import jenkins.scm.api.SCMSource; import jenkins.scm.api.SCMSourceOwner; import jenkins.scm.api.SCMSourceOwners; import org.apache.commons.lang.StringUtils; +import static com.cloudbees.plugins.credentials.CredentialsMatchers.instanceOf; + /** * Created by nishio */ @@ -34,26 +40,46 @@ public class BitbucketRepository { private BitbucketPullRequestsBuilder builder; private BitbucketBuildTrigger trigger; private ApiClient client; - + public BitbucketRepository(String projectPath, BitbucketPullRequestsBuilder builder) { this.projectPath = projectPath; this.builder = builder; } public void init() { - this.init(null); + this.init(null, null); + } + + public <T extends ApiClient.HttpClientFactory> void init(Class<T> httpFactory) { + this.init(null, httpFactory); } public void init(ApiClient client) { + this.init(client, null); + } + + public <T extends ApiClient.HttpClientFactory> void init(ApiClient client, Class<T> httpFactory) { this.trigger = this.builder.getTrigger(); - this.client = (client == null) ? new ApiClient( - trigger.getUsername(), - trigger.getPassword(), + + if (client == null) { + String username = trigger.getUsername(); + String password = trigger.getPassword(); + StandardUsernamePasswordCredentials credentials = getCredentials(trigger.getCredentialsId()); + if (credentials != null) { + username = credentials.getUsername(); + password = credentials.getPassword().getPlainText(); + } + this.client = new ApiClient( + username, + password, trigger.getRepositoryOwner(), trigger.getRepositoryName(), trigger.getCiKey(), - trigger.getCiName() - ) : client; + trigger.getCiName(), + httpFactory + ); + + } else this.client = client; } public Collection<Pullrequest> getTargetPullRequests() { @@ -67,6 +93,10 @@ public class BitbucketRepository { } return targetPullRequests; } + + public ApiClient getClient() { + return this.client; + } public void addFutureBuildTasks(Collection<Pullrequest> pullRequests) { for(Pullrequest pullRequest : pullRequests) { @@ -267,4 +297,12 @@ public class BitbucketRepository { return filter.approved(cause); } + + private StandardUsernamePasswordCredentials getCredentials(String credentialsId) { + return CredentialsMatchers + .firstOrNull( + CredentialsProvider.lookupCredentials(StandardUsernamePasswordCredentials.class), + CredentialsMatchers.allOf(CredentialsMatchers.withId(credentialsId), + instanceOf(UsernamePasswordCredentials.class))); + } } |