Skip to content

Commit

Permalink
Merge pull request #25 from Z14tk0/feature/filter-query-raw
Browse files Browse the repository at this point in the history
Feature -  ability to handle Midpoint's query language
  • Loading branch information
matusmacik committed Apr 25, 2024
2 parents 88b9fbf + 7754eeb commit 1cc4931
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.evolveum.midpoint.client.api.exception.SchemaException;
import com.evolveum.midpoint.client.api.verb.Get;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.prism.xml.ns._public.query_3.QueryType;

/**
*
Expand All @@ -41,6 +42,8 @@ public interface QueryExit<O extends ObjectType> extends Get<SearchResult<O>> {
*/
SearchService<O> build();

SearchService<O> build(QueryType query);

// public ConditionEntry<O> item(ItemPathType itemPath);
// public ConditionEntry<O> item(QName... qnames);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@ public SearchService<O> build() {

}

@Override
public SearchService<O> build(QueryType query) {
return new RestJaxbSearchService<>(service, type, query);
}


@Override
public ConditionEntry<O> item(ItemPathType itemPath) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@

import javax.xml.namespace.QName;

import com.evolveum.prism.xml.ns._public.query_3.QueryType;

import org.w3c.dom.Element;

import com.evolveum.midpoint.client.api.SearchService;
Expand Down Expand Up @@ -102,8 +104,12 @@ public SearchService<O> build() {
// return new RestJaxbSearchService<O>(queryForService, type, query);
}

@Override
public SearchService<O> build(QueryType query) {
return null;
}

@Override
@Override
public MatchingRuleEntry<O> eq(Object... values) {
Element equal = queryForService.getDomSerializer().createEqualFilter(itemPath, Arrays.asList(values));
return new RestJaxbQueryBuilder<O>(this, equal, owner);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@
import com.evolveum.midpoint.client.api.exception.PolicyViolationException;
import com.evolveum.midpoint.xml.ns._public.common.api_types_3.PolicyItemsDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.query_3.PagingType;
import com.evolveum.prism.xml.ns._public.query_3.QueryType;
import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;

import org.apache.cxf.endpoint.Server;
Expand Down Expand Up @@ -204,6 +207,30 @@ public void test010UserSearchMock() throws Exception {
assertEquals(result.size(), 0);
}

@Test
public void test014UserFilterQuerySearchMock() throws Exception {
Service service = getService();

QueryType query = new QueryType();
PagingType pagingType = new PagingType();
pagingType.setMaxSize(1);
pagingType.setOffset(0);
query.setPaging(pagingType);
SearchFilterType searchFilterType = new SearchFilterType();
searchFilterType.setText("name contains \"a\" or familyName startsWith \"X\"");
query.setFilter(searchFilterType);

SearchResult<UserType> result = service.users().search()
.queryFor(UserType.class)
.build(query)
.options()
.resolveNames()
.get();

assertEquals(result.size(), 0);
}


@Test
public void test011ValuePolicyGet() throws Exception {
Service service = getService();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
import com.evolveum.midpoint.client.api.exception.SchemaException;
import com.evolveum.midpoint.client.api.query.AtomicFilterExit;
import com.evolveum.midpoint.client.api.query.ConditionEntry;
import com.evolveum.prism.xml.ns._public.query_3.PagingType;
import com.evolveum.prism.xml.ns._public.query_3.QueryType;
import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;

import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -380,6 +383,30 @@ public void test600searchDistinct() throws Exception {
assertEquals(users.size(), 10);
}

@Test
public void test610searchUserFilterQuery() throws Exception {
Service service = getService();

QueryType query = new QueryType();
PagingType pagingType = new PagingType();
pagingType.setMaxSize(1);
pagingType.setOffset(0);
query.setPaging(pagingType);
SearchFilterType searchFilterType = new SearchFilterType();
searchFilterType.setText("name contains \"admin\" or familyName startsWith \"X\"");
query.setFilter(searchFilterType);

SearchResult<UserType> users = service.users().search()
.queryFor(UserType.class)
.build(query)
.options()
.resolveNames()
.get();

assertEquals(users.size(), 1);
}


@Test
public void test700addSecurityPolicy() throws Exception {
SecurityPolicyType securityPolicyType = unmarshallFromFile(SecurityPolicyType.class, SECURITY_POLICY_FILE);
Expand Down

0 comments on commit 1cc4931

Please sign in to comment.