cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin (JIRA)" <>
Subject [jira] [Resolved] (CXF-4314) Introduce a search bean which can hold properties with different names
Date Mon, 14 May 2012 10:12:48 GMT


Sergey Beryozkin resolved CXF-4314.

       Resolution: Fixed
    Fix Version/s: 2.4.8
> Introduce a search bean which can hold properties with different names
> ----------------------------------------------------------------------
>                 Key: CXF-4314
>                 URL:
>             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:!default.jspa
For more information on JIRA, see:


View raw message