Apache Camel和Intellij Idea代码格式化

17

IntelliJ IDEA会像这样格式化驼峰命名的代码:

from("direct:loop")
     .log("Loop: ${header[loopCount]}")
     .choice()
     .when(simple("header[loopCount] < 10"))
     .process(exchange -> {
         Message in = exchange.getIn();
         in.setHeader("loopCount", in.getHeader("loopCount", Integer.class) + 1);
     })
     .to("direct:loop")
     .otherwise()
     .log("Exiting loop")
     .end();

有没有插件或其他方法可以做到这样:

from("direct:loop")
 .log("Loop: ${header[loopCount]}")
 .choice()
     .when(simple("header[loopCount] < 10"))
         .process(exchange -> {
             Message in = exchange.getIn();
             in.setHeader("loopCount", in.getHeader("loopCount", Integer.class) + 1);
         })
         .to("direct:loop")
     .otherwise()
         .log("Exiting loop")
 .end();

?


请查看 https://www.jetbrains.com/help/idea/configuring-code-style.html。 - Namphibian
1
关闭投票者 - 为什么这个问题不适合?这是一个关于DSL和编程工具的明确问题。如果您不理解问题,请问原因。 - vikingsteve
@well - 我从未找到一种方法来做到这一点,所以不要格式化代码。DSL 代码中的缩进很好...只是永远不要使用自动格式化功能。 - vikingsteve
2个回答

9

从Camel IDEA插件v0.9.9开始,现在可以通过快捷键Ctrl+Alt+L / Cmd+Option+L对使用Java DSL编写的路由进行重新格式化,可以对整个文件或特定文本范围进行操作,如下图所示:

Reformat a route in Java


原始回答

关于Camel IDEA插件,已经有一个有关此问题的工单:https://github.com/camel-idea-plugin/camel-idea-plugin/issues/309

您可以使用+1来表示这是所需的功能。

我个人也希望拥有这样的功能,但由于繁忙的正常工作和完成我的Camel书籍,我没有太多闲暇时间来处理这个问题。


7

我认为目前还没有一个很好的插件可以按要求格式化Java DSL代码。

最多我们只能禁用Java代码中特定DSL部分的格式化。我建议在Camel DSL路由中使用IntelliJ IDEA的格式化开/关功能:

// @formatter:off
...
// @formatter:on

你可以在 首选项... -> 编辑器 -> 代码样式(自2017.2.3起)中找到格式控制设置。
请参考其他StackOverflow问题,例如如何使用注释禁用某些代码部分的代码格式化?,了解更多有关IntelliJ功能的详细信息。

是的,我之前找到了这个解决方案,但我认为应该有更好的方法来做。谢谢回答。 - well

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接