小编bot*_*que的帖子

如何解决Intellij Idea的所有检查风格问题?

我有一个maven checkstyle插件的xml配置文件.我已经安装了Intellij Idea插件并查看所有checkstyle违规.有没有办法自动修复大部分?例如自动格式设置?有没有办法从checktyle配置文件设置Intellij Idea到autoformat?

plugins intellij-idea checkstyle maven

10
推荐指数
2
解决办法
1万
查看次数

Arquillian - 程序化配置

我正在使用Arquillian和使用TestNG的嵌入式glassfish 3.1.2.2编写集成测试.我希望能够并行运行这些测试,对于这种情况,我需要动态配置glassfish端口和数据库名称(我们已经有了这个设置,我想重用它的arquillian测试).我缺少的是一个'before container start'钩子,在那里我可以准备数据库,查找空闲端口并更新我的glassfish配置(domain.xml,也可以是glassfish-resources.xml).是否有一个"干净"的解决方案,或Arquillian开发人员没有预见到我的用例?

我目前解决它的hacky方法是覆盖arquillian的beforeSuite方法,但是这个方法被调用两次 - 在测试启动时然后在容器中(因此我可怜的静态标志).其次,这个解决方案不适用于基于JUnit的测试,因为在套件之前无法拦截arquillian:

public class FullContainerIT extends Arquillian {

    private static boolean dbInitialized;

    //@RunAsClient <-supported by @Test only
    @Override
    @BeforeSuite(groups = "arquillian", inheritGroups = true)
    public void arquillianBeforeSuite() throws Exception {
        if (dbInitialized == false) {
            initializeDb();
            dbInitialized = true;
        }
        super.arquillianBeforeSuite();
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一些想法:
+ @BeforeSuite @RunAsClient似乎是我需要的,但@RunAsClient仅支持@Test;
+我org.jboss.arquillian.container.spi.event.container.BeforeStartArquillian JavaDocs中看过事件 ,但我不知道如何听Arquillian事件;
+我已经看到有可能@Deployment创建一个ShrinkWrap描述符,但这些不支持Glassfish资源.

testng glassfish glassfish-embedded jboss-arquillian

8
推荐指数
1
解决办法
1011
查看次数

在 Jersey 生成的 JSON 末尾添加新行

我有一个基于 Jersey (1.x) 的 REST 服务。它使用 Jackson 2.4.4 来生成 JSON 响应。我需要在响应末尾添加一个换行符(cURL 用户抱怨响应中没有换行符)。我正在使用 Jersey 漂亮打印功能 ( SerializationFeature.INDENT_OUTPUT)。

当前的: {\n "prop" : "value"\n}

通缉: {\n "prop" : "value"\n}\n

  1. 我尝试使用自定义序列化程序。我\n只需要在根对象的末尾添加。序列化程序是按数据类型定义的,这意味着,如果此类类的实例嵌套在响应中,我将\n处于 JSON 的中间。

  2. 我想到了子类化com.fasterxml.jackson.core.JsonGenerator.java,覆盖close() 我要添加的地方writeRaw('\n'),但这感觉很hacky。

  3. 另一个想法是添加 Servlet 过滤器,该过滤器将重写来自 Jersey 过滤器的响应,添加\n并将 contentLenght 增加 1。似乎不仅 hacky,而且效率低下。

  4. 我也可以放弃 Jersey 来处理内容的序列化并 do ObjectMapper.writeValue() + "\n",但这对我的代码来说非常具有侵入性(需要更改很多地方)。

该问题的干净解决方案是什么?

我发现这些线程解决了同样的问题,但没有一个提供解决方案:


更新

最后,我选择了@arachnid 的解决方案NewlineAddingPrettyPrinter(也将 Jackson 版本提高到 2.6.2)。遗憾的是,Jaskson 作为JAX-RS Json 提供程序并不能开箱即用。改变PrettyPrinter …

json jersey jackson

6
推荐指数
1
解决办法
5077
查看次数

在 Spark SQL 中将结构转换为映射

我正在尝试将声明一列具有某种struct类型(例如struct<x: string, y: string>)的一个数据集转换为一种map<string, string>类型。我想用 SQL 来完成,可能不使用 UDF。

更新

我的要求还在于,转换通常是在没有任何结构键先验知识的情况下完成的(在我的问题中,我以复杂的 JSON 格式获取数据,并且我不想在模式中保留这种复杂性)。

输入数据示例:

WITH input (struct_col) as (
    select named_struct('x', 'valX', 'y', 'valY') union all
    select named_struct('x', 'valX1', 'y', 'valY2')
)
select *
from input
Run Code Online (Sandbox Code Playgroud)

预期输出是一列类型map<string, string>

struct_col:map<字符串, 字符串>
{"x":"valX","y":"valY"}
{"x":"valX1","y":"valY2"}

更新:

到目前为止,我设法找到了这个非常复杂的解决方案,它仅适用于 Spark >= 3.1.0(因为json_object_keys功能)。如果能够将结构转换为地图就太好了

WITH input (struct_col) as (
    select named_struct('x', 'valX', 'y', 'valY') union all
    select named_struct('x', 'valX1', 'y', 'valY2')
)
select transform_values(
       map_from_arrays(
               json_object_keys(to_json(struct_col)),
               json_object_keys(to_json(struct_col)) …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql

6
推荐指数
1
解决办法
5997
查看次数