You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2019/09/16 12:38:53 UTC
[sling-org-apache-sling-committer-cli] branch master updated: minor
code improvements
This is an automated email from the ASF dual-hosted git repository.
radu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git
The following commit(s) were added to refs/heads/master by this push:
new 8aed751 minor code improvements
8aed751 is described below
commit 8aed75174dcebf052518b6e07917a1cf046e9272
Author: Radu Cotescu <ra...@apache.org>
AuthorDate: Mon Sep 16 14:38:44 2019 +0200
minor code improvements
---
.../java/org/apache/sling/cli/impl/UserInput.java | 2 +
.../sling/cli/impl/ci/CIStatusValidator.java | 14 ++---
.../apache/sling/cli/impl/jira/VersionClient.java | 60 +++++++---------------
.../org/apache/sling/cli/impl/mail/Mailer.java | 5 +-
.../sling/cli/impl/nexus/RepositoryService.java | 5 +-
.../sling/cli/impl/people/MembersFinder.java | 6 +--
.../sling/cli/impl/release/TallyVotesCommand.java | 2 +-
.../cli/impl/release/VerifyReleasesCommand.java | 2 +-
.../cli/impl/jira/IssuesSearchJiraAction.java | 21 +++++---
.../sling/cli/impl/jira/VersionClientTest.java | 14 +++++
.../cli/impl/nexus/RepositoryServiceTest.java | 1 -
11 files changed, 66 insertions(+), 66 deletions(-)
diff --git a/src/main/java/org/apache/sling/cli/impl/UserInput.java b/src/main/java/org/apache/sling/cli/impl/UserInput.java
index 38fb7a6..d7db4e6 100644
--- a/src/main/java/org/apache/sling/cli/impl/UserInput.java
+++ b/src/main/java/org/apache/sling/cli/impl/UserInput.java
@@ -32,6 +32,8 @@ public class UserInput {
private static final Logger LOGGER = LoggerFactory.getLogger(UserInput.class);
private static final InputOption[] YES_NO = new InputOption[]{InputOption.YES, InputOption.NO};
+ private UserInput() {}
+
public static InputOption yesNo(String question, InputOption defaultOption) {
LOGGER.info(question);
Set<InputOption> answers = new LinkedHashSet<>(Arrays.asList(YES_NO));
diff --git a/src/main/java/org/apache/sling/cli/impl/ci/CIStatusValidator.java b/src/main/java/org/apache/sling/cli/impl/ci/CIStatusValidator.java
index 7e970e3..b2462ea 100644
--- a/src/main/java/org/apache/sling/cli/impl/ci/CIStatusValidator.java
+++ b/src/main/java/org/apache/sling/cli/impl/ci/CIStatusValidator.java
@@ -24,7 +24,6 @@ import java.io.InputStreamReader;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -34,6 +33,7 @@ import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
+import org.apache.http.HttpHeaders;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
@@ -54,11 +54,11 @@ import com.google.gson.JsonParser;
@Component(service = CIStatusValidator.class)
public class CIStatusValidator {
- public class ValidationResult {
+ public static class ValidationResult {
private final String message;
private final boolean valid;
- public ValidationResult(boolean valid, String message) {
+ ValidationResult(boolean valid, String message) {
this.valid = valid;
this.message = message;
}
@@ -80,10 +80,10 @@ public class CIStatusValidator {
private XPathFactory xPathFactory = XPathFactory.newInstance();
- protected JsonObject fetchCIStatus(String ciEndpoint) throws UnsupportedOperationException, IOException {
+ protected JsonObject fetchCIStatus(String ciEndpoint) throws IOException {
try (CloseableHttpClient client = httpClientFactory.newClient()) {
HttpGet get = new HttpGet(ciEndpoint);
- get.addHeader("Accept", "application/json");
+ get.addHeader(HttpHeaders.ACCEPT, "application/json");
try (CloseableHttpResponse response = client.execute(get)) {
try (InputStream content = response.getEntity().getContent()) {
InputStreamReader reader = new InputStreamReader(content);
@@ -94,7 +94,7 @@ public class CIStatusValidator {
}
}
- protected String getCIEndpoint(Artifact artifact, Path artifactFilePath) {
+ String getCIEndpoint(Artifact artifact, Path artifactFilePath) {
log.trace("getCIEndpoint");
String ciEndpoint = null;
try {
@@ -135,7 +135,7 @@ public class CIStatusValidator {
messageEntries.add("\t\tDescription: " + item.get("description").getAsString());
messageEntries.add("\t\tSee: " + item.get("target_url").getAsString());
}
- String message = messageEntries.stream().collect(Collectors.joining("\n"));
+ String message = String.join("\n", messageEntries);
if ("success".equals(status.get("state").getAsString())) {
return new ValidationResult(true, message);
} else {
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 51d5394..ec11e51 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
@@ -27,6 +27,7 @@ import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;
+import org.apache.http.HttpHeaders;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
@@ -106,7 +107,6 @@ public class VersionClient {
*
* @param release the release to find a successor for
* @return the successor version, possibly <code>null</code>
- * @throws IOException in case of communication errors with Jira
*/
public Version findSuccessorVersion(Release release) {
Version version;
@@ -115,7 +115,7 @@ public class VersionClient {
Optional<Version> opt = findVersion (
v -> isFollowingVersion(Release.fromString(v.getName()).get(0), release)
,client);
- if ( !opt.isPresent() )
+ if (opt.isEmpty())
return null;
version = opt.get();
populateRelatedIssuesCount(client, version);
@@ -162,55 +162,36 @@ public class VersionClient {
private HttpPost newPost(String suffix) {
HttpPost post = new HttpPost(jiraUrlPrefix + suffix);
- post.addHeader("Content-Type", CONTENT_TYPE_JSON);
- post.addHeader("Accept", CONTENT_TYPE_JSON);
+ post.addHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE_JSON);
+ post.addHeader(HttpHeaders.ACCEPT, CONTENT_TYPE_JSON);
return post;
}
private HttpPut newPut(String suffix) {
HttpPut put = new HttpPut(jiraUrlPrefix + suffix);
- put.addHeader("Content-Type", CONTENT_TYPE_JSON);
- put.addHeader("Accept", CONTENT_TYPE_JSON);
+ put.addHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE_JSON);
+ put.addHeader(HttpHeaders.ACCEPT, CONTENT_TYPE_JSON);
return put;
}
public List<Issue> findUnresolvedIssues(Release release) throws IOException {
-
- try {
- HttpGet get = newGet("search");
- URIBuilder builder = new URIBuilder(get.getURI());
- builder.addParameter("jql", "project = "+ PROJECT_KEY+" AND resolution = Unresolved AND fixVersion = \"" + release.getName() + "\"");
- builder.addParameter("fields", "summary");
- get.setURI(builder.build());
-
- try ( CloseableHttpClient client = httpClientFactory.newClient() ) {
- try (CloseableHttpResponse response = client.execute(get)) {
- try (InputStream content = response.getEntity().getContent();
- InputStreamReader reader = new InputStreamReader(content)) {
-
- if (response.getStatusLine().getStatusCode() != 200) {
- throw newException(response, reader);
- }
-
- Gson gson = new Gson();
- return gson.fromJson(reader, IssueResponse.class).getIssues();
- }
- }
- }
- } catch (URISyntaxException e) {
- throw new IllegalArgumentException(e);
- }
+ return findIssues("Unresolved", release);
}
public List<Issue> findFixedIssues(Release release) throws IOException {
+ return findIssues("Fixed", release);
+ }
+
+ private List<Issue> findIssues(String resolution, Release release) throws IOException {
try {
HttpGet get = newGet("search");
URIBuilder builder = new URIBuilder(get.getURI());
- builder.addParameter("jql", "project = "+ PROJECT_KEY+" AND resolution = Fixed AND fixVersion = \"" + release.getName() + "\"");
+ builder.addParameter("jql",
+ String.format("project = %s AND resolution = %s AND fixVersion = \"%s\"", PROJECT_KEY, resolution, release.getName()));
builder.addParameter("fields", "summary");
get.setURI(builder.build());
- try ( CloseableHttpClient client = httpClientFactory.newClient() ) {
+ try (CloseableHttpClient client = httpClientFactory.newClient()) {
try (CloseableHttpResponse response = client.execute(get)) {
try (InputStream content = response.getEntity().getContent();
InputStreamReader reader = new InputStreamReader(content)) {
@@ -232,7 +213,7 @@ public class VersionClient {
private IOException newException(CloseableHttpResponse response, InputStreamReader reader) {
StringBuilder message = new StringBuilder();
- message.append("Status line : " + response.getStatusLine());
+ message.append("Status line : ").append(response.getStatusLine());
try {
Gson gson = new Gson();
@@ -243,8 +224,7 @@ public class VersionClient {
.append(errors.getErrorMessages());
if ( !errors.getErrors().isEmpty() )
- errors.getErrors().entrySet().stream()
- .forEach( e -> message.append(". Error for " + e.getKey() + " : " + e.getValue()));
+ errors.getErrors().forEach((key, value) -> message.append(". Error for ").append(key).append(" : ").append(value));
}
} catch ( JsonIOException | JsonSyntaxException e) {
message.append(". Failed parsing response as JSON ( ")
@@ -270,15 +250,14 @@ public class VersionClient {
return versions.stream()
.filter( v -> v.getName().length() > 1) // avoid old '3' release
.filter(matcher)
- .sorted(VersionClient::compare)
- .findFirst();
+ .min(VersionClient::compare);
}
}
}
private HttpGet newGet(String suffix) {
HttpGet get = new HttpGet(jiraUrlPrefix + suffix);
- get.addHeader("Accept", CONTENT_TYPE_JSON);
+ get.addHeader(HttpHeaders.ACCEPT, CONTENT_TYPE_JSON);
return get;
}
@@ -330,8 +309,7 @@ public class VersionClient {
}
public void moveIssuesToNewVersion(Version oldVersion, Version newVersion, List<Issue> issues) {
- issues.stream()
- .forEach( i -> moveIssueToNewVersion(oldVersion, newVersion, i));
+ issues.forEach( i -> moveIssueToNewVersion(oldVersion, newVersion, i));
}
diff --git a/src/main/java/org/apache/sling/cli/impl/mail/Mailer.java b/src/main/java/org/apache/sling/cli/impl/mail/Mailer.java
index 2ea3597..58a873b 100644
--- a/src/main/java/org/apache/sling/cli/impl/mail/Mailer.java
+++ b/src/main/java/org/apache/sling/cli/impl/mail/Mailer.java
@@ -43,13 +43,12 @@ public class Mailer {
private static final Properties SMTP_PROPERTIES = new Properties();
static {
-
SMTP_PROPERTIES.put("mail.smtp.host", "mail-relay.apache.org");
SMTP_PROPERTIES.put("mail.smtp.port", "465");
SMTP_PROPERTIES.put("mail.smtp.auth", "true");
SMTP_PROPERTIES.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
SMTP_PROPERTIES.put("mail.smtp.socketFactory.fallback", "false");
- };
+ }
@Reference
private CredentialsService credentialsService;
@@ -62,7 +61,7 @@ public class Mailer {
Credentials credentials = credentialsService.getAsfCredentials();
Transport.send(message, credentials.getUsername(), credentials.getPassword());
} catch (MessagingException e) {
- LOGGER.error(String.format("Unable to send the following email:\n%s", source), e);
+ LOGGER.error(String.format("Unable to send the following email:%n%s", source), e);
}
}
diff --git a/src/main/java/org/apache/sling/cli/impl/nexus/RepositoryService.java b/src/main/java/org/apache/sling/cli/impl/nexus/RepositoryService.java
index 5483f5a..249ac5f 100644
--- a/src/main/java/org/apache/sling/cli/impl/nexus/RepositoryService.java
+++ b/src/main/java/org/apache/sling/cli/impl/nexus/RepositoryService.java
@@ -32,6 +32,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.io.IOUtils;
+import org.apache.http.HttpHeaders;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
@@ -209,7 +210,7 @@ public class RepositoryService {
Path filePath = Files.createFile(artifactFolderPath.resolve(fileName));
HttpGet get = new HttpGet(repository.getRepositoryURI() + "/" + relativeFilePath);
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Downloading {}.", get.getURI().toString());
+ LOGGER.debug("Downloading {}.", get.getURI());
}
try (CloseableHttpResponse response = client.execute(get)) {
try (InputStream content = response.getEntity().getContent()) {
@@ -220,7 +221,7 @@ public class RepositoryService {
private HttpGet newGet(String suffix) {
HttpGet get = new HttpGet(nexusUrlPrefix + suffix);
- get.addHeader("Accept", CONTENT_TYPE_JSON);
+ get.addHeader(HttpHeaders.ACCEPT, CONTENT_TYPE_JSON);
return get;
}
diff --git a/src/main/java/org/apache/sling/cli/impl/people/MembersFinder.java b/src/main/java/org/apache/sling/cli/impl/people/MembersFinder.java
index b483f93..49e845d 100644
--- a/src/main/java/org/apache/sling/cli/impl/people/MembersFinder.java
+++ b/src/main/java/org/apache/sling/cli/impl/people/MembersFinder.java
@@ -55,7 +55,7 @@ public class MembersFinder {
private CredentialsService credentialsService;
public synchronized Set<Member> findMembers() {
- final Set<Member> _members = new HashSet<>();
+ final Set<Member> membersReplacementSet = new HashSet<>();
if (lastCheck == 0 || System.currentTimeMillis() > lastCheck + STALENESS_IN_HOURS * 3600 * 1000) {
lastCheck = System.currentTimeMillis();
try (CloseableHttpClient client = HttpClients.createDefault()) {
@@ -92,12 +92,12 @@ public class MembersFinder {
JsonObject people = json.get("people").getAsJsonObject();
for (String id : memberIds) {
String name = people.get(id).getAsJsonObject().get("name").getAsString();
- _members.add(new Member(id, name, pmcMemberIds.contains(id)));
+ membersReplacementSet.add(new Member(id, name, pmcMemberIds.contains(id)));
}
}
}
- members = Collections.unmodifiableSet(_members);
+ members = Collections.unmodifiableSet(membersReplacementSet);
} catch (IOException e) {
LOGGER.error("Unable to retrieve Apache Sling project members.", e);
}
diff --git a/src/main/java/org/apache/sling/cli/impl/release/TallyVotesCommand.java b/src/main/java/org/apache/sling/cli/impl/release/TallyVotesCommand.java
index 52c3e28..1e1d024 100644
--- a/src/main/java/org/apache/sling/cli/impl/release/TallyVotesCommand.java
+++ b/src/main/java/org/apache/sling/cli/impl/release/TallyVotesCommand.java
@@ -166,7 +166,7 @@ public class TallyVotesCommand implements Command {
}
} else {
LOGGER.info("Release {} does not have at least 3 binding votes.", releaseFullName);
- LOGGER.info("Binding votes: {}.", String.join(", ", bindingVoters));
+ LOGGER.info("Binding votes: {}.", bindingVoters.isEmpty() ? "none" : String.join(", ", bindingVoters));
}
}
diff --git a/src/main/java/org/apache/sling/cli/impl/release/VerifyReleasesCommand.java b/src/main/java/org/apache/sling/cli/impl/release/VerifyReleasesCommand.java
index b5a16bf..e3e4477 100644
--- a/src/main/java/org/apache/sling/cli/impl/release/VerifyReleasesCommand.java
+++ b/src/main/java/org/apache/sling/cli/impl/release/VerifyReleasesCommand.java
@@ -96,7 +96,7 @@ public class VerifyReleasesCommand implements Command {
if (!md5validationResult.isValid()) {
failedChecks++;
}
- LOGGER.info("\n" + artifactFilePath.getFileName().toString());
+ LOGGER.info("\n{}", artifactFilePath.getFileName().toString());
PGPPublicKey key = validationResult.getKey();
LOGGER.info("GPG: {}", validationResult.isValid()
? String.format("signed by %s with key (id=0x%X; " + "fingerprint=%s)", getKeyUserId(key),
diff --git a/src/test/java/org/apache/sling/cli/impl/jira/IssuesSearchJiraAction.java b/src/test/java/org/apache/sling/cli/impl/jira/IssuesSearchJiraAction.java
index 96df4c7..5ef6e6c 100644
--- a/src/test/java/org/apache/sling/cli/impl/jira/IssuesSearchJiraAction.java
+++ b/src/test/java/org/apache/sling/cli/impl/jira/IssuesSearchJiraAction.java
@@ -17,9 +17,9 @@
package org.apache.sling.cli.impl.jira;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import java.util.List;
-import org.apache.commons.io.Charsets;
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
@@ -28,7 +28,8 @@ import com.sun.net.httpserver.HttpExchange;
public class IssuesSearchJiraAction implements JiraAction {
- static final String KNOWN_JQL_QUERY = "project = SLING AND resolution = Unresolved AND fixVersion = \"Committer CLI 1.0.0\"";
+ private static final String UNRESOLVED_QUERY = "project = SLING AND resolution = Unresolved AND fixVersion = \"Committer CLI 1.0.0\"";
+ private static final String FIXED_QUERY = "project = SLING AND resolution = Fixed AND fixVersion = \"Committer CLI 1.0.0\"";
@Override
public boolean tryHandle(HttpExchange ex) throws IOException {
@@ -37,15 +38,21 @@ public class IssuesSearchJiraAction implements JiraAction {
return false;
}
- List<NameValuePair> parsed = URLEncodedUtils.parse(ex.getRequestURI(), Charsets.UTF_8);
+ List<NameValuePair> parsed = URLEncodedUtils.parse(ex.getRequestURI(), StandardCharsets.UTF_8);
for ( NameValuePair pair : parsed ) {
- if ( "jql".equals(pair.getName()) && KNOWN_JQL_QUERY.equals(pair.getValue()) ) {
- serveFileFromClasspath(ex, "/jira/search/unresolved-committer-cli-1.0.0.json");
- return true;
+ if ( "jql".equals(pair.getName())) {
+ if (UNRESOLVED_QUERY.equals(pair.getValue())) {
+ serveFileFromClasspath(ex, "/jira/search/unresolved-committer-cli-1.0.0.json");
+ return true;
+ } else if (FIXED_QUERY.equals(pair.getValue())) {
+ serveFileFromClasspath(ex, "/jira/search/fixed-committer-cli-1.0.0.json");
+ return true;
+ }
}
}
- error(ex, new Gson(), er -> er.getErrorMessages().add("Unable to run unknown JQL query, only available one is [" + KNOWN_JQL_QUERY +"]"));
+ error(ex, new Gson(), er -> er.getErrorMessages().add("Unable to run unknown JQL query, available ones are [" +
+ UNRESOLVED_QUERY + "," + FIXED_QUERY +"]"));
return true;
}
diff --git a/src/test/java/org/apache/sling/cli/impl/jira/VersionClientTest.java b/src/test/java/org/apache/sling/cli/impl/jira/VersionClientTest.java
index 6e98b4a..9c5c0cf 100644
--- a/src/test/java/org/apache/sling/cli/impl/jira/VersionClientTest.java
+++ b/src/test/java/org/apache/sling/cli/impl/jira/VersionClientTest.java
@@ -114,4 +114,18 @@ public class VersionClientTest {
assertThat(issues.get(0).getKey(), equalTo("SLING-8338"));
assertThat(issues.get(1).getKey(), equalTo("SLING-8337"));
}
+
+ @Test
+ public void findFixedIssuesForVersion() throws IOException {
+ List<Issue> issues = versionClient.findFixedIssues(Release.fromString("Committer CLI 1.0.0").get(0));
+
+ assertThat(issues, hasSize(7));
+ assertThat(issues.get(0).getKey(), equalTo("SLING-8707"));
+ assertThat(issues.get(1).getKey(), equalTo("SLING-8699"));
+ assertThat(issues.get(2).getKey(), equalTo("SLING-8395"));
+ assertThat(issues.get(3).getKey(), equalTo("SLING-8394"));
+ assertThat(issues.get(4).getKey(), equalTo("SLING-8393"));
+ assertThat(issues.get(5).getKey(), equalTo("SLING-8392"));
+ assertThat(issues.get(6).getKey(), equalTo("SLING-8338"));
+ }
}
diff --git a/src/test/java/org/apache/sling/cli/impl/nexus/RepositoryServiceTest.java b/src/test/java/org/apache/sling/cli/impl/nexus/RepositoryServiceTest.java
index 4591f43..abba1a0 100644
--- a/src/test/java/org/apache/sling/cli/impl/nexus/RepositoryServiceTest.java
+++ b/src/test/java/org/apache/sling/cli/impl/nexus/RepositoryServiceTest.java
@@ -18,7 +18,6 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.cli.impl.nexus;
-import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;