public class GrantSearchQuery extends BaseSearchQuery
Following code snippet illustrates how to build a search criteria to search by the exact resource name
query = new GrantSearchQuery(GrantSearchQuery.SEARCH_PROPERTY.RESOURCE_NAME, negation, ComparatorType.EQUALITY, "target", BaseSearchQuery.MATCHER.EXACT);
To build complex search criteria, construct simple queries first and then add them to a List
of queries.
Consider the following example to search for Grants granted to an ApplicationRole called 'MyAdmin', and Resource Name is "wallet.sso". First, build 2 simple queries
Principal myAdminPrincipal = applicationPolicy.searchAppRole("myAdmin").get(0).getPrincipal(); q1 = new GrantSearchQuery(GrantSearchQuery.SEARCH_PROPERTY.PRINCIPAL, negation, ComparatorType.EQUALITY, myAdminPrincipal, BaseSearchQuery.MATCHER.EXACT); q2 = new GrantSearchQuery(GrantSearchQuery.SEARCH_PROPERTY.RESOURCE_NAME, negation, ComparatorType.EQUALITY, "wallet.sso", BaseSearchQuery.MATCHER.EXACT);
Next, join these two queries to create an and query:
List<GrantSearchQuery> gsqList = new ArrayList<GrantSearchQuery>(); gsqList.add(q1); gsqList.add(q2); negation = false; boolean isORMatch = false; GrantSearchQuery query = new GrantSearchQuery(gsqList, negation, isORMatch);
AND-ing certain search properties more than once with each other in the same query has certain connotations, and hence, it may not yield the expected results.
NOTE: As the complexity of the query increases, the time taken to fetch the results from the store may increase.
Modifier and Type | Class and Description |
---|---|
static class |
GrantSearchQuery.SEARCH_PROPERTY |
SearchQuery.MATCHER
Constructor and Description |
---|
GrantSearchQuery(GrantSearchQuery.SEARCH_PROPERTY property, boolean negation, ComparatorType operator, java.lang.Object valueObject, SearchQuery.MATCHER match)
Constructor to build a GrantSearchQuery.
|
GrantSearchQuery(GrantSearchQuery.SEARCH_PROPERTY property, boolean negation, ComparatorType operator, java.lang.String value, SearchQuery.MATCHER match)
Constructor to build a GrantSearchQuery.
|
GrantSearchQuery(java.util.List<GrantSearchQuery> queries, boolean negation, boolean isORMatch)
Constructor
|
Modifier and Type | Method and Description |
---|---|
void |
addBaseQuery(BaseSearchQuery query)
Deprecated.
|
GrantSearchQuery.SEARCH_PROPERTY |
getSearchProperty() |
GrantSearchQuery[] |
getSearchQueryInOrder() |
getBaseSearchQueryInOrder, getComparator, getEntityType, getQueries, toString
addBaseQuery, getSearchByPropertyString, getSearchByValue, getSearchByValueObject, getSearchComparator, getSearchQueries, getSearchValueMatch, isANDMatch, isComplexQuery, isNegativeMatch, isORMatch
public GrantSearchQuery(GrantSearchQuery.SEARCH_PROPERTY property, boolean negation, ComparatorType operator, java.lang.String value, SearchQuery.MATCHER match)
property
- SearchBy property.
For this constructor, the following Search property types are meaningful.
SEARCH_PROPERTY | Value |
PRINCIPAL_NAME | Principal Name. |
PERMISSIONSET_NAME | PermissionSet Name |
RESOURCETYPE_NAME | Name of ResourceType |
RESOURCE_NAME | Name of Resource |
ACTION | Name of action. |
negation
- if true, the NOT of this query is evaluated.operator
- how should the values be comparedvalue
- the String value to search by.
If value is null, then match must be ANY.
If value is non-null, this value is matched against the values to search for. The match algorithm is applied to values to search against.
match
- how the value should match-ed with the values to search against. If match is null, an EXACT match is assumed. value should be non-null.
For performance reason, SEARCH_PROPERTY.PRINCIPAL_NAME and MATCHER.ANY will not be supported together. Otherwise, IllegalArgumentException will be thrown. Alternatively, you can use PolicyMgmt.getGrantEntries() instead to get all the GrantEntries.
public GrantSearchQuery(GrantSearchQuery.SEARCH_PROPERTY property, boolean negation, ComparatorType operator, java.lang.Object valueObject, SearchQuery.MATCHER match)
property
- SearchBy property.
For this constructor, the following Search property types are meaningful.
SEARCH_PROPERTY | Object of Class |
PRINCIPAL | java.security.Principal. An Exact match is always applied. |
PRINCIPAL_ENTRY | oracle.security.jps.service.policystore.info.PrincipalEntry. An Exact match is always applied. |
negation
- if true, the NOT of this query is evaluated.operator
- how should the values be comparedvalueObject
- the value to search by.
If value is null, then match must be ANY.
If value is non-null, this value is matched against the values to search for. The match algorithm is applied to values to search against.
match
- how the value should match-ed with the values to search against. If match is null, an EXACT match is assumed. value should be non-null.
For performance reason, SEARCH_PROPERTY.PRINCIPAL_NAME and MATCHER.ANY will not be supported together. Otherwise, IllegalArgumentException will be thrown. Alternatively, you can use PolicyMgmt.getGrantEntries() instead to get all the GrantEntries.
public GrantSearchQuery(java.util.List<GrantSearchQuery> queries, boolean negation, boolean isORMatch)
queries
- child queries of this query. It is incorrect to supploy a query list of size 0.negation
- if true, the NOT of this query is evaluated.isORMatch
- if true the syntax among the child queries is 'OR', if false, the syntax among child queries is 'AND'public GrantSearchQuery.SEARCH_PROPERTY getSearchProperty()
public GrantSearchQuery[] getSearchQueryInOrder()
@Deprecated public void addBaseQuery(BaseSearchQuery query)