使用简单的特定于域的语言过滤集合

时间:2014-06-11 22:41:18

标签: java pojo

我需要能够过滤POJO列表以过滤掉我不关心的项目。

他们基本上是POJO的流......

假设我们有一个带有firstName,lastName,telephone,zipcode的User对象流。

我想要一个简单的表达式,如:

firstName =' John'

显然这只会匹配具有该字段的对象。

如果我们可以做布尔逻辑,例如:

,那将是理想的

(firstName =' John'或firstName =' Allen')和lastName =' Smith'

我希望语言不支持循环或任意Java代码。

例如。有人可以提交while(true){} ...这将是DoS服务器。

此外,功能和调用标准库也是不可接受的。否则他们可以提交System.exit(1)。

wireshark中使用的过滤语言很不错:

http://www.wireshark.org/docs/wsug_html_chunked/ChCapCaptureFilterSection.html

  

tcp port 23而不是src host 10.0.0.5

...但我需要Java中的东西。

1 个答案:

答案 0 :(得分:1)

查看Mule Query LanguageJXPath

骡子示例:

List<User> users = ...;

Map<String,Object> context = new HashMap<String,Object>();
context.put("users", users);

Collection<User> result = 
    Query.execute("from users where division = 'Engineering'", context);

JXPath示例:

Address address = (Address)JXPathContext.newContext(vendor).
     getValue("locations[address/zipCode='90210']/address");