Maybe, it's worth a try: I created issue #560 [1] for this. Let's see what happens.
[1] https://github.com/google/google-java-format/issues/560 On Sun, Jan 24, 2021 at 4:17 AM Jark Wu <imj...@gmail.com> wrote: > Hi Matthias, > > I also have the same problem when creating a new Java class. This is quite > annoying. Thanks for looking into it and providing a patch. The > patched plugin works well for me. > > Regarding the next actions, is it possible to backport this fix to > google-java-format 1.7.0 series, and release a new version for that? The > latest version of 1.7.0.5 is released in Apr 2020. If this doesn't work, > option #2 also sounds good to me, because users need to download the plugin > anyway. > > Best, > Jark > > > > On Sun, 24 Jan 2021 at 03:32, Matthias Pohl <matth...@ververica.com> > wrote: > >> // With this one I am curious now how many of you had the same issue >> without complaining: In the engine team there were 4 out of 4. >> >> It's about the error dialog that pops up when creating a new Java class >> file. Additionally, the Java class is generated but is not formatted >> correctly. Reformatting the file helps. Confirming the dialog is annoying, >> though. I started looking into the issue and found an >> UnsupportedOperationException that led me to the actual cause: A bug in the >> google-java-format plugin version 1.7.0.5 is causing this behavior. I >> provided a more detailed description of my findings in FLINK-21106 [1] >> including a compiled version of the patched plugin. >> >> I want to open the discussion on how we want to deal with it. I see three >> options right now: >> 1. We leave it as it is right now as we consider this to be a minor thing. >> 2. We provide the patched google-java-format plugin as part of the docs. >> 3. We upgrade to Java 11 to be able to upgrade the google-java-format >> plugin as it was already mentioned earlier in the thread. >> >> None of the above options seem to be the right one to go for. Any >> thoughts on this? >> >> Best, >> Matthias >> >> [1] https://issues.apache.org/jira/browse/FLINK-21106 >> >> >> >> On Wed, Dec 30, 2020 at 11:05 AM Chesnay Schepler <ches...@apache.org> >> wrote: >> >>> 1) No, it is not possible to exclude certain code blocks from formatting. >>> There is a workaround though for this case; you can add en empty comment >>> (//) to the end of a line to prevent subsequent lines from being added >>> to it. >>> https://github.com/google/google-java-format/issues/137 >>> >>> Note that any spotless-specific features would like not help us anyway, >>> unless we'd be fine with not using the IntelliJ plugin. >>> >>> 2) The code style has not been updated yet. >>> The indent choices with the google-java-format is either 2 spaces for >>> everything, or 4 spaces + 8 spaces for continuations. >>> In other words, 4 spaces is simply not an option. >>> >>> On 12/30/2020 9:09 AM, Jark Wu wrote: >>> > Hi, >>> > >>> > I have played with the format plugin these days and found some >>> problems. >>> > Maybe some of them are personal taste. >>> > >>> > 1) Is it possible to disable auto-format for some code blocks? >>> > For example, the format of code generation >>> > StructuredObjectConverter#generateCode is manually >>> > adjusted for readability. However, the format plugin breaks it and >>> it's >>> > hard to read now. >>> > See before[1] and after[2]. cc @Timo Walther <twal...@apache.org> >>> > >>> > 2) Using 4 spaces or 8 spaces for continuation indent? >>> > AOSP uses 8 spaces for continuation indent. >>> > However, Flink Code Style suggests "Each new line should have one extra >>> > indentation relative to >>> > the line of the called entity" which means 4 spaces. >>> > Personally, I think 4 spaces may be more friendly for Java lambdas. An >>> > example: >>> > >>> > 8 spaces: >>> > >>> > wrapClassLoader( >>> > () -> >>> > environment >>> > .getModules() >>> > .forEach( >>> > (name, entry) -> >>> > modules.put( >>> > name, >>> > createModule( >>> > entry.asMap(), >>> > classLoader)))); >>> > >>> > 4 spaces: >>> > >>> > wrapClassLoader( >>> > () -> >>> > environment >>> > .getModules() >>> > .forEach( >>> > (name, entry) -> >>> > modules.put(name, createModule(entry.asMap(), >>> > classLoader)))); >>> > >>> > >>> > >>> > Best, >>> > Jark >>> > >>> > [1]: >>> > >>> https://github.com/apache/flink/blob/8fc6eaead00d6e98535874b0a137bc59716d260a/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/data/conversion/StructuredObjectConverter.java#L169 >>> > [2]: >>> > >>> https://github.com/apache/flink/blob/master/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/data/conversion/StructuredObjectConverter.java#L170 >>> > [3]: >>> > >>> https://flink.apache.org/contributing/code-style-and-quality-formatting.html#breaking-the-lines-of-too-long-statements >>> > >>> > On Tue, 29 Dec 2020 at 19:19, Chesnay Schepler <ches...@apache.org> >>> wrote: >>> > >>> >> I have filed FLINK-20803 >>> >> <https://issues.apache.org/jira/browse/FLINK-20803> for the issue >>> that >>> >> Till raised. >>> >> >>> >> google-java-format 1.8 and above require Java 11 to /run/, so we'll >>> >> stick with 1.7 for the time being. >>> >> This requires a manual installation of the google-java-format plugin, >>> >> and remembering to not update the plugin (urgh...). >>> >> >>> >> Long term we may want to think about requiring Java 11 for >>> /development/ >>> >> (*not* usage) of Flink. >>> >> >>> >> On 12/29/2020 12:13 PM, Till Rohrmann wrote: >>> >>> I might have found a problem: >>> >>> >>> >>> In my current setup I am using the google-java-format plugin version >>> >>> 1.9.0.0 which uses google-java-format 1.9.0. In our spotless >>> >> configuration >>> >>> we are using google-java-format 1.7.0, however. The result is that >>> >> spotless >>> >>> formats my code differently than IntelliJ. The following snippet >>> shows >>> >> the >>> >>> difference: >>> >>> >>> >>> IntelliJ formatting with google-java-format 1.9.0: >>> >>> >>> >>> return >>> >>> >>> >> >>> Optional.ofNullable(archivedExecutionGraph.getAllVertices().get(jobVertexId)) >>> >>> .map( >>> >>> accessExecutionJobVertex -> >>> >>> >>> >>> Arrays.asList(accessExecutionJobVertex.getTaskVertices())) >>> >>> .orElse(Collections.emptyList()) >>> >>> .stream() >>> >>> .map(AccessExecutionVertex::getCurrentExecutionAttempt) >>> >>> .collect(Collectors.toList()); >>> >>> >>> >>> Spotless formatting with google-java-format 1.7.0: >>> >>> >>> >>> return >>> >>> >>> >> >>> Optional.ofNullable(archivedExecutionGraph.getAllVertices().get(jobVertexId)) >>> >>> .map( >>> >>> accessExecutionJobVertex -> >>> >>> >>> >>> Arrays.asList(accessExecutionJobVertex.getTaskVertices())) >>> >>> .orElse(Collections.emptyList()).stream() >>> >>> .map(AccessExecutionVertex::getCurrentExecutionAttempt) >>> >>> .collect(Collectors.toList()); >>> >>> >>> >>> Note that the .stream() method is in the same line as .orElse(). >>> >>> >>> >>> I think this raises a bit the question which versions do we want to >>> use? >>> >>> Manually installing google-java-format plugin version 1.7.0.5 solved >>> the >>> >>> problem for me. >>> >>> >>> >>> Cheers, >>> >>> Till >>> >>> >>> >>> On Tue, Dec 29, 2020 at 11:58 AM Flavio Pompermaier < >>> >> pomperma...@okkam.it> >>> >>> wrote: >>> >>> >>> >>>> Thanks Aljoscha and Chesnay for this small but important >>> improvement! >>> >>>> In the new year writing new Flink features will be funnier than >>> ever ;) >>> >>>> >>> >>>> On Tue, Dec 29, 2020 at 9:58 AM Till Rohrmann <trohrm...@apache.org >>> > >>> >>>> wrote: >>> >>>> >>> >>>>> Thanks a lot for this effort Aljoscha and Chesnay! Finally we have >>> a >>> >>>> common >>> >>>>> code style :-) >>> >>>>> >>> >>>>> Cheers, >>> >>>>> Till >>> >>>>> >>> >>>>> On Tue, Dec 29, 2020 at 7:32 AM Matthias Pohl < >>> matth...@ververica.com> >>> >>>>> wrote: >>> >>>>> >>> >>>>>> Yes, thanks for driving this, Aljoscha. ...and Chesnay as well for >>> >>>>> helping >>> >>>>>> to finalize it. >>> >>>>>> Good job. >>> >>>>>> >>> >>>>>> Matthias >>> >>>>>> >>> >>>>>> On Tue, Dec 29, 2020 at 5:23 AM Jark Wu <imj...@gmail.com> wrote: >>> >>>>>> >>> >>>>>>> Thanks Aljoscha and Chesnay for the great work! >>> >>>>>>> >>> >>>>>>> Best, >>> >>>>>>> Jark >>> >>>>>>> >>> >>>>>>> On Tue, 29 Dec 2020 at 11:11, Xintong Song < >>> tonysong...@gmail.com> >>> >>>>>> wrote: >>> >>>>>>>> Great! Thanks Aljoscha and Chesnay for driving this. >>> >>>>>>>> >>> >>>>>>>> Thank you~ >>> >>>>>>>> >>> >>>>>>>> Xintong Song >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> On Tue, Dec 29, 2020 at 1:28 AM Chesnay Schepler < >>> >>>> ches...@apache.org >>> >>>>>>>> wrote: >>> >>>>>>>> >>> >>>>>>>>> Hello everyone, >>> >>>>>>>>> >>> >>>>>>>>> I have just merged the commits for FLINK-20651 >>> >>>>>>>>> <https://issues.apache.org/jira/browse/FLINK-20651> to master, >>> >>>>>>>>> release-1.12 and release-11, which enforces new formatting >>> rules >>> >>>>>> using >>> >>>>>>>>> the spotless plugin, following the google-java-format. >>> >>>>>>>>> >>> >>>>>>>>> This change touched every single java file in the repository, >>> >>>>>>>>> predominantly due to switching from tabs to spaces. This >>> implies >>> >>>>> that >>> >>>>>>>>> every PR and WIP branch will require a rebase. >>> >>>>>>>>> >>> >>>>>>>>> >>> >>>>>>>>> Most of the changes were done by a single commit, which you can >>> >>>>>> exclude >>> >>>>>>>>> from git blame by configuring git as follows (note that this >>> >>>>> requires >>> >>>>>>>>> git 2.23+, and also works for IntelliJ): >>> >>>>>>>>> >>> >>>>>>>>> git config blame.ignoreRevsFile .git-blame-ignore-revs >>> >>>>>>>>> >>> >>>>>>>>> >>> >>>>>>>>> You can setup the IDE to follow the new code style as follows: >>> >>>>>>>>> >>> >>>>>>>>> 1. Install the google-java-format plugin >>> >>>>>>>>> <https://plugins.jetbrains.com/plugin/8527-google-java-format> >>> >>>> and >>> >>>>>>>>> enable it for the project >>> >>>>>>>>> 2. In the plugin settings, change the code style to "AOSP" >>> >>>> (4-space >>> >>>>>>>>> indents) >>> >>>>>>>>> 3. Install the Save Actions plugin >>> >>>>>>>>> <https://plugins.jetbrains.com/plugin/7642-save-actions> >>> >>>>>>>>> 4. Enable the plugin, along with "Optimize imports" and >>> "Reformat >>> >>>>>> file" >>> >>>>>>>>> To manually apply the formatting, run: >>> >>>>>>>>> >>> >>>>>>>>> mvn com.diffplug.spotless:spotless-maven-plugin:apply >>> >>>>>>>>> >>> >>>>>>>>> >>> >>>>>>>>> Please be on the lookout for any suspicious formatting, >>> outdated >>> >>>>>>>>> instructions or other inconveniences. >>> >>>>>>>>> >>> >>>>>>>>> >>> >>>>>>>>> Finally, a big thank you to Aljoscha for pushing this topic and >>> >>>>>> finally >>> >>>>>>>>> bringing it to an end. >>> >>>>>>>>> >>> >>>>>>>>> >>> >> >>> >> -- Matthias Pohl | Engineer Follow us @VervericaData Ververica <https://www.ververica.com/> -- Join Flink Forward <https://flink-forward.org/> - The Apache Flink Conference Stream Processing | Event Driven | Real Time -- Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany -- Ververica GmbH Registered at Amtsgericht Charlottenburg: HRB 158244 B Managing Directors: Yip Park Tung Jason, Jinwei (Kevin) Zhang, Karl Anton Wehner