Apache CXF SearchContext for FIQL with custom data dictionar



我想按照标准机制使用 CXF 解析 FIQL。但是,我不想使用 JAXB 编码的对象,而是使用自定义数据字典源。以下是"正常"方式的示例:

@Path("book")
@GET
public List<Book> findBooks(@Context SearchContext searchContext) {
    SearchCondition<Book> condition = searchContext.getCondition(Book.class);
    return condition.findAll(theBooks);
}

在这里,如果我的理解是正确的,Book 必须是一个 java bean,具有与搜索表达式元素相对应的各个属性。所以如果我有:

public class Book {
  String title;
  String asin;
}

我可以做一个这样的查询:

GET /book?_s=asin==B00NAIMGXI

并返回匹配的行。这很好,但我无法像 Book 那样创建单独的 bean 类。事实上,我有一个大型动态数据字典 (DBSchema),我希望能够对该架构中的任何内容进行查询。不过,我找不到任何方法可以做到这一点。

在花了一些时间处理源代码之后,我发现如果你传递一个名为 SearchBean 的类,如下所示:

SearchCondition<SearchBean> searchCondition = searchContext.getCondition(SearchBean.class);

FIQL 表达式可以具有任意名称。我不知道此功能的官方程度 - 它不在 JAX-RS 指南中,但它确实出现在本 jira 问题 CXF-4314 中,所以我猜测(希望?)它被认为是 CXF 公共接口的一部分。

最新更新