小编THM*_*THM的帖子

SOLR是否支持复合类型,例如multiValued字段的结构?

我需要添加multiValued字段,它将是结构.就像是:

哪里:

class ComplexPhone [
    String area;
    String number;
    String internal;
    String type;
]
Run Code Online (Sandbox Code Playgroud)

我希望以这样的格式从json中的SOLR接收这些数据:

{
  "responseHeader": {
    "status": 0,
    "QTime": 1,
    "params": {
      "indent": "true",
      "q": "*:*",
      "_": "1394008742077",
      "wt": "json"
    }
  },
  "response": {
    "numFound": 1,
    "start": 0,
    "docs": [
      {
        "first_name": "Funky",
        "last_name": "Koval",
        "phone": [
          {
             "area": "US",
             "number": "555-123-456-789",
             "internal": "011,
             "type": "S",

          },
          {
             "area": "UK",
             "number": "1234-5678",
             "internal": "9001",
             "type": "L",

          }
        ]
        "id": 1,
        "_version_": 1461724104955527200
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

这只是一个例子(我不想只有电话号码).

对我来说最重要的是SOLR的响应格式.我可以用任何简单的格式添加这些数据,如:Funky,Koval,UK; …

json solr types structure

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

CamelContext vs ExtendedCamelContext vs SpringCamelContext 有什么区别?

SpringBoot + ApacheCamel 我对 *CamelContext 有问题,但出现异常:

Cannot cast org.apache.camel.spring.SpringCamelContext to org.apache.camel.ExtendedCamelContext
Run Code Online (Sandbox Code Playgroud)

在初始化一些组件时。我的配置部分(pom.xml):

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

...

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-spring-boot-starter</artifactId>
  <version>2.25.2</version>
</dependency>

...
Run Code Online (Sandbox Code Playgroud)

问题:如何使用这些上下文/应该使用哪一个?

  • CamelContext又名DefaultCamelContext
  • ExtendedCamelContext
  • SpringCamelContext

apache-camel spring-boot

6
推荐指数
0
解决办法
834
查看次数

如何更改 Java 中的时间格式 - “am/pm”与“AM/PM”

先前创建的测试使用DateTimeFormatter.ofPattern("ha");并返回“10AM”(表示“ 2017-04-09T10:00-06:00[US/Mountain]”)。

在我的 MacO 和 Java 下 ['openjdk version "11.0.12"'] 我得到“10am”

"10AM" != "10am"
Run Code Online (Sandbox Code Playgroud)

在规范中,我看到“ha”应该创建“10AM”而不是“10am”,请参阅:https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

有什么建议吗?

java datetime-format timeofday datetimeformatter

3
推荐指数
1
解决办法
2960
查看次数

如何在 Set 的 Assertj 集合中进行验证

我有返回记录列表的方法。每条记录都有设置为字段。

public class R {
    public final Set s;
}
Run Code Online (Sandbox Code Playgroud)

我有所有预期集合的列表 - 例如:

Set<String> set1 = new HashSet<String>(); set1.add("s1");
Set<String> set2 = new HashSet<String>(); set1.add("s2");
Set<String> set3 = new HashSet<String>(); set1.add("s3");
Run Code Online (Sandbox Code Playgroud)

我想使用 AssertJ (版本 3.11.1)以简单的方式验证响应List<R>包含所有定义的 Set 或至少这些集合中所有元素的聚合等于集合中元素的聚合set1, set2, set3

注意:以下解决方案不起作用

Set allElements = new HashSet<String>();
allElements.addAll(set1);
allElements.addAll(set2);
allElements.addAll(set3);

List<R> result = foo();
org.assertj.core.api.Assertions.assertThat(result)
    .extracting(record -> record.s)
    .containsOnly(allElements);
Run Code Online (Sandbox Code Playgroud)

我有:

java.lang.AssertionError: 
Expecting:
  <[["s1.1", "s1.2"],
    ["s2.1", "s2.2"],
    ["s3.1", "s3.2"]]>
to contain only:
  <[["s1.1",
    "s1.2",
    "s2.1",
    "s2.2",
    "s3.1", …
Run Code Online (Sandbox Code Playgroud)

java testing assertj

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

如何使用AssertJ检查某些List是否仅包含一个特定元素或为空

我有:

@Test
public void testSomethingInFooFunction() {
    //given
    Something parameter = new Something();
    //when
    List<Object> result = foo(parameter);
    //then

    // not working
    assertThat(result).isEmpty().or().containsOnly(something());
    assertThat(result).is(v -> v.isEmpty() || v.containsOnly(something());

    //is working
    assertThat(result.isEmpty() || (
        result.contains(something())
        && result.size() == 1)
    ).isTrue();

}
Run Code Online (Sandbox Code Playgroud)

还有其他测试条件的方法,例如:

result.isEmpty()|| (result.contains(something())&& result.size()== 1)

问:如何使用AssertJ 3.11.1简化它?

java testing assertj

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