Skip to content

Jvm.Support.assertFormatterSupported does not support -SNAPSHOT versions #1583

Description

@blacelle

I consider a Jvm.Support like:

private static final Jvm.Support<String> JVM_SUPPORT = Jvm.<String> support(NAME).add(11, "2.6");

For local developements of the underlying plugin (cleanthat), I would like to run spotless (e.g. with mvn spotless:apply) with a SNAPSHOT version of my plugin (e.g. through the usual <version>2.7</version> (in maven) parameter of many plugins).

It fails with:

Caused by: java.lang.NumberFormatException: For input string: "7-SNAPSHOT"
    at java.lang.NumberFormatException.forInputString (NumberFormatException.java:67)
    at java.lang.Integer.parseInt (Integer.java:668)
    at java.lang.Integer.parseInt (Integer.java:786)
    at java.util.stream.ReferencePipeline$4$1.accept (ReferencePipeline.java:214)
    at java.util.Spliterators$ArraySpliterator.forEachRemaining (Spliterators.java:992)
    at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:509)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:499)
    at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:575)
    at java.util.stream.AbstractPipeline.evaluateToArrayNode (AbstractPipeline.java:260)
    at java.util.stream.IntPipeline.toArray (IntPipeline.java:562)
    at com.diffplug.spotless.Jvm$Support$SemanticVersionComparator.convert (Jvm.java:246)
    at com.diffplug.spotless.Jvm$Support$SemanticVersionComparator.compare (Jvm.java:229)
    at java.util.TreeMap.compare (TreeMap.java:1570)
    at java.util.TreeMap.getCeilingEntry (TreeMap.java:395)
    at java.util.TreeMap.ceilingEntry (TreeMap.java:1021)
    at com.diffplug.spotless.Jvm$Support.getRequiredJvmVersion (Jvm.java:150)
    at com.diffplug.spotless.Jvm$Support.buildUnsupportedFormatterMessage (Jvm.java:126)
    at com.diffplug.spotless.Jvm$Support.assertFormatterSupported (Jvm.java:119)

Activity

added a commit that references this issue on Feb 23, 2023

nedtwigg commented on Feb 27, 2023

@nedtwigg
Member

Fixed in plugin-gradle 6.16.0 and plugin-maven 2.34.0.

blacelle commented on Apr 6, 2023

@blacelle
ContributorAuthor

@nedtwigg This seems broken with plugin-maven 2.36.0.

blacelle commented on Apr 6, 2023

@blacelle
ContributorAuthor

The stack looks similar than before 2.24.0:

Caused by: java.lang.IllegalArgumentException: Not a semantic version: 2.14-SNAPSHOT
    at com.diffplug.spotless.Jvm$Support$SemanticVersionComparator.convert (Jvm.java:285)
    at com.diffplug.spotless.Jvm$Support$SemanticVersionComparator.compare (Jvm.java:266)
    at java.util.TreeMap.compare (TreeMap.java:1570)
    at java.util.TreeMap.getCeilingEntry (TreeMap.java:395)
    at java.util.TreeMap.ceilingEntry (TreeMap.java:1021)
    at com.diffplug.spotless.Jvm$Support.getRequiredJvmVersion (Jvm.java:178)
    at com.diffplug.spotless.Jvm$Support.buildUnsupportedFormatterMessage (Jvm.java:148)
    at com.diffplug.spotless.Jvm$Support.assertFormatterSupported (Jvm.java:140)
    at com.diffplug.spotless.java.CleanthatJavaStep$JavaRefactorerState.<init> (CleanthatJavaStep.java:134)
    at com.diffplug.spotless.java.CleanthatJavaStep.lambda$create$1 (CleanthatJavaStep.java:97)
    at com.diffplug.spotless.FormatterStepImpl.calculateState (FormatterStepImpl.java:58)
    at com.diffplug.spotless.LazyForwardingEquality.state (LazyForwardingEquality.java:56)
    at com.diffplug.spotless.LazyForwardingEquality.toBytes (LazyForwardingEquality.java:85)
    at com.diffplug.spotless.LazyForwardingEquality.hashCode (LazyForwardingEquality.java:102)
    at java.util.ArrayList.hashCodeRange (ArrayList.java:595)
    at java.util.ArrayList.hashCode (ArrayList.java:582)
    at com.diffplug.spotless.Formatter.hashCode (Formatter.java:276)
    at java.util.HashMap.hash (HashMap.java:338)
    at java.util.HashMap.put (HashMap.java:610)
    at com.diffplug.spotless.maven.FormattersHolder.create (FormattersHolder.java:43)
    at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute (AbstractSpotlessMojo.java:224)

Unclear to me how this was fixed.

nedtwigg commented on Apr 6, 2023

@nedtwigg
Member

Sorry, I think I saw the Add workaround for diffplug#1583 commit above and assumed that this had been fixed as part of another PR.

blacelle commented on Apr 6, 2023

@blacelle
ContributorAuthor

On my side, I supposed this was properly fixed, and removed the workaround. Sorry for the confusion.

nedtwigg commented on May 24, 2023

@nedtwigg
Member

Fixed in plugin-gradle 6.19.0 and plugin-maven 2.37.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions