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.
>> >>>>>>>>>
>> >>>>>>>>>
>> >>
>>
>

Reply via email to