2015-01-13 18 views
1

我想按照标准机制使用CXF来解析FIQL。但是,我不想使用JAXB编码的对象,而是使用自定义数据字典源。这里的“正常”的方式为例:用于FIQL的Apache CXF SearchContext与自定义数据字典

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

在这里,如果我的理解是正确的,书一定是一个Java bean,与对应于搜索表达式元素的各个属性。所以,如果我有:

public class Book { 
    String title; 
    String asin; 
} 

我可以做喜欢的查询:

GET /book?_s=asin==B00NAIMGXI 

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

回答

0

花一些时间与源代码,我发现,如果你通过一个名为SearchBean类,像这样经过:

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

您FIQL表达可以有任意的名字。我不知道这个功能有多官方 - 它不在JAX-RS指南中,但它确实出现在this jira issue CXF-4314,所以我猜(希望?)它是CXF公共接口的一部分。

+0

D'oh。原来,这是在文档中提到的,我错过了它。 – fool4jesus