aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java')
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java57
1 files changed, 50 insertions, 7 deletions
diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java
index 6736ee9..9b92775 100644
--- a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java
+++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketRepository.java
@@ -9,16 +9,26 @@ import java.util.logging.Logger;
import bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket.ApiClient;
import bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket.BuildState;
import bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket.Pullrequest;
+
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 +44,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(T httpFactory) {
+ this.init(null, httpFactory);
}
public void init(ApiClient client) {
+ this.init(client, null);
+ }
+
+ public <T extends ApiClient.HttpClientFactory> void init(ApiClient client, 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 +97,10 @@ public class BitbucketRepository {
}
return targetPullRequests;
}
+
+ public ApiClient getClient() {
+ return this.client;
+ }
public void addFutureBuildTasks(Collection<Pullrequest> pullRequests) {
for(Pullrequest pullRequest : pullRequests) {
@@ -267,4 +301,13 @@ public class BitbucketRepository {
return filter.approved(cause);
}
+
+ private StandardUsernamePasswordCredentials getCredentials(String credentialsId) {
+ if (null == credentialsId) return null;
+ return CredentialsMatchers
+ .firstOrNull(
+ CredentialsProvider.lookupCredentials(StandardUsernamePasswordCredentials.class),
+ CredentialsMatchers.allOf(CredentialsMatchers.withId(credentialsId),
+ instanceOf(UsernamePasswordCredentials.class)));
+ }
}