Thanks for looking into this problem Matthias. The patched version also
works for me. +1 for what Jark proposed.

Cheers,
Till

On Sun, Jan 24, 2021 at 3:50 PM Matthias Pohl <matth...@ververica.com>
wrote:

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

Reply via email to