From ecb8f5e19e1e8dc36653b03aaea6565cb21c0455 Mon Sep 17 00:00:00 2001 From: iapplejohn Date: Thu, 24 Jan 2019 17:08:20 +0800 Subject: [PATCH 01/39] Add the crumbFlag as the 2nd parameter of getConsoleOutputText(bufferOffset) method (#386) --- .../java/com/offbytwo/jenkins/model/BuildWithDetails.java | 8 ++++---- .../com/offbytwo/jenkins/model/BuildWithDetailsTest.java | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java index 8674e921..18e1f320 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java @@ -407,7 +407,7 @@ public String getConsoleOutputHtml() throws IOException { * @throws IOException in case of an error. * */ - public void streamConsoleOutput(final BuildConsoleStreamListener listener, final int poolingInterval, final int poolingTimeout) throws InterruptedException, IOException { + public void streamConsoleOutput(final BuildConsoleStreamListener listener, final int poolingInterval, final int poolingTimeout, boolean crumbFlag) throws InterruptedException, IOException { // Calculate start and timeout final long startTime = System.currentTimeMillis(); final long timeoutTime = startTime + (poolingTimeout * 1000); @@ -417,7 +417,7 @@ public void streamConsoleOutput(final BuildConsoleStreamListener listener, final Thread.sleep(poolingInterval * 1000); ConsoleLog consoleLog = null; - consoleLog = getConsoleOutputText(bufferOffset); + consoleLog = getConsoleOutputText(bufferOffset, crumbFlag); String logString = consoleLog.getConsoleLog(); if (logString != null && !logString.isEmpty()) { listener.onData(logString); @@ -447,11 +447,11 @@ public void streamConsoleOutput(final BuildConsoleStreamListener listener, final * {@code CR+LF}. * @throws IOException in case of a failure. */ - public ConsoleLog getConsoleOutputText(int bufferOffset) throws IOException { + public ConsoleLog getConsoleOutputText(int bufferOffset, boolean crumbFlag) throws IOException { List formData = new ArrayList<>(); formData.add(new BasicNameValuePair("start", Integer.toString(bufferOffset))); String path = getUrl() + "logText/progressiveText"; - HttpResponse httpResponse = client.post_form_with_result(path, formData, false); + HttpResponse httpResponse = client.post_form_with_result(path, formData, crumbFlag); Header moreDataHeader = httpResponse.getFirstHeader(MORE_DATA_HEADER); Header textSizeHeader = httpResponse.getFirstHeader(TEXT_SIZE_HEADER); diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/model/BuildWithDetailsTest.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/model/BuildWithDetailsTest.java index 83ddd07b..dd4969b3 100644 --- a/jenkins-client/src/test/java/com/offbytwo/jenkins/model/BuildWithDetailsTest.java +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/model/BuildWithDetailsTest.java @@ -52,7 +52,7 @@ public void getBuildLogWithBuffer() { given(response.getFirstHeader(BuildWithDetails.MORE_DATA_HEADER)).willReturn(moreDataHeader); given(response.getFirstHeader(BuildWithDetails.TEXT_SIZE_HEADER)).willReturn(textSizeHeader); given(client.post_form_with_result(anyString(),anyListOf(NameValuePair.class),anyBoolean())).willReturn(response); - ConsoleLog consoleOutputText = buildWithDetails.getConsoleOutputText(500); + ConsoleLog consoleOutputText = buildWithDetails.getConsoleOutputText(500, false); assertThat(consoleOutputText.getConsoleLog()).isEqualTo(text); assertThat(consoleOutputText.getCurrentBufferSize()).isEqualTo(textLength); assertThat(consoleOutputText.getHasMoreData()).isFalse(); @@ -86,7 +86,7 @@ public void onData(String newLogChunk) { public void finished() { assertThat(buffer.toString()).isEqualTo(text); } - },1,2); + },1,2, false); } catch (IOException e) { fail("Should not return exception",e); } @@ -114,7 +114,7 @@ public void onData(String newLogChunk) { public void finished() { fail("Should timeout"); } - },1,2); + },1,2, false); } catch (IOException e) { fail("Should not return exception",e); } From aecd01460a741f44fd00e19ba8a50dce1a4ae8b3 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sat, 30 Mar 2019 11:56:20 +0100 Subject: [PATCH 02/39] Updated Release Notes. --- ReleaseNotes.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 9ecf4fb9..9cb659f0 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -4,6 +4,12 @@ * ... + * [Pull Request #386][pull-386] + + Add the crumbFlag as the 2nd parameter of getConsoleOutputText method + +https://github.com/jenkinsci/java-client-api/pull/386 + ## Release 0.3.8 * [Fixed Issue 289][issue-289] @@ -1083,6 +1089,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [pull-240]: https://github.com/jenkinsci/java-client-api/pull/240 [pull-247]: https://github.com/jenkinsci/java-client-api/pull/247 [pull-262]: https://github.com/jenkinsci/java-client-api/pull/262 +[pull-386]: https://github.com/jenkinsci/java-client-api/pull/386 [jissue-35002]: https://issues.jenkins-ci.org/browse/JENKINS-35002 [jissue-35108]: https://issues.jenkins-ci.org/browse/JENKINS-35108 [jissue-38787]: https://issues.jenkins-ci.org/browse/JENKINS-38787 From 812ca294e68de618db153db042145de99a4dd606 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sat, 30 Mar 2019 11:24:24 +0100 Subject: [PATCH 03/39] Fixed #394 - Replace library code with self implemented. --- ReleaseNotes.md | 4 +++- .../offbytwo/jenkins/model/BuildWithDetails.java | 14 +++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 9cb659f0..c668d183 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,7 +2,9 @@ ## Release 0.3.9 (NOT RELEASED YET) - * ... + * [Fixed Issue 394][issue-394] + + Replace `Strings.isNullOrEmpty()` with self implemented code. * [Pull Request #386][pull-386] diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java index 18e1f320..20ffbadc 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java @@ -273,12 +273,16 @@ public void updateDescription(String description) throws IOException { updateDescription(description, false); } + private boolean isNullOrEmpty(String value) { + return value == null || value.isEmpty(); + } + private BuildCause convertToBuildCause(Map cause) { BuildCause cause_object = new BuildCause(); // TODO: Think about it. Can this be done more simpler? String description = (String) cause.get("shortDescription"); - if (!Strings.isNullOrEmpty(description)) { + if (!isNullOrEmpty(description)) { cause_object.setShortDescription(description); } @@ -288,22 +292,22 @@ private BuildCause convertToBuildCause(Map cause) { } String upstreamProject = (String) cause.get("upstreamProject"); - if (!Strings.isNullOrEmpty(upstreamProject)) { + if (!isNullOrEmpty(upstreamProject)) { cause_object.setUpstreamProject(upstreamProject); } String upstreamUrl = (String) cause.get("upstreamUrl"); - if (!Strings.isNullOrEmpty(upstreamUrl)) { + if (!isNullOrEmpty(upstreamUrl)) { cause_object.setUpstreamUrl(upstreamUrl); } String userId = (String) cause.get("userId"); - if (!Strings.isNullOrEmpty(userId)) { + if (!isNullOrEmpty(userId)) { cause_object.setUserId(userId); } String userName = (String) cause.get("userName"); - if (!Strings.isNullOrEmpty(userName)) { + if (!isNullOrEmpty(userName)) { cause_object.setUserName(userName); } return cause_object; From 37dacfb0ac1837fc9f9b85cc8272471e30aafd00 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sat, 30 Mar 2019 19:59:41 +0100 Subject: [PATCH 04/39] Fixed #396 - Added Unit Test for EncodingUtils. --- ReleaseNotes.md | 6 ++ .../client/util/EncodingUtilsTest.java | 57 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java diff --git a/ReleaseNotes.md b/ReleaseNotes.md index c668d183..af5bc943 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ ## Release 0.3.9 (NOT RELEASED YET) + * [Fixed Issue 396][issue-396] + + Add Unit Test for EncodingUtils. + * [Fixed Issue 394][issue-394] Replace `Strings.isNullOrEmpty()` with self implemented code. @@ -1080,6 +1084,8 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-289]: https://github.com/jenkinsci/java-client-api/issues/289 [issue-298]: https://github.com/jenkinsci/java-client-api/issues/298 [issue-301]: https://github.com/jenkinsci/java-client-api/issues/301 +[issue-394]: https://github.com/jenkinsci/java-client-api/issues/394 +[issue-396]: https://github.com/jenkinsci/java-client-api/issues/396 [pull-123]: https://github.com/jenkinsci/java-client-api/pull/123 [pull-149]: https://github.com/jenkinsci/java-client-api/pull/149 [pull-158]: https://github.com/jenkinsci/java-client-api/pull/158 diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java new file mode 100644 index 00000000..28913aab --- /dev/null +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java @@ -0,0 +1,57 @@ +package com.offbytwo.jenkins.client.util; + +import org.assertj.core.api.Assertions; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class EncodingUtilsTest { + + @Test + public void encodeShouldReturnEncodedDoubleQuoteAndSpace() { + String result = EncodingUtils.encode("!\"& "); + assertThat(result).isEqualTo("!%22&%20"); + } + + @Test + public void encodeShouldReturnNotEncodeSafeChars() { + String result = EncodingUtils.encode("-._~!$'()*,;&=@:+"); + assertThat(result).isEqualTo("-._~!$'()*,;&=@:+"); + } + @Test + public void encodeShouldReturnNotEncodeAlpha() { + String result = EncodingUtils.encode("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + assertThat(result).isEqualTo("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + } + + @Test + public void encodeShouldReturnEncodingUmlautAndOthers() { + String result = EncodingUtils.encode("äöü#{}"); + assertThat(result).isEqualTo("%C3%A4%C3%B6%C3%BC%23%7B%7D"); + } + + @Test + public void encodeParamShouldReturnEncodedExclamationMarkDoubleQuoteAmpersampSpace() { + String result = EncodingUtils.encodeParam("!\"& "); + assertThat(result).isEqualTo("%21%22%26+"); + } + + @Test + public void encodeParamShouldReturnNotEncodeSafeChars() { + String result = EncodingUtils.encodeParam("-_.*"); + assertThat(result).isEqualTo("-_.*"); + } + + @Test + public void encodeParamShouldReturnEncodedUmlautAndOthers() { + String result = EncodingUtils.encodeParam("äöü#{}"); + assertThat(result).isEqualTo("%C3%A4%C3%B6%C3%BC%23%7B%7D"); + } + + @Test + public void encodeParamShouldReturnEncodedCharacters() { + String result = EncodingUtils.encodeParam("-._~!$'()*,;&=@:+"); + assertThat(result).isEqualTo("-._%7E%21%24%27%28%29*%2C%3B%26%3D%40%3A%2B"); + } + +} \ No newline at end of file From d4b0c13165b878a7a1060dc9624a04b160460be7 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sat, 30 Mar 2019 20:23:38 +0100 Subject: [PATCH 05/39] Fixed #397 - Refactored Code Replaced UrlEscapers calls with EncodingUtils --- ReleaseNotes.md | 4 ++++ .../main/java/com/offbytwo/jenkins/JenkinsServer.java | 10 +++++----- .../com/offbytwo/jenkins/client/JenkinsHttpClient.java | 5 ++--- .../offbytwo/jenkins/client/JenkinsHttpConnection.java | 2 +- .../offbytwo/jenkins/client/util/EncodingUtils.java | 5 ++--- .../main/java/com/offbytwo/jenkins/model/Computer.java | 4 ++-- .../offbytwo/jenkins/model/ComputerWithDetails.java | 8 ++++---- .../java/com/offbytwo/jenkins/model/FolderJob.java | 2 +- .../src/main/java/com/offbytwo/jenkins/model/Job.java | 6 ++---- .../jenkins/client/util/EncodingUtilsTest.java | 9 ++++----- 10 files changed, 27 insertions(+), 28 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index af5bc943..7a1a6bc4 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ ## Release 0.3.9 (NOT RELEASED YET) + * [Fixed Issue 397][issue-397] + + Refactored Code Replaced UrlEscapers calls with EncodingUtils. + * [Fixed Issue 396][issue-396] Add Unit Test for EncodingUtils. diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java index a7e0c416..8753a1a3 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java @@ -386,7 +386,7 @@ public void createJob(FolderJob folder, String jobName, String jobXml) throws IO * @throws IOException in case of an error. */ public void createJob(FolderJob folder, String jobName, String jobXml, Boolean crumbFlag) throws IOException { - client.post_xml(UrlUtils.toBaseUrl(folder) + "createItem?name=" + EncodingUtils.encodeParam(jobName), jobXml, crumbFlag); + client.post_xml(UrlUtils.toBaseUrl(folder) + "createItem?name=" + EncodingUtils.formParameter(jobName), jobXml, crumbFlag); } /** @@ -438,7 +438,7 @@ public void createView(FolderJob folder, String viewName, String viewXml) throws * @throws IOException in case of an error. */ public void createView(FolderJob folder, String viewName, String viewXml, Boolean crumbFlag) throws IOException { - client.post_xml(UrlUtils.toBaseUrl(folder) + "createView?name=" + EncodingUtils.encodeParam(viewName), viewXml, + client.post_xml(UrlUtils.toBaseUrl(folder) + "createView?name=" + EncodingUtils.formParameter(viewName), viewXml, crumbFlag); } @@ -488,7 +488,7 @@ public void createFolder(FolderJob folder, String jobName, Boolean crumbFlag) th // https://gist.github.com/stuart-warren/7786892 was slightly helpful // here ImmutableMap params = ImmutableMap.of("mode", "com.cloudbees.hudson.plugins.folder.Folder", - "name", EncodingUtils.encodeParam(jobName), "from", "", "Submit", "OK"); + "name", EncodingUtils.formParameter(jobName), "from", "", "Submit", "OK"); client.post_form(UrlUtils.toBaseUrl(folder) + "createItem?", params, crumbFlag); } @@ -627,7 +627,7 @@ public void updateJob(FolderJob folder, String jobName, String jobXml, boolean c /** * @param jobName name of the job. - * @param name name of the parameter. + * @param name name of the formParameter. * @param description of the parameters. * @param defaultValue the defaultValue for the parameters. * @throws IOException in case of an error. @@ -884,7 +884,7 @@ public void renameJob(FolderJob folder, String oldJobName, String newJobName) th public void renameJob(FolderJob folder, String oldJobName, String newJobName, Boolean crumbFlag) throws IOException { client.post(UrlUtils.toJobBaseUrl(folder, oldJobName) - + "/doRename?newName=" + EncodingUtils.encodeParam(newJobName), + + "/doRename?newName=" + EncodingUtils.formParameter(newJobName), crumbFlag); } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java index 3954f952..45276757 100755 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java @@ -17,7 +17,6 @@ import net.sf.json.JSONObject; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; -import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; @@ -290,10 +289,10 @@ public void post_form(String path, Map data, boolean crumbFlag) // helpful here List queryParams = Lists.newArrayList(); for (String param : data.keySet()) { - queryParams.add(param + "=" + EncodingUtils.encodeParam(data.get(param))); + queryParams.add(param + "=" + EncodingUtils.formParameter(data.get(param))); } - queryParams.add("json=" + EncodingUtils.encodeParam(JSONObject.fromObject(data).toString())); + queryParams.add("json=" + EncodingUtils.formParameter(JSONObject.fromObject(data).toString())); String value = mapper.writeValueAsString(data); StringEntity stringEntity = new StringEntity(value, ContentType.APPLICATION_FORM_URLENCODED); request = new HttpPost(UrlUtils.toNoApiUri(uri, context, path) + StringUtils.join(queryParams, "&")); diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpConnection.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpConnection.java index 26a6fb01..b90bfcaf 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpConnection.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpConnection.java @@ -150,7 +150,7 @@ public interface JenkinsHttpConnection extends Closeable { * useful for other API calls as well. Unlike post and post_xml, the path is * *not* modified by adding "/toJsonApiUri/json". Additionally, the params * in data are provided as both request parameters including a json - * parameter, *and* in the JSON-formatted StringEntity, because this is what + * formParameter, *and* in the JSON-formatted StringEntity, because this is what * the folder creation call required. It is unclear if any other jenkins * APIs operate in this fashion. * diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/util/EncodingUtils.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/util/EncodingUtils.java index 25661294..11bd3ff3 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/util/EncodingUtils.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/util/EncodingUtils.java @@ -9,11 +9,10 @@ private EncodingUtils() { public static String encode(String pathPart) { // jenkins doesn't like the + for space, use %20 instead - String escape = UrlEscapers.urlPathSegmentEscaper().escape(pathPart); - return escape; + return UrlEscapers.urlPathSegmentEscaper().escape(pathPart); } - public static String encodeParam(String pathPart) { + public static String formParameter(String pathPart) { // jenkins doesn't like the + for space, use %20 instead return UrlEscapers.urlFormParameterEscaper().escape(pathPart); } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Computer.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Computer.java index edc7350c..75f63af9 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Computer.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Computer.java @@ -9,7 +9,7 @@ import java.io.IOException; import java.util.List; -import com.google.common.net.UrlEscapers; +import com.offbytwo.jenkins.client.util.EncodingUtils; /** * @author Kelly Plummer @@ -46,7 +46,7 @@ public ComputerWithDetails details() throws IOException { if ("master".equals(displayName)) { name = "(master)"; } else { - name = UrlEscapers.urlPathSegmentEscaper().escape(displayName); + name = EncodingUtils.encode(displayName); } // TODO: Check if depth=2 is a good idea or if it could be solved // better. diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java index c565f8a2..93206009 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java @@ -12,7 +12,7 @@ import java.util.Map; import com.google.common.base.Function; -import com.google.common.net.UrlEscapers; +import com.offbytwo.jenkins.client.util.EncodingUtils; public class ComputerWithDetails extends Computer { @@ -72,7 +72,7 @@ public LoadStatistics getLoadStatistics() throws IOException { if ("master".equals(displayName)) { name = "(master)"; } else { - name = UrlEscapers.urlPathSegmentEscaper().escape(displayName); + name = EncodingUtils.encode(displayName); } // TODO: ?depth=2 good idea or could this being done better? @@ -85,7 +85,7 @@ public void toggleOffline(boolean crumbFlag) throws IOException { if ("master".equals(displayName)) { name = "(master)"; } else { - name = UrlEscapers.urlPathSegmentEscaper().escape(displayName); + name = EncodingUtils.encode(displayName); } Map data = new HashMap(); @@ -102,7 +102,7 @@ public void changeOfflineCause(String cause, boolean crumbFlag) throws IOExcepti if ("master".equals(displayName)) { name = "(master)"; } else { - name = UrlEscapers.urlPathSegmentEscaper().escape(displayName); + name = EncodingUtils.encode(displayName); } Map data = new HashMap(); diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java index 844c801d..25a26770 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java @@ -95,7 +95,7 @@ public void createFolder(String folderName, Boolean crumbFlag) throws IOExceptio // https://gist.github.com/stuart-warren/7786892 was slightly helpful // here ImmutableMap params = ImmutableMap.of("mode", "com.cloudbees.hudson.plugins.folder.Folder", - "name", EncodingUtils.encodeParam(folderName), "from", "", "Submit", "OK"); + "name", EncodingUtils.formParameter(folderName), "from", "", "Submit", "OK"); client.post_form(this.getUrl() + "/createItem?", params, crumbFlag); } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java index 309d728a..24247c8f 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java @@ -17,8 +17,7 @@ import com.google.common.base.Function; import com.google.common.collect.Collections2; -import com.google.common.escape.Escaper; -import com.google.common.net.UrlEscapers; +import com.offbytwo.jenkins.client.util.EncodingUtils; public class Job extends BaseModel { @@ -181,8 +180,7 @@ public int hashCode() { private static class MapEntryToQueryStringPair implements Function, String> { @Override public String apply(Map.Entry entry) { - Escaper escaper = UrlEscapers.urlFormParameterEscaper(); - return escaper.escape(entry.getKey()) + "=" + escaper.escape(entry.getValue()); + return EncodingUtils.formParameter(entry.getKey()) + "=" + EncodingUtils.formParameter(entry.getValue()); } } } diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java index 28913aab..973eb0a8 100644 --- a/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java @@ -1,6 +1,5 @@ package com.offbytwo.jenkins.client.util; -import org.assertj.core.api.Assertions; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -32,25 +31,25 @@ public void encodeShouldReturnEncodingUmlautAndOthers() { @Test public void encodeParamShouldReturnEncodedExclamationMarkDoubleQuoteAmpersampSpace() { - String result = EncodingUtils.encodeParam("!\"& "); + String result = EncodingUtils.formParameter("!\"& "); assertThat(result).isEqualTo("%21%22%26+"); } @Test public void encodeParamShouldReturnNotEncodeSafeChars() { - String result = EncodingUtils.encodeParam("-_.*"); + String result = EncodingUtils.formParameter("-_.*"); assertThat(result).isEqualTo("-_.*"); } @Test public void encodeParamShouldReturnEncodedUmlautAndOthers() { - String result = EncodingUtils.encodeParam("äöü#{}"); + String result = EncodingUtils.formParameter("äöü#{}"); assertThat(result).isEqualTo("%C3%A4%C3%B6%C3%BC%23%7B%7D"); } @Test public void encodeParamShouldReturnEncodedCharacters() { - String result = EncodingUtils.encodeParam("-._~!$'()*,;&=@:+"); + String result = EncodingUtils.formParameter("-._~!$'()*,;&=@:+"); assertThat(result).isEqualTo("-._%7E%21%24%27%28%29*%2C%3B%26%3D%40%3A%2B"); } From 8707e40e385b0b7c878ea8c63881f4916013903b Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sun, 31 Mar 2019 20:13:40 +0200 Subject: [PATCH 06/39] Simplify code. --- .../com/offbytwo/jenkins/client/JenkinsHttpClient.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java index 45276757..3702e6dc 100755 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java @@ -226,7 +226,7 @@ public R post(String path, D data, Class cls, boolea @Override public R post(String path, D data, Class cls, Map fileParams, boolean crumbFlag) throws IOException { HttpPost request = new HttpPost(UrlUtils.toJsonApiUri(uri, context, path)); - if (crumbFlag == true) { + if (crumbFlag) { Crumb crumb = getQuietly("/crumbIssuer", Crumb.class); if (crumb != null) { request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); @@ -301,7 +301,7 @@ public void post_form(String path, Map data, boolean crumbFlag) request = new HttpPost(UrlUtils.toNoApiUri(uri, context, path)); } - if (crumbFlag == true) { + if (crumbFlag) { Crumb crumb = get("/crumbIssuer", Crumb.class); if (crumb != null) { request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); @@ -333,7 +333,7 @@ public HttpResponse post_form_with_result(String path, List data, request = new HttpPost(UrlUtils.toNoApiUri(uri, context, path)); } - if (crumbFlag == true) { + if (crumbFlag) { Crumb crumb = get("/crumbIssuer", Crumb.class); if (crumb != null) { request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); @@ -358,7 +358,7 @@ public String post_xml(String path, String xml_data) throws IOException { @Override public String post_xml(String path, String xml_data, boolean crumbFlag) throws IOException { HttpPost request = new HttpPost(UrlUtils.toJsonApiUri(uri, context, path)); - if (crumbFlag == true) { + if (crumbFlag) { Crumb crumb = getQuietly("/crumbIssuer", Crumb.class); if (crumb != null) { request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); @@ -394,7 +394,7 @@ public String post_text(String path, String textData, boolean crumbFlag) throws public String post_text(String path, String textData, ContentType contentType, boolean crumbFlag) throws IOException { HttpPost request = new HttpPost(UrlUtils.toJsonApiUri(uri, context, path)); - if (crumbFlag == true) { + if (crumbFlag) { Crumb crumb = get("/crumbIssuer", Crumb.class); if (crumb != null) { request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); From 3dcf840682ec39ed1515ea906424569722f48acd Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sun, 31 Mar 2019 21:08:09 +0200 Subject: [PATCH 07/39] Refactored code --- .../jenkins/client/JenkinsHttpClient.java | 44 ++++++------------- 1 file changed, 14 insertions(+), 30 deletions(-) diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java index 3702e6dc..308a6d0e 100755 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java @@ -226,12 +226,7 @@ public R post(String path, D data, Class cls, boolea @Override public R post(String path, D data, Class cls, Map fileParams, boolean crumbFlag) throws IOException { HttpPost request = new HttpPost(UrlUtils.toJsonApiUri(uri, context, path)); - if (crumbFlag) { - Crumb crumb = getQuietly("/crumbIssuer", Crumb.class); - if (crumb != null) { - request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); - } - } + handleCrumbFlag(crumbFlag, request); if (data != null) { String value = mapper.writeValueAsString(data); @@ -278,6 +273,15 @@ public R post(String path, D data, Class cls, Map data, boolean crumbFlag) request = new HttpPost(UrlUtils.toNoApiUri(uri, context, path)); } - if (crumbFlag) { - Crumb crumb = get("/crumbIssuer", Crumb.class); - if (crumb != null) { - request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); - } - } + handleCrumbFlag(crumbFlag, request); HttpResponse response = client.execute(request, localContext); jenkinsVersion = ResponseUtils.getJenkinsVersion(response); @@ -333,12 +332,7 @@ public HttpResponse post_form_with_result(String path, List data, request = new HttpPost(UrlUtils.toNoApiUri(uri, context, path)); } - if (crumbFlag) { - Crumb crumb = get("/crumbIssuer", Crumb.class); - if (crumb != null) { - request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); - } - } + handleCrumbFlag(crumbFlag, request); HttpResponse response = client.execute(request, localContext); jenkinsVersion = ResponseUtils.getJenkinsVersion(response); return response; @@ -358,12 +352,7 @@ public String post_xml(String path, String xml_data) throws IOException { @Override public String post_xml(String path, String xml_data, boolean crumbFlag) throws IOException { HttpPost request = new HttpPost(UrlUtils.toJsonApiUri(uri, context, path)); - if (crumbFlag) { - Crumb crumb = getQuietly("/crumbIssuer", Crumb.class); - if (crumb != null) { - request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); - } - } + handleCrumbFlag(crumbFlag, request); if (xml_data != null) { request.setEntity(new StringEntity(xml_data, ContentType.create("text/xml", "utf-8"))); @@ -394,12 +383,7 @@ public String post_text(String path, String textData, boolean crumbFlag) throws public String post_text(String path, String textData, ContentType contentType, boolean crumbFlag) throws IOException { HttpPost request = new HttpPost(UrlUtils.toJsonApiUri(uri, context, path)); - if (crumbFlag) { - Crumb crumb = get("/crumbIssuer", Crumb.class); - if (crumb != null) { - request.addHeader(new BasicHeader(crumb.getCrumbRequestField(), crumb.getCrumb())); - } - } + handleCrumbFlag(crumbFlag, request); if (textData != null) { request.setEntity(new StringEntity(textData, contentType)); From e252da2f3b7a47e65d78e951bfc64d9207df0fdd Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Mon, 1 Apr 2019 21:38:42 +0200 Subject: [PATCH 08/39] Fixed #398 - Replace literal status codes with constants --- .../src/main/java/com/offbytwo/jenkins/model/Build.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Build.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Build.java index f48e38e8..2d936d1b 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Build.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Build.java @@ -8,6 +8,7 @@ import java.io.IOException; +import org.apache.http.HttpStatus; import org.apache.http.client.HttpResponseException; public class Build extends BaseModel { @@ -122,6 +123,7 @@ public TestReport getTestReport() throws IOException { * @throws IOException in case of an error. */ public TestResult getTestResult() throws IOException { + return client.get(this.getUrl() + "/testReport/?depth=1", TestResult.class); } @@ -141,7 +143,7 @@ public String Stop() throws HttpResponseException, IOException { return client.get(url + "stop"); } catch (HttpResponseException ex) { - if (ex.getStatusCode() == 405) { + if (ex.getStatusCode() == HttpStatus.SC_METHOD_NOT_ALLOWED) { stopPost(); return ""; } @@ -164,7 +166,7 @@ public String Stop(boolean crumbFlag) throws HttpResponseException, IOException return client.get(url + "stop"); } catch (HttpResponseException ex) { - if (ex.getStatusCode() == 405) { + if (ex.getStatusCode() == HttpStatus.SC_METHOD_NOT_ALLOWED) { stopPost(crumbFlag); return ""; } From 04651b761481d2f77f42dc5d44b605c68b1d35af Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Tue, 2 Apr 2019 06:35:51 +0200 Subject: [PATCH 09/39] Fixed #399 - Upgrade Maven Plugins --- ReleaseNotes.md | 5 +++++ pom.xml | 39 ++++++++++++++++++++++++++++----------- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 7a1a6bc4..0a59bcdc 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ ## Release 0.3.9 (NOT RELEASED YET) + * [Fixed Issue 399][issue-399] + + Upgrade Maven Plugins + * [Fixed Issue 397][issue-397] Refactored Code Replaced UrlEscapers calls with EncodingUtils. @@ -1090,6 +1094,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-301]: https://github.com/jenkinsci/java-client-api/issues/301 [issue-394]: https://github.com/jenkinsci/java-client-api/issues/394 [issue-396]: https://github.com/jenkinsci/java-client-api/issues/396 +[issue-399]: https://github.com/jenkinsci/java-client-api/issues/399 [pull-123]: https://github.com/jenkinsci/java-client-api/pull/123 [pull-149]: https://github.com/jenkinsci/java-client-api/pull/149 [pull-158]: https://github.com/jenkinsci/java-client-api/pull/158 diff --git a/pom.xml b/pom.xml index cea2c716..0bec88bc 100644 --- a/pom.xml +++ b/pom.xml @@ -228,15 +228,20 @@ + + org.apache.maven.plugins + maven-help-plugin + 3.1.1 + org.apache.maven.plugins maven-clean-plugin - 3.0.0 + 3.1.0 org.apache.maven.plugins maven-resources-plugin - 3.0.2 + 3.1.0 org.apache.maven.plugins @@ -258,17 +263,17 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + 2.22.1 org.apache.maven.plugins maven-failsafe-plugin - 2.19.1 + 2.22.1 org.apache.maven.plugins maven-surefire-report-plugin - 2.19.1 + 2.22.1 org.apache.maven.plugins @@ -278,7 +283,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.0.2 + 3.1.1 @@ -291,7 +296,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.7.0 + 3.8.0 + + org.apache.maven.plugins + maven-javadoc-plugin + + + + javadoc-no-fork + aggregate-no-fork + + + + From 95a33d4f4b0a4cce452900a8da8b4cd63607a599 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Tue, 2 Apr 2019 21:13:36 +0200 Subject: [PATCH 10/39] Fixed #400 - Upgrade assertj-core to 3.12.2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0bec88bc..d43129bd 100644 --- a/pom.xml +++ b/pom.xml @@ -198,7 +198,7 @@ org.assertj assertj-core - 3.11.1 + 3.12.2 test From 62730cb90e972ba8033adc4cecc69a953239d7e7 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Tue, 2 Apr 2019 21:25:45 +0200 Subject: [PATCH 11/39] Upgrade ReleaseNotes. --- ReleaseNotes.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 0a59bcdc..e2416641 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ ## Release 0.3.9 (NOT RELEASED YET) + * [Fixed Issue 400][issue-400] + + Upgrade assertj-core. + * [Fixed Issue 399][issue-399] Upgrade Maven Plugins @@ -1095,6 +1099,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-394]: https://github.com/jenkinsci/java-client-api/issues/394 [issue-396]: https://github.com/jenkinsci/java-client-api/issues/396 [issue-399]: https://github.com/jenkinsci/java-client-api/issues/399 +[issue-400]: https://github.com/jenkinsci/java-client-api/issues/400 [pull-123]: https://github.com/jenkinsci/java-client-api/pull/123 [pull-149]: https://github.com/jenkinsci/java-client-api/pull/149 [pull-158]: https://github.com/jenkinsci/java-client-api/pull/158 From 3251301a917be0ee56dfa2e34020b01abb5e0ef4 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Tue, 2 Apr 2019 22:06:30 +0200 Subject: [PATCH 12/39] Fixed #401 - Upgrade JUnit to 4.12 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d43129bd..dacee82e 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ 1.644 - 4.11 + 4.12 1.9.5 2.4 1.4.7-jenkins-1 From c033dff4a4af03e51019dd18169d0b538049c6a8 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Tue, 2 Apr 2019 22:15:18 +0200 Subject: [PATCH 13/39] Updated ReleaseNotes. --- ReleaseNotes.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index e2416641..38cd3a83 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ ## Release 0.3.9 (NOT RELEASED YET) + * [Fixed Issue 401][issue-401] + + Upgrade JUnit + * [Fixed Issue 400][issue-400] Upgrade assertj-core. @@ -1100,6 +1104,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-396]: https://github.com/jenkinsci/java-client-api/issues/396 [issue-399]: https://github.com/jenkinsci/java-client-api/issues/399 [issue-400]: https://github.com/jenkinsci/java-client-api/issues/400 +[issue-401]: https://github.com/jenkinsci/java-client-api/issues/401 [pull-123]: https://github.com/jenkinsci/java-client-api/pull/123 [pull-149]: https://github.com/jenkinsci/java-client-api/pull/149 [pull-158]: https://github.com/jenkinsci/java-client-api/pull/158 From 7a05defea155eee23c7f5dc77300394860b60a68 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Tue, 2 Apr 2019 22:18:19 +0200 Subject: [PATCH 14/39] Fixed #402 - Upgrade httpclient/httpcore/httpmime to 4.5.8 --- ReleaseNotes.md | 5 +++++ pom.xml | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 38cd3a83..45b054d4 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ ## Release 0.3.9 (NOT RELEASED YET) + * [Fixed Issue 402][issue-402] + + Upgrade httpclient/httpmine/httpcore. + * [Fixed Issue 401][issue-401] Upgrade JUnit @@ -1105,6 +1109,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-399]: https://github.com/jenkinsci/java-client-api/issues/399 [issue-400]: https://github.com/jenkinsci/java-client-api/issues/400 [issue-401]: https://github.com/jenkinsci/java-client-api/issues/401 +[issue-402]: https://github.com/jenkinsci/java-client-api/issues/402 [pull-123]: https://github.com/jenkinsci/java-client-api/pull/123 [pull-149]: https://github.com/jenkinsci/java-client-api/pull/149 [pull-158]: https://github.com/jenkinsci/java-client-api/pull/158 diff --git a/pom.xml b/pom.xml index dacee82e..51db9575 100644 --- a/pom.xml +++ b/pom.xml @@ -60,9 +60,9 @@ 3.8.1 17.0 2.4 - 4.3.6 - 4.3.3 - 4.3.6 + 4.5.8 + 4.4.11 + 4.5.8 2.9.6 From caf969c801f000d611bd5bc7e318bf71facf9416 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Fri, 5 Apr 2019 18:23:52 +0200 Subject: [PATCH 15/39] Fixed link issues in ReleaseNotes. --- ReleaseNotes.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 45b054d4..66f5364e 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1106,6 +1106,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-301]: https://github.com/jenkinsci/java-client-api/issues/301 [issue-394]: https://github.com/jenkinsci/java-client-api/issues/394 [issue-396]: https://github.com/jenkinsci/java-client-api/issues/396 +[issue-397]: https://github.com/jenkinsci/java-client-api/issues/397 [issue-399]: https://github.com/jenkinsci/java-client-api/issues/399 [issue-400]: https://github.com/jenkinsci/java-client-api/issues/400 [issue-401]: https://github.com/jenkinsci/java-client-api/issues/401 @@ -1127,5 +1128,5 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [jissue-38787]: https://issues.jenkins-ci.org/browse/JENKINS-38787 [jissue-38816]: https://issues.jenkins-ci.org/browse/JENKINS-38816 [jissue-38823]: https://issues.jenkins-ci.org/browse/JENKINS-38823 -[jissue-46445]: https://issues.jenkins-ci.org/browse/JENKINS-46445) -[jissue-46472]: https://issues.jenkins-ci.org/browse/JENKINS-46472) +[jissue-46445]: https://issues.jenkins-ci.org/browse/JENKINS-46445 +[jissue-46472]: https://issues.jenkins-ci.org/browse/JENKINS-46472 From f164cf7f6c865a01e3cc3d1a2fe09ffbf9a4b7a5 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sat, 6 Apr 2019 15:08:32 +0200 Subject: [PATCH 16/39] Cleaned up ReleaseNotes. --- ReleaseNotes.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 66f5364e..f54d4788 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -34,8 +34,6 @@ Add the crumbFlag as the 2nd parameter of getConsoleOutputText method -https://github.com/jenkinsci/java-client-api/pull/386 - ## Release 0.3.8 * [Fixed Issue 289][issue-289] From 23e120ec112c4c696bea144c63b2f56d5a4e3543 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sun, 7 Apr 2019 12:51:06 +0200 Subject: [PATCH 17/39] Fixed #405 - Update jackson-databind to 2.9.8 --- ReleaseNotes.md | 11 +++++++++++ pom.xml | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index f54d4788..c142e628 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,16 @@ ## Release 0.3.9 (NOT RELEASED YET) + * [Fixed Issue 405][issue-405] + + * CVE-2018-14718 + * CVE-2018-14719 + * CVE-2018-14720 + * CVE-2018-14721 + * CVE-2018-19360 + * CVE-2018-19361 + * CVE-2018-19362 + * [Fixed Issue 402][issue-402] Upgrade httpclient/httpmine/httpcore. @@ -1109,6 +1119,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-400]: https://github.com/jenkinsci/java-client-api/issues/400 [issue-401]: https://github.com/jenkinsci/java-client-api/issues/401 [issue-402]: https://github.com/jenkinsci/java-client-api/issues/402 +[issue-405]: https://github.com/jenkinsci/java-client-api/issues/405 [pull-123]: https://github.com/jenkinsci/java-client-api/pull/123 [pull-149]: https://github.com/jenkinsci/java-client-api/pull/149 [pull-158]: https://github.com/jenkinsci/java-client-api/pull/158 diff --git a/pom.xml b/pom.xml index 51db9575..481dedff 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ 4.5.8 4.4.11 4.5.8 - 2.9.6 + 2.9.8 From 315bb4fb7cad93a970b64c8d24186a1d6b02429a Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Tue, 2 Apr 2019 22:39:24 +0200 Subject: [PATCH 18/39] Fixed #395 - Remove google guava lib - Replaced many things with base JDK8 constructs. - In JDK9 we can improve some more parts. - We do not generat shaded artifact 'stash' anymore. - Upgrade version number based on the change. --- ReleaseNotes.md | 13 ++- jenkins-client-it-docker/pom.xml | 7 +- .../NoExecutorStartedGetJobIT.java | 3 +- .../NoExecutorStartedGetJobXmlIT.java | 4 +- jenkins-client/pom.xml | 35 +------ .../com/offbytwo/jenkins/JenkinsServer.java | 70 ++++++------- .../jenkins/client/JenkinsHttpClient.java | 8 +- .../jenkins/client/util/EncodingUtils.java | 32 +++++- .../jenkins/helper/FunctionalHelper.java | 22 +++++ .../jenkins/model/BuildWithDetails.java | 97 ++++++++----------- .../offbytwo/jenkins/model/ComputerSet.java | 15 +-- .../jenkins/model/ComputerWithDetails.java | 12 +-- .../com/offbytwo/jenkins/model/FolderJob.java | 45 +++++---- .../java/com/offbytwo/jenkins/model/Job.java | 9 +- .../jenkins/model/JobWithDetails.java | 92 +++++++----------- .../com/offbytwo/jenkins/model/MainView.java | 7 +- .../jenkins/model/MavenJobWithDetails.java | 85 +++++++--------- .../java/com/offbytwo/jenkins/FirstTest.java | 56 +++++++++++ .../offbytwo/jenkins/JenkinsServerTest.java | 2 +- .../client/util/EncodingUtilsTest.java | 14 ++- .../jenkins/integration/FolderTestsIT.java | 4 +- .../jenkins/integration/JenkinsServerIT.java | 2 +- pom.xml | 9 +- 23 files changed, 331 insertions(+), 312 deletions(-) create mode 100644 jenkins-client/src/main/java/com/offbytwo/jenkins/helper/FunctionalHelper.java create mode 100644 jenkins-client/src/test/java/com/offbytwo/jenkins/FirstTest.java diff --git a/ReleaseNotes.md b/ReleaseNotes.md index c142e628..7003cd77 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,6 +1,16 @@ # Release Notes -## Release 0.3.9 (NOT RELEASED YET) +## Release 0.4.0 (NOT RELEASED YET) + + * [Fixed Issue 395][issue-395] + + * Remove google guava lib + * Removed also the creation of the shaded artifact `stash` + cause we do not rely on Guava anymore. So you + can use the original artifact directly. + * This results in a bumping of the version + number cause it a change which is breaking + with previous version 0.3.8. * [Fixed Issue 405][issue-405] @@ -1113,6 +1123,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-298]: https://github.com/jenkinsci/java-client-api/issues/298 [issue-301]: https://github.com/jenkinsci/java-client-api/issues/301 [issue-394]: https://github.com/jenkinsci/java-client-api/issues/394 +[issue-395]: https://github.com/jenkinsci/java-client-api/issues/395 [issue-396]: https://github.com/jenkinsci/java-client-api/issues/396 [issue-397]: https://github.com/jenkinsci/java-client-api/issues/397 [issue-399]: https://github.com/jenkinsci/java-client-api/issues/399 diff --git a/jenkins-client-it-docker/pom.xml b/jenkins-client-it-docker/pom.xml index 8f4c7ac7..11e6b485 100644 --- a/jenkins-client-it-docker/pom.xml +++ b/jenkins-client-it-docker/pom.xml @@ -11,7 +11,7 @@ com.offbytwo.jenkins jenkins-client-parent - 0.3.9-SNAPSHOT + 0.4.0-SNAPSHOT jenkins-client-it-docker @@ -43,11 +43,6 @@ assertj-core test - - com.google.guava - guava - test - org.apache.httpcomponents httpclient diff --git a/jenkins-client-it-docker/src/test/java/com/offbytwo/jenkins/integration/NoExecutorStartedGetJobIT.java b/jenkins-client-it-docker/src/test/java/com/offbytwo/jenkins/integration/NoExecutorStartedGetJobIT.java index 279bb40a..35c2aeac 100644 --- a/jenkins-client-it-docker/src/test/java/com/offbytwo/jenkins/integration/NoExecutorStartedGetJobIT.java +++ b/jenkins-client-it-docker/src/test/java/com/offbytwo/jenkins/integration/NoExecutorStartedGetJobIT.java @@ -7,7 +7,6 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import com.google.common.base.Joiner; import com.offbytwo.jenkins.model.Build; import com.offbytwo.jenkins.model.BuildResult; import com.offbytwo.jenkins.model.BuildWithDetails; @@ -50,7 +49,7 @@ private void checkJob(BuildWithDetails details) throws IOException { "Building in workspace /var/jenkins_home/jobs/test/workspace", "[workspace] $ /bin/sh -xe /tmp/hudson2556403647634111927.sh", "+ echo test", "test", "Finished: SUCCESS", "" }; - String expectedOutput = Joiner.on("\r\n").join(expectedOutputLines); + String expectedOutput = String.join("\r\n", expectedOutputLines); // Hint: It looks like the consoleOutputText contains CR+LF String resultingOutput = details.getConsoleOutputText(); assertThat(resultingOutput).isEqualTo(expectedOutput); diff --git a/jenkins-client-it-docker/src/test/java/com/offbytwo/jenkins/integration/NoExecutorStartedGetJobXmlIT.java b/jenkins-client-it-docker/src/test/java/com/offbytwo/jenkins/integration/NoExecutorStartedGetJobXmlIT.java index 451e7585..38a3507a 100644 --- a/jenkins-client-it-docker/src/test/java/com/offbytwo/jenkins/integration/NoExecutorStartedGetJobXmlIT.java +++ b/jenkins-client-it-docker/src/test/java/com/offbytwo/jenkins/integration/NoExecutorStartedGetJobXmlIT.java @@ -7,8 +7,6 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import com.google.common.base.Joiner; - @Test(groups = { Groups.NO_EXECUTOR_GROUP }) public class NoExecutorStartedGetJobXmlIT extends AbstractJenkinsIntegrationCase { @@ -47,7 +45,7 @@ public void beforeMethod() throws IOException { @Test public void getJobXmlShouldReturnTheExpectedConfigXml() { - String expectedXml = Joiner.on("\n").join(CONFIG_XML); + String expectedXml = String.join("\n", CONFIG_XML); assertThat(jobXml).isEqualTo(expectedXml); } diff --git a/jenkins-client/pom.xml b/jenkins-client/pom.xml index 75eb3fc9..ea595a4d 100644 --- a/jenkins-client/pom.xml +++ b/jenkins-client/pom.xml @@ -11,7 +11,7 @@ com.offbytwo.jenkins jenkins-client-parent - 0.3.9-SNAPSHOT + 0.4.0-SNAPSHOT jenkins-client @@ -51,11 +51,6 @@ - - com.google.guava - guava - - org.apache.commons commons-lang3 @@ -127,28 +122,6 @@ org.apache.maven.plugins maven-shade-plugin - - stash - package - - shade - - - - - com.google.guava:guava - - - true - stash - - - com.google.common - com.google.common.jenkins_client_jarjar - - - - httpclient package @@ -164,12 +137,6 @@ true apachehttp - - - com.google.common - com.google.common.jenkins_client_jarjar - - diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java index 8753a1a3..f76da927 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java @@ -8,11 +8,14 @@ import java.io.IOException; import java.net.URI; +import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.bind.JAXBException; +import com.offbytwo.jenkins.helper.FunctionalHelper; +import com.offbytwo.jenkins.model.BaseModel; import org.apache.http.HttpStatus; import org.apache.http.client.HttpResponseException; import org.apache.http.entity.ContentType; @@ -20,10 +23,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; import com.offbytwo.jenkins.client.JenkinsHttpClient; import com.offbytwo.jenkins.client.JenkinsHttpConnection; import com.offbytwo.jenkins.client.util.EncodingUtils; @@ -45,6 +44,12 @@ import com.offbytwo.jenkins.model.QueueReference; import com.offbytwo.jenkins.model.View; import java.io.Closeable; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT; +import static java.util.stream.Collectors.toMap; /** * The main starting point for interacting with a Jenkins server. @@ -167,13 +172,10 @@ public Map getJobs(FolderJob folder, String view) throws IOExceptio viewClass = View.class; } List jobs = client.get(path, viewClass).getJobs(); - return Maps.uniqueIndex(jobs, new Function() { - @Override - public String apply(Job job) { - job.setClient(client); - return job.getName(); - } - }); + + return jobs.stream() + .map(SET_CLIENT(this.client)) + .collect(toMap(s -> s.getName(), s -> s)); } /** @@ -198,22 +200,23 @@ public Map getViews(FolderJob folder) throws IOException { // This is much better than using &depth=2 // http://localhost:8080/api/json?pretty&tree=views[name,url,jobs[name,url]] List views = client.get(UrlUtils.toBaseUrl(folder) + "?tree=views[name,url,jobs[name,url]]", MainView.class).getViews(); - return Maps.uniqueIndex(views, new Function() { - @Override - public String apply(View view) { - view.setClient(client); - // TODO: Think about the following? Does there exists a - // simpler/more elegant method? + + //TODO: Think about this Lambda. It's too large? Make it smaller! + return views.stream().map(view -> { + SET_CLIENT(this.client); + + // TODO: Think about the following? Does there exists a simpler/more + // elegant method? for (Job job : view.getJobs()) { - job.setClient(client); + SET_CLIENT(this.client); } - for (View item : view.getViews()) { - item.setClient(client); + for (View viewView : view.getViews()) { + SET_CLIENT(this.client); } - return view.getName(); - } - }); + return view; + }) + .collect(Collectors.toMap(s -> s.getName(), v -> v)); } /** @@ -317,10 +320,9 @@ public Optional getFolderJob(Job job) throws IOException { try { FolderJob folder = client.get(job.getUrl(), FolderJob.class); if (!folder.isFolder()) { - return Optional.absent(); + return Optional.empty(); } folder.setClient(client); - return Optional.of(folder); } catch (HttpResponseException e) { LOGGER.debug("getForlderJob(job={}) status={}", job, e.getStatusCode()); @@ -487,8 +489,12 @@ public void createFolder(FolderJob folder, String jobName) throws IOException { public void createFolder(FolderJob folder, String jobName, Boolean crumbFlag) throws IOException { // https://gist.github.com/stuart-warren/7786892 was slightly helpful // here - ImmutableMap params = ImmutableMap.of("mode", "com.cloudbees.hudson.plugins.folder.Folder", - "name", EncodingUtils.formParameter(jobName), "from", "", "Submit", "OK"); + //TODO: JDK9+: Map.of(...) + Map params = new HashMap<>(); + params.put("mode", "com.cloudbees.hudson.plugins.folder.Folder"); + params.put("name", jobName); + params.put("from", ""); + params.put("Submit", "OK"); client.post_form(UrlUtils.toBaseUrl(folder) + "createItem?", params, crumbFlag); } @@ -535,13 +541,9 @@ public LabelWithDetails getLabel(String labelName) throws IOException { */ public Map getComputers() throws IOException { List computers = client.get("computer/", Computer.class).getComputers(); - return Maps.uniqueIndex(computers, new Function() { - @Override - public String apply(Computer computer) { - computer.setClient(client); - return computer.getDisplayName().toLowerCase(); - } - }); + return computers.stream() + .map(SET_CLIENT(this.client)) + .collect(Collectors.toMap(s -> s.getDisplayName().toLowerCase(), Function.identity())); } /** diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java index 308a6d0e..4eadc5c9 100755 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/JenkinsHttpClient.java @@ -6,8 +6,6 @@ package com.offbytwo.jenkins.client; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Lists; -import com.google.common.io.ByteStreams; import com.offbytwo.jenkins.client.util.EncodingUtils; import com.offbytwo.jenkins.client.util.RequestReleasingInputStream; import com.offbytwo.jenkins.client.validator.HttpResponseValidator; @@ -47,6 +45,8 @@ import java.io.IOException; import java.io.InputStream; import java.net.URI; +import java.nio.ByteBuffer; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -291,7 +291,7 @@ public void post_form(String path, Map data, boolean crumbFlag) if (data != null) { // https://gist.github.com/stuart-warren/7786892 was slightly // helpful here - List queryParams = Lists.newArrayList(); + List queryParams = new ArrayList<>(); for (String param : data.keySet()) { queryParams.add(param + "=" + EncodingUtils.formParameter(data.get(param))); } @@ -493,7 +493,7 @@ protected void setLocalContext(final HttpContext localContext) { private T objectFromResponse(Class cls, HttpResponse response) throws IOException { InputStream content = response.getEntity().getContent(); - byte[] bytes = ByteStreams.toByteArray(content); + byte[] bytes = IOUtils.toByteArray(content); T result = mapper.readValue(bytes, cls); // TODO: original: // T result = mapper.readValue(content, cls); diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/util/EncodingUtils.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/util/EncodingUtils.java index 11bd3ff3..4638634b 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/client/util/EncodingUtils.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/client/util/EncodingUtils.java @@ -1,7 +1,21 @@ +/* + * Copyright (c) 2019 Karl Heinz Marbaise, and contributors. + * + * Distributed under the MIT license: http://opensource.org/licenses/MIT + */ package com.offbytwo.jenkins.client.util; -import com.google.common.net.UrlEscapers; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + +/** + * This class is a help class to centralize the + * encoding parts which will call an appropriate library function. + * + * @author Karl Heinz Marbaise + */ public final class EncodingUtils { private EncodingUtils() { @@ -9,12 +23,24 @@ private EncodingUtils() { public static String encode(String pathPart) { // jenkins doesn't like the + for space, use %20 instead - return UrlEscapers.urlPathSegmentEscaper().escape(pathPart); + try { + return URLEncoder.encode(pathPart, StandardCharsets.UTF_8.displayName()); + } catch (UnsupportedEncodingException e) { + // Should never happen, because that would imply that + // the parameter StandardCharsets.UTF_8 is wrong. + throw new IllegalArgumentException(e); + } } public static String formParameter(String pathPart) { // jenkins doesn't like the + for space, use %20 instead - return UrlEscapers.urlFormParameterEscaper().escape(pathPart); + try { + return URLEncoder.encode(pathPart, StandardCharsets.UTF_8.displayName()); + } catch (UnsupportedEncodingException e) { + // Should never happen, because that would imply that + // the parameter StandardCharsets.UTF_8 is wrong. + throw new IllegalArgumentException(e); + } } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/helper/FunctionalHelper.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/helper/FunctionalHelper.java new file mode 100644 index 00000000..d7f507b7 --- /dev/null +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/helper/FunctionalHelper.java @@ -0,0 +1,22 @@ +package com.offbytwo.jenkins.helper; + +import com.offbytwo.jenkins.client.JenkinsHttpConnection; +import com.offbytwo.jenkins.model.BaseModel; + +import java.util.function.Function; + +public final class FunctionalHelper { + + private FunctionalHelper() { + // intentionally empty. + } + + public static final Function SET_CLIENT(JenkinsHttpConnection client) { + return s -> { + s.setClient(client); + return s; + }; + } + + +} diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java index 20ffbadc..9272c39e 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java @@ -7,9 +7,6 @@ package com.offbytwo.jenkins.model; import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.Predicate; -import com.google.common.base.Strings; -import com.google.common.collect.ImmutableMap; import com.offbytwo.jenkins.helper.BuildConsoleStreamListener; import org.apache.http.Header; import org.apache.http.HttpResponse; @@ -27,11 +24,17 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; -import static com.google.common.collect.Collections2.filter; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; /** * This class represents build information with details about what has been done @@ -111,7 +114,7 @@ public BuildResult getResult() { }; - private List actions; // TODO: Should be improved. + private List>>> actions; // TODO: Should be improved. private boolean building; private String description; private String displayName; @@ -163,31 +166,12 @@ public boolean isBuilding() { } public List getCauses() { - // actions is a List List[BuildCause] - Collection causes = filter(actions, new Predicate>() { - @Override - public boolean apply(Map action) { - return action.containsKey("causes"); - } - }); - - List result = new ArrayList(); - - if (causes != null && !causes.isEmpty()) { - // The underlying key-value can be either a or a - // . - List> causes_blob = ((Map>>) causes.toArray()[0]) - .get("causes"); - for (Map cause : causes_blob) { - - BuildCause convertToBuildCause = convertToBuildCause(cause); - - result.add(convertToBuildCause); - } - } - - return result; + return actions.stream() + .filter(item -> item.containsKey("causes")) + .flatMap(item -> item.entrySet().stream()) + .flatMap(sub -> sub.getValue().stream()) + .map(item -> convertToBuildCause(item)) + .collect(toList()); } /** @@ -203,9 +187,13 @@ public void updateDisplayNameAndDescription(String displayName, String descripti throws IOException { Objects.requireNonNull(displayName, "displayName is not allowed to be null."); Objects.requireNonNull(description, "description is not allowed to be null."); + //TODO:JDK9+ Map.of()... + Map params = new HashMap<>(); + params.put("displayName", displayName); + params.put("description", description); // TODO: Check what the "core:apply" means? - ImmutableMap params = ImmutableMap.of("displayName", displayName, "description", description, - "core:apply", "", "Submit", "Save"); + params.put("core:apply", ""); + params.put("Submit", "Save"); client.post_form(this.getUrl() + "/configSubmit?", params, crumbFlag); } @@ -231,9 +219,12 @@ public void updateDisplayNameAndDescription(String displayName, String descripti public void updateDisplayName(String displayName, boolean crumbFlag) throws IOException { Objects.requireNonNull(displayName, "displayName is not allowed to be null."); String description = getDescription() == null ? "" : getDescription(); + Map params = new HashMap<>(); + params.put("displayName", displayName); + params.put("description", description); // TODO: Check what the "core:apply" means? - ImmutableMap params = ImmutableMap.of("displayName", displayName, "description", description, - "core:apply", "", "Submit", "Save"); + params.put("core:apply", ""); + params.put("Submit", "Save"); client.post_form(this.getUrl() + "/configSubmit?", params, crumbFlag); } @@ -257,9 +248,13 @@ public void updateDisplayName(String displayName) throws IOException { public void updateDescription(String description, boolean crumbFlag) throws IOException { Objects.requireNonNull(description, "description is not allowed to be null."); String displayName = getDisplayName() == null ? "" : getDisplayName(); + //JDK9+: Map.of(..) + Map params = new HashMap<>(); + params.put("displayName", displayName); + params.put("description", description); // TODO: Check what the "core:apply" means? - ImmutableMap params = ImmutableMap.of("displayName", displayName, "description", description, - "core:apply", "", "Submit", "Save"); + params.put("core:apply", ""); + params.put("Submit", "Save"); client.post_form(this.getUrl() + "/configSubmit?", params, crumbFlag); } @@ -353,33 +348,21 @@ public List getActions() { return actions; } - public Map getParameters() { - Collection parameters = filter(actions, new Predicate>() { - @Override - public boolean apply(Map action) { - return action.containsKey("parameters"); - } - }); - - Map params = new HashMap(); - - if (parameters != null && !parameters.isEmpty()) { - for (Map param : ((Map>>) parameters.toArray()[0]) - .get("parameters")) { - String key = (String) param.get("name"); - Object value = param.get("value"); - params.put(key, String.valueOf(value)); - } - } + public Map getParameters() { + Map parameters = actions.stream() + .filter(item -> item.containsKey("parameters")) + .flatMap(item -> item.entrySet().stream()) + .flatMap(sub -> sub.getValue().stream()) + .collect(toMap(k -> (String) k.get("name"), v -> v.get("value"))); - return params; + return parameters; } /** * @return The full console output of the build. The line separation is done by * {@code CR+LF}. * - * @see streamConsoleOutput method for obtaining logs for running build + * @see {@link #streamConsoleOutput(BuildConsoleStreamListener, int, int, boolean)} method for obtaining logs for running build * * @throws IOException in case of a failure. */ @@ -390,7 +373,7 @@ public String getConsoleOutputText() throws IOException { /** * The full console output with HTML. * - * @see streamConsoleOutput method for obtaining logs for running build + * @see {@link #streamConsoleOutput(BuildConsoleStreamListener, int, int, boolean)} method for obtaining logs for running build * * @return The console output as HTML. * @throws IOException in case of an error. diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerSet.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerSet.java index 7bebc43f..ef2e2047 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerSet.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerSet.java @@ -7,9 +7,7 @@ package com.offbytwo.jenkins.model; import java.util.List; - -import com.google.common.base.Function; -import com.google.common.collect.Lists; +import java.util.stream.Collectors; public class ComputerSet extends BaseModel { private int busyExecutors; @@ -47,13 +45,10 @@ public void setTotalExecutors(int totalExecutors) { } public List getComputers() { - return Lists.transform( computer, new Function() { - @Override - public ComputerWithDetails apply(ComputerWithDetails computerWithDetails) { - computerWithDetails.setClient(client); - return computerWithDetails; - } - }); + return computer.stream().map(s -> { + s.setClient(this.client); + return s; + }).collect(Collectors.toList()); } public void setComputer(List computers) { diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java index 93206009..46958e6f 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java @@ -10,9 +10,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - -import com.google.common.base.Function; import com.offbytwo.jenkins.client.util.EncodingUtils; +import java.util.function.Function; public class ComputerWithDetails extends Computer { @@ -88,8 +87,6 @@ public void toggleOffline(boolean crumbFlag) throws IOException { name = EncodingUtils.encode(displayName); } - Map data = new HashMap(); - data.put( "json", "init" ); client.post( "/computer/" + name + "/toggleOffline", crumbFlag); } @@ -249,11 +246,4 @@ public int hashCode() { return result; } - private class ComputerWithClient implements Function { - @Override - public Computer apply(Computer computer) { - computer.setClient(client); - return computer; - } - } } \ No newline at end of file diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java index 25a26770..a2ce89dc 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java @@ -1,13 +1,15 @@ package com.offbytwo.jenkins.model; +import com.offbytwo.jenkins.helper.FunctionalHelper; + import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; -import com.google.common.base.Function; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import com.offbytwo.jenkins.client.util.EncodingUtils; +import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT; public class FolderJob extends Job { @@ -46,16 +48,13 @@ public boolean isFolder() { /** * Get a list of all the defined jobs in this folder * - * @return list of defined jobs (summary level, for details @see Job#details + * @return list of defined jobs (summary level, for details {@link Job#details()}. */ public Map getJobs() { - return Maps.uniqueIndex(jobs, new Function() { - @Override - public String apply(Job job) { - job.setClient(client); - return job.getName(); - } - }); + //FIXME: Check for null of jobs? Can that happen? + return jobs.stream() + .map(SET_CLIENT(this.client)) + .collect(Collectors.toMap(k -> k.getName(), Function.identity())); } /** @@ -63,15 +62,15 @@ public String apply(Job job) { * * @param name the name of the job. * @return the given job + * @throws IllegalArgumentException in case if the {@code name} does not exist. */ public Job getJob(String name) { - return Maps.uniqueIndex(jobs, new Function() { - @Override - public String apply(Job job) { - job.setClient(client); - return job.getName(); - } - }).get(name); + //FIXME: Check for null of jobs? Can that happen? + return jobs.stream() + .map(SET_CLIENT(this.client)) + .filter(item -> item.getName().equals(name)) + .findAny() + .orElseThrow(() -> new IllegalArgumentException("Job with name " + name + " does not exist.")); } /** @@ -94,8 +93,12 @@ public void createFolder(String folderName) throws IOException { public void createFolder(String folderName, Boolean crumbFlag) throws IOException { // https://gist.github.com/stuart-warren/7786892 was slightly helpful // here - ImmutableMap params = ImmutableMap.of("mode", "com.cloudbees.hudson.plugins.folder.Folder", - "name", EncodingUtils.formParameter(folderName), "from", "", "Submit", "OK"); + //TODO: JDK9+: Map.of(...) + Map params = new HashMap<>(); + params.put("mode", "com.cloudbees.hudson.plugins.folder.Folder"); + params.put("name", folderName); + params.put("from", ""); + params.put("Submit", "OK"); client.post_form(this.getUrl() + "/createItem?", params, crumbFlag); } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java index 24247c8f..ba1968a1 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java @@ -15,9 +15,9 @@ import java.net.URI; import java.util.Map; -import com.google.common.base.Function; -import com.google.common.collect.Collections2; import com.offbytwo.jenkins.client.util.EncodingUtils; +import java.util.function.Function; +import java.util.stream.Collectors; public class Job extends BaseModel { @@ -146,7 +146,10 @@ public QueueReference build(Map params, Map filePa * @throws IOException in case of an error. */ public QueueReference build(Map params, Map fileParams, boolean crumbFlag) throws IOException { - String qs = join(Collections2.transform(params.entrySet(), new MapEntryToQueryStringPair()), "&"); + String qs = params.entrySet().stream() + .map(s -> s.getKey() + "=" + s.getValue()) + .collect(Collectors.joining("&")); +// String qs = join(Collections2.transform(params.entrySet(), new MapEntryToQueryStringPair()), "&"); ExtractHeader location = client.post(url + "buildWithParameters?" + qs,null, ExtractHeader.class, fileParams, crumbFlag); return new QueueReference(location.getLocation()); } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java index d203aad5..71bc664a 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java @@ -6,23 +6,22 @@ package com.offbytwo.jenkins.model; -import static com.google.common.collect.Lists.transform; +import com.offbytwo.jenkins.client.util.EncodingUtils; +import com.offbytwo.jenkins.helper.Range; +import org.apache.http.HttpStatus; +import org.apache.http.client.HttpResponseException; import java.io.IOException; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.Optional; +import java.util.function.Predicate; -import org.apache.http.HttpStatus; -import org.apache.http.client.HttpResponseException; - -import com.google.common.base.Function; -import com.google.common.base.Optional; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; -import com.offbytwo.jenkins.client.util.EncodingUtils; -import com.offbytwo.jenkins.helper.Range; +import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT; +import static java.util.stream.Collectors.toList; public class JobWithDetails extends Job { @@ -95,12 +94,9 @@ public List getBuilds() { if (builds == null) { return Collections.emptyList(); } else { - return transform(builds, new Function() { - @Override - public Build apply(Build from) { - return buildWithClient(from); - } - }); + return builds.stream() + .map(s -> buildWithClient(s)) + .collect(toList()); } } @@ -129,12 +125,9 @@ public List getAllBuilds() throws IOException { if (builds == null) { return Collections.emptyList(); } else { - return transform(builds, new Function() { - @Override - public Build apply(Build from) { - return buildWithClient(from); - } - }); + return builds.stream() + .map(s -> buildWithClient(s)) + .collect(toList()); } } catch (HttpResponseException e) { // TODO: Thinks about a better handling if the job does not exist? @@ -178,12 +171,9 @@ public List getAllBuilds(Range range) throws IOException { if (builds == null) { return Collections.emptyList(); } else { - return transform(builds, new Function() { - @Override - public Build apply(Build from) { - return buildWithClient(from); - } - }); + return builds.stream() + .map(s -> buildWithClient(s)) + .collect(toList()); } } catch (HttpResponseException e) { // TODO: Thinks about a better handline if the job does not exist? @@ -428,7 +418,9 @@ public List getDownstreamProjects() { if (downstreamProjects == null) { return Collections.emptyList(); } else { - return transform(downstreamProjects, new JobWithClient()); + return downstreamProjects.stream() + .map(SET_CLIENT(this.client)) + .collect(toList()); } } @@ -440,10 +432,16 @@ public List getUpstreamProjects() { if (upstreamProjects == null) { return Collections.emptyList(); } else { - return transform(upstreamProjects, new JobWithClient()); + return upstreamProjects.stream() + .map(SET_CLIENT(this.client)) + .collect(toList()); } } + private static Predicate isBuildNumberEqualTo(int buildNumber) { + return build -> build.getNumber() == buildNumber; + } + public QueueItem getQueueItem() { return this.queueItem; } @@ -452,30 +450,11 @@ public QueueItem getQueueItem() { * Get a build by the given buildNumber. * * @param buildNumber The number to select the build by. - * @return The {@link Build} selected by the given buildnumber - * + * @return The an Optional with the {@link Build} selected by the given buildnumber + * */ - public Build getBuildByNumber(final int buildNumber) { - - Predicate isMatchingBuildNumber = new Predicate() { - - @Override - public boolean apply(Build input) { - return input.getNumber() == buildNumber; - } - }; - - Optional optionalBuild = Iterables.tryFind(builds, isMatchingBuildNumber); - // TODO: Check if we could use Build#NO...instead of Null? - return optionalBuild.orNull() == null ? null : buildWithClient(optionalBuild.orNull()); - } - - private class JobWithClient implements Function { - @Override - public Job apply(Job job) { - job.setClient(client); - return job; - } + public Optional getBuildByNumber(final int buildNumber) { + return builds.stream().filter(isBuildNumberEqualTo(buildNumber)).findFirst(); } /** @@ -507,7 +486,10 @@ public void updateDescription(String description) throws IOException { */ public void updateDescription(String description, boolean crumbFlag) throws IOException { Objects.requireNonNull(description, "description is not allowed to be null."); - ImmutableMap params = ImmutableMap.of("description", description); + //JDK9+ + // Map.of(...); + Map params = new HashMap<>(); + params.put("description", description); client.post_form(this.getUrl() + "/submitDescription?", params, crumbFlag); } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MainView.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MainView.java index b239558d..bef07f0b 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MainView.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MainView.java @@ -6,11 +6,10 @@ package com.offbytwo.jenkins.model; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import com.google.common.collect.Lists; - public class MainView extends BaseModel { private List jobs; @@ -18,7 +17,7 @@ public class MainView extends BaseModel { /* default constructor needed for Jackson */ public MainView() { - this(Lists.newArrayList(), Lists.newArrayList()); + this(new ArrayList<>(), new ArrayList<>()); } public MainView(List jobs, List views) { @@ -27,7 +26,7 @@ public MainView(List jobs, List views) { } public MainView(Job... jobs) { - this(Arrays.asList(jobs), Lists.newArrayList()); + this(Arrays.asList(jobs), new ArrayList<>()); } public List getJobs() { diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java index ae2c7c06..bb3f0c62 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java @@ -1,21 +1,19 @@ package com.offbytwo.jenkins.model; -import static com.google.common.collect.Lists.transform; +import com.offbytwo.jenkins.client.util.EncodingUtils; +import com.offbytwo.jenkins.helper.FunctionalHelper; +import com.offbytwo.jenkins.helper.Range; +import org.apache.http.HttpStatus; +import org.apache.http.client.HttpResponseException; import java.io.IOException; import java.util.Collections; import java.util.List; +import java.util.Optional; +import java.util.function.Predicate; -import org.apache.http.HttpStatus; -import org.apache.http.client.HttpResponseException; - -import com.google.common.base.Function; -import com.google.common.base.Optional; -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.offbytwo.jenkins.client.util.EncodingUtils; -import com.offbytwo.jenkins.helper.Range; +import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT; +import static java.util.stream.Collectors.toList; public class MavenJobWithDetails extends MavenJob { @@ -60,12 +58,9 @@ public List getBuilds() { if (builds == null) { return Collections.emptyList(); } else { - return Lists.transform(builds, new Function() { - @Override - public MavenBuild apply(MavenBuild from) { - return buildWithClient(from); - } - }); + return builds.stream() + .map(SET_CLIENT(this.client)) + .collect(toList()); } } @@ -95,12 +90,9 @@ public List getAllBuilds() throws IOException { if (builds == null) { return Collections.emptyList(); } else { - return transform(builds, new Function() { - @Override - public MavenBuild apply(MavenBuild from) { - return buildWithClient(from); - } - }); + return builds.stream() + .map(SET_CLIENT(this.client)) + .collect(toList()); } } catch (HttpResponseException e) { // TODO: Thinks about a better handling if the job does not exist? @@ -146,12 +138,9 @@ public List getAllBuilds(Range range) throws IOException { if (builds == null) { return Collections.emptyList(); } else { - return transform(builds, new Function() { - @Override - public MavenBuild apply(MavenBuild from) { - return buildWithClient(from); - } - }); + return builds.stream() + .map(SET_CLIENT(this.client)) + .collect(toList()); } } catch (HttpResponseException e) { // TODO: Thinks about a better handline if the job does not exist? @@ -271,7 +260,9 @@ public List getDownstreamProjects() { if (downstreamProjects == null) { return Collections.emptyList(); } else { - return Lists.transform(downstreamProjects, new MavenJobWithClient()); + return downstreamProjects.stream() + .map(SET_CLIENT(this.client)) + .collect(toList()); } } @@ -279,23 +270,24 @@ public List getUpstreamProjects() { if (upstreamProjects == null) { return Collections.emptyList(); } else { - return Lists.transform(upstreamProjects, new MavenJobWithClient()); + return upstreamProjects.stream() + .map(SET_CLIENT(this.client)) + .collect(toList()); } } - public MavenBuild getBuildByNumber(final int buildNumber) { - - Predicate isMatchingBuildNumber = new Predicate() { - - @Override - public boolean apply(MavenBuild input) { - return input.getNumber() == buildNumber; - } - }; + private static Predicate isBuildNumberEqualTo(int buildNumber) { + return build -> build.getNumber() == buildNumber; + } - Optional optionalBuild = Iterables.tryFind(builds, isMatchingBuildNumber); - // TODO: Check if we could use Build#NO...instead of Null? - return optionalBuild.orNull() == null ? null : buildWithClient(optionalBuild.orNull()); + /** + * @param buildNumber The build you would like to select. + * @return Optional which contains the {@link MavenBuild}. + */ + public Optional getBuildByNumber(final int buildNumber) { + return builds.stream() + .filter(isBuildNumberEqualTo(buildNumber)) + .findFirst(); } private MavenBuild buildWithClient(MavenBuild from) { @@ -304,11 +296,4 @@ private MavenBuild buildWithClient(MavenBuild from) { return ret; } - private class MavenJobWithClient implements Function { - @Override - public Job apply(Job job) { - job.setClient(client); - return job; - } - } } diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/FirstTest.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/FirstTest.java new file mode 100644 index 00000000..7d512198 --- /dev/null +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/FirstTest.java @@ -0,0 +1,56 @@ +package com.offbytwo.jenkins; + +import com.offbytwo.jenkins.client.util.EncodingUtils; +import com.offbytwo.jenkins.model.Build; +import org.apache.http.client.utils.URIBuilder; +import org.junit.Test; + +import java.net.URI; +import java.util.List; + +public class FirstTest { + + @Test + public void name() { + String url = "http://localhost:8080/job/test/1"; + + URI uri = URI.create(url); + System.out.println("Fragement:" + uri.getFragment()); + System.out.println("Host:" + uri.getHost()); + System.out.println("Authority:" + uri.getAuthority()); + System.out.println("Path:" + uri.getPath()); + System.out.println("Query:" + uri.getQuery()); + System.out.println("Port:" + uri.getPort()); + System.out.println("Scheme:" + uri.getScheme()); + + + URIBuilder uriBuilder = new URIBuilder(uri); + uriBuilder.setPath(uri.getPath() + "/testReport"); + uriBuilder.addParameter("depth", "1"); + + System.out.println("Resulting: " + uriBuilder.toString()); + + } + + @Test + public void secondTest() { + + + String url = "http://localhost:8080/"; + + +// List builds = client.get(path + "job/" + EncodingUtils.encode(this.getName()) +// + "?tree=allBuilds[number[*],url[*],queueId[*]]", AllBuilds.class).getAllBuilds(); + + // url + "/testReport/?depth=1" + +// this.getUrl() + "/testReport/?depth=1", TestReport.class + +// uri.getRawPath(); +// +// public URI(String scheme, +// String userInfo, String host, int port, +// String path, String query, String fragment) + + } +} diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/JenkinsServerTest.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/JenkinsServerTest.java index 9e9d50aa..0c553ce1 100644 --- a/jenkins-client/src/test/java/com/offbytwo/jenkins/JenkinsServerTest.java +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/JenkinsServerTest.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.UUID; import org.apache.http.entity.ContentType; @@ -25,7 +26,6 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; -import com.google.common.base.Optional; import com.offbytwo.jenkins.client.JenkinsHttpClient; import com.offbytwo.jenkins.client.JenkinsHttpConnection; import com.offbytwo.jenkins.model.FolderJob; diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java index 973eb0a8..358ac7f5 100644 --- a/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/client/util/EncodingUtilsTest.java @@ -1,21 +1,31 @@ +/* + * Copyright (c) 2019 Karl Heinz Marbaise, and contributors. + * + * Distributed under the MIT license: http://opensource.org/licenses/MIT + */ package com.offbytwo.jenkins.client.util; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; +/** + * This class is a unit test for the helper class {@link EncodingUtils}. + * + * @author Karl Heinz Marbaise + */ public class EncodingUtilsTest { @Test public void encodeShouldReturnEncodedDoubleQuoteAndSpace() { String result = EncodingUtils.encode("!\"& "); - assertThat(result).isEqualTo("!%22&%20"); + assertThat(result).isEqualTo("%21%22%26+"); } @Test public void encodeShouldReturnNotEncodeSafeChars() { String result = EncodingUtils.encode("-._~!$'()*,;&=@:+"); - assertThat(result).isEqualTo("-._~!$'()*,;&=@:+"); + assertThat(result).isEqualTo("-._%7E%21%24%27%28%29*%2C%3B%26%3D%40%3A%2B"); } @Test public void encodeShouldReturnNotEncodeAlpha() { diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/integration/FolderTestsIT.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/integration/FolderTestsIT.java index c6549413..098102c0 100644 --- a/jenkins-client/src/test/java/com/offbytwo/jenkins/integration/FolderTestsIT.java +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/integration/FolderTestsIT.java @@ -5,6 +5,7 @@ import hudson.model.UpdateCenter; import java.util.List; +import java.util.Optional; import java.util.Vector; import jenkins.model.Jenkins; @@ -19,7 +20,6 @@ import org.kohsuke.stapler.StaplerResponse; import org.mockito.Mockito; -import com.google.common.base.Optional; import com.offbytwo.jenkins.JenkinsServer; import com.offbytwo.jenkins.model.FolderJob; import com.offbytwo.jenkins.model.JobWithDetails; @@ -67,7 +67,7 @@ public void testFolderPluginAPIs() throws Exception { JobWithDetails root = server.getJob("root"); Assert.assertNotNull(root); - Optional rootFolder = server.getFolderJob(root); + java.util.Optional rootFolder = server.getFolderJob(root); Assert.assertTrue(rootFolder.isPresent()); server.createFolder(rootFolder.get(), "subfolder"); diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/integration/JenkinsServerIT.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/integration/JenkinsServerIT.java index d7f19a10..b32d027b 100644 --- a/jenkins-client/src/test/java/com/offbytwo/jenkins/integration/JenkinsServerIT.java +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/integration/JenkinsServerIT.java @@ -88,7 +88,7 @@ public void shouldSupportBooleanParameters() throws Exception { JobWithDetails job = server.getJobs().get(JENKINS_TEST_JOB).details(); BuildWithDetails build = job.getBuilds().get(0).details(); - assertEquals("true", build.getParameters().get("someValue")); + assertEquals(Boolean.TRUE, build.getParameters().get("someValue")); } @Test diff --git a/pom.xml b/pom.xml index 481dedff..4a04fdf7 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ com.offbytwo.jenkins jenkins-client-parent - 0.3.9-SNAPSHOT + 0.4.0-SNAPSHOT pom @@ -58,7 +58,6 @@ 1.4.7-jenkins-1 1.6.1 3.8.1 - 17.0 2.4 4.5.8 4.4.11 @@ -126,12 +125,6 @@ - - com.google.guava - guava - ${guava.version} - - org.apache.commons commons-lang3 From a5a59ca43a1c1ca3f45ad2a7a0178b6f58344346 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sun, 7 Apr 2019 19:23:42 +0200 Subject: [PATCH 19/39] Fixed JavaDoc issues. Generate JavaDoc during site generation. --- .../com/offbytwo/jenkins/JenkinsServer.java | 2 - .../jenkins/model/BuildWithDetails.java | 10 +--- .../java/com/offbytwo/jenkins/FirstTest.java | 56 ------------------- pom.xml | 46 ++++----------- 4 files changed, 14 insertions(+), 100 deletions(-) delete mode 100644 jenkins-client/src/test/java/com/offbytwo/jenkins/FirstTest.java diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java index f76da927..ee1672a4 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java @@ -14,8 +14,6 @@ import javax.xml.bind.JAXBException; -import com.offbytwo.jenkins.helper.FunctionalHelper; -import com.offbytwo.jenkins.model.BaseModel; import org.apache.http.HttpStatus; import org.apache.http.client.HttpResponseException; import org.apache.http.entity.ContentType; diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java index 9272c39e..b129b732 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java @@ -21,17 +21,12 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.stream.Collectors; - -import java.util.function.Function; -import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toMap; @@ -362,7 +357,7 @@ public Map getParameters() { * @return The full console output of the build. The line separation is done by * {@code CR+LF}. * - * @see {@link #streamConsoleOutput(BuildConsoleStreamListener, int, int, boolean)} method for obtaining logs for running build + * @see #streamConsoleOutput(BuildConsoleStreamListener, int, int, boolean) method for obtaining logs for running build * * @throws IOException in case of a failure. */ @@ -373,7 +368,7 @@ public String getConsoleOutputText() throws IOException { /** * The full console output with HTML. * - * @see {@link #streamConsoleOutput(BuildConsoleStreamListener, int, int, boolean)} method for obtaining logs for running build + * @see #streamConsoleOutput(BuildConsoleStreamListener, int, int, boolean) method for obtaining logs for running build * * @return The console output as HTML. * @throws IOException in case of an error. @@ -430,6 +425,7 @@ public void streamConsoleOutput(final BuildConsoleStreamListener listener, final * Use this method to periodically obtain logs from jenkins and skip chunks that were already received * * @param bufferOffset offset in console lo + * @param crumbFlag true or false. * @return ConsoleLog object containing console output of the build. The line separation is done by * {@code CR+LF}. * @throws IOException in case of a failure. diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/FirstTest.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/FirstTest.java deleted file mode 100644 index 7d512198..00000000 --- a/jenkins-client/src/test/java/com/offbytwo/jenkins/FirstTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.offbytwo.jenkins; - -import com.offbytwo.jenkins.client.util.EncodingUtils; -import com.offbytwo.jenkins.model.Build; -import org.apache.http.client.utils.URIBuilder; -import org.junit.Test; - -import java.net.URI; -import java.util.List; - -public class FirstTest { - - @Test - public void name() { - String url = "http://localhost:8080/job/test/1"; - - URI uri = URI.create(url); - System.out.println("Fragement:" + uri.getFragment()); - System.out.println("Host:" + uri.getHost()); - System.out.println("Authority:" + uri.getAuthority()); - System.out.println("Path:" + uri.getPath()); - System.out.println("Query:" + uri.getQuery()); - System.out.println("Port:" + uri.getPort()); - System.out.println("Scheme:" + uri.getScheme()); - - - URIBuilder uriBuilder = new URIBuilder(uri); - uriBuilder.setPath(uri.getPath() + "/testReport"); - uriBuilder.addParameter("depth", "1"); - - System.out.println("Resulting: " + uriBuilder.toString()); - - } - - @Test - public void secondTest() { - - - String url = "http://localhost:8080/"; - - -// List builds = client.get(path + "job/" + EncodingUtils.encode(this.getName()) -// + "?tree=allBuilds[number[*],url[*],queueId[*]]", AllBuilds.class).getAllBuilds(); - - // url + "/testReport/?depth=1" - -// this.getUrl() + "/testReport/?depth=1", TestReport.class - -// uri.getRawPath(); -// -// public URI(String scheme, -// String userInfo, String host, int port, -// String path, String query, String fragment) - - } -} diff --git a/pom.xml b/pom.xml index 4a04fdf7..8015cefa 100644 --- a/pom.xml +++ b/pom.xml @@ -406,43 +406,18 @@ org.apache.maven.plugins maven-project-info-reports-plugin - - - org.apache.maven.plugins - maven-javadoc-plugin - - - - javadoc-no-fork - aggregate-no-fork - - - - @@ -490,7 +465,8 @@ attach-javadocs - jar + javadoc-no-fork + test-javadoc-no-fork From 0f1a8bc26f7aad97e83eb5217d239e0d4b8d855f Mon Sep 17 00:00:00 2001 From: mivola Date: Mon, 15 Apr 2019 20:19:42 +0200 Subject: [PATCH 20/39] fixes #360 by changing the return value from void to the appropriate object (#403) --- .../com/offbytwo/jenkins/JenkinsServer.java | 139 ++++++++++-------- .../com/offbytwo/jenkins/model/Artifact.java | 9 +- .../com/offbytwo/jenkins/model/BaseModel.java | 3 +- .../com/offbytwo/jenkins/model/Build.java | 9 +- .../offbytwo/jenkins/model/BuildCause.java | 18 ++- .../jenkins/model/BuildChangeSet.java | 6 +- .../jenkins/model/BuildChangeSetAuthor.java | 6 +- .../jenkins/model/BuildChangeSetItem.java | 27 ++-- .../jenkins/model/BuildChangeSetPath.java | 6 +- .../jenkins/model/BuildWithDetails.java | 33 +++-- .../offbytwo/jenkins/model/CauseAction.java | 9 +- .../com/offbytwo/jenkins/model/Computer.java | 26 ++-- .../offbytwo/jenkins/model/ComputerSet.java | 12 +- .../jenkins/model/ComputerWithDetails.java | 22 +-- .../offbytwo/jenkins/model/ConsoleLog.java | 9 +- .../offbytwo/jenkins/model/Executable.java | 6 +- .../com/offbytwo/jenkins/model/Executor.java | 18 ++- .../offbytwo/jenkins/model/ExtractHeader.java | 3 +- .../com/offbytwo/jenkins/model/FolderJob.java | 8 +- .../offbytwo/jenkins/model/HourMinSec10.java | 9 +- .../jenkins/model/JacocoCoverageReport.java | 24 ++- .../jenkins/model/JacocoCoverageResult.java | 26 +++- .../jenkins/model/JobConfiguration.java | 3 +- .../jenkins/model/JobWithDetails.java | 15 +- .../jenkins/model/LoadStatistics.java | 9 +- .../com/offbytwo/jenkins/model/MainView.java | 6 +- .../offbytwo/jenkins/model/MavenArtifact.java | 24 ++- .../jenkins/model/MavenModuleRecord.java | 15 +- .../offbytwo/jenkins/model/OfflineCause.java | 18 ++- .../jenkins/model/ParameterDefinitions.java | 6 +- .../model/ParametersDefinitionProperty.java | 3 +- .../com/offbytwo/jenkins/model/Plugin.java | 41 ++++-- .../jenkins/model/PluginDependency.java | 57 ++++--- .../offbytwo/jenkins/model/PluginManager.java | 3 +- .../com/offbytwo/jenkins/model/Queue.java | 9 +- .../com/offbytwo/jenkins/model/QueueItem.java | 36 +++-- .../jenkins/model/QueueItemActions.java | 3 +- .../com/offbytwo/jenkins/model/Statis.java | 6 +- .../model/StringParameterDefinition.java | 9 +- .../com/offbytwo/jenkins/model/TestCase.java | 27 ++-- .../com/offbytwo/jenkins/model/TestChild.java | 6 +- .../jenkins/model/TestChildReport.java | 20 +-- .../offbytwo/jenkins/model/TestReport.java | 15 +- .../offbytwo/jenkins/model/TestResult.java | 32 ++-- .../offbytwo/jenkins/model/TestSuites.java | 15 +- .../java/com/offbytwo/jenkins/model/View.java | 9 +- 46 files changed, 506 insertions(+), 309 deletions(-) diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java index ee1672a4..e9973d59 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java @@ -341,8 +341,8 @@ public Optional getFolderJob(Job job) throws IOException { * the job. * @throws IOException in case of an error. */ - public void createJob(String jobName, String jobXml) throws IOException { - createJob(null, jobName, jobXml, false); + public JenkinsServer createJob(String jobName, String jobXml) throws IOException { + return createJob(null, jobName, jobXml, false); } /** @@ -355,8 +355,8 @@ public void createJob(String jobName, String jobXml) throws IOException { * false otherwise. * @throws IOException in case of an error. */ - public void createJob(String jobName, String jobXml, Boolean crumbFlag) throws IOException { - createJob(null, jobName, jobXml, crumbFlag); + public JenkinsServer createJob(String jobName, String jobXml, Boolean crumbFlag) throws IOException { + return createJob(null, jobName, jobXml, crumbFlag); } /** @@ -369,8 +369,8 @@ public void createJob(String jobName, String jobXml, Boolean crumbFlag) throws I * the job. * @throws IOException in case of an error. */ - public void createJob(FolderJob folder, String jobName, String jobXml) throws IOException { - createJob(folder, jobName, jobXml, false); + public JenkinsServer createJob(FolderJob folder, String jobName, String jobXml) throws IOException { + return createJob(folder, jobName, jobXml, false); } /** @@ -385,8 +385,10 @@ public void createJob(FolderJob folder, String jobName, String jobXml) throws IO * false otherwise. * @throws IOException in case of an error. */ - public void createJob(FolderJob folder, String jobName, String jobXml, Boolean crumbFlag) throws IOException { + public JenkinsServer createJob(FolderJob folder, String jobName, String jobXml, Boolean crumbFlag) + throws IOException { client.post_xml(UrlUtils.toBaseUrl(folder) + "createItem?name=" + EncodingUtils.formParameter(jobName), jobXml, crumbFlag); + return this; } /** @@ -396,8 +398,8 @@ public void createJob(FolderJob folder, String jobName, String jobXml, Boolean c * @param viewXml The configuration for the view. * @throws IOException in case of an error. */ - public void createView(String viewName, String viewXml) throws IOException { - createView(null, viewName, viewXml, false); + public JenkinsServer createView(String viewName, String viewXml) throws IOException { + return createView(null, viewName, viewXml, false); } /** @@ -409,8 +411,8 @@ public void createView(String viewName, String viewXml) throws IOException { * false otherwise. * @throws IOException in case of an error. */ - public void createView(String viewName, String viewXml, Boolean crumbFlag) throws IOException { - createView(null, viewName, viewXml, crumbFlag); + public JenkinsServer createView(String viewName, String viewXml, Boolean crumbFlag) throws IOException { + return createView(null, viewName, viewXml, crumbFlag); } /** @@ -422,8 +424,8 @@ public void createView(String viewName, String viewXml, Boolean crumbFlag) throw * @param viewXml The configuration for the view. * @throws IOException in case of an error. */ - public void createView(FolderJob folder, String viewName, String viewXml) throws IOException { - createView(folder, viewName, viewXml, false); + public JenkinsServer createView(FolderJob folder, String viewName, String viewXml) throws IOException { + return createView(folder, viewName, viewXml, false); } /** @@ -437,9 +439,11 @@ public void createView(FolderJob folder, String viewName, String viewXml) throws * false otherwise. * @throws IOException in case of an error. */ - public void createView(FolderJob folder, String viewName, String viewXml, Boolean crumbFlag) throws IOException { + public JenkinsServer createView(FolderJob folder, String viewName, String viewXml, Boolean crumbFlag) + throws IOException { client.post_xml(UrlUtils.toBaseUrl(folder) + "createView?name=" + EncodingUtils.formParameter(viewName), viewXml, crumbFlag); + return this; } /** @@ -448,8 +452,8 @@ public void createView(FolderJob folder, String viewName, String viewXml, Boolea * @param folderName name of the folder. * @throws IOException in case of an error. */ - public void createFolder(String folderName) throws IOException { - createFolder(null, folderName, false); + public JenkinsServer createFolder(String folderName) throws IOException { + return createFolder(null, folderName, false); } /** @@ -460,8 +464,8 @@ public void createFolder(String folderName) throws IOException { * false otherwise. * @throws IOException in case of an error. */ - public void createFolder(String folderName, Boolean crumbFlag) throws IOException { - createFolder(null, folderName, crumbFlag); + public JenkinsServer createFolder(String folderName, Boolean crumbFlag) throws IOException { + return createFolder(null, folderName, crumbFlag); } /** @@ -471,8 +475,8 @@ public void createFolder(String folderName, Boolean crumbFlag) throws IOExceptio * @param jobName name of the job. * @throws IOException in case of an error. */ - public void createFolder(FolderJob folder, String jobName) throws IOException { - createFolder(folder, jobName, false); + public JenkinsServer createFolder(FolderJob folder, String jobName) throws IOException { + return createFolder(folder, jobName, false); } /** @@ -484,7 +488,7 @@ public void createFolder(FolderJob folder, String jobName) throws IOException { * false otherwise. * @throws IOException in case of an error. */ - public void createFolder(FolderJob folder, String jobName, Boolean crumbFlag) throws IOException { + public JenkinsServer createFolder(FolderJob folder, String jobName, Boolean crumbFlag) throws IOException { // https://gist.github.com/stuart-warren/7786892 was slightly helpful // here //TODO: JDK9+: Map.of(...) @@ -494,6 +498,7 @@ public void createFolder(FolderJob folder, String jobName, Boolean crumbFlag) th params.put("from", ""); params.put("Submit", "OK"); client.post_form(UrlUtils.toBaseUrl(folder) + "createItem?", params, crumbFlag); + return this; } /** @@ -573,20 +578,24 @@ public PluginManager getPluginManager() throws IOException { * @param viewXml the view configuration. * @throws IOException in case of an error. */ - public void updateView(String viewName, String viewXml) throws IOException { - this.updateView(viewName, viewXml, true); + public JenkinsServer updateView(String viewName, String viewXml) throws IOException { + return this.updateView(viewName, viewXml, true); } - public void updateView(String viewName, String viewXml, boolean crumbFlag) throws IOException { + public JenkinsServer updateView(String viewName, String viewXml, boolean crumbFlag) throws IOException { client.post_xml("/view/" + EncodingUtils.encode(viewName) + "/config.xml", viewXml, crumbFlag); + return this; } - public void updateView(FolderJob folder, String viewName, String viewXml) throws IOException { + public JenkinsServer updateView(FolderJob folder, String viewName, String viewXml) throws IOException { client.post_xml(UrlUtils.toBaseUrl(folder) + "view/" + EncodingUtils.encode(viewName) + "/config.xml", viewXml, true); + return this; } - public void updateView(FolderJob folder, String viewName, String viewXml, boolean crumbFlag) throws IOException { + public JenkinsServer updateView(FolderJob folder, String viewName, String viewXml, boolean crumbFlag) + throws IOException { client.post_xml(UrlUtils.toBaseUrl(folder) + "view/" + EncodingUtils.encode(viewName) + "/config.xml", viewXml, crumbFlag); + return this; } /** @@ -596,8 +605,8 @@ public void updateView(FolderJob folder, String viewName, String viewXml, boolea * @param jobXml the configuration to be used for updating. * @throws IOException in case of an error. */ - public void updateJob(String jobName, String jobXml) throws IOException { - this.updateJob(jobName, jobXml, true); + public JenkinsServer updateJob(String jobName, String jobXml) throws IOException { + return this.updateJob(jobName, jobXml, true); } /** @@ -608,8 +617,8 @@ public void updateJob(String jobName, String jobXml) throws IOException { * @param crumbFlag true/false. * @throws IOException in case of an error. */ - public void updateJob(String jobName, String jobXml, boolean crumbFlag) throws IOException { - updateJob(null, jobName, jobXml, crumbFlag); + public JenkinsServer updateJob(String jobName, String jobXml, boolean crumbFlag) throws IOException { + return updateJob(null, jobName, jobXml, crumbFlag); } /** @@ -621,8 +630,10 @@ public void updateJob(String jobName, String jobXml, boolean crumbFlag) throws I * @param crumbFlag true/false. * @throws IOException in case of an error. */ - public void updateJob(FolderJob folder, String jobName, String jobXml, boolean crumbFlag) throws IOException { + public JenkinsServer updateJob(FolderJob folder, String jobName, String jobXml, boolean crumbFlag) + throws IOException { client.post_xml(UrlUtils.toJobBaseUrl(folder, jobName) + "/config.xml", jobXml, crumbFlag); + return this; } /** @@ -634,12 +645,12 @@ public void updateJob(FolderJob folder, String jobName, String jobXml, boolean c * @throws JAXBException in case of an error. * @throws DocumentException in case of an error. */ - public void addStringParam(String jobName, String name, String description, String defaultValue) + public JenkinsServer addStringParam(String jobName, String name, String description, String defaultValue) throws IOException, JAXBException, DocumentException { String jobXml = this.getJobXml(jobName); JobConfiguration jobConf = new JobConfiguration(jobXml); jobXml = jobConf.addStringParam(name, description, defaultValue).asXml(); - this.updateJob(jobName, jobXml); + return this.updateJob(jobName, jobXml); } /** @@ -647,13 +658,13 @@ public void addStringParam(String jobName, String name, String description, Stri * * @throws IOException in case of an error. */ - public void quietDown() throws IOException { + public JenkinsServer quietDown() throws IOException { try { client.get("/quietDown/"); } catch (org.apache.http.client.ClientProtocolException e) { LOGGER.error("quietDown()", e); } - + return this; } /** @@ -661,12 +672,13 @@ public void quietDown() throws IOException { * * @throws IOException in case of an error. */ - public void cancelQuietDown() throws IOException { + public JenkinsServer cancelQuietDown() throws IOException { try { client.post("/cancelQuietDown/"); } catch (org.apache.http.client.ClientProtocolException e) { LOGGER.error("cancelQuietDown()", e); } + return this; } /** @@ -677,8 +689,8 @@ public void cancelQuietDown() throws IOException { * * @throws IOException in case of an error. */ - public void deleteJob(FolderJob folder, String jobName) throws IOException { - deleteJob(folder, jobName, false); + public JenkinsServer deleteJob(FolderJob folder, String jobName) throws IOException { + return deleteJob(folder, jobName, false); } /** @@ -689,8 +701,9 @@ public void deleteJob(FolderJob folder, String jobName) throws IOException { * @param crumbFlag The crumbFlag * @throws IOException in case of problems. */ - public void deleteJob(FolderJob folder, String jobName, boolean crumbFlag) throws IOException { + public JenkinsServer deleteJob(FolderJob folder, String jobName, boolean crumbFlag) throws IOException { client.post(UrlUtils.toJobBaseUrl(folder, jobName) + "/doDelete", crumbFlag); + return this; } /** @@ -699,8 +712,8 @@ public void deleteJob(FolderJob folder, String jobName, boolean crumbFlag) throw * @param jobName The name of the job which should be deleted. * @throws IOException in case of an error. */ - public void deleteJob(String jobName) throws IOException { - deleteJob(jobName, false); + public JenkinsServer deleteJob(String jobName) throws IOException { + return deleteJob(jobName, false); } /** @@ -711,8 +724,9 @@ public void deleteJob(String jobName) throws IOException { * false otherwise. * @throws IOException In case of an failure. */ - public void deleteJob(String jobName, boolean crumbFlag) throws IOException { + public JenkinsServer deleteJob(String jobName, boolean crumbFlag) throws IOException { client.post("/job/" + EncodingUtils.encode(jobName) + "/doDelete", crumbFlag); + return this; } /** @@ -721,8 +735,8 @@ public void deleteJob(String jobName, boolean crumbFlag) throws IOException { * @param jobName The name of the job which should be disabled. * @throws IOException in case of an error. */ - public void disableJob(String jobName) throws IOException { - disableJob(jobName, false); + public JenkinsServer disableJob(String jobName) throws IOException { + return disableJob(jobName, false); } /** @@ -733,8 +747,9 @@ public void disableJob(String jobName) throws IOException { * false otherwise. * @throws IOException In case of an failure. */ - public void disableJob(String jobName, boolean crumbFlag) throws IOException { + public JenkinsServer disableJob(String jobName, boolean crumbFlag) throws IOException { client.post("/job/" + EncodingUtils.encode(jobName) + "/disable", crumbFlag); + return this; } /** @@ -743,8 +758,8 @@ public void disableJob(String jobName, boolean crumbFlag) throws IOException { * @param jobName name of the job which should be enabled. * @throws IOException In case of an failure. */ - public void enableJob(String jobName) throws IOException { - enableJob( jobName, false ); + public JenkinsServer enableJob(String jobName) throws IOException { + return enableJob(jobName, false); } /** @@ -755,8 +770,9 @@ public void enableJob(String jobName) throws IOException { * false otherwise. * @throws IOException In case of an failure. */ - public void enableJob(String jobName, boolean crumbFlag) throws IOException { + public JenkinsServer enableJob(String jobName, boolean crumbFlag) throws IOException { client.post("/job/" + EncodingUtils.encode(jobName) + "/enable", crumbFlag); + return this; } /** @@ -842,8 +858,8 @@ public Build getBuild(QueueItem q) throws IOException { * @param newJobName The new job name. * @throws IOException In case of a failure. */ - public void renameJob(String oldJobName, String newJobName) throws IOException { - renameJob(null, oldJobName, newJobName, false); + public JenkinsServer renameJob(String oldJobName, String newJobName) throws IOException { + return renameJob(null, oldJobName, newJobName, false); } /** @@ -855,8 +871,9 @@ public void renameJob(String oldJobName, String newJobName) throws IOException { * false otherwise. * @throws IOException In case of a failure. */ - public void renameJob(String oldJobName, String newJobName, Boolean crumbFlag) throws IOException { + public JenkinsServer renameJob(String oldJobName, String newJobName, Boolean crumbFlag) throws IOException { renameJob(null, oldJobName, newJobName, crumbFlag); + return this; } /** @@ -867,8 +884,8 @@ public void renameJob(String oldJobName, String newJobName, Boolean crumbFlag) t * @param newJobName The new job name. * @throws IOException In case of a failure. */ - public void renameJob(FolderJob folder, String oldJobName, String newJobName) throws IOException { - renameJob(folder, oldJobName, newJobName, false); + public JenkinsServer renameJob(FolderJob folder, String oldJobName, String newJobName) throws IOException { + return renameJob(folder, oldJobName, newJobName, false); } /** @@ -881,11 +898,12 @@ public void renameJob(FolderJob folder, String oldJobName, String newJobName) th * false otherwise. * @throws IOException In case of a failure. */ - public void renameJob(FolderJob folder, String oldJobName, String newJobName, Boolean crumbFlag) + public JenkinsServer renameJob(FolderJob folder, String oldJobName, String newJobName, Boolean crumbFlag) throws IOException { client.post(UrlUtils.toJobBaseUrl(folder, oldJobName) + "/doRename?newName=" + EncodingUtils.formParameter(newJobName), crumbFlag); + return this; } @@ -910,12 +928,13 @@ public void close() { * @throws IOException * in case of an error. */ - public void restart(Boolean crumbFlag) throws IOException { + public JenkinsServer restart(Boolean crumbFlag) throws IOException { try { client.post("/restart", crumbFlag); } catch (org.apache.http.client.ClientProtocolException e) { LOGGER.error("restart()", e); } + return this; } /** @@ -928,12 +947,13 @@ public void restart(Boolean crumbFlag) throws IOException { * @throws IOException * in case of an error. */ - public void safeRestart(Boolean crumbFlag) throws IOException { + public JenkinsServer safeRestart(Boolean crumbFlag) throws IOException { try { client.post("/safeRestart", crumbFlag); } catch (org.apache.http.client.ClientProtocolException e) { LOGGER.error("safeRestart()", e); } + return this; } /** @@ -945,13 +965,13 @@ public void safeRestart(Boolean crumbFlag) throws IOException { * @throws IOException * in case of an error. */ - // - public void exit(Boolean crumbFlag) throws IOException { + public JenkinsServer exit(Boolean crumbFlag) throws IOException { try { client.post("/exit", crumbFlag); } catch (org.apache.http.client.ClientProtocolException e) { LOGGER.error("exit()", e); } + return this; } /** @@ -964,11 +984,12 @@ public void exit(Boolean crumbFlag) throws IOException { * @throws IOException * in case of an error. */ - public void safeExit(Boolean crumbFlag) throws IOException { + public JenkinsServer safeExit(Boolean crumbFlag) throws IOException { try { client.post("/safeExit", crumbFlag); } catch (org.apache.http.client.ClientProtocolException e) { LOGGER.error("safeExit()", e); } + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Artifact.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Artifact.java index 6d0b0e69..a6c7a2f0 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Artifact.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Artifact.java @@ -16,24 +16,27 @@ public String getDisplayPath() { return displayPath; } - public void setDisplayPath(String displayPath) { + public Artifact setDisplayPath(String displayPath) { this.displayPath = displayPath; + return this; } public String getFileName() { return fileName; } - public void setFileName(String fileName) { + public Artifact setFileName(String fileName) { this.fileName = fileName; + return this; } public String getRelativePath() { return relativePath; } - public void setRelativePath(String relativePath) { + public Artifact setRelativePath(String relativePath) { this.relativePath = relativePath; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java index 95f70bab..9c850ba2 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java @@ -43,7 +43,8 @@ public JenkinsHttpConnection getClient() { * Set the HTTP client. * @param client {@link JenkinsHttpConnection}. */ - public void setClient(final JenkinsHttpConnection client) { + public BaseModel setClient(final JenkinsHttpConnection client) { this.client = client; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Build.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Build.java index 2d936d1b..470707d9 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Build.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Build.java @@ -83,16 +83,19 @@ public String getUrl() { return url; } - protected void setNumber(int number) { + protected Build setNumber(int number) { this.number = number; + return this; } - protected void setQueueId(int queueId) { + protected Build setQueueId(int queueId) { this.queueId = queueId; + return this; } - protected void setUrl(String url) { + protected Build setUrl(String url) { this.url = url; + return this; } /** diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildCause.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildCause.java index ab15f94f..821a027f 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildCause.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildCause.java @@ -29,48 +29,54 @@ public String getShortDescription() { return shortDescription; } - public void setShortDescription(String shortDescription) { + public BuildCause setShortDescription(String shortDescription) { this.shortDescription = shortDescription; + return this; } public int getUpstreamBuild() { return upstreamBuild; } - public void setUpstreamBuild(Integer upstreamBuild) { + public BuildCause setUpstreamBuild(Integer upstreamBuild) { this.upstreamBuild = upstreamBuild; + return this; } public String getUpstreamProject() { return upstreamProject; } - public void setUpstreamProject(String upstreamProject) { + public BuildCause setUpstreamProject(String upstreamProject) { this.upstreamProject = upstreamProject; + return this; } public String getUpstreamUrl() { return upstreamUrl; } - public void setUpstreamUrl(String upstreamUrl) { + public BuildCause setUpstreamUrl(String upstreamUrl) { this.upstreamUrl = upstreamUrl; + return this; } public String getUserId() { return userId; } - public void setUserId(String userId) { + public BuildCause setUserId(String userId) { this.userId = userId; + return this; } public String getUserName() { return userName; } - public void setUserName(String userName) { + public BuildCause setUserName(String userName) { this.userName = userName; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSet.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSet.java index 1987cc49..2b7cf520 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSet.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSet.java @@ -24,8 +24,9 @@ public class BuildChangeSet { /** * @param items {@link BuildChangeSet} */ - public void setItems(List items) { + public BuildChangeSet setItems(List items) { this.items = items; + return this; } /** @@ -45,8 +46,9 @@ public String getKind() { /** * @param kind the kind of (usually svn, git). */ - public void setKind(String kind) { + public BuildChangeSet setKind(String kind) { this.kind = kind; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetAuthor.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetAuthor.java index 9abdd1ba..af416581 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetAuthor.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetAuthor.java @@ -13,16 +13,18 @@ public String getAbsoluteUrl() { return absoluteUrl; } - public void setAbsoluteUrl(String absoluteUrl) { + public BuildChangeSetAuthor setAbsoluteUrl(String absoluteUrl) { this.absoluteUrl = absoluteUrl; + return this; } public String getFullName() { return fullName; } - public void setFullName(String fullName) { + public BuildChangeSetAuthor setFullName(String fullName) { this.fullName = fullName; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetItem.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetItem.java index e817d12b..922a19b1 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetItem.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetItem.java @@ -27,72 +27,81 @@ public List getAffectedPaths() { return affectedPaths; } - public void setAffectedPaths(List affectedPaths) { + public BuildChangeSetItem setAffectedPaths(List affectedPaths) { this.affectedPaths = affectedPaths; + return this; } public String getCommitId() { return commitId; } - public void setCommitId(String commitId) { + public BuildChangeSetItem setCommitId(String commitId) { this.commitId = commitId; + return this; } public String getTimestamp() { return timestamp; } - public void setTimestamp(String timeStamp) { + public BuildChangeSetItem setTimestamp(String timeStamp) { this.timestamp = timeStamp; + return this; } public String getComment() { return comment; } - public void setComment(String comment) { + public BuildChangeSetItem setComment(String comment) { this.comment = comment; + return this; } public String getDate() { return date; } - public void setDate(String date) { + public BuildChangeSetItem setDate(String date) { this.date = date; + return this; } public String getId() { return id; } - public void setId(String id) { + public BuildChangeSetItem setId(String id) { this.id = id; + return this; } public String getMsg() { return msg; } - public void setMsg(String msg) { + public BuildChangeSetItem setMsg(String msg) { this.msg = msg; + return this; } public List getPaths() { return paths; } - public void setPaths(List paths) { + public BuildChangeSetItem setPaths(List paths) { this.paths = paths; + return this; } public BuildChangeSetAuthor getAuthor() { return author; } - public void setAuthor(BuildChangeSetAuthor author) { + public BuildChangeSetItem setAuthor(BuildChangeSetAuthor author) { this.author = author; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetPath.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetPath.java index e5078f3a..5758ee78 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetPath.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildChangeSetPath.java @@ -27,16 +27,18 @@ public String getEditType() { * @param editType the SCM operation, add or edit or delete * @see EditType */ - public void setEditType(String editType) { + public BuildChangeSetPath setEditType(String editType) { this.editType = editType; + return this; } public String getFile() { return file; } - public void setFile(String file) { + public BuildChangeSetPath setFile(String file) { this.file = file; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java index b129b732..ab9e201d 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java @@ -178,7 +178,7 @@ public List getCauses() { * @param crumbFlag true or false. * @throws IOException in case of errors. */ - public void updateDisplayNameAndDescription(String displayName, String description, boolean crumbFlag) + public BuildWithDetails updateDisplayNameAndDescription(String displayName, String description, boolean crumbFlag) throws IOException { Objects.requireNonNull(displayName, "displayName is not allowed to be null."); Objects.requireNonNull(description, "description is not allowed to be null."); @@ -190,6 +190,7 @@ public void updateDisplayNameAndDescription(String displayName, String descripti params.put("core:apply", ""); params.put("Submit", "Save"); client.post_form(this.getUrl() + "/configSubmit?", params, crumbFlag); + return this; } /** @@ -200,8 +201,8 @@ public void updateDisplayNameAndDescription(String displayName, String descripti * @param description The description which should be set. * @throws IOException in case of errors. */ - public void updateDisplayNameAndDescription(String displayName, String description) throws IOException { - updateDisplayNameAndDescription(displayName, description, false); + public BuildWithDetails updateDisplayNameAndDescription(String displayName, String description) throws IOException { + return updateDisplayNameAndDescription(displayName, description, false); } /** @@ -211,7 +212,7 @@ public void updateDisplayNameAndDescription(String displayName, String descripti * @param crumbFlag true or false. * @throws IOException in case of errors. */ - public void updateDisplayName(String displayName, boolean crumbFlag) throws IOException { + public BuildWithDetails updateDisplayName(String displayName, boolean crumbFlag) throws IOException { Objects.requireNonNull(displayName, "displayName is not allowed to be null."); String description = getDescription() == null ? "" : getDescription(); Map params = new HashMap<>(); @@ -221,6 +222,7 @@ public void updateDisplayName(String displayName, boolean crumbFlag) throws IOEx params.put("core:apply", ""); params.put("Submit", "Save"); client.post_form(this.getUrl() + "/configSubmit?", params, crumbFlag); + return this; } /** @@ -229,8 +231,8 @@ public void updateDisplayName(String displayName, boolean crumbFlag) throws IOEx * @param displayName The new displayName which should be set. * @throws IOException in case of errors. */ - public void updateDisplayName(String displayName) throws IOException { - updateDisplayName(displayName, false); + public BuildWithDetails updateDisplayName(String displayName) throws IOException { + return updateDisplayName(displayName, false); } /** @@ -240,7 +242,7 @@ public void updateDisplayName(String displayName) throws IOException { * @param crumbFlag true or false. * @throws IOException in case of errors. */ - public void updateDescription(String description, boolean crumbFlag) throws IOException { + public BuildWithDetails updateDescription(String description, boolean crumbFlag) throws IOException { Objects.requireNonNull(description, "description is not allowed to be null."); String displayName = getDisplayName() == null ? "" : getDisplayName(); //JDK9+: Map.of(..) @@ -251,6 +253,7 @@ public void updateDescription(String description, boolean crumbFlag) throws IOEx params.put("core:apply", ""); params.put("Submit", "Save"); client.post_form(this.getUrl() + "/configSubmit?", params, crumbFlag); + return this; } /** @@ -259,8 +262,8 @@ public void updateDescription(String description, boolean crumbFlag) throws IOEx * @param description The description which should be set. * @throws IOException in case of errors. */ - public void updateDescription(String description) throws IOException { - updateDescription(description, false); + public BuildWithDetails updateDescription(String description) throws IOException { + return updateDescription(description, false); } private boolean isNullOrEmpty(String value) { @@ -479,8 +482,9 @@ public BuildChangeSet getChangeSet() { return result; } - public void setChangeSet(BuildChangeSet changeSet) { + public BuildWithDetails setChangeSet(BuildChangeSet changeSet) { this.changeSet = changeSet; + return this; } /** @@ -501,20 +505,23 @@ public List getChangeSets() { return result; } - public void setChangeSets(List changeSets) { + public BuildWithDetails setChangeSets(List changeSets) { this.changeSets = changeSets; + return this; } public List getCulprits() { return culprits; } - public void setCulprits(List culprits) { + public BuildWithDetails setCulprits(List culprits) { this.culprits = culprits; + return this; } - public void setResult(BuildResult result) { + public BuildWithDetails setResult(BuildResult result) { this.result = result; + return this; } public InputStream downloadArtifact(Artifact a) throws IOException, URISyntaxException { diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/CauseAction.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/CauseAction.java index e481f03a..dd455b50 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/CauseAction.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/CauseAction.java @@ -9,24 +9,27 @@ public String getShortDescription() { return shortDescription; } - public void setShortDescription(String shortDescription) { + public CauseAction setShortDescription(String shortDescription) { this.shortDescription = shortDescription; + return this; } public String getUserId() { return userId; } - public void setUserId(String userId) { + public CauseAction setUserId(String userId) { this.userId = userId; + return this; } public String getUserName() { return userName; } - public void setUserName(String userName) { + public CauseAction setUserName(String userName) { this.userName = userName; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Computer.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Computer.java index 75f63af9..2414f061 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Computer.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Computer.java @@ -10,6 +10,7 @@ import java.util.List; import com.offbytwo.jenkins.client.util.EncodingUtils; +import com.fasterxml.jackson.annotation.JsonProperty; /** * @author Kelly Plummer @@ -19,17 +20,20 @@ public class Computer extends BaseModel { private String displayName; - public List getComputers() { - return computer; - } + private List computers; - public void setComputer(List computer) { - this.computer = computer; + public Computer() { } - List computer; + @JsonProperty("computer") + public List getComputers() { + return computers; + } - public Computer() { + @JsonProperty("computer") + public Computer setComputers(List computers) { + this.computers = computers; + return this; } public Computer(String displayName) { @@ -65,10 +69,10 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) return false; Computer other = (Computer) obj; - if (computer == null) { - if (other.computer != null) + if (computers == null) { + if (other.computers != null) return false; - } else if (!computer.equals(other.computer)) + } else if (!computers.equals(other.computers)) return false; if (displayName == null) { if (other.displayName != null) @@ -82,7 +86,7 @@ public boolean equals(Object obj) { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((computer == null) ? 0 : computer.hashCode()); + result = prime * result + ((computers == null) ? 0 : computers.hashCode()); result = prime * result + ((displayName == null) ? 0 : displayName.hashCode()); return result; } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerSet.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerSet.java index ef2e2047..0c12ba5a 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerSet.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerSet.java @@ -24,24 +24,27 @@ public int getBusyExecutors() { return busyExecutors; } - public void setBusyExecutors(int busyExecutors) { + public ComputerSet setBusyExecutors(int busyExecutors) { this.busyExecutors = busyExecutors; + return this; } public String getDisplayName() { return displayName; } - public void setDisplayName(String displayName) { + public ComputerSet setDisplayName(String displayName) { this.displayName = displayName; + return this; } public int getTotalExecutors() { return totalExecutors; } - public void setTotalExecutors(int totalExecutors) { + public ComputerSet setTotalExecutors(int totalExecutors) { this.totalExecutors = totalExecutors; + return this; } public List getComputers() { @@ -51,8 +54,9 @@ public List getComputers() { }).collect(Collectors.toList()); } - public void setComputer(List computers) { + public ComputerSet setComputer(List computers) { this.computer = computers; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java index 46958e6f..2ee6a55b 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java @@ -33,6 +33,7 @@ public class ComputerWithDetails extends Computer { public ComputerWithDetails() { } + @Override public String getDisplayName() { return displayName; } @@ -78,7 +79,7 @@ public LoadStatistics getLoadStatistics() throws IOException { return client.get("/computer/" + name + "/" + "loadStatistics/?depth=2", LoadStatistics.class); } - public void toggleOffline(boolean crumbFlag) throws IOException { + public ComputerWithDetails toggleOffline(boolean crumbFlag) throws IOException { // curl --data "json=init" -X POST "http://192.168.99.100:8080/computer/(master)/toggleOffline" String name; if ("master".equals(displayName)) { @@ -88,27 +89,28 @@ public void toggleOffline(boolean crumbFlag) throws IOException { } client.post( "/computer/" + name + "/toggleOffline", crumbFlag); + return this; } - public void toggleOffline() throws IOException { - toggleOffline( false ); + public ComputerWithDetails toggleOffline() throws IOException { + return toggleOffline(false); } - public void changeOfflineCause(String cause, boolean crumbFlag) throws IOException { + public ComputerWithDetails changeOfflineCause(String cause, boolean crumbFlag) throws IOException { String name; if ("master".equals(displayName)) { name = "(master)"; } else { name = EncodingUtils.encode(displayName); } - - Map data = new HashMap(); - data.put( "offlineMessage", cause ); - client.post_form("/computer/" + name + "/changeOfflineCause?", data, crumbFlag); + Map data = new HashMap(); + data.put("offlineMessage", cause); + client.post_form("/computer/" + name + "/changeOfflineCause?", data, crumbFlag); + return this; } - public void changeOfflineCause(String cause) throws IOException { - changeOfflineCause(cause, false); + public ComputerWithDetails changeOfflineCause(String cause) throws IOException { + return changeOfflineCause(cause, false); } public Boolean getManualLaunchAllowed() { diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ConsoleLog.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ConsoleLog.java index 59ef5c6d..503e1ce0 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ConsoleLog.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ConsoleLog.java @@ -19,23 +19,26 @@ public String getConsoleLog() { return consoleLog; } - public void setConsoleLog(String consoleLog) { + public ConsoleLog setConsoleLog(String consoleLog) { this.consoleLog = consoleLog; + return this; } public Boolean getHasMoreData() { return hasMoreData; } - public void setHasMoreData(Boolean hasMoreData) { + public ConsoleLog setHasMoreData(Boolean hasMoreData) { this.hasMoreData = hasMoreData; + return this; } public Integer getCurrentBufferSize() { return currentBufferSize; } - public void setCurrentBufferSize(Integer currentBufferSize) { + public ConsoleLog setCurrentBufferSize(Integer currentBufferSize) { this.currentBufferSize = currentBufferSize; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Executable.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Executable.java index ff1b6e27..5f044e13 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Executable.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Executable.java @@ -9,16 +9,18 @@ public Long getNumber() { return number; } - public void setNumber(Long number) { + public Executable setNumber(Long number) { this.number = number; + return this; } public String getUrl() { return url; } - public void setUrl(String url) { + public Executable setUrl(String url) { this.url = url; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Executor.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Executor.java index 15fcebde..c6914d97 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Executor.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Executor.java @@ -23,48 +23,54 @@ public Job getCurrentExecutable() { return currentExecutable; } - public void setCurrentExecutable(Job currentExecutable) { + public Executor setCurrentExecutable(Job currentExecutable) { this.currentExecutable = currentExecutable; + return this; } public Job getCurrentWorkUnit() { return currentWorkUnit; } - public void setCurrentWorkUnit(Job currentWorkUnit) { + public Executor setCurrentWorkUnit(Job currentWorkUnit) { this.currentWorkUnit = currentWorkUnit; + return this; } public Boolean getIdle() { return idle; } - public void setIdle(Boolean idle) { + public Executor setIdle(Boolean idle) { this.idle = idle; + return this; } public Boolean getLikelyStuck() { return likelyStuck; } - public void setLikelyStuck(Boolean likelyStuck) { + public Executor setLikelyStuck(Boolean likelyStuck) { this.likelyStuck = likelyStuck; + return this; } public int getNumber() { return number; } - public void setNumber(int number) { + public Executor setNumber(int number) { this.number = number; + return this; } public int getProgress() { return progress; } - public void setProgress(int progress) { + public Executor setProgress(int progress) { this.progress = progress; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ExtractHeader.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ExtractHeader.java index cb3c683a..6dd43221 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ExtractHeader.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ExtractHeader.java @@ -4,8 +4,9 @@ public class ExtractHeader extends BaseModel { private String location; - public void setLocation(String value) { + public ExtractHeader setLocation(String value) { location = value; + return this; } public String getLocation() { diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java index a2ce89dc..f2677081 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/FolderJob.java @@ -79,8 +79,8 @@ public Job getJob(String name) { * @param folderName name of the folder to be created. * @throws IOException in case of an error. */ - public void createFolder(String folderName) throws IOException { - createFolder(folderName, false); + public FolderJob createFolder(String folderName) throws IOException { + return createFolder(folderName, false); } /** @@ -88,9 +88,10 @@ public void createFolder(String folderName) throws IOException { * * @param folderName name of the folder to be created. * @param crumbFlag true/false. + * @return * @throws IOException in case of an error. */ - public void createFolder(String folderName, Boolean crumbFlag) throws IOException { + public FolderJob createFolder(String folderName, Boolean crumbFlag) throws IOException { // https://gist.github.com/stuart-warren/7786892 was slightly helpful // here //TODO: JDK9+: Map.of(...) @@ -100,6 +101,7 @@ public void createFolder(String folderName, Boolean crumbFlag) throws IOExceptio params.put("from", ""); params.put("Submit", "OK"); client.post_form(this.getUrl() + "/createItem?", params, crumbFlag); + return this; } /* diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/HourMinSec10.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/HourMinSec10.java index 0dba01dc..66823616 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/HourMinSec10.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/HourMinSec10.java @@ -15,24 +15,27 @@ public Statis getHour() { return hour; } - public void setHour(Statis hour) { + public HourMinSec10 setHour(Statis hour) { this.hour = hour; + return this; } public Statis getMin() { return min; } - public void setMin(Statis min) { + public HourMinSec10 setMin(Statis min) { this.min = min; + return this; } public Statis getSec10() { return sec10; } - public void setSec10(Statis sec10) { + public HourMinSec10 setSec10(Statis sec10) { this.sec10 = sec10; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JacocoCoverageReport.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JacocoCoverageReport.java index ed623aa1..cc1345d5 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JacocoCoverageReport.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JacocoCoverageReport.java @@ -11,32 +11,46 @@ public class JacocoCoverageReport extends BaseModel { public JacocoCoverageResult getLineCoverage() { return lineCoverage; } - public void setLineCoverage(JacocoCoverageResult lineCoverage) { + + public JacocoCoverageReport setLineCoverage(JacocoCoverageResult lineCoverage) { this.lineCoverage = lineCoverage; + return this; } + public JacocoCoverageResult getClassCoverage() { return classCoverage; } - public void setClassCoverage(JacocoCoverageResult classCoverage) { + + public JacocoCoverageReport setClassCoverage(JacocoCoverageResult classCoverage) { this.classCoverage = classCoverage; + return this; } + public JacocoCoverageResult getComplexityScore() { return complexityScore; } - public void setComplexityScore(JacocoCoverageResult complexityScore) { + + public JacocoCoverageReport setComplexityScore(JacocoCoverageResult complexityScore) { this.complexityScore = complexityScore; + return this; } + public JacocoCoverageResult getInstructionCoverage() { return instructionCoverage; } - public void setInstructionCoverage(JacocoCoverageResult instructionCoverage) { + + public JacocoCoverageReport setInstructionCoverage(JacocoCoverageResult instructionCoverage) { this.instructionCoverage = instructionCoverage; + return this; } + public JacocoCoverageResult getBranchCoverage() { return branchCoverage; } - public void setBranchCoverage(JacocoCoverageResult branchCoverage) { + + public JacocoCoverageReport setBranchCoverage(JacocoCoverageResult branchCoverage) { this.branchCoverage = branchCoverage; + return this; } } \ No newline at end of file diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JacocoCoverageResult.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JacocoCoverageResult.java index 760bb610..41f3f43d 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JacocoCoverageResult.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JacocoCoverageResult.java @@ -11,34 +11,46 @@ public class JacocoCoverageResult { public int getCovered() { return covered; } - public void setCovered(int covered) { + + public JacocoCoverageResult setCovered(int covered) { this.covered = covered; + return this; } + public int getMissed() { return missed; } - public void setMissed(int missed) { + + public JacocoCoverageResult setMissed(int missed) { this.missed = missed; + return this; } + public int getPercentage() { return percentage; } - public void setPercentage(int percentage) { + + public JacocoCoverageResult setPercentage(int percentage) { this.percentage = percentage; + return this; } + public int getPercentageFloat() { return percentageFloat; } - public void setPercentageFloat(int percentageFloat) { + + public JacocoCoverageResult setPercentageFloat(int percentageFloat) { this.percentageFloat = percentageFloat; + return this; } + public int getTotal() { return total; } - public void setTotal(int total) { + + public JacocoCoverageResult setTotal(int total) { this.total = total; + return this; } - - } \ No newline at end of file diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobConfiguration.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobConfiguration.java index 571430ab..d6a95050 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobConfiguration.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobConfiguration.java @@ -77,7 +77,8 @@ public String getConfigXml() { return configXml; } - public void setConfigXml(String configXml) { + public JobConfiguration setConfigXml(String configXml) { this.configXml = configXml; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java index 71bc664a..b5894015 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java @@ -471,8 +471,8 @@ public Optional getBuildByNumber(final int buildNumber) { * {@link #EMPTY_DESCRIPTION}. * @throws IOException in case of errors. */ - public void updateDescription(String description) throws IOException { - updateDescription(description, false); + public JobWithDetails updateDescription(String description) throws IOException { + return updateDescription(description, false); } /** @@ -484,13 +484,14 @@ public void updateDescription(String description) throws IOException { * @param crumbFlag true or false. * @throws IOException in case of errors. */ - public void updateDescription(String description, boolean crumbFlag) throws IOException { + public JobWithDetails updateDescription(String description, boolean crumbFlag) throws IOException { Objects.requireNonNull(description, "description is not allowed to be null."); //JDK9+ // Map.of(...); Map params = new HashMap<>(); params.put("description", description); client.post_form(this.getUrl() + "/submitDescription?", params, crumbFlag); + return this; } /** @@ -498,8 +499,8 @@ public void updateDescription(String description, boolean crumbFlag) throws IOEx * * @throws IOException in case of errors. */ - public void clearDescription() throws IOException { - updateDescription(EMPTY_DESCRIPTION); + public JobWithDetails clearDescription() throws IOException { + return updateDescription(EMPTY_DESCRIPTION); } /** @@ -508,8 +509,8 @@ public void clearDescription() throws IOException { * @param crumbFlag true or false. * @throws IOException in case of errors. */ - public void clearDescription(boolean crumbFlag) throws IOException { - updateDescription(EMPTY_DESCRIPTION, crumbFlag); + public JobWithDetails clearDescription(boolean crumbFlag) throws IOException { + return updateDescription(EMPTY_DESCRIPTION, crumbFlag); } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/LoadStatistics.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/LoadStatistics.java index df2a5608..fc335e5e 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/LoadStatistics.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/LoadStatistics.java @@ -18,24 +18,27 @@ public HourMinSec10 getBusyExecutors() { return busyExecutors; } - public void setBusyExecutors(HourMinSec10 busyExecutors) { + public LoadStatistics setBusyExecutors(HourMinSec10 busyExecutors) { this.busyExecutors = busyExecutors; + return this; } public HourMinSec10 getQueueLength() { return queueLength; } - public void setQueueLength(HourMinSec10 queueLength) { + public LoadStatistics setQueueLength(HourMinSec10 queueLength) { this.queueLength = queueLength; + return this; } public HourMinSec10 getTotalExecutors() { return totalExecutors; } - public void setTotalExecutors(HourMinSec10 totalExecutors) { + public LoadStatistics setTotalExecutors(HourMinSec10 totalExecutors) { this.totalExecutors = totalExecutors; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MainView.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MainView.java index bef07f0b..167f6f40 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MainView.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MainView.java @@ -33,15 +33,17 @@ public List getJobs() { return jobs; } - public void setJobs(List jobs) { + public MainView setJobs(List jobs) { this.jobs = jobs; + return this; } public List getViews() { return views; } - public void setViews(List views) { + public MainView setViews(List views) { this.views = views; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenArtifact.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenArtifact.java index 184ccc37..c51ea4ea 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenArtifact.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenArtifact.java @@ -18,63 +18,71 @@ public String getArtifactId() { return artifactId; } - public void setArtifactId(String artifactId) { + public MavenArtifact setArtifactId(String artifactId) { this.artifactId = artifactId; + return this; } public String getCanonicalName() { return canonicalName; } - public void setCanonicalName(String canonicalName) { + public MavenArtifact setCanonicalName(String canonicalName) { this.canonicalName = canonicalName; + return this; } public String getClassifier() { return classifier; } - public void setClassifier(String classifier) { + public MavenArtifact setClassifier(String classifier) { this.classifier = classifier; + return this; } public String getFileName() { return fileName; } - public void setFileName(String fileName) { + public MavenArtifact setFileName(String fileName) { this.fileName = fileName; + return this; } public String getGroupId() { return groupId; } - public void setGroupId(String groupId) { + public MavenArtifact setGroupId(String groupId) { this.groupId = groupId; + return this; } public String getMd5sum() { return md5sum; } - public void setMd5sum(String md5sum) { + public MavenArtifact setMd5sum(String md5sum) { this.md5sum = md5sum; + return this; } public String getType() { return type; } - public void setType(String type) { + public MavenArtifact setType(String type) { this.type = type; + return this; } public String getVersion() { return version; } - public void setVersion(String version) { + public MavenArtifact setVersion(String version) { this.version = version; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModuleRecord.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModuleRecord.java index 3684c21d..34fbd424 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModuleRecord.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModuleRecord.java @@ -17,39 +17,44 @@ public List getAttachedArtifacts() { return attachedArtifacts; } - public void setAttachedArtifacts(List attachedArtifacts) { + public MavenModuleRecord setAttachedArtifacts(List attachedArtifacts) { this.attachedArtifacts = attachedArtifacts; + return this; } public Build getParent() { return parent; } - public void setParent(Build parent) { + public MavenModuleRecord setParent(Build parent) { this.parent = parent; + return this; } public MavenArtifact getMainArtifact() { return mainArtifact; } - public void setMainArtifact(MavenArtifact mainArtifact) { + public MavenModuleRecord setMainArtifact(MavenArtifact mainArtifact) { this.mainArtifact = mainArtifact; + return this; } public MavenArtifact getPomArtifact() { return pomArtifact; } - public void setPomArtifact(MavenArtifact pomArtifact) { + public MavenModuleRecord setPomArtifact(MavenArtifact pomArtifact) { this.pomArtifact = pomArtifact; + return this; } public String getUrl() { return url; } - public void setUrl(String url) { + public MavenModuleRecord setUrl(String url) { this.url = url; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/OfflineCause.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/OfflineCause.java index 66c70cd1..30969dc9 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/OfflineCause.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/OfflineCause.java @@ -17,6 +17,16 @@ public String getDescription() { return description; } + public OfflineCause setTimestamp(Long timestamp) { + this.timestamp = timestamp; + return this; + } + + public OfflineCause setDescription(String description) { + this.description = description; + return this; + } + @Override public int hashCode() { final int prime = 31; @@ -48,12 +58,4 @@ public boolean equals(Object obj) { return true; } - public void setTimestamp(Long timestamp) { - this.timestamp = timestamp; - } - - public void setDescription(String description) { - this.description = description; - } - } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ParameterDefinitions.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ParameterDefinitions.java index b46c69e4..47247c74 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ParameterDefinitions.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ParameterDefinitions.java @@ -30,11 +30,13 @@ public List getStringParams() { return stringParams; } - public void setStringParams(List stringParams) { + public ParameterDefinitions setStringParams(List stringParams) { this.stringParams = stringParams; + return this; } - public void addParam(StringParameterDefinition spd) { + public ParameterDefinitions addParam(StringParameterDefinition spd) { stringParams.add(spd); + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ParametersDefinitionProperty.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ParametersDefinitionProperty.java index efb033f5..bb88a128 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ParametersDefinitionProperty.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ParametersDefinitionProperty.java @@ -26,7 +26,8 @@ public ParameterDefinitions getPd() { return pd; } - public void setPd(ParameterDefinitions pd) { + public ParametersDefinitionProperty setPd(ParameterDefinitions pd) { this.pd = pd; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Plugin.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Plugin.java index fe380202..6c9e09a1 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Plugin.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Plugin.java @@ -27,9 +27,10 @@ public boolean isActive() return active; } - public void setActive( boolean active ) + public Plugin setActive(boolean active) { this.active = active; + return this; } public String getBackupVersion() @@ -37,9 +38,10 @@ public String getBackupVersion() return backupVersion; } - public void setBackupVersion( String backupVersion ) + public Plugin setBackupVersion(String backupVersion) { this.backupVersion = backupVersion; + return this; } public boolean isBundled() @@ -47,9 +49,10 @@ public boolean isBundled() return bundled; } - public void setBundled( boolean bundled ) + public Plugin setBundled(boolean bundled) { this.bundled = bundled; + return this; } public boolean isDowngradable() @@ -57,9 +60,10 @@ public boolean isDowngradable() return downgradable; } - public void setDowngradable( boolean downgradable ) + public Plugin setDowngradable(boolean downgradable) { this.downgradable = downgradable; + return this; } public boolean isEnabled() @@ -67,9 +71,10 @@ public boolean isEnabled() return enabled; } - public void setEnabled( boolean enabled ) + public Plugin setEnabled(boolean enabled) { this.enabled = enabled; + return this; } public boolean isHasUpdate() @@ -77,9 +82,10 @@ public boolean isHasUpdate() return hasUpdate; } - public void setHasUpdate( boolean hasUpdate ) + public Plugin setHasUpdate(boolean hasUpdate) { this.hasUpdate = hasUpdate; + return this; } public String getLongName() @@ -87,9 +93,10 @@ public String getLongName() return longName; } - public void setLongName( String longName ) + public Plugin setLongName(String longName) { this.longName = longName; + return this; } public boolean isPinned() @@ -97,9 +104,10 @@ public boolean isPinned() return pinned; } - public void setPinned( boolean pinned ) + public Plugin setPinned(boolean pinned) { this.pinned = pinned; + return this; } public String getShortName() @@ -107,9 +115,10 @@ public String getShortName() return shortName; } - public void setShortName( String shortName ) + public Plugin setShortName(String shortName) { this.shortName = shortName; + return this; } public String getSupportsDynamicLoad() @@ -117,9 +126,10 @@ public String getSupportsDynamicLoad() return supportsDynamicLoad; } - public void setSupportsDynamicLoad( String supportsDynamicLoad ) + public Plugin setSupportsDynamicLoad(String supportsDynamicLoad) { this.supportsDynamicLoad = supportsDynamicLoad; + return this; } public String getUrl() @@ -127,9 +137,10 @@ public String getUrl() return url; } - public void setUrl( String url ) + public Plugin setUrl(String url) { this.url = url; + return this; } public String getVersion() @@ -137,9 +148,10 @@ public String getVersion() return version; } - public void setVersion( String version ) + public Plugin setVersion(String version) { this.version = version; + return this; } public List getDependencies() @@ -147,9 +159,10 @@ public List getDependencies() return dependencies; } - public void setDependencies( List dependencies ) + public Plugin setDependencies(List dependencies) { this.dependencies = dependencies; + return this; } @Override @@ -247,6 +260,4 @@ else if ( !version.equals( other.version ) ) return true; } - - } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/PluginDependency.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/PluginDependency.java index adb1331d..acac798d 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/PluginDependency.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/PluginDependency.java @@ -11,6 +11,33 @@ public class PluginDependency extends BaseModel private String version; + public boolean isOptional() { + return optional; + } + + public PluginDependency setOptional(boolean optional) { + this.optional = optional; + return this; + } + + public String getShortName() { + return shortName; + } + + public PluginDependency setShortName(String shortName) { + this.shortName = shortName; + return this; + } + + public String getVersion() { + return version; + } + + public PluginDependency setVersion(String version) { + this.version = version; + return this; + } + @Override public int hashCode() { @@ -51,34 +78,4 @@ else if ( !version.equals( other.version ) ) return true; } - public boolean isOptional() - { - return optional; - } - - public void setOptional( boolean optional ) - { - this.optional = optional; - } - - public String getShortName() - { - return shortName; - } - - public void setShortName( String shortName ) - { - this.shortName = shortName; - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = version; - } - } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/PluginManager.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/PluginManager.java index f23ccaba..c08fc713 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/PluginManager.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/PluginManager.java @@ -14,8 +14,9 @@ public List getPlugins() return plugins; } - public void setPlugins(List plugins) { + public PluginManager setPlugins(List plugins) { this.plugins = plugins; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Queue.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Queue.java index 3320ecb5..355dc910 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Queue.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Queue.java @@ -8,8 +8,7 @@ import java.util.List; -public class Queue - extends BaseModel +public class Queue extends BaseModel { private List discoverableItems; @@ -24,9 +23,10 @@ public List getDiscoverableItems() return discoverableItems; } - public void setDiscoverableItems( List discoverableItems ) + public Queue setDiscoverableItems(List discoverableItems) { this.discoverableItems = discoverableItems; + return this; } @Override @@ -44,9 +44,10 @@ public List getItems() return items; } - public void setItems( List items ) + public Queue setItems(List items) { this.items = items; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/QueueItem.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/QueueItem.java index 662b3e2b..ae2d8d3d 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/QueueItem.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/QueueItem.java @@ -38,48 +38,54 @@ public List getActions() { return actions; } - public void setActions(List actions) { + public QueueItem setActions(List actions) { this.actions = actions; + return this; } public boolean isBlocked() { return blocked; } - public void setBlocked(boolean blocked) { + public QueueItem setBlocked(boolean blocked) { this.blocked = blocked; + return this; } public boolean isBuildable() { return buildable; } - public void setBuildable(boolean buildable) { + public QueueItem setBuildable(boolean buildable) { this.buildable = buildable; + return this; } public Long getId() { return id; } - public void setId(Long id) { + public QueueItem setId(Long id) { this.id = id; + return this; } public Long getInQueueSince() { return inQueueSince; } - public void setInQueueSince(Long inQueueSince) { + public QueueItem setInQueueSince(Long inQueueSince) { this.inQueueSince = inQueueSince; + return this; } public String getParams() { return params; } - public void setParams(String params) { + public QueueItem setParams(String params) { this.params = params; + return this; } public boolean isStuck() { @@ -90,44 +96,50 @@ public QueueTask getTask() { return task; } - public void setTask(QueueTask task) { + public QueueItem setTask(QueueTask task) { this.task = task; + return this; } - public void setStuck(boolean stuck) { + public QueueItem setStuck(boolean stuck) { this.stuck = stuck; + return this; } public String getUrl() { return url; } - public void setUrl(String url) { + public QueueItem setUrl(String url) { this.url = url; + return this; } public String getWhy() { return why; } - public void setWhy(String why) { + public QueueItem setWhy(String why) { this.why = why; + return this; } public boolean isCancelled() { return cancelled; } - public void setCancelled(boolean cancelled) { + public QueueItem setCancelled(boolean cancelled) { this.cancelled = cancelled; + return this; } public Executable getExecutable() { return executable; } - public void setExecutable(Executable executable) { + public QueueItem setExecutable(Executable executable) { this.executable = executable; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/QueueItemActions.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/QueueItemActions.java index 4c49ba5f..cbd6e390 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/QueueItemActions.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/QueueItemActions.java @@ -15,8 +15,9 @@ public List getCauses() { return causes; } - public void setCauses(List causes) { + public QueueItemActions setCauses(List causes) { this.causes = causes; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Statis.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Statis.java index b2c601c3..bb920ea4 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Statis.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Statis.java @@ -22,16 +22,18 @@ public List getHistory() { return history; } - public void setHistory(List history) { + public Statis setHistory(List history) { this.history = history; + return this; } public Double getLatest() { return latest; } - public void setLatest(Double latest) { + public Statis setLatest(Double latest) { this.latest = latest; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/StringParameterDefinition.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/StringParameterDefinition.java index 740e3d77..2a89618f 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/StringParameterDefinition.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/StringParameterDefinition.java @@ -34,23 +34,26 @@ public String getName() { return name; } - public void setName(String name) { + public StringParameterDefinition setName(String name) { this.name = name; + return this; } public String getDescription() { return description; } - public void setDescription(String description) { + public StringParameterDefinition setDescription(String description) { this.description = description; + return this; } public String getDefaultValue() { return defaultValue; } - public void setDefaultValue(String defaultValue) { + public StringParameterDefinition setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; + return this; } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestCase.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestCase.java index 8f4f3795..f3ac1331 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestCase.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestCase.java @@ -21,9 +21,10 @@ public int getAge() return age; } - public void setAge( int age ) + public TestCase setAge(int age) { this.age = age; + return this; } public String getClassName() @@ -31,9 +32,10 @@ public String getClassName() return className; } - public void setClassName( String className ) + public TestCase setClassName(String className) { this.className = className; + return this; } public double getDuration() @@ -41,9 +43,10 @@ public double getDuration() return duration; } - public void setDuration( double duration ) + public TestCase setDuration(double duration) { this.duration = duration; + return this; } public int getFailedSince() @@ -51,9 +54,10 @@ public int getFailedSince() return failedSince; } - public void setFailedSince( int failedSince ) + public TestCase setFailedSince(int failedSince) { this.failedSince = failedSince; + return this; } public String getName() @@ -61,9 +65,10 @@ public String getName() return name; } - public void setName( String name ) + public TestCase setName(String name) { this.name = name; + return this; } public boolean isSkipped() @@ -71,9 +76,10 @@ public boolean isSkipped() return skipped; } - public void setSkipped( boolean skipped ) + public TestCase setSkipped(boolean skipped) { this.skipped = skipped; + return this; } public String getStatus() @@ -81,9 +87,10 @@ public String getStatus() return status; } - public void setStatus( String status ) + public TestCase setStatus(String status) { this.status = status; + return this; } public String getErrorDetails() @@ -91,9 +98,10 @@ public String getErrorDetails() return errorDetails; } - public void setErrorDetails( String errorDetails ) + public TestCase setErrorDetails(String errorDetails) { this.errorDetails = errorDetails; + return this; } public String getErrorStackTrace() @@ -101,9 +109,10 @@ public String getErrorStackTrace() return errorStackTrace; } - public void setErrorStackTrace( String errorStackTrace ) + public TestCase setErrorStackTrace(String errorStackTrace) { this.errorStackTrace = errorStackTrace; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestChild.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestChild.java index 516bb446..a8d50ca0 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestChild.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestChild.java @@ -12,16 +12,18 @@ public int getNumber() { return number; } - public void setNumber(int number) { + public TestChild setNumber(int number) { this.number = number; + return this; } public String getUrl() { return url; } - public void setUrl(String url) { + public TestChild setUrl(String url) { this.url = url; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestChildReport.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestChildReport.java index da920bec..7d3ea3f5 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestChildReport.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestChildReport.java @@ -13,8 +13,18 @@ public TestChild getChild() { return child; } - public void setChild(TestChild child) { + public TestChildReport setChild(TestChild child) { this.child = child; + return this; + } + + public TestResult getResult() { + return result; + } + + public TestChildReport setResult(TestResult result) { + this.result = result; + return this; } @Override @@ -48,12 +58,4 @@ public boolean equals(Object obj) { return true; } - public TestResult getResult() { - return result; - } - - public void setResult(TestResult result) { - this.result = result; - } - } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestReport.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestReport.java index b775c3f2..de3f0162 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestReport.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestReport.java @@ -47,40 +47,45 @@ public int getFailCount() { return failCount; } - public void setFailCount(int failCount) { + public TestReport setFailCount(int failCount) { this.failCount = failCount; + return this; } public int getSkipCount() { return skipCount; } - public void setSkipCount(int skipCount) { + public TestReport setSkipCount(int skipCount) { this.skipCount = skipCount; + return this; } public int getTotalCount() { return totalCount; } - public void setTotalCount(int totalCount) { + public TestReport setTotalCount(int totalCount) { this.totalCount = totalCount; + return this; } public String getUrlName() { return urlName; } - public void setUrlName(String urlName) { + public TestReport setUrlName(String urlName) { this.urlName = urlName; + return this; } public List getChildReports() { return childReports; } - public void setChildReports(List childReports) { + public TestReport setChildReports(List childReports) { this.childReports = childReports; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestResult.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestResult.java index 934b32d4..5dda306f 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestResult.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestResult.java @@ -20,40 +20,54 @@ public double getDuration() { return duration; } - public void setDuration(double duration) { + public TestResult setDuration(double duration) { this.duration = duration; + return this; } public boolean isEmpty() { return empty; } - public void setEmpty(boolean empty) { + public TestResult setEmpty(boolean empty) { this.empty = empty; + return this; } public int getFailCount() { return failCount; } - public void setFailCount(int failCount) { + public TestResult setFailCount(int failCount) { this.failCount = failCount; + return this; } public int getPassCount() { return passCount; } - public void setPassCount(int passCount) { + public TestResult setPassCount(int passCount) { this.passCount = passCount; + return this; } public int getSkipCount() { return skipCount; } - public void setSkipCount(int skipCount) { + public TestResult setSkipCount(int skipCount) { this.skipCount = skipCount; + return this; + } + + public List getSuites() { + return suites; + } + + public TestResult setSuites(List suites) { + this.suites = suites; + return this; } @Override @@ -97,12 +111,4 @@ public boolean equals(Object obj) { return false; return true; } - - public List getSuites() { - return suites; - } - - public void setSuites(List suites) { - this.suites = suites; - } } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestSuites.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestSuites.java index 45c96883..030b03b9 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestSuites.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/TestSuites.java @@ -19,40 +19,45 @@ public double getDuration() { return duration; } - public void setDuration(double duration) { + public TestSuites setDuration(double duration) { this.duration = duration; + return this; } public String getId() { return id; } - public void setId(String id) { + public TestSuites setId(String id) { this.id = id; + return this; } public String getName() { return name; } - public void setName(String name) { + public TestSuites setName(String name) { this.name = name; + return this; } public String getTimestamp() { return timestamp; } - public void setTimestamp(String timestamp) { + public TestSuites setTimestamp(String timestamp) { this.timestamp = timestamp; + return this; } public List getCases() { return cases; } - public void setCases(List cases) { + public TestSuites setCases(List cases) { this.cases = cases; + return this; } @Override diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/View.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/View.java index 5267e4f1..422cd5a4 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/View.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/View.java @@ -13,8 +13,9 @@ public String getName() { return name; } - public void setName(String name) { + public View setName(String name) { this.name = name; + return this; } public View() { @@ -24,16 +25,18 @@ public String getDescription() { return description; } - public void setDescription(String description) { + public View setDescription(String description) { this.description = description; + return this; } public String getUrl() { return url; } - public void setUrl(String url) { + public View setUrl(String url) { this.url = url; + return this; } @Override From 752c3b99a6288001cc199ccbfb39ce5124c1ba82 Mon Sep 17 00:00:00 2001 From: Jesper Terkelsen Date: Mon, 15 Apr 2019 20:39:19 +0200 Subject: [PATCH 21/39] JENKINS-56186 Support for showing node labels via java API (#388) This information is already available in the API call. --- ReleaseNotes.md | 11 ++++++ .../offbytwo/jenkins/model/ComputerLabel.java | 34 +++++++++++++++++++ .../jenkins/model/ComputerWithDetails.java | 10 ++++++ 3 files changed, 55 insertions(+) create mode 100644 jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerLabel.java diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 7003cd77..62323e1c 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -54,6 +54,17 @@ Add the crumbFlag as the 2nd parameter of getConsoleOutputText method + * [JENKINS-56186][jissue-56186] + + Added labels to computers + + ```java + ComputerWithDetails computer = ... + for (ComputerLabel assignedLabel : computer.getAssignedLabels()) { + assignedLabel.getName() + } + ``` + ## Release 0.3.8 * [Fixed Issue 289][issue-289] diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerLabel.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerLabel.java new file mode 100644 index 00000000..e61ecd2d --- /dev/null +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerLabel.java @@ -0,0 +1,34 @@ +package com.offbytwo.jenkins.model; + +public class ComputerLabel { + private String name; + + public String getName() { + return name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ComputerLabel other = (ComputerLabel) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } +} diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java index 2ee6a55b..c57b40a5 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/ComputerWithDetails.java @@ -18,6 +18,7 @@ public class ComputerWithDetails extends Computer { private String displayName; private List actions; //TODO: What kind of List? private List executors; + private List assignedLabels; private Boolean idle; private Boolean jnlp; private Boolean launchSupported; @@ -46,6 +47,10 @@ public List getExecutors() { return executors; } + public List getAssignedLabels() { + return assignedLabels; + } + public Boolean getIdle() { return idle; } @@ -169,6 +174,11 @@ public boolean equals(Object obj) { return false; } else if (!executors.equals(other.executors)) return false; + if (assignedLabels == null) { + if (other.assignedLabels != null) + return false; + } else if (!assignedLabels.equals(other.assignedLabels)) + return false; if (idle == null) { if (other.idle != null) return false; From 28beabd817ec954ae3ecbabe4f3b54ba26ae9eae Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Mon, 15 Apr 2019 20:44:05 +0200 Subject: [PATCH 22/39] Fixed links in ReleaseNotes.md file. --- ReleaseNotes.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 62323e1c..2c5d22ba 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1131,6 +1131,8 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-244]: https://github.com/jenkinsci/java-client-api/issues/244 [issue-268]: https://github.com/jenkinsci/java-client-api/issues/268 [issue-289]: https://github.com/jenkinsci/java-client-api/issues/289 +[issue-282]: https://github.com/jenkinsci/java-client-api/issues/282 +[issue-291]: https://github.com/jenkinsci/java-client-api/issues/291 [issue-298]: https://github.com/jenkinsci/java-client-api/issues/298 [issue-301]: https://github.com/jenkinsci/java-client-api/issues/301 [issue-394]: https://github.com/jenkinsci/java-client-api/issues/394 @@ -1161,3 +1163,4 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [jissue-38823]: https://issues.jenkins-ci.org/browse/JENKINS-38823 [jissue-46445]: https://issues.jenkins-ci.org/browse/JENKINS-46445 [jissue-46472]: https://issues.jenkins-ci.org/browse/JENKINS-46472 +[jissue-56186]: https://issues.jenkins-ci.org/browse/JENKINS-56186 From a70da3ce5b18b1bc765720d116dbe144036621cf Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sat, 27 Apr 2019 21:24:55 +0200 Subject: [PATCH 23/39] Fixed typo. --- ReleaseNotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 2c5d22ba..9343daa1 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -9,7 +9,7 @@ cause we do not rely on Guava anymore. So you can use the original artifact directly. * This results in a bumping of the version - number cause it a change which is breaking + number cause it is a change which is breaking with previous version 0.3.8. * [Fixed Issue 405][issue-405] From 52d9d99461f188ac7d1adaf8e431b2125b861e30 Mon Sep 17 00:00:00 2001 From: Li Yudong Date: Sun, 28 Apr 2019 21:32:00 +0800 Subject: [PATCH 24/39] Fix JENKINS-56585 change to post method (#391) * change get to post * add link to ReleaseNotes.md --- ReleaseNotes.md | 6 ++++++ .../src/main/java/com/offbytwo/jenkins/JenkinsServer.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 9343daa1..45fc71da 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -64,6 +64,11 @@ assignedLabel.getName() } ``` + + * [JENKINS-56585][jissue-56585] + + Change request method of `QuietDown()` to POST + ## Release 0.3.8 @@ -1164,3 +1169,4 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [jissue-46445]: https://issues.jenkins-ci.org/browse/JENKINS-46445 [jissue-46472]: https://issues.jenkins-ci.org/browse/JENKINS-46472 [jissue-56186]: https://issues.jenkins-ci.org/browse/JENKINS-56186 +[jissue-56585]: https://issues.jenkins-ci.org/browse/JENKINS-56585 diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java index e9973d59..01755baa 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/JenkinsServer.java @@ -660,7 +660,7 @@ public JenkinsServer addStringParam(String jobName, String name, String descript */ public JenkinsServer quietDown() throws IOException { try { - client.get("/quietDown/"); + client.post("/quietDown/"); } catch (org.apache.http.client.ClientProtocolException e) { LOGGER.error("quietDown()", e); } From 86c8081b7532199708d9545903181e3f252884d5 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sun, 28 Apr 2019 15:35:25 +0200 Subject: [PATCH 25/39] Reformatted Range.java --- .../com/offbytwo/jenkins/helper/Range.java | 155 +++++++++--------- 1 file changed, 80 insertions(+), 75 deletions(-) diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/helper/Range.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/helper/Range.java index 8b70eb09..cdbdc60a 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/helper/Range.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/helper/Range.java @@ -16,122 +16,127 @@ * The same as {0,N}. *
  • {N}: Just retrieve the N-th element. The same as {N,N+1}.
  • * - * + *

    * You can use the {@link Range} class like this: - * + * *

      * Range fromAndTo = Range.build().from(1).to(5);
      * Range fromOnly = Range.build().from(3).build();
      * Range toOnly = Range.build().to(5).build();
      * Range only = Range.build().only(3);
      * 
    - * - * @author Karl Heinz Marbaise * + * @author Karl Heinz Marbaise */ public final class Range { - public static final String CURLY_BRACKET_OPEN = "%7B"; // { - public static final String CURLY_BRACKET_CLOSE = "%7D"; // } + /** + * This represents {@code {} (left curly bracket). + */ + public static final String CURLY_BRACKET_OPEN = "%7B"; + /** + * This represents {@code }} (right curly bracket). + */ + public static final String CURLY_BRACKET_CLOSE = "%7D"; private Integer from; private Integer to; private Range() { - this.from = null; - this.to = null; + this.from = null; + this.to = null; } private Range setFrom(int from) { - if (from < 0) { - throw new IllegalArgumentException("from value must be greater or equal null."); - } - this.from = new Integer(from); - return this; + if (from < 0) { + throw new IllegalArgumentException("from value must be greater or equal null."); + } + this.from = new Integer(from); + return this; } private Range setTo(int to) { - if (to < 0) { - throw new IllegalArgumentException("to must be greater or equal null."); - } - this.to = new Integer(to); - return this; + if (to < 0) { + throw new IllegalArgumentException("to must be greater or equal null."); + } + this.to = new Integer(to); + return this; } public String getRangeString() { - StringBuilder sb = new StringBuilder(); - sb.append(CURLY_BRACKET_OPEN); - if (this.from != null) { - sb.append(String.format("%d", this.from)); - } + StringBuilder sb = new StringBuilder(); + sb.append(CURLY_BRACKET_OPEN); + if (this.from != null) { + sb.append(String.format("%d", this.from)); + } - sb.append(','); + sb.append(','); - if (this.to != null) { - sb.append(String.format("%d", this.to)); - } + if (this.to != null) { + sb.append(String.format("%d", this.to)); + } - sb.append(CURLY_BRACKET_CLOSE); - return sb.toString(); + sb.append(CURLY_BRACKET_CLOSE); + return sb.toString(); } public static final class FromBuilder { - private Range range; - - public FromBuilder(Range range) { - this.range = range; - } - - public Range to(int t) { - this.range.setTo(t); - if (range.to <= range.from) { - throw new IllegalArgumentException("to must be greater than from"); - } - return this.range; - } - - public Range build() { - return this.range; - } + private Range range; + + public FromBuilder(Range range) { + this.range = range; + } + + public Range to(int t) { + this.range.setTo(t); + if (range.to <= range.from) { + throw new IllegalArgumentException("to must be greater than from"); + } + return this.range; + } + + public Range build() { + return this.range; + } } public static final class ToBuilder { - private Range range; + private Range range; - public ToBuilder(Range range) { - this.range = range; - } + public ToBuilder(Range range) { + this.range = range; + } - public Range build() { - return this.range; - } + public Range build() { + return this.range; + } } public static final class Builder { - private Range range; - - protected Builder() { - this.range = new Range(); - } - - public FromBuilder from(int f) { - this.range.setFrom(f); - return new FromBuilder(this.range); - } - - public ToBuilder to(int t) { - this.range.setTo(t); - return new ToBuilder(this.range); - } - - public Range only(int only) { - this.range.from = new Integer(only); - this.range.to = new Integer(only + 1); - return this.range; - } + private Range range; + + protected Builder() { + this.range = new Range(); + } + + public FromBuilder from(int f) { + this.range.setFrom(f); + return new FromBuilder(this.range); + } + + public ToBuilder to(int t) { + this.range.setTo(t); + return new ToBuilder(this.range); + } + + public Range only(int only) { + this.range.from = new Integer(only); + this.range.to = new Integer(only + 1); + return this.range; + } } public static Builder build() { - return new Builder(); + return new Builder(); } } \ No newline at end of file From c4f5953d3d4dda92cd946ad3bf2b811524c32da9 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Tue, 30 Apr 2019 17:04:28 +0200 Subject: [PATCH 26/39] Get rid of JUnit rules. --- .../offbytwo/jenkins/helper/RangeTest.java | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/jenkins-client/src/test/java/com/offbytwo/jenkins/helper/RangeTest.java b/jenkins-client/src/test/java/com/offbytwo/jenkins/helper/RangeTest.java index 5dcc9e38..b56aa467 100644 --- a/jenkins-client/src/test/java/com/offbytwo/jenkins/helper/RangeTest.java +++ b/jenkins-client/src/test/java/com/offbytwo/jenkins/helper/RangeTest.java @@ -6,13 +6,10 @@ package com.offbytwo.jenkins.helper; -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; -import com.offbytwo.jenkins.helper.Range; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; /** *
      @@ -23,7 +20,7 @@ * The same as {0,N}. *
    • {N}: Just retrieve the N-th element. The same as {N,N+1}.
    • *
    - * + * * @author Karl Heinz Marbaise */ public class RangeTest { @@ -56,27 +53,24 @@ public void onlyGiven() { assertThat(r.getRangeString()).isEqualTo(getEscaped("3,4")); } - @Rule - public ExpectedException exception = ExpectedException.none(); - @Test public void toIsGivenLargerThanFromShouldResultInIllegalArgumentException() { - exception.expect(IllegalArgumentException.class); - exception.expectMessage("to must be greater than from"); - Range.build().from(5).to(1); + assertThatIllegalArgumentException() + .isThrownBy(() -> Range.build().from(5).to(1)) + .withMessage("to must be greater than from"); } @Test public void fromGivenNegativeValueShouldResultInIllegalArgumentException() { - exception.expect(IllegalArgumentException.class); - exception.expectMessage("from value must be greater or equal null."); - Range.build().from(-1); + assertThatIllegalArgumentException() + .isThrownBy(() -> Range.build().from(-1)) + .withMessage("from value must be greater or equal null."); } @Test public void fromGivenPositiveToNegativeValueShouldResultInIllegalArgumentException() { - exception.expect(IllegalArgumentException.class); - exception.expectMessage("to must be greater or equal null."); - Range.build().from(5).to(-1); + assertThatIllegalArgumentException() + .isThrownBy(() -> Range.build().from(5).to(-1)) + .withMessage("to must be greater or equal null."); } } From 5807954872d077645b87c8c06d5124938d846136 Mon Sep 17 00:00:00 2001 From: Jakub Zacek Date: Thu, 31 May 2018 08:48:08 +0200 Subject: [PATCH 27/39] Fixed #309 - Added better support for Maven Modules - slight modifications based on removement of Guava --- ReleaseNotes.md | 9 +- .../com/offbytwo/jenkins/model/BaseModel.java | 9 +- .../jenkins/model/BuildWithDetails.java | 11 ++ .../java/com/offbytwo/jenkins/model/Job.java | 7 +- .../jenkins/model/JobWithDetails.java | 19 +++- .../jenkins/model/MavenJobWithDetails.java | 8 +- .../offbytwo/jenkins/model/MavenModule.java | 51 ++++++++- .../jenkins/model/MavenModuleWithDetails.java | 105 ++++++++++++++++++ 8 files changed, 198 insertions(+), 21 deletions(-) create mode 100644 jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModuleWithDetails.java diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 45fc71da..e69a8019 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,12 @@ ## Release 0.4.0 (NOT RELEASED YET) + * [Fixed Issue 309][issue-309] + + * Added possibility to get mode detailed data from Maven Modules from Jobs/Builds + + Thanks for that to [Jakub Zacek](https://github.com/dawon). + * [Fixed Issue 395][issue-395] * Remove google guava lib @@ -187,7 +193,7 @@ Added new methods to JenkinsServer for stopping and restarting Jenkins. The methods are restart(Boolean crumbFlag), safeRestart(Boolean crumbFlag), exit(Boolean crumbFlag) and safeExit(Boolean crumbFlag) Thanks for that to [Chids](https://github.com/Chids-gs). - + ## Release 0.3.7 * Changed Eclipse Formatting configuration. @@ -1140,6 +1146,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-291]: https://github.com/jenkinsci/java-client-api/issues/291 [issue-298]: https://github.com/jenkinsci/java-client-api/issues/298 [issue-301]: https://github.com/jenkinsci/java-client-api/issues/301 +[issue-309]: https://github.com/jenkinsci/java-client-api/issues/309 [issue-394]: https://github.com/jenkinsci/java-client-api/issues/394 [issue-395]: https://github.com/jenkinsci/java-client-api/issues/395 [issue-396]: https://github.com/jenkinsci/java-client-api/issues/396 diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java index 9c850ba2..5275d36b 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BaseModel.java @@ -7,6 +7,7 @@ package com.offbytwo.jenkins.model; import com.offbytwo.jenkins.client.JenkinsHttpConnection; +import java.util.function.Predicate; /** * The base model. @@ -17,8 +18,7 @@ public class BaseModel { * The class. */ private String _class; - - + /** * Get the class. * @return class @@ -47,4 +47,9 @@ public BaseModel setClient(final JenkinsHttpConnection client) { this.client = client; return this; } + + protected static Predicate isBuildNumberEqualTo(int buildNumber) { + return build -> build.getNumber() == buildNumber; + } + } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java index ab9e201d..d3ce5842 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/BuildWithDetails.java @@ -533,6 +533,17 @@ public InputStream downloadArtifact(Artifact a) throws IOException, URISyntaxExc ""); return client.getFile(artifactUri); } + + /** + * Returns {@link MavenModuleWithDetails} based on its name + * + * @param name module name + * @return {@link MavenModuleWithDetails} + * @throws IOException in case of error. + */ + public MavenModuleWithDetails getModule(String name) throws IOException { + return client.get(getUrl() + name, MavenModuleWithDetails.class); + } @Override public boolean equals(Object obj) { diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java index ba1968a1..7d5313fd 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/Job.java @@ -6,16 +6,13 @@ package com.offbytwo.jenkins.model; -import static org.apache.commons.lang.StringUtils.join; - +import com.offbytwo.jenkins.client.util.EncodingUtils; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.util.Map; - -import com.offbytwo.jenkins.client.util.EncodingUtils; import java.util.function.Function; import java.util.stream.Collectors; @@ -186,4 +183,6 @@ public String apply(Map.Entry entry) { return EncodingUtils.formParameter(entry.getKey()) + "=" + EncodingUtils.formParameter(entry.getValue()); } } + + } diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java index b5894015..f13903cf 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/JobWithDetails.java @@ -18,7 +18,6 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.function.Predicate; import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT; import static java.util.stream.Collectors.toList; @@ -31,7 +30,7 @@ public class JobWithDetails extends Job { private boolean buildable; - private List builds; + private List builds = Collections.emptyList(); private Build firstBuild; @@ -438,10 +437,6 @@ public List getUpstreamProjects() { } } - private static Predicate isBuildNumberEqualTo(int buildNumber) { - return build -> build.getNumber() == buildNumber; - } - public QueueItem getQueueItem() { return this.queueItem; } @@ -456,6 +451,18 @@ public QueueItem getQueueItem() { public Optional getBuildByNumber(final int buildNumber) { return builds.stream().filter(isBuildNumberEqualTo(buildNumber)).findFirst(); } + + /** + * Get a module of a {@link Job} + * + * @param moduleName name of the {@link MavenModule} + * @return The {@link MavenModuleWithDetails} selected by the given module name + * @throws java.io.IOException in case of errors. + * + */ + public MavenModuleWithDetails getModule(String moduleName) throws IOException { + return client.get(getUrl() + moduleName, MavenModuleWithDetails.class); + } /** * Empty description to be used for {@link #updateDescription(String)} or diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java index bb3f0c62..3eaf7fc0 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenJobWithDetails.java @@ -1,7 +1,6 @@ package com.offbytwo.jenkins.model; import com.offbytwo.jenkins.client.util.EncodingUtils; -import com.offbytwo.jenkins.helper.FunctionalHelper; import com.offbytwo.jenkins.helper.Range; import org.apache.http.HttpStatus; import org.apache.http.client.HttpResponseException; @@ -10,7 +9,6 @@ import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.function.Predicate; import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT; import static java.util.stream.Collectors.toList; @@ -276,11 +274,7 @@ public List getUpstreamProjects() { } } - private static Predicate isBuildNumberEqualTo(int buildNumber) { - return build -> build.getNumber() == buildNumber; - } - - /** + /** * @param buildNumber The build you would like to select. * @return Optional which contains the {@link MavenBuild}. */ diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModule.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModule.java index 07c61bb1..91c7ef1c 100644 --- a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModule.java +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModule.java @@ -1,10 +1,59 @@ +/* + * Copyright (c) 2018 Cosmin Stejerean, Karl Heinz Marbaise, and contributors. + * + * Distributed under the MIT license: http://opensource.org/licenses/MIT + */ package com.offbytwo.jenkins.model; +import java.io.IOException; import java.util.List; - +/** + * + * @author Karl Heinz Marbaise, Ricardo Zanini, René Scheibe, Jakub Zacek + */ public class MavenModule extends BaseModel { private List moduleRecords; + private String name; + private String url; + private String color; + private String displayName; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public MavenModuleWithDetails details() throws IOException { + return client.get(url, MavenModuleWithDetails.class); + } public List getModuleRecords() { return moduleRecords; diff --git a/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModuleWithDetails.java b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModuleWithDetails.java new file mode 100644 index 00000000..d168a45e --- /dev/null +++ b/jenkins-client/src/main/java/com/offbytwo/jenkins/model/MavenModuleWithDetails.java @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2018 Cosmin Stejerean, Karl Heinz Marbaise, and contributors. + * + * Distributed under the MIT license: http://opensource.org/licenses/MIT + */ +package com.offbytwo.jenkins.model; + +import static com.offbytwo.jenkins.helper.FunctionalHelper.SET_CLIENT; +import static java.util.stream.Collectors.toList; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Model Class for Maven Modules + * + * @author Jakub Zacek + */ +public class MavenModuleWithDetails extends BaseModel { + + private List builds = Collections.emptyList(); + private List actions = Collections.emptyList(); + private String displayName; + private BuildResult result; + private String url; + private long duration; + private long timestamp; + + public List getActions() { + return actions; + } + + public void setActions(List actions) { + this.actions = actions; + } + + public void setBuilds(List builds) { + this.builds = builds; + } + + public List getBuilds() { + return builds.stream() + .map(SET_CLIENT(this.getClient())) + .collect(toList()); + } + + public Build getBuildByNumber(final int buildNumber) { + return builds.stream() + .filter(isBuildNumberEqualTo(buildNumber)) + .map(SET_CLIENT(this.getClient())) + .findFirst() + .orElse(Build.BUILD_HAS_NEVER_RUN); + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public BuildResult getResult() { + return result; + } + + public void setResult(BuildResult result) { + this.result = result; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public long getDuration() { + return duration; + } + + public void setDuration(long duration) { + this.duration = duration; + } + + public String getConsoleOutputText() throws IOException { + return client.get(getUrl() + "/logText/progressiveText"); + } + + public TestReport getTestReport() throws IOException { + return client.get(this.getUrl() + "/testReport/?depth=1", TestReport.class); + } + +} From 99895b2c055bd44a5110ec7662be96c46e3a591b Mon Sep 17 00:00:00 2001 From: based2 Date: Fri, 31 May 2019 13:57:38 +0200 Subject: [PATCH 28/39] update jackson from 2.9.8 to 2.9.9 CVE-2019-12086 (#411) https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9.9 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8015cefa..287a3ec9 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 4.5.8 4.4.11 4.5.8 - 2.9.8 + 2.9.9 From 775ef812f8af35ad73c021287e138c6258518734 Mon Sep 17 00:00:00 2001 From: based2 Date: Fri, 31 May 2019 13:58:07 +0200 Subject: [PATCH 29/39] update commons-lang from 3.8.1 to 3.9 (#412) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 287a3ec9..06911f60 100644 --- a/pom.xml +++ b/pom.xml @@ -57,7 +57,7 @@ 2.4 1.4.7-jenkins-1 1.6.1 - 3.8.1 + 3.9 2.4 4.5.8 4.4.11 From e1285835fcbdd43766b3e8e1626f6f3626a15035 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sat, 14 Sep 2019 15:02:53 +0200 Subject: [PATCH 30/39] Fixed #424 - Upgrade Maven Plugins --- pom.xml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index 06911f60..ffa639db 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ true true - 1.5.3 + 1.6.0 1.644 @@ -165,7 +165,7 @@ org.testng testng - 6.14.2 + 7.0.0 test @@ -224,7 +224,7 @@ org.apache.maven.plugins maven-help-plugin - 3.1.1 + 3.2.0 org.apache.maven.plugins @@ -239,7 +239,7 @@ org.apache.maven.plugins maven-source-plugin - 3.0.1 + 3.1.0 1.644 4.12 - 1.9.5 + 3.0.0 2.4 1.4.7-jenkins-1 1.6.1 @@ -166,33 +166,35 @@ org.testng testng 7.0.0 - test + + + org.junit + junit-bom + 5.5.2 + import + pom junit junit ${junit.version} - test org.mockito mockito-core ${mockito-core.version} - test org.jenkins-ci.main jenkins-test-harness ${jenkins-version} - test org.assertj assertj-core 3.12.2 - test @@ -202,13 +204,10 @@ org.apache.logging.log4j - log4j-core - 2.11.1 - - - org.apache.logging.log4j - log4j-slf4j-impl - 2.11.1 + log4j-bom + 2.12.1 + import + pom xml-apis From fe2601a77733887a0cdfa4d20d46997765e8e8ca Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sat, 14 Sep 2019 15:27:34 +0200 Subject: [PATCH 32/39] Fixed #426 - Upgrade dom4j --- jenkins-client/pom.xml | 2 +- pom.xml | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/jenkins-client/pom.xml b/jenkins-client/pom.xml index ea595a4d..b70b08fc 100644 --- a/jenkins-client/pom.xml +++ b/jenkins-client/pom.xml @@ -34,7 +34,7 @@ - dom4j + org.dom4j dom4j diff --git a/pom.xml b/pom.xml index 68704676..98ee517d 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,6 @@ 3.0.0 2.4 1.4.7-jenkins-1 - 1.6.1 3.9 2.4 4.5.8 @@ -105,9 +104,9 @@
    - dom4j + org.dom4j dom4j - ${dom4j.version} + 2.1.1 From fc3b0e38179ac2ff435bfd529d2fa3841e2f2bef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2020 15:14:10 +0200 Subject: [PATCH 33/39] Bump jackson-databind.version from 2.9.9 to 2.10.3 (#450) Bumps `jackson-databind.version` from 2.9.9 to 2.10.3. Updates `jackson-annotations` from 2.9.9 to 2.10.3 - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) Updates `jackson-core` from 2.9.9 to 2.10.3 - [Release notes](https://github.com/FasterXML/jackson-core/releases) - [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.9.9...jackson-core-2.10.3) Updates `jackson-databind` from 2.9.9 to 2.10.3 - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 98ee517d..821999a0 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,7 @@ 4.5.8 4.4.11 4.5.8 - 2.9.9 + 2.10.3 From 1a744770112f79708b3e3ea3106c324be4679374 Mon Sep 17 00:00:00 2001 From: Jonathan Leitschuh Date: Thu, 16 Apr 2020 09:25:27 -0400 Subject: [PATCH 34/39] Use HTTPS instead of HTTP to resolve dependencies (#448) This fixes a security vulnerability in this project where the `pom.xml` files were configuring Maven to resolve dependencies over HTTP instead of HTTPS. Signed-off-by: Jonathan Leitschuh --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 821999a0..bfa5d307 100644 --- a/pom.xml +++ b/pom.xml @@ -477,7 +477,7 @@ repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ + https://repo.jenkins-ci.org/public/ From 5ac251377875083027d5e54c0e611f6b59deb335 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sun, 3 May 2020 00:29:01 +0200 Subject: [PATCH 35/39] Added Funding. --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..5b8d5402 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [khmarbaise] \ No newline at end of file From 0376def0c01f2f7c91b8b3a544fab5c623b7be9a Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Mon, 27 Jul 2020 19:09:34 +0200 Subject: [PATCH 36/39] Fixed #464 - Migrate from xml-apis to xerces:xmlParserAPI --- ReleaseNotes.md | 5 +++++ jenkins-client/pom.xml | 5 ++--- pom.xml | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index e69a8019..7847f3a9 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ ## Release 0.4.0 (NOT RELEASED YET) + * [Fixed Issue 464][issue-464] + + * Replaced xml-apis with xerces-xmlParserAPI. + * [Fixed Issue 309][issue-309] * Added possibility to get mode detailed data from Maven Modules from Jobs/Builds @@ -1156,6 +1160,7 @@ TestReport testReport = mavenJob.getLastSuccessfulBuild().getTestReport(); [issue-401]: https://github.com/jenkinsci/java-client-api/issues/401 [issue-402]: https://github.com/jenkinsci/java-client-api/issues/402 [issue-405]: https://github.com/jenkinsci/java-client-api/issues/405 +[issue-464]: https://github.com/jenkinsci/java-client-api/issues/464 [pull-123]: https://github.com/jenkinsci/java-client-api/pull/123 [pull-149]: https://github.com/jenkinsci/java-client-api/pull/149 [pull-158]: https://github.com/jenkinsci/java-client-api/pull/158 diff --git a/jenkins-client/pom.xml b/jenkins-client/pom.xml index b70b08fc..2cbc3df9 100644 --- a/jenkins-client/pom.xml +++ b/jenkins-client/pom.xml @@ -109,10 +109,9 @@ assertj-core test - - xml-apis - xml-apis + xerces + xmlParserAPIs diff --git a/pom.xml b/pom.xml index bfa5d307..25ea5774 100644 --- a/pom.xml +++ b/pom.xml @@ -209,9 +209,9 @@ pom - xml-apis - xml-apis - 1.4.01 + xerces + xmlParserAPIs + 2.6.1 From 182fb4144862c956e0b199cc56d3ee83ab610dba Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Mon, 27 Jul 2020 19:29:10 +0200 Subject: [PATCH 37/39] Fixed #465 - Remove asciidoctor site parts --- ReleaseNotes.md | 5 +++++ jenkins-client/src/site/asciidoc/index.adoc | 7 ------- jenkins-client/src/site/asciidoc/sub/sub.adoc | 1 - pom.xml | 21 +------------------ 4 files changed, 6 insertions(+), 28 deletions(-) delete mode 100644 jenkins-client/src/site/asciidoc/index.adoc delete mode 100644 jenkins-client/src/site/asciidoc/sub/sub.adoc diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 7847f3a9..71176ed3 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,11 @@ ## Release 0.4.0 (NOT RELEASED YET) + * [Fixed Issue 465][issue-465] + + * Remove asciidoctor site parts + * AS preparation for user guide. + * [Fixed Issue 464][issue-464] * Replaced xml-apis with xerces-xmlParserAPI. diff --git a/jenkins-client/src/site/asciidoc/index.adoc b/jenkins-client/src/site/asciidoc/index.adoc deleted file mode 100644 index 942df55c..00000000 --- a/jenkins-client/src/site/asciidoc/index.adoc +++ /dev/null @@ -1,7 +0,0 @@ -:revnumber: ${project-version} - -== Overview == - -Here you can see the first page. -This is the first. - diff --git a/jenkins-client/src/site/asciidoc/sub/sub.adoc b/jenkins-client/src/site/asciidoc/sub/sub.adoc deleted file mode 100644 index 345e6aef..00000000 --- a/jenkins-client/src/site/asciidoc/sub/sub.adoc +++ /dev/null @@ -1 +0,0 @@ -Test diff --git a/pom.xml b/pom.xml index 25ea5774..d4eb4c74 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ true true - 1.6.0 + 2.0.0 1.644 @@ -362,26 +362,7 @@ doxia-module-markdown 1.9 - - org.asciidoctor - asciidoctor-maven-plugin - ${asciidoctor-maven-plugin.version} - - - - - - font - coderay - style - 2 - ${project.version} - true - true - - -
    From 78a3e33de7f7c31f8e8f4013fc3b4c9824fc42dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jun 2020 05:49:34 +0000 Subject: [PATCH 38/39] Bump dom4j from 2.1.1 to 2.1.3 Bumps [dom4j](https://github.com/dom4j/dom4j) from 2.1.1 to 2.1.3. - [Release notes](https://github.com/dom4j/dom4j/releases) - [Commits](https://github.com/dom4j/dom4j/compare/version-2.1.1...version-2.1.3) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d4eb4c74..f88539d9 100644 --- a/pom.xml +++ b/pom.xml @@ -106,7 +106,7 @@ org.dom4j dom4j - 2.1.1 + 2.1.3 From ddf6a850beacf79480280c0c3c067bf73d84bca5 Mon Sep 17 00:00:00 2001 From: Karl Heinz Marbaise Date: Sun, 20 Sep 2020 22:27:39 +0200 Subject: [PATCH 39/39] Add .sdkmanrc file. --- .sdkmanrc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .sdkmanrc diff --git a/.sdkmanrc b/.sdkmanrc new file mode 100644 index 00000000..4fc377de --- /dev/null +++ b/.sdkmanrc @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# Enable auto-env through the sdkman_auto_env config +# Add key=value pairs of SDKs to use below +java=8.0.252.hs-adpt