From 912eb5d07fe4c935df4997ffabda26d4cbcb8153 Mon Sep 17 00:00:00 2001 From: Frank Vennemeyer Date: Wed, 26 Jul 2017 22:25:04 +0200 Subject: [PATCH 1/2] Replaced importOrder array argument by varargs. Fixes #125. --- .../diffplug/spotless/java/ImportOrderStep.java | 10 ++++++++++ plugin-gradle/CHANGES.md | 2 ++ plugin-gradle/README.md | 4 ++-- .../gradle/spotless/GroovyExtension.java | 7 +++++++ .../diffplug/gradle/spotless/JavaExtension.java | 7 +++++++ .../spotless/java/ImportOrderStepTest.java | 16 ++++++---------- 6 files changed, 34 insertions(+), 12 deletions(-) diff --git a/lib/src/main/java/com/diffplug/spotless/java/ImportOrderStep.java b/lib/src/main/java/com/diffplug/spotless/java/ImportOrderStep.java index 80ee74f340..ed7bc3721b 100644 --- a/lib/src/main/java/com/diffplug/spotless/java/ImportOrderStep.java +++ b/lib/src/main/java/com/diffplug/spotless/java/ImportOrderStep.java @@ -24,6 +24,7 @@ import java.nio.file.Files; import java.util.AbstractMap.SimpleImmutableEntry; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; @@ -37,12 +38,21 @@ public final class ImportOrderStep { // prevent direct instantiation private ImportOrderStep() {} + /** Method interface has been changed to + * {@link ImportOrderStep#importOrder(String...)}.*/ + @Deprecated public static FormatterStep createFromOrder(List importOrder) { // defensive copying and null checking importOrder = requireElementsNonNull(new ArrayList<>(importOrder)); return createFromOrderImpl(importOrder); } + public static FormatterStep createFromOrder(String... importOrder) { + // defensive copying and null checking + List importOrderList = requireElementsNonNull(Arrays.asList(importOrder)); + return createFromOrderImpl(importOrderList); + } + public static FormatterStep createFromFile(File importsFile) { Objects.requireNonNull(importsFile); return createFromOrderImpl(getImportOrder(importsFile)); diff --git a/plugin-gradle/CHANGES.md b/plugin-gradle/CHANGES.md index 36ceab1791..2faab23ac8 100644 --- a/plugin-gradle/CHANGES.md +++ b/plugin-gradle/CHANGES.md @@ -2,6 +2,8 @@ ### Version 3.5.0-SNAPSHOT - TBD ([javadoc](https://diffplug.github.io/spotless/javadoc/snapshot/), [snapshot](https://oss.sonatype.org/content/repositories/snapshots/com/diffplug/spotless/spotless-plugin-gradle/)) +* Changed importOrder interface from array to varargs ([#125](https://github.com/diffplug/spotless/issues/125)) + ### Version 3.4.1 - July 11th 2017 ([javadoc](https://diffplug.github.io/spotless/javadoc/spotless-plugin-gradle/3.4.1/), [jcenter](https://bintray.com/diffplug/opensource/spotless-plugin-gradle/3.4.1)) * Default eclipse version for `EclipseFormatterStep` bumped to `4.6.3` from `4.6.1`. ([#116](https://github.com/diffplug/spotless/issues/116)) diff --git a/plugin-gradle/README.md b/plugin-gradle/README.md index b8849b52a6..25cf65fc46 100644 --- a/plugin-gradle/README.md +++ b/plugin-gradle/README.md @@ -104,8 +104,8 @@ spotless { licenseHeaderFile 'spotless.license.java' // License header file // Obviously, you can't specify both licenseHeader and licenseHeaderFile at the same time - importOrder ['java', 'javax', 'org', 'com', 'com.diffplug', ''] // An array of package names - importOrderFile 'spotless.importorder' // An import ordering file, exported from Eclipse + importOrder 'java', 'javax', 'org', 'com', 'com.diffplug', '' // A sequence of package names + importOrderFile 'spotless.importorder' // An import ordering file, exported from Eclipse // As before, you can't specify both importOrder and importOrderFile at the same time // You probably want an empty string at the end - all of the imports you didn't specify // explicitly will go there. diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/GroovyExtension.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/GroovyExtension.java index 688a5c2f4b..8563fa8e5a 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/GroovyExtension.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/GroovyExtension.java @@ -62,10 +62,17 @@ public void licenseHeaderFile(Object licenseHeaderFile) { licenseHeaderFile(licenseHeaderFile, JavaExtension.LICENSE_HEADER_DELIMITER); } + /** Method interface has been changed to + * {@link GroovyExtension#importOrder(String...)}.*/ + @Deprecated public void importOrder(List importOrder) { addStep(ImportOrderStep.createFromOrder(importOrder)); } + public void importOrder(String... importOrder) { + addStep(ImportOrderStep.createFromOrder(importOrder)); + } + public void importOrderFile(Object importOrderFile) { Objects.requireNonNull(importOrderFile); addStep(ImportOrderStep.createFromFile(getProject().file(importOrderFile))); diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java index cf118449d1..ee57cc0aff 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java @@ -54,10 +54,17 @@ public void licenseHeaderFile(Object licenseHeaderFile) { licenseHeaderFile(licenseHeaderFile, LICENSE_HEADER_DELIMITER); } + /** Method interface has been changed to + * {@link JavaExtension#importOrder(String...)}.*/ + @Deprecated public void importOrder(List importOrder) { addStep(ImportOrderStep.createFromOrder(importOrder)); } + public void importOrder(String... importOrder) { + addStep(ImportOrderStep.createFromOrder(importOrder)); + } + public void importOrderFile(Object importOrderFile) { Objects.requireNonNull(importOrderFile); addStep(ImportOrderStep.createFromFile(getProject().file(importOrderFile))); diff --git a/testlib/src/test/java/com/diffplug/spotless/java/ImportOrderStepTest.java b/testlib/src/test/java/com/diffplug/spotless/java/ImportOrderStepTest.java index b06283124f..226fd423ef 100644 --- a/testlib/src/test/java/com/diffplug/spotless/java/ImportOrderStepTest.java +++ b/testlib/src/test/java/com/diffplug/spotless/java/ImportOrderStepTest.java @@ -15,20 +15,16 @@ */ package com.diffplug.spotless.java; -import java.util.Arrays; - import org.junit.Test; -import com.diffplug.common.collect.ImmutableList; import com.diffplug.spotless.FormatterStep; -import com.diffplug.spotless.NonSerializableList; import com.diffplug.spotless.ResourceHarness; import com.diffplug.spotless.SerializableEqualityTester; public class ImportOrderStepTest extends ResourceHarness { @Test public void sortImportsFromArray() throws Throwable { - FormatterStep step = ImportOrderStep.createFromOrder(Arrays.asList("java", "javax", "org", "\\#com")); + FormatterStep step = ImportOrderStep.createFromOrder("java", "javax", "org", "\\#com"); assertOnResources(step, "java/importsorter/JavaCodeUnsortedImports.test", "java/importsorter/JavaCodeSortedImports.test"); } @@ -64,26 +60,26 @@ public void misplacedImports() throws Throwable { @Test public void doesntThrowIfImportOrderIsntSerializable() { - ImportOrderStep.createFromOrder(NonSerializableList.of("java", "javax", "org", "\\#com")); + ImportOrderStep.createFromOrder("java", "javax", "org", "\\#com"); } @Test public void equality() throws Exception { new SerializableEqualityTester() { - ImmutableList imports = ImmutableList.of(); + String[] imports = {}; @Override protected void setupTest(API api) { // same version == same api.areDifferentThan(); // change the version, and it's different - imports = ImmutableList.of("a"); + imports = new String[]{"a"}; api.areDifferentThan(); // change the version, and it's different - imports = ImmutableList.of("b"); + imports = new String[]{"b"}; api.areDifferentThan(); // change the version, and it's different - imports = ImmutableList.of("a", "b"); + imports = new String[]{"a", "b"}; api.areDifferentThan(); } From 62fd0706714018feb3e824cfd8e94ad945535e83 Mon Sep 17 00:00:00 2001 From: Frank Vennemeyer Date: Thu, 27 Jul 2017 07:34:09 +0200 Subject: [PATCH 2/2] Improvements due to @jbduncan review. --- plugin-gradle/CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin-gradle/CHANGES.md b/plugin-gradle/CHANGES.md index 2faab23ac8..5f348c9900 100644 --- a/plugin-gradle/CHANGES.md +++ b/plugin-gradle/CHANGES.md @@ -2,7 +2,7 @@ ### Version 3.5.0-SNAPSHOT - TBD ([javadoc](https://diffplug.github.io/spotless/javadoc/snapshot/), [snapshot](https://oss.sonatype.org/content/repositories/snapshots/com/diffplug/spotless/spotless-plugin-gradle/)) -* Changed importOrder interface from array to varargs ([#125](https://github.com/diffplug/spotless/issues/125)) +* Changed `importOrder` interface from array to varargs ([#125](https://github.com/diffplug/spotless/issues/125)) ### Version 3.4.1 - July 11th 2017 ([javadoc](https://diffplug.github.io/spotless/javadoc/spotless-plugin-gradle/3.4.1/), [jcenter](https://bintray.com/diffplug/opensource/spotless-plugin-gradle/3.4.1))