Search in sources :

Example 1 with ComplexCondition

use of org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition in project carbon-identity-framework by wso2.

the class TestUtils method getSampleSearchCondition.

public static ComplexCondition getSampleSearchCondition() {
    PrimitiveCondition tenantDomainEqSuper = new PrimitiveCondition(RESOURCE_SEARCH_BEAN_FIELD_TENANT_DOMAIN, ConditionType.PrimitiveOperator.EQUALS, SUPER_TENANT_DOMAIN_NAME);
    PrimitiveCondition tenantDomainEqABC = new PrimitiveCondition(RESOURCE_SEARCH_BEAN_FIELD_TENANT_DOMAIN, ConditionType.PrimitiveOperator.EQUALS, SAMPLE_TENANT_DOMAIN_ABC);
    PrimitiveCondition attributeKeyEqFrom = new PrimitiveCondition(RESOURCE_SEARCH_BEAN_FIELD_ATTRIBUTE_KEY, ConditionType.PrimitiveOperator.EQUALS, SAMPLE_ATTRIBUTE_NAME1);
    List<Condition> tenantDomainConditions = new ArrayList<>();
    tenantDomainConditions.add(tenantDomainEqSuper);
    tenantDomainConditions.add(tenantDomainEqABC);
    ComplexCondition eitherTenantDomain = new ComplexCondition(ConditionType.ComplexOperator.OR, tenantDomainConditions);
    List<Condition> conditions = new ArrayList<>();
    conditions.add(eitherTenantDomain);
    conditions.add(attributeKeyEqFrom);
    return new ComplexCondition(ConditionType.ComplexOperator.AND, conditions);
}
Also used : PrimitiveCondition(org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition) Condition(org.wso2.carbon.identity.configuration.mgt.core.search.Condition) ArrayList(java.util.ArrayList) PrimitiveCondition(org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition)

Example 2 with ComplexCondition

use of org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition in project identity-api-server by wso2.

the class ServerApplicationManagementService method getSearchCondition.

/**
 * Retrieve search condition from @{SearchContext}.
 *
 * @param templateType  Template type.
 * @param tenantDomain  Tenant domain.
 * @param searchContext Search context.
 * @return Condition.
 */
private Condition getSearchCondition(String templateType, String tenantDomain, SearchContext searchContext) {
    if (searchContext != null) {
        SearchCondition<ResourceSearchBean> searchCondition = searchContext.getCondition(ResourceSearchBean.class);
        if (searchCondition != null) {
            Condition result = buildSearchCondition(searchCondition);
            List<Condition> list = new ArrayList<>();
            Condition typeCondition = new PrimitiveCondition(ApplicationManagementConstants.TemplateProperties.TEMPLATE_TYPE_KEY, EQUALS, templateType);
            Condition tenantCondition = new PrimitiveCondition(ApplicationManagementConstants.TemplateProperties.TENANT_DOMAIN_KEY, EQUALS, tenantDomain);
            if (result instanceof ComplexCondition) {
                list = ((ComplexCondition) result).getConditions();
                list.add(typeCondition);
                list.add(tenantCondition);
            } else if (result instanceof PrimitiveCondition) {
                list.add(result);
                list.add(typeCondition);
                list.add(tenantCondition);
            }
            return new ComplexCondition(getComplexOperatorFromOdata(ConditionType.AND), list);
        } else {
            if (log.isDebugEnabled()) {
                log.debug("Search condition parsed from the search expression is invalid.");
            }
        }
    } else {
        if (log.isDebugEnabled()) {
            log.debug("Cannot find a valid search context.");
        }
    }
    return null;
}
Also used : PrimitiveCondition(org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition) Condition(org.wso2.carbon.identity.configuration.mgt.core.search.Condition) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition) SearchCondition(org.apache.cxf.jaxrs.ext.search.SearchCondition) ArrayList(java.util.ArrayList) ResourceSearchBean(org.wso2.carbon.identity.configuration.mgt.core.model.ResourceSearchBean) PrimitiveCondition(org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition)

Example 3 with ComplexCondition

use of org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition in project identity-api-server by wso2.

the class ServerIdpManagementService method buildSearchCondition.

private Condition buildSearchCondition(SearchCondition searchCondition) {
    if (!(searchCondition.getStatement() == null)) {
        PrimitiveStatement primitiveStatement = searchCondition.getStatement();
        if (Constants.SEARCH_KEY_NAME.equals(primitiveStatement.getProperty())) {
            return new PrimitiveCondition(Constants.SEARCH_KEY_NAME_INTERNAL, getPrimitiveOperatorFromOdata(primitiveStatement.getCondition()), primitiveStatement.getValue());
        } else if (Constants.SEARCH_KEY_SERVICES.equals(primitiveStatement.getProperty()) && getPrimitiveOperatorFromOdata(primitiveStatement.getCondition()) == EQUALS) {
            Condition servicesAttrKeyCondition = new PrimitiveCondition(Constants.ATTR_KEY, EQUALS, Constants.SEARCH_KEY_SERVICES);
            Condition servicesAttrValueCondition = new PrimitiveCondition(Constants.ATTR_VALUE, EQUALS, primitiveStatement.getValue());
            Condition servicesCondition = new ComplexCondition(getComplexOperatorFromOdata(ConditionType.AND), Arrays.asList(servicesAttrKeyCondition, servicesAttrValueCondition));
            Condition servicesCombinedAttrKeyCondition = new PrimitiveCondition(Constants.ATTR_KEY, EQUALS, Constants.SEARCH_KEY_SERVICES);
            Condition servicesCombinedAttrValueCondition = new PrimitiveCondition(Constants.ATTR_VALUE, EQUALS, Constants.SEARCH_VALUE_AUTHENTICATION_PROVISIONING);
            Condition servicesCombinedCondition = new ComplexCondition(getComplexOperatorFromOdata(ConditionType.AND), Arrays.asList(servicesCombinedAttrKeyCondition, servicesCombinedAttrValueCondition));
            return new ComplexCondition(getComplexOperatorFromOdata(ConditionType.OR), Arrays.asList(servicesCondition, servicesCombinedCondition));
        } else if (Constants.SEARCH_KEYS.contains(primitiveStatement.getProperty())) {
            List<Condition> list = new ArrayList<>();
            Condition attrKeyCondition = new PrimitiveCondition(Constants.ATTR_KEY, EQUALS, primitiveStatement.getProperty());
            Condition attrValueCondition = new PrimitiveCondition(Constants.ATTR_VALUE, getPrimitiveOperatorFromOdata(primitiveStatement.getCondition()), primitiveStatement.getValue());
            list.add(attrKeyCondition);
            list.add(attrValueCondition);
            return new ComplexCondition(getComplexOperatorFromOdata(ConditionType.AND), list);
        } else {
            throw handleException(Response.Status.BAD_REQUEST, Constants.ErrorMessage.ERROR_CODE_ERROR_INVALID_SEARCH_FILTER, null);
        }
    } else {
        List<Condition> conditions = new ArrayList<>();
        for (Object condition : searchCondition.getSearchConditions()) {
            Condition buildCondition = buildSearchCondition((SearchCondition) condition);
            conditions.add(buildCondition);
        }
        return new ComplexCondition(getComplexOperatorFromOdata(searchCondition.getConditionType()), conditions);
    }
}
Also used : PrimitiveCondition(org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition) Condition(org.wso2.carbon.identity.configuration.mgt.core.search.Condition) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition) SearchCondition(org.apache.cxf.jaxrs.ext.search.SearchCondition) PrimitiveStatement(org.apache.cxf.jaxrs.ext.search.PrimitiveStatement) ArrayList(java.util.ArrayList) PrimitiveCondition(org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition)

Example 4 with ComplexCondition

use of org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition in project carbon-identity-framework by wso2.

the class ConfigurationManagerImpl method getTenantSpecificSearchCondition.

/**
 * Append tenant domain search to then search condition.
 *
 * @param tenantDomain    Tenant domain.
 * @param searchCondition Search condition.
 * @return Condition.
 */
private Condition getTenantSpecificSearchCondition(String tenantDomain, Condition searchCondition) {
    if (searchCondition != null) {
        Condition tenantCondition = new PrimitiveCondition(ConfigurationConstants.RESOURCE_SEARCH_BEAN_FIELD_TENANT_DOMAIN, EQUALS, tenantDomain);
        List<Condition> list = new ArrayList<>();
        list.add(searchCondition);
        list.add(tenantCondition);
        return new ComplexCondition(ConditionType.ComplexOperator.AND, list);
    } else {
        if (log.isDebugEnabled()) {
            log.debug("Search condition is null");
        }
        return new PrimitiveCondition(ConfigurationConstants.RESOURCE_SEARCH_BEAN_FIELD_TENANT_DOMAIN, EQUALS, tenantDomain);
    }
}
Also used : PrimitiveCondition(org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition) Condition(org.wso2.carbon.identity.configuration.mgt.core.search.Condition) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition) ArrayList(java.util.ArrayList) PrimitiveCondition(org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition)

Example 5 with ComplexCondition

use of org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition in project carbon-identity-framework by wso2.

the class ConfigurationManagerTest method testSearchMultiTenantResources.

@Test(priority = 26)
public void testSearchMultiTenantResources() throws Exception {
    ResourceType resourceType = configurationManager.addResourceType(getSampleResourceTypeAdd());
    configurationManager.addResource(resourceType.getName(), getSampleResource1Add());
    mockCarbonContextForTenant(SAMPLE_TENANT_ID_ABC, SAMPLE_TENANT_DOMAIN_ABC);
    configurationManager.addResource(resourceType.getName(), getSampleResource2Add());
    mockIdentityTenantUtilForTheTest();
    // Mock carbon context back to the super tenant.
    mockCarbonContextForTenant(SUPER_TENANT_ID, SUPER_TENANT_DOMAIN_NAME);
    ComplexCondition condition = getSampleSearchCondition();
    Resources resources = configurationManager.getTenantResources(condition);
    assertTrue(isSearchConditionMatch(resources));
}
Also used : ResourceType(org.wso2.carbon.identity.configuration.mgt.core.model.ResourceType) Resources(org.wso2.carbon.identity.configuration.mgt.core.model.Resources) ComplexCondition(org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition) Test(org.testng.annotations.Test) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest)

Aggregations

ComplexCondition (org.wso2.carbon.identity.configuration.mgt.core.search.ComplexCondition)8 ArrayList (java.util.ArrayList)6 Condition (org.wso2.carbon.identity.configuration.mgt.core.search.Condition)6 PrimitiveCondition (org.wso2.carbon.identity.configuration.mgt.core.search.PrimitiveCondition)6 SearchCondition (org.apache.cxf.jaxrs.ext.search.SearchCondition)4 PrimitiveStatement (org.apache.cxf.jaxrs.ext.search.PrimitiveStatement)2 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)2 Test (org.testng.annotations.Test)2 ResourceSearchBean (org.wso2.carbon.identity.configuration.mgt.core.model.ResourceSearchBean)2 ResourceType (org.wso2.carbon.identity.configuration.mgt.core.model.ResourceType)2 Resources (org.wso2.carbon.identity.configuration.mgt.core.model.Resources)2