From 2d902aa660f4a4438d071c7a79e40240f172c0b1 Mon Sep 17 00:00:00 2001 From: Finlay Williams Date: Tue, 6 May 2025 12:41:47 +0100 Subject: [PATCH 1/8] use gradle-idea-configuration --- gradle-palantir-java-format/build.gradle | 1 + .../gradle/ConfigureJavaFormatterXml.groovy | 5 ----- .../gradle/PalantirJavaFormatIdeaPlugin.java | 13 ++++++++----- versions.lock | 10 ++++++---- versions.props | 1 + 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/gradle-palantir-java-format/build.gradle b/gradle-palantir-java-format/build.gradle index 8c4ab8825..8ab81c076 100644 --- a/gradle-palantir-java-format/build.gradle +++ b/gradle-palantir-java-format/build.gradle @@ -20,6 +20,7 @@ dependencies { implementation project(':palantir-java-format-spi') implementation project(':palantir-java-format-jdk-bootstrap') implementation 'com.palantir.gradle.utils:platform' + implementation 'com.palantir.gradle.idea-configuration:gradle-idea-configuration' testImplementation project(':palantir-java-format') testImplementation 'com.netflix.nebula:nebula-test' diff --git a/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/ConfigureJavaFormatterXml.groovy b/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/ConfigureJavaFormatterXml.groovy index 3ab7bca37..788e2a317 100644 --- a/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/ConfigureJavaFormatterXml.groovy +++ b/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/ConfigureJavaFormatterXml.groovy @@ -37,11 +37,6 @@ class ConfigureJavaFormatterXml { }) } - static void configureExternalDependencies(Node rootNode, String minVersion) { - def externalDependencies = matchOrCreateChild(rootNode, 'component', [name: 'ExternalDependencies']) - matchOrCreateChild(externalDependencies, 'plugin', [id: 'palantir-java-format'], [:], ['min-version' : minVersion]) - } - static void configureWorkspaceXml(Node rootNode) { configureFormatOnSave(rootNode) configureOptimizeOnSave(rootNode) diff --git a/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java b/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java index e37318e86..4e959f5cc 100644 --- a/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java +++ b/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java @@ -19,6 +19,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; +import com.palantir.gradle.ideaconfiguration.IdeaConfigurationExtension; +import com.palantir.gradle.ideaconfiguration.IdeaConfigurationPlugin; import groovy.util.Node; import groovy.util.XmlNodePrinter; import groovy.util.XmlParser; @@ -59,6 +61,12 @@ public void apply(Project rootProject) { configureLegacyIdea(rootProject, implConfiguration, nativeImplConfiguration); configureIntelliJImport(rootProject, implConfiguration, nativeImplConfiguration); }); + + rootProject.getPlugins().apply(IdeaConfigurationPlugin.class); + + IdeaConfigurationExtension extension = rootProject.getExtensions().getByType(IdeaConfigurationExtension.class); + + extension.externalDependency("palantir-java-format", MIN_IDEA_PLUGIN_VERSION); } private static Optional maybeGetNativeImplConfiguration(Project rootProject) { @@ -79,7 +87,6 @@ private static void configureLegacyIdea( Optional nativeUri = nativeImplConfiguration.map(conf -> conf.getSingleFile().toURI()); ConfigureJavaFormatterXml.configureJavaFormat(xmlProvider.asNode(), uris, nativeUri); - ConfigureJavaFormatterXml.configureExternalDependencies(xmlProvider.asNode(), MIN_IDEA_PLUGIN_VERSION); }); ideaModel.getWorkspace().getIws().withXml(xmlProvider -> { @@ -106,16 +113,12 @@ private static void configureIntelliJImport( createOrUpdateIdeaXmlFile( project.file(".idea/palantir-java-format.xml"), node -> ConfigureJavaFormatterXml.configureJavaFormat(node, uris, nativeImageUri)); - createOrUpdateIdeaXmlFile( - project.file(".idea/externalDependencies.xml"), - node -> ConfigureJavaFormatterXml.configureExternalDependencies(node, MIN_IDEA_PLUGIN_VERSION)); createOrUpdateIdeaXmlFile( project.file(".idea/workspace.xml"), ConfigureJavaFormatterXml::configureWorkspaceXml); // Still configure legacy idea if using intellij import updateIdeaXmlFileIfExists(project.file(project.getName() + ".ipr"), node -> { ConfigureJavaFormatterXml.configureJavaFormat(node, uris, nativeImageUri); - ConfigureJavaFormatterXml.configureExternalDependencies(node, MIN_IDEA_PLUGIN_VERSION); }); updateIdeaXmlFileIfExists( project.file(project.getName() + ".iws"), ConfigureJavaFormatterXml::configureWorkspaceXml); diff --git a/versions.lock b/versions.lock index 6cb0d0435..b1e6347d5 100644 --- a/versions.lock +++ b/versions.lock @@ -15,14 +15,14 @@ com.fasterxml.jackson.module:jackson-module-parameter-names:2.18.3 (1 constraint com.google.auto:auto-common:1.2.1 (2 constraints: b321cc9d) com.google.auto.service:auto-service:1.1.1 (1 constraints: 0505f435) com.google.auto.service:auto-service-annotations:1.1.1 (1 constraints: 9c0f6a86) -com.google.code.findbugs:jsr305:3.0.2 (3 constraints: 571ca3f6) com.google.errorprone:error_prone_annotations:2.36.0 (4 constraints: 4b27bf7b) -com.google.guava:failureaccess:1.0.2 (1 constraints: 150ae2b4) -com.google.guava:guava:33.4.0-jre (8 constraints: 3e85a804) +com.google.guava:failureaccess:1.0.3 (1 constraints: 160ae3b4) +com.google.guava:guava:33.4.8-jre (9 constraints: 5ea13c2f) com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava (1 constraints: bd17c918) com.google.j2objc:j2objc-annotations:3.0.0 (2 constraints: ee163332) com.googlecode.concurrent-trees:concurrent-trees:2.6.1 (1 constraints: 761166da) com.googlecode.javaewah:JavaEWAH:1.2.3 (1 constraints: 460e7e50) +com.palantir.gradle.idea-configuration:gradle-idea-configuration:0.2.0 (1 constraints: 0405f135) com.palantir.gradle.utils:platform:0.10.0 (1 constraints: 3305233b) com.squareup.okhttp3:okhttp:4.12.0 (1 constraints: f6093eb3) com.squareup.okio:okio:3.6.0 (1 constraints: 530c38fd) @@ -31,7 +31,6 @@ commons-codec:commons-codec:1.16.0 (1 constraints: 780efe5e) dev.equo.ide:solstice:1.7.5 (1 constraints: 7a1168da) net.sf.jopt-simple:jopt-simple:5.0.4 (1 constraints: be0ad6cc) org.apache.commons:commons-math3:3.6.1 (1 constraints: bf0adbcc) -org.checkerframework:checker-qual:3.43.0 (4 constraints: 6734e847) org.derive4j:derive4j-annotation:1.1.1 (1 constraints: 0505f435) org.eclipse.jdt:org.eclipse.jdt.core:3.23.0 (1 constraints: 3a05423b) org.eclipse.jgit:org.eclipse.jgit:6.7.0.202309050840-r (2 constraints: f22a55d9) @@ -56,6 +55,7 @@ org.jetbrains.kotlin:kotlin-stdlib:1.9.10 (2 constraints: c2210fe1) org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10 (2 constraints: 3f1b4b83) org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10 (1 constraints: e210ffd2) org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 (2 constraints: 8118c1c5) +org.jspecify:jspecify:1.0.0 (1 constraints: 130ae0b4) org.openjdk.jmh:jmh-core:1.37 (5 constraints: 52476be6) org.openjdk.jmh:jmh-generator-annprocess:1.37 (1 constraints: df04fc30) org.slf4j:slf4j-api:1.7.36 (2 constraints: 801849c0) @@ -65,6 +65,7 @@ org.tukaani:xz:1.9 (1 constraints: 6b09e995) cglib:cglib-nodep:3.2.2 (1 constraints: 490ded24) com.google.auto.value:auto-value:1.10 (1 constraints: e711f8e8) com.google.auto.value:auto-value-annotations:1.10.4 (1 constraints: 8e0aa3c3) +com.google.code.findbugs:jsr305:3.0.2 (2 constraints: 4112851c) com.google.guava:guava-testlib:27.0.1-jre (1 constraints: aa067c53) com.google.testing.compile:compile-testing:0.21.0 (1 constraints: 35052a3b) com.google.truth:truth:1.4.1 (2 constraints: 1f178e31) @@ -74,6 +75,7 @@ junit:junit:4.13.2 (7 constraints: da62ac41) net.bytebuddy:byte-buddy:1.14.11 (1 constraints: 7e0bc5ea) org.apiguardian:apiguardian-api:1.1.2 (10 constraints: 8fb0f648) org.assertj:assertj-core:3.25.3 (1 constraints: 3f054b3b) +org.checkerframework:checker-qual:3.42.0 (3 constraints: 1c2a3b96) org.codehaus.groovy:groovy:3.0.6 (2 constraints: 1e1b476d) org.graalvm.buildtools:junit-platform-native:0.10.4 (1 constraints: 3705273b) org.hamcrest:hamcrest:2.2 (1 constraints: d20cdc04) diff --git a/versions.props b/versions.props index f3096e339..1c0b31f49 100644 --- a/versions.props +++ b/versions.props @@ -22,3 +22,4 @@ com.fasterxml.jackson.*:* = 2.18.3 com.fasterxml.jackson.core:jackson-databind = 2.18.3 org.openjdk.jmh:* = 1.37 com.palantir.gradle.utils:* = 0.10.0 +com.palantir.gradle.idea-configuration:gradle-idea-configuration = 0.2.0 \ No newline at end of file From da07c9adabccba70fa63c8e3de460258963ff706 Mon Sep 17 00:00:00 2001 From: Finlay Williams Date: Tue, 6 May 2025 12:54:28 +0100 Subject: [PATCH 2/8] fix findbugs --- eclipse_plugin/build.gradle | 1 + idea-plugin/build.gradle | 1 + palantir-java-format/build.gradle | 1 + versions.lock | 2 +- versions.props | 4 ++-- 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/eclipse_plugin/build.gradle b/eclipse_plugin/build.gradle index 5bd7fa3a2..f2302e1d3 100644 --- a/eclipse_plugin/build.gradle +++ b/eclipse_plugin/build.gradle @@ -27,6 +27,7 @@ p2deps { dependencies { implementation project(':palantir-java-format') + implementation 'com.google.code.findbugs:jsr305' } tasks.named("jar", Jar) { diff --git a/idea-plugin/build.gradle b/idea-plugin/build.gradle index 3324ff935..b96755ed6 100644 --- a/idea-plugin/build.gradle +++ b/idea-plugin/build.gradle @@ -68,6 +68,7 @@ dependencies { testImplementation 'org.assertj:assertj-core' testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.junit.platform:junit-platform-launcher' + implementation 'com.google.code.findbugs:jsr305' } // Javadoc fails if there are no public classes to javadoc, so make it stop complaining. diff --git a/palantir-java-format/build.gradle b/palantir-java-format/build.gradle index 7077d3e75..7592197fe 100644 --- a/palantir-java-format/build.gradle +++ b/palantir-java-format/build.gradle @@ -28,6 +28,7 @@ dependencies { compileOnly 'org.derive4j:derive4j-annotation' annotationProcessor 'org.derive4j:derive4j' + implementation 'com.google.code.findbugs:jsr305' } moduleJvmArgs { diff --git a/versions.lock b/versions.lock index b1e6347d5..94aeeb170 100644 --- a/versions.lock +++ b/versions.lock @@ -15,6 +15,7 @@ com.fasterxml.jackson.module:jackson-module-parameter-names:2.18.3 (1 constraint com.google.auto:auto-common:1.2.1 (2 constraints: b321cc9d) com.google.auto.service:auto-service:1.1.1 (1 constraints: 0505f435) com.google.auto.service:auto-service-annotations:1.1.1 (1 constraints: 9c0f6a86) +com.google.code.findbugs:jsr305:3.0.2 (2 constraints: 4112851c) com.google.errorprone:error_prone_annotations:2.36.0 (4 constraints: 4b27bf7b) com.google.guava:failureaccess:1.0.3 (1 constraints: 160ae3b4) com.google.guava:guava:33.4.8-jre (9 constraints: 5ea13c2f) @@ -65,7 +66,6 @@ org.tukaani:xz:1.9 (1 constraints: 6b09e995) cglib:cglib-nodep:3.2.2 (1 constraints: 490ded24) com.google.auto.value:auto-value:1.10 (1 constraints: e711f8e8) com.google.auto.value:auto-value-annotations:1.10.4 (1 constraints: 8e0aa3c3) -com.google.code.findbugs:jsr305:3.0.2 (2 constraints: 4112851c) com.google.guava:guava-testlib:27.0.1-jre (1 constraints: aa067c53) com.google.testing.compile:compile-testing:0.21.0 (1 constraints: 35052a3b) com.google.truth:truth:1.4.1 (2 constraints: 1f178e31) diff --git a/versions.props b/versions.props index 1c0b31f49..4af69739f 100644 --- a/versions.props +++ b/versions.props @@ -1,7 +1,7 @@ com.diffplug.spotless:spotless-plugin-gradle = 6.25.0 com.github.ben-manes.caffeine:caffeine = 3.1.8 com.google.auto.service:auto-service = 1.1.1 -com.google.code.findbugs:jsr305 = 3.0.2 +com.google.code.findbugs:* = 3.0.2 com.google.errorprone:error_prone_annotations = 2.11.0 com.google.guava:guava = 33.0.0-jre com.google.guava:guava-testlib = 27.0.1-jre @@ -22,4 +22,4 @@ com.fasterxml.jackson.*:* = 2.18.3 com.fasterxml.jackson.core:jackson-databind = 2.18.3 org.openjdk.jmh:* = 1.37 com.palantir.gradle.utils:* = 0.10.0 -com.palantir.gradle.idea-configuration:gradle-idea-configuration = 0.2.0 \ No newline at end of file +com.palantir.gradle.idea-configuration:gradle-idea-configuration = 0.2.0 From 99a44842184fa59d36022815fbdf383cbb62a64c Mon Sep 17 00:00:00 2001 From: svc-changelog Date: Tue, 6 May 2025 12:08:56 +0000 Subject: [PATCH 3/8] Add generated changelog entries --- changelog/@unreleased/pr-1286.v2.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/@unreleased/pr-1286.v2.yml diff --git a/changelog/@unreleased/pr-1286.v2.yml b/changelog/@unreleased/pr-1286.v2.yml new file mode 100644 index 000000000..185a65008 --- /dev/null +++ b/changelog/@unreleased/pr-1286.v2.yml @@ -0,0 +1,5 @@ +type: improvement +improvement: + description: use gradle-idea-configuration + links: + - https://github.com/palantir/palantir-java-format/pull/1286 From d5c02a7ecb5aa8caece5375b230b16cb440172e4 Mon Sep 17 00:00:00 2001 From: Finlay Williams Date: Tue, 6 May 2025 13:26:56 +0100 Subject: [PATCH 4/8] remove old test --- .../ConfigureJavaFormatterXmlTest.groovy | 50 ------------------- 1 file changed, 50 deletions(-) diff --git a/gradle-palantir-java-format/src/test/groovy/com/palantir/javaformat/gradle/ConfigureJavaFormatterXmlTest.groovy b/gradle-palantir-java-format/src/test/groovy/com/palantir/javaformat/gradle/ConfigureJavaFormatterXmlTest.groovy index f6f407fa1..a6453c101 100644 --- a/gradle-palantir-java-format/src/test/groovy/com/palantir/javaformat/gradle/ConfigureJavaFormatterXmlTest.groovy +++ b/gradle-palantir-java-format/src/test/groovy/com/palantir/javaformat/gradle/ConfigureJavaFormatterXmlTest.groovy @@ -21,42 +21,6 @@ import spock.lang.Unroll class ConfigureJavaFormatterXmlTest extends Specification { - private static final String EXTERNAL_DEPENDENCIES_NO_PJF = """\ - - - - - - """.stripIndent(true) - - private static final String EXTERNAL_DEPENDENCIES_WITH_PJF = """\ - - - - - - - """.stripIndent(true) - - private static final String EXTERNAL_DEPENDENCIES_WITH_PINNED_PJF = """\ - - - - - - - """.stripIndent(true) - - - private static final String EXPECTED_EXTERNAL_DEPENDENCIES = """\ - - - - - - - """.stripIndent(true) - private static final String EXISTING_CLASS_PATH = """ @@ -312,20 +276,6 @@ class ConfigureJavaFormatterXmlTest extends Specification { action << ACTIONS_ON_SAVE } - @Unroll - def 'can update externalDependencies file'(input) { - def node = new XmlParser().parseText(input) - - when: - ConfigureJavaFormatterXml.configureExternalDependencies(node, "9.9.9") - - then: - xmlToString(node) == EXPECTED_EXTERNAL_DEPENDENCIES - - where: - input << [EXTERNAL_DEPENDENCIES_NO_PJF, EXTERNAL_DEPENDENCIES_WITH_PINNED_PJF, EXTERNAL_DEPENDENCIES_WITH_PJF] - } - private static String xmlSubcomponentToString(Node node, String name) { xmlToString(node.children().find { it.@name == name }).strip() } From a645c27c1cdd7a394fb09174c47ffa5d70774093 Mon Sep 17 00:00:00 2001 From: Finlay Williams Date: Wed, 7 May 2025 10:25:36 +0100 Subject: [PATCH 5/8] use plugins manager --- .../javaformat/gradle/PalantirJavaFormatIdeaPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java b/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java index 4e959f5cc..8d37e9aec 100644 --- a/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java +++ b/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java @@ -62,7 +62,7 @@ public void apply(Project rootProject) { configureIntelliJImport(rootProject, implConfiguration, nativeImplConfiguration); }); - rootProject.getPlugins().apply(IdeaConfigurationPlugin.class); + rootProject.getPluginManager().apply(IdeaConfigurationPlugin.class); IdeaConfigurationExtension extension = rootProject.getExtensions().getByType(IdeaConfigurationExtension.class); From a19ad7c76b6a14c3094eaf34b9977f7d216189f6 Mon Sep 17 00:00:00 2001 From: svc-changelog Date: Wed, 7 May 2025 09:39:08 +0000 Subject: [PATCH 6/8] Add generated changelog entries --- changelog/@unreleased/pr-1286.v2.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/changelog/@unreleased/pr-1286.v2.yml b/changelog/@unreleased/pr-1286.v2.yml index 185a65008..0ead8ae4f 100644 --- a/changelog/@unreleased/pr-1286.v2.yml +++ b/changelog/@unreleased/pr-1286.v2.yml @@ -1,5 +1,6 @@ type: improvement improvement: - description: use gradle-idea-configuration + description: Allow `palantir-java-format` idea plugin dependency configuration via + `idea-configuration` plugin links: - https://github.com/palantir/palantir-java-format/pull/1286 From 82f39bda121a6b363f8671a7fe132c29853506f1 Mon Sep 17 00:00:00 2001 From: svc-changelog Date: Wed, 7 May 2025 09:39:16 +0000 Subject: [PATCH 7/8] Add generated changelog entries From 963ef764eccbd774d3c3ef864b6a08195c96b7d4 Mon Sep 17 00:00:00 2001 From: Finlay Williams Date: Wed, 7 May 2025 10:57:22 +0100 Subject: [PATCH 8/8] nit --- .../javaformat/gradle/PalantirJavaFormatIdeaPlugin.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java b/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java index 8d37e9aec..af3b17b11 100644 --- a/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java +++ b/gradle-palantir-java-format/src/main/groovy/com/palantir/javaformat/gradle/PalantirJavaFormatIdeaPlugin.java @@ -63,9 +63,7 @@ public void apply(Project rootProject) { }); rootProject.getPluginManager().apply(IdeaConfigurationPlugin.class); - IdeaConfigurationExtension extension = rootProject.getExtensions().getByType(IdeaConfigurationExtension.class); - extension.externalDependency("palantir-java-format", MIN_IDEA_PLUGIN_VERSION); }