From af7f347794d6e2c15c0a8fd9d7d93f334a1d8fd3 Mon Sep 17 00:00:00 2001 From: Akshesh Date: Wed, 16 Jan 2019 00:37:59 +0700 Subject: [PATCH 1/9] Implement ConcatFilesTask from Groovy to Java issues#34459 --- .../gradle/ConcatFilesTask.groovy | 70 -------------- .../elasticsearch/gradle/ConcatFilesTask.java | 93 +++++++++++++++++++ 2 files changed, 93 insertions(+), 70 deletions(-) delete mode 100644 buildSrc/src/main/groovy/org/elasticsearch/gradle/ConcatFilesTask.groovy create mode 100644 buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/ConcatFilesTask.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/ConcatFilesTask.groovy deleted file mode 100644 index 7e561b18dcb8a..0000000000000 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/ConcatFilesTask.groovy +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch 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. - */ - -package org.elasticsearch.gradle - -import org.gradle.api.DefaultTask -import org.gradle.api.file.FileTree -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.Optional -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction - -/** - * Concatenates a list of files into one and removes duplicate lines. - */ -public class ConcatFilesTask extends DefaultTask { - - /** List of files to concatenate */ - @InputFiles - FileTree files - - /** line to add at the top of the target file */ - @Input - @Optional - String headerLine - - @OutputFile - File target - - public ConcatFilesTask() { - description = 'Concat a list of files into one.' - } - - @TaskAction - public void concatFiles() { - final StringBuilder output = new StringBuilder() - - if (headerLine) { - output.append(headerLine).append('\n') - } - - final StringBuilder sb = new StringBuilder() - files.each { file -> - sb.append(file.getText('UTF-8')) - } - // Remove duplicate lines - sb.readLines().toSet().each { value -> - output.append(value).append('\n') - } - - target.setText(output.toString(), 'UTF-8') - } -} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java new file mode 100644 index 0000000000000..778872ef05cbe --- /dev/null +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java @@ -0,0 +1,93 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch 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. + */ + + package org.elasticsearch.gradle; + + import org.gradle.api.DefaultTask; + import org.gradle.api.file.FileTree; + import org.gradle.api.tasks.Input; + import org.gradle.api.tasks.InputFiles; + import org.gradle.api.tasks.Optional; + import org.gradle.api.tasks.OutputFile; + import org.gradle.api.tasks.TaskAction; + + import java.io.*; + import java.nio.charset.StandardCharsets; + import java.util.Arrays; + import java.util.LinkedHashSet; + import java.util.Scanner; + +/** + * Concatenates a list of files into one and removes duplicate lines. + */ +public class ConcatFilesTask extends DefaultTask { + + /** List of files to concatenate */ + @InputFiles + public FileTree files; + + /** line to add at the top of the target file */ + @Input + @Optional + public String headerLine; + + @OutputFile + public File target; + + public ConcatFilesTask() { + final String description = "Concat a list of files into one."; + } + + @TaskAction + public void concatFiles() { + final StringBuilder output = new StringBuilder(); + + if (!headerLine.equals("")) { + output.append(headerLine).append('\n'); + } + + final StringBuilder sb = new StringBuilder(); + for (File f: files) { + try{ + Scanner scanner = new Scanner(f, "UTF-8" ); + String text = scanner.useDelimiter("\\A").next(); + scanner.close(); + sb.append(text); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + + // Remove duplicate lines + LinkedHashSet uniqueLines = new LinkedHashSet<>(Arrays.asList(sb.toString().split("\n"))); + try { + OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(target), StandardCharsets.UTF_8); + for (String s : uniqueLines) { + osw.write(s); + osw.write("\n"); + } + osw.flush(); + osw.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} From 890952567c05c4dce01d571b1ae53eb7046975c0 Mon Sep 17 00:00:00 2001 From: Akshesh Date: Mon, 21 Jan 2019 02:30:31 +0700 Subject: [PATCH 2/9] Update code according to review --- .../elasticsearch/gradle/ConcatFilesTask.java | 77 +++++++++---------- 1 file changed, 36 insertions(+), 41 deletions(-) diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java index 778872ef05cbe..1e3b490566173 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java @@ -27,67 +27,62 @@ import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; - import java.io.*; - import java.nio.charset.StandardCharsets; - import java.util.Arrays; + import java.io.File; + import java.io.IOException; + import java.nio.charset.Charset; + import java.nio.file.Files; import java.util.LinkedHashSet; - import java.util.Scanner; /** * Concatenates a list of files into one and removes duplicate lines. */ public class ConcatFilesTask extends DefaultTask { + public ConcatFilesTask() { + setDescription("Concat a list of files into one."); + } + /** List of files to concatenate */ - @InputFiles - public FileTree files; + private FileTree files; /** line to add at the top of the target file */ - @Input - @Optional - public String headerLine; + private String headerLine; - @OutputFile - public File target; + private File target; - public ConcatFilesTask() { - final String description = "Concat a list of files into one."; + public void setFiles(FileTree files) { + this.files = files; } - @TaskAction - public void concatFiles() { - final StringBuilder output = new StringBuilder(); + @InputFiles + public FileTree getFiles() { return files; } - if (!headerLine.equals("")) { - output.append(headerLine).append('\n'); - } + public void setHeaderLine(String headerLine) { + this.headerLine = headerLine; + } - final StringBuilder sb = new StringBuilder(); - for (File f: files) { - try{ - Scanner scanner = new Scanner(f, "UTF-8" ); - String text = scanner.useDelimiter("\\A").next(); - scanner.close(); - sb.append(text); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } + @Input + @Optional + public String getHeaderLine() { return headerLine; } + + @TaskAction + public void concatFiles() throws IOException { + final String encoding = "UTF-8"; + if (getHeaderLine() != null) { + Files.write(target.toPath(), (getHeaderLine() + '\n').getBytes(encoding)); } - // Remove duplicate lines - LinkedHashSet uniqueLines = new LinkedHashSet<>(Arrays.asList(sb.toString().split("\n"))); - try { - OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(target), StandardCharsets.UTF_8); - for (String s : uniqueLines) { - osw.write(s); - osw.write("\n"); - } - osw.flush(); - osw.close(); - } catch (IOException e) { - e.printStackTrace(); + // To remove duplicate lines + LinkedHashSet uniqueLines = new LinkedHashSet<>(); + for (File f : getFiles()) { + uniqueLines.addAll(Files.readAllLines(f.toPath(), Charset.forName(encoding))); } + Files.write(target.toPath(), uniqueLines, Charset.forName(encoding)); + } + @OutputFile + public File getTarget() { + return target; } } From f763b45826d9e852e893423eb768b64f73d9e5ad Mon Sep 17 00:00:00 2001 From: Akshesh Date: Wed, 23 Jan 2019 23:16:16 +0700 Subject: [PATCH 3/9] Add setter function for `target` --- .../main/java/org/elasticsearch/gradle/ConcatFilesTask.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java index 1e3b490566173..8bc90136f4e9f 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java @@ -80,6 +80,10 @@ public void concatFiles() throws IOException { Files.write(target.toPath(), uniqueLines, Charset.forName(encoding)); } + public void setTarget(File target) { + this.target = target; + } + @OutputFile public File getTarget() { return target; From 765c66f07d157e09408e103119d2b201fb13aad3 Mon Sep 17 00:00:00 2001 From: Akshesh Date: Tue, 29 Jan 2019 23:29:27 +0700 Subject: [PATCH 4/9] WIP: Attempt to writing tests for ConcatFilesTask --- .../elasticsearch/gradle/ConcatFilesTask.java | 16 +++- .../gradle/ConcatFilesTaskTests.java | 80 +++++++++++++++++++ 2 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java index 8bc90136f4e9f..8ea5cca574628 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java @@ -31,7 +31,9 @@ import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; + import java.util.ArrayList; import java.util.LinkedHashSet; + import java.util.List; /** * Concatenates a list of files into one and removes duplicate lines. @@ -65,18 +67,26 @@ public void setHeaderLine(String headerLine) { @Optional public String getHeaderLine() { return headerLine; } + List fileReadAllLines(File f, String encoding) { + try{ + return Files.readAllLines(f.toPath(), Charset.forName(encoding)); + } + catch (IOException e) { + return new ArrayList<>(); + } + } + @TaskAction public void concatFiles() throws IOException { final String encoding = "UTF-8"; if (getHeaderLine() != null) { Files.write(target.toPath(), (getHeaderLine() + '\n').getBytes(encoding)); } + assert getHeaderLine() == "Header"; // To remove duplicate lines LinkedHashSet uniqueLines = new LinkedHashSet<>(); - for (File f : getFiles()) { - uniqueLines.addAll(Files.readAllLines(f.toPath(), Charset.forName(encoding))); - } + getFiles().getFiles().forEach(f -> uniqueLines.addAll(fileReadAllLines(f, encoding))); Files.write(target.toPath(), uniqueLines, Charset.forName(encoding)); } diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java new file mode 100644 index 0000000000000..0f1650368313e --- /dev/null +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java @@ -0,0 +1,80 @@ +package org.elasticsearch.gradle; + +import java.io.File; +import java.io.IOException; +import java.lang.NullPointerException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import com.carrotsearch.randomizedtesting.RandomizedTest; +import org.apache.tools.ant.taskdefs.condition.Os; +import org.elasticsearch.gradle.test.GradleUnitTestCase; +import org.gradle.api.file.FileTree; +import org.gradle.api.GradleException; +import org.gradle.api.Project; +import org.gradle.api.plugins.JavaPlugin; +import org.gradle.testfixtures.ProjectBuilder; +import org.junit.Assert; + +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch 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. + */ +public class ConcatFilesTaskTests extends GradleUnitTestCase { + public void testSomething() { + assertEquals(true, true); +// assertEquals(true, false); + } + + public void testHeaderAdded() throws IOException { + + Project project = createProject(); + + ConcatFilesTask concatFilesTask = createTask(project); + + concatFilesTask.setHeaderLine("Header"); + + File file = new File(project.getProjectDir(), "src/main/java/Code.java"); + file.getParentFile().mkdirs(); + file.createNewFile(); + concatFilesTask.setTarget(file); + concatFilesTask.setFiles(new FileTree()); +// assertEquals(1, 0); + + + concatFilesTask.concatFiles(); + assertEquals(true, false); + + assertEquals(Arrays.asList("Header"), Files.readAllLines(concatFilesTask.getTarget().toPath(), Charset.forName("UTF-8"))); + + file.delete(); + } + + private Project createProject() { + Project project = ProjectBuilder.builder().build(); + project.getPlugins().apply(JavaPlugin.class); + return project; + } + + private ConcatFilesTask createTask(Project project) { + return project.getTasks().create("concatFilesTask", ConcatFilesTask.class); + } + +} From 231b119cabefd2f70b0eedc0e573ec5fc4f58be5 Mon Sep 17 00:00:00 2001 From: Akshesh Date: Tue, 29 Jan 2019 23:47:59 +0700 Subject: [PATCH 5/9] Use StandardCharsets constant rather than own variable --- .../main/java/org/elasticsearch/gradle/ConcatFilesTask.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java index 8ea5cca574628..bc60e10cb3b14 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java @@ -30,6 +30,7 @@ import java.io.File; import java.io.IOException; import java.nio.charset.Charset; + import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -78,7 +79,7 @@ List fileReadAllLines(File f, String encoding) { @TaskAction public void concatFiles() throws IOException { - final String encoding = "UTF-8"; + final String encoding = StandardCharsets.UTF_8.name(); if (getHeaderLine() != null) { Files.write(target.toPath(), (getHeaderLine() + '\n').getBytes(encoding)); } From a4f91316fa06d01867e96ce406690ec02f88d411 Mon Sep 17 00:00:00 2001 From: Akshesh Date: Sat, 2 Mar 2019 22:41:38 +0700 Subject: [PATCH 6/9] Complete tests and final working code --- .../elasticsearch/gradle/ConcatFilesTask.java | 37 +++++++---------- .../gradle/ConcatFilesTaskTests.java | 40 ++++++++++++++----- 2 files changed, 46 insertions(+), 31 deletions(-) diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java index bc60e10cb3b14..7976375a6d9dd 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java @@ -32,9 +32,8 @@ import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; - import java.util.ArrayList; + import java.nio.file.StandardOpenOption; import java.util.LinkedHashSet; - import java.util.List; /** * Concatenates a list of files into one and removes duplicate lines. @@ -68,36 +67,30 @@ public void setHeaderLine(String headerLine) { @Optional public String getHeaderLine() { return headerLine; } - List fileReadAllLines(File f, String encoding) { - try{ - return Files.readAllLines(f.toPath(), Charset.forName(encoding)); - } - catch (IOException e) { - return new ArrayList<>(); - } + public void setTarget(File target) { + this.target = target; + } + + @OutputFile + public File getTarget() { + return target; } @TaskAction public void concatFiles() throws IOException { final String encoding = StandardCharsets.UTF_8.name(); if (getHeaderLine() != null) { - Files.write(target.toPath(), (getHeaderLine() + '\n').getBytes(encoding)); + Files.write(getTarget().toPath(), (getHeaderLine() + '\n').getBytes(encoding)); } - assert getHeaderLine() == "Header"; // To remove duplicate lines LinkedHashSet uniqueLines = new LinkedHashSet<>(); - getFiles().getFiles().forEach(f -> uniqueLines.addAll(fileReadAllLines(f, encoding))); - Files.write(target.toPath(), uniqueLines, Charset.forName(encoding)); - } - - public void setTarget(File target) { - this.target = target; - } - - @OutputFile - public File getTarget() { - return target; + for (File f : getFiles()) { + uniqueLines.addAll(Files.readAllLines(f.toPath(), Charset.forName(encoding))); + } + Files.write( + getTarget().toPath(), uniqueLines, Charset.forName(encoding), StandardOpenOption.APPEND + ); } } diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java index 0f1650368313e..b37cd0790df5f 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java @@ -38,15 +38,10 @@ * under the License. */ public class ConcatFilesTaskTests extends GradleUnitTestCase { - public void testSomething() { - assertEquals(true, true); -// assertEquals(true, false); - } public void testHeaderAdded() throws IOException { Project project = createProject(); - ConcatFilesTask concatFilesTask = createTask(project); concatFilesTask.setHeaderLine("Header"); @@ -55,18 +50,45 @@ public void testHeaderAdded() throws IOException { file.getParentFile().mkdirs(); file.createNewFile(); concatFilesTask.setTarget(file); - concatFilesTask.setFiles(new FileTree()); -// assertEquals(1, 0); - + concatFilesTask.setFiles(project.fileTree("tmp/")); concatFilesTask.concatFiles(); - assertEquals(true, false); assertEquals(Arrays.asList("Header"), Files.readAllLines(concatFilesTask.getTarget().toPath(), Charset.forName("UTF-8"))); file.delete(); } + public void testConcatenationWithUnique() throws IOException { + + Project project = createProject(); + ConcatFilesTask concatFilesTask = createTask(project); + + File file = new File(project.getProjectDir(), "src/main/java/Code.java"); + file.getParentFile().mkdirs(); + file.createNewFile(); + concatFilesTask.setTarget(file); + + File file1 = new File(project.getProjectDir(), "src/main/input/java/file1.java"); + File file2 = new File(project.getProjectDir(), "src/main/input/text/file2.txt"); + file1.getParentFile().mkdirs(); + file2.getParentFile().mkdirs(); + file1.createNewFile(); + file2.createNewFile(); + Files.write(file1.toPath(), "Hello\nHello".getBytes()); + Files.write(file2.toPath(), "Hello\nनमस्ते".getBytes()); + + concatFilesTask.setFiles(project.fileTree(file1.getParentFile().getParentFile())); + + concatFilesTask.concatFiles(); + + assertEquals( + Arrays.asList("Hello", "नमस्ते"), + Files.readAllLines(concatFilesTask.getTarget().toPath(), Charset.forName("UTF-8")) + ); + + } + private Project createProject() { Project project = ProjectBuilder.builder().build(); project.getPlugins().apply(JavaPlugin.class); From 60c120213eb35b18b53e9e50aefbf950fd63567c Mon Sep 17 00:00:00 2001 From: Akshesh Date: Sat, 2 Mar 2019 23:16:24 +0700 Subject: [PATCH 7/9] Remove unused imports from ConcatFilesTaskTests --- .../org/elasticsearch/gradle/ConcatFilesTaskTests.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java index b37cd0790df5f..34a2bf4f9af3b 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java @@ -2,22 +2,14 @@ import java.io.File; import java.io.IOException; -import java.lang.NullPointerException; import java.nio.charset.Charset; import java.nio.file.Files; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; -import com.carrotsearch.randomizedtesting.RandomizedTest; -import org.apache.tools.ant.taskdefs.condition.Os; import org.elasticsearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.file.FileTree; -import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.plugins.JavaPlugin; import org.gradle.testfixtures.ProjectBuilder; -import org.junit.Assert; /* * Licensed to Elasticsearch under one or more contributor From 1b67905d1ccb89d4763ad3263f793937539986c1 Mon Sep 17 00:00:00 2001 From: Akshesh Date: Tue, 5 Mar 2019 00:15:13 +0700 Subject: [PATCH 8/9] Changes according to review and refactor * Use standardcharset everywhere * Reshuffling of imports * Cosmetic changes --- .../elasticsearch/gradle/ConcatFilesTask.java | 44 +++++++++---------- .../gradle/ConcatFilesTaskTests.java | 31 +++++++------ 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java index 7976375a6d9dd..7da6381cc2a24 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/ConcatFilesTask.java @@ -16,24 +16,22 @@ * specific language governing permissions and limitations * under the License. */ - - package org.elasticsearch.gradle; - - import org.gradle.api.DefaultTask; - import org.gradle.api.file.FileTree; - import org.gradle.api.tasks.Input; - import org.gradle.api.tasks.InputFiles; - import org.gradle.api.tasks.Optional; - import org.gradle.api.tasks.OutputFile; - import org.gradle.api.tasks.TaskAction; - - import java.io.File; - import java.io.IOException; - import java.nio.charset.Charset; - import java.nio.charset.StandardCharsets; - import java.nio.file.Files; - import java.nio.file.StandardOpenOption; - import java.util.LinkedHashSet; +package org.elasticsearch.gradle; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; +import java.util.LinkedHashSet; + +import org.gradle.api.DefaultTask; +import org.gradle.api.file.FileTree; +import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.InputFiles; +import org.gradle.api.tasks.Optional; +import org.gradle.api.tasks.OutputFile; +import org.gradle.api.tasks.TaskAction; /** * Concatenates a list of files into one and removes duplicate lines. @@ -78,18 +76,20 @@ public File getTarget() { @TaskAction public void concatFiles() throws IOException { - final String encoding = StandardCharsets.UTF_8.name(); if (getHeaderLine() != null) { - Files.write(getTarget().toPath(), (getHeaderLine() + '\n').getBytes(encoding)); + Files.write( + getTarget().toPath(), + (getHeaderLine() + '\n').getBytes(StandardCharsets.UTF_8) + ); } // To remove duplicate lines LinkedHashSet uniqueLines = new LinkedHashSet<>(); for (File f : getFiles()) { - uniqueLines.addAll(Files.readAllLines(f.toPath(), Charset.forName(encoding))); + uniqueLines.addAll(Files.readAllLines(f.toPath(), StandardCharsets.UTF_8)); } Files.write( - getTarget().toPath(), uniqueLines, Charset.forName(encoding), StandardOpenOption.APPEND + getTarget().toPath(), uniqueLines, StandardCharsets.UTF_8, StandardOpenOption.APPEND ); } diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java index 34a2bf4f9af3b..26fb7591557ea 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java @@ -1,16 +1,3 @@ -package org.elasticsearch.gradle; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.util.Arrays; - -import org.elasticsearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.Project; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.testfixtures.ProjectBuilder; - /* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with @@ -29,6 +16,19 @@ * specific language governing permissions and limitations * under the License. */ +package org.elasticsearch.gradle; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.Arrays; + +import org.elasticsearch.gradle.test.GradleUnitTestCase; +import org.gradle.api.Project; +import org.gradle.api.plugins.JavaPlugin; +import org.gradle.testfixtures.ProjectBuilder; + public class ConcatFilesTaskTests extends GradleUnitTestCase { public void testHeaderAdded() throws IOException { @@ -46,7 +46,7 @@ public void testHeaderAdded() throws IOException { concatFilesTask.concatFiles(); - assertEquals(Arrays.asList("Header"), Files.readAllLines(concatFilesTask.getTarget().toPath(), Charset.forName("UTF-8"))); + assertEquals(Arrays.asList("Header"), Files.readAllLines(concatFilesTask.getTarget().toPath(), StandardCharsets.UTF_8)); file.delete(); } @@ -76,14 +76,13 @@ public void testConcatenationWithUnique() throws IOException { assertEquals( Arrays.asList("Hello", "नमस्ते"), - Files.readAllLines(concatFilesTask.getTarget().toPath(), Charset.forName("UTF-8")) + Files.readAllLines(concatFilesTask.getTarget().toPath(), StandardCharsets.UTF_8) ); } private Project createProject() { Project project = ProjectBuilder.builder().build(); - project.getPlugins().apply(JavaPlugin.class); return project; } From 3bb3ee3843fb450cd332e32c566918b713c37262 Mon Sep 17 00:00:00 2001 From: Alpar Torok Date: Wed, 6 Mar 2019 16:08:32 +0200 Subject: [PATCH 9/9] fix checkstyle --- .../test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java | 1 - 1 file changed, 1 deletion(-) diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java index 26fb7591557ea..5e8dde0b148b4 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/ConcatFilesTaskTests.java @@ -26,7 +26,6 @@ import org.elasticsearch.gradle.test.GradleUnitTestCase; import org.gradle.api.Project; -import org.gradle.api.plugins.JavaPlugin; import org.gradle.testfixtures.ProjectBuilder; public class ConcatFilesTaskTests extends GradleUnitTestCase {