1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.rest.cxf.service;
20
21 import org.apache.commons.lang3.exception.ExceptionUtils;
22 import org.apache.cxf.jaxrs.ext.search.SearchBean;
23 import org.apache.cxf.jaxrs.ext.search.SearchCondition;
24 import org.apache.syncope.common.lib.SyncopeClientException;
25 import org.apache.syncope.common.lib.types.ClientExceptionType;
26 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
27 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
28
29 public abstract class AbstractSearchService extends AbstractService {
30
31 protected final SearchCondVisitor searchCondVisitor;
32
33 public AbstractSearchService(final SearchCondVisitor searchCondVisitor) {
34 this.searchCondVisitor = searchCondVisitor;
35 }
36
37 protected SearchCond getSearchCond(final String fiql, final String realm) {
38 try {
39 searchCondVisitor.setRealm(realm);
40 SearchCondition<SearchBean> sc = searchContext.getCondition(fiql, SearchBean.class);
41 sc.accept(searchCondVisitor);
42
43 return searchCondVisitor.getQuery();
44 } catch (Exception e) {
45 LOG.error("Invalid FIQL expression: {}", fiql, e);
46
47 SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidSearchParameters);
48 sce.getElements().add(fiql);
49 sce.getElements().add(ExceptionUtils.getRootCauseMessage(e));
50 throw sce;
51 }
52 }
53 }