[
https://issues.apache.org/jira/browse/CXF-4314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Beryozkin resolved CXF-4314.
-----------------------------------
Resolution: Fixed
Fix Version/s: 2.4.8
2.5.4
2.6.1
> Introduce a search bean which can hold properties with different names
> ----------------------------------------------------------------------
>
> Key: CXF-4314
> URL: https://issues.apache.org/jira/browse/CXF-4314
> Project: CXF
> Issue Type: Improvement
> Components: JAX-RS
> Reporter: Sergey Beryozkin
> Assignee: Sergey Beryozkin
> Fix For: 2.6.1, 2.5.4, 2.4.8
>
>
> At the moment, in order to capture a FIQL expression into a list of Search
> conditions, one needs to provide a bean which needs to have a matching
> property per every property name in the expression, for example, an
> expression such as "name==bar;id=234" will require a bean with properties
> 'name' & 'id' available. This is reasonable when the set of properties is
> limited, but is too restricting in cases where one needs to experiment with
> an open-ended set of properties, which would require a bean to be updated
> every time a new search property gets introduced.
> Adding a simple SearchBean bean with a Map property will make it much simpler
> to convert FIQL expressions into SQL/etc expressions, as well as capture the
> FIQL expressions and analyze them without having to introduce a custom bean
> every time...
> For example, this is how it would look like when printing SQL expressions:
> {code:java}
> // Search context represents this query: "name==foo*;(name!=*bar,level=gt=10)"
> SearchCondition<SearchBean> filter =
> searchContext.getSearchCondition(SearchBean.class);
> SQLPrinterVisitor<SearchBean> visitor = new
> SQLPrinterVisitor<SearchBean>("table");
> filter.accept(visitor);
> String sql = visitor.getResult();
> assertTrue(("SELECT * FROM table WHERE (name LIKE 'foo%') AND ((name NOT LIKE
> '%bar') "
> + "OR (level > '10'))").equals(sql)
> || ("SELECT * FROM table WHERE (name LIKE 'foo%') AND "
> + "((level > '10') OR (name NOT LIKE
> '%bar'))").equals(sql));
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira