You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2019/05/20 16:16:13 UTC
[sling-org-apache-sling-committer-cli] 01/01: SLING-8337 - Create
sub-command to manage the Jira update when staging a release
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch feature/SLING-8337
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git
commit 3709823fcfbf5b8bc76826d3cf31318b6a8c79a3
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Mon May 20 18:15:41 2019 +0200
SLING-8337 - Create sub-command to manage the Jira update when staging a release
Properly set preemptive authentication for creating Jira versions.
---
.../sling/cli/impl/http/HttpClientFactory.java | 29 +++++++++++++++++++---
.../apache/sling/cli/impl/jira/VersionClient.java | 3 ++-
2 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/src/main/java/org/apache/sling/cli/impl/http/HttpClientFactory.java b/src/main/java/org/apache/sling/cli/impl/http/HttpClientFactory.java
index f881594..fe2bf2f 100644
--- a/src/main/java/org/apache/sling/cli/impl/http/HttpClientFactory.java
+++ b/src/main/java/org/apache/sling/cli/impl/http/HttpClientFactory.java
@@ -16,8 +16,13 @@
*/
package org.apache.sling.cli.impl.http;
+import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.AuthCache;
+import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.http.impl.auth.BasicScheme;
+import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
@@ -31,7 +36,7 @@ import org.osgi.service.component.annotations.Reference;
@Component(service = HttpClientFactory.class)
public class HttpClientFactory {
- private static final String DEFAULT_JIRA_HOST = "jira.apache.org";
+ private static final String DEFAULT_JIRA_HOST = "issues.apache.org";
private static final int DEFAULT_JIRA_PORT = 443;
@Reference
@@ -49,6 +54,12 @@ public class HttpClientFactory {
public CloseableHttpClient newClient() {
+ return HttpClients.custom()
+ .setDefaultCredentialsProvider(newCredentialsProvider())
+ .build();
+ }
+
+ private BasicCredentialsProvider newCredentialsProvider() {
Credentials asf = credentialsService.getAsfCredentials();
Credentials jira = credentialsService.getJiraCredentials();
@@ -59,9 +70,19 @@ public class HttpClientFactory {
new UsernamePasswordCredentials(asf.getUsername(), asf.getPassword()));
credentialsProvider.setCredentials(new AuthScope(jiraHost, jiraPort),
new UsernamePasswordCredentials(jira.getUsername(), jira.getPassword()));
+ return credentialsProvider;
+ }
+
+ public HttpClientContext newPreemptiveAuthenticationContext() {
- return HttpClients.custom()
- .setDefaultCredentialsProvider(credentialsProvider)
- .build();
+ AuthCache authCache = new BasicAuthCache();
+ authCache.put(new HttpHost(jiraHost, jiraPort, "https"), new BasicScheme());
+
+ HttpClientContext ctx = HttpClientContext.create();
+ ctx.setAuthCache(authCache);
+ ctx.setCredentialsProvider(newCredentialsProvider());
+
+ return ctx;
}
+
}
diff --git a/src/main/java/org/apache/sling/cli/impl/jira/VersionClient.java b/src/main/java/org/apache/sling/cli/impl/jira/VersionClient.java
index 1c1938c..98778e6 100644
--- a/src/main/java/org/apache/sling/cli/impl/jira/VersionClient.java
+++ b/src/main/java/org/apache/sling/cli/impl/jira/VersionClient.java
@@ -132,6 +132,7 @@ public class VersionClient {
* @throws IOException In case of any errors creating the version in Jira
*/
public void create(String versionName) throws IOException {
+
StringWriter w = new StringWriter();
try ( JsonWriter jw = new Gson().newJsonWriter(w) ) {
jw.beginObject();
@@ -144,7 +145,7 @@ public class VersionClient {
post.setEntity(new StringEntity(w.toString()));
try (CloseableHttpClient client = httpClientFactory.newClient()) {
- try (CloseableHttpResponse response = client.execute(post)) {
+ try (CloseableHttpResponse response = client.execute(post, httpClientFactory.newPreemptiveAuthenticationContext())) {
try (InputStream content = response.getEntity().getContent();
InputStreamReader reader = new InputStreamReader(content)) {