public static <T> void assertEqualsFilterValue(EqualFilter filter, T value) { List<? extends PrismValue> values = filter.getValues(); assertEquals("Wrong number of filter values", 1, values.size()); assertTrue("Wrong filter value class: " + values.get(0).getClass(), values.get(0) instanceof PrismPropertyValue); PrismPropertyValue val = (PrismPropertyValue) values.get(0); assertEquals("Wrong filter value", value, val.getValue()); }
ItemPath parentPath = eqFilter.getParentPath(); if (!parentPath.equivalent(SchemaConstants.PATH_ATTRIBUTES)) { return; QName attrName = eqFilter.getElementName(); RefinedAttributeDefinition rAttrDef = objectClassDef.findAttributeDefinition(attrName); if (rAttrDef == null) { MatchingRule<T> matchingRule = matchingRuleRegistry.getMatchingRule(matchingRuleQName, rAttrDef.getTypeName()); List<PrismValue> newValues = new ArrayList<>(); if (eqFilter.getValues() != null) { for (PrismPropertyValue<T> ppval : eqFilter.getValues()) { T normalizedRealValue = matchingRule.normalize(ppval.getValue()); PrismPropertyValue<T> newPPval = ppval.clone(); eqFilter.getValues().clear(); eqFilter.getValues().addAll((Collection) newValues); LOGGER.trace("Replacing values for attribute {} in search filter with normalized values because there is a matching rule, normalized values: {}", attrName, newValues); if (eqFilter.getMatchingRule() == null) { QName supportedMatchingRule = valueClass != null ? repositoryService.getApproximateSupportedMatchingRule(valueClass, matchingRuleQName) : matchingRuleQName; eqFilter.setMatchingRule(supportedMatchingRule); LOGGER.trace("Setting matching rule to {} (supported by repo as a replacement for {} to search for {})", supportedMatchingRule, matchingRuleQName, valueClass);
public static void assertEqualsFilter(ObjectFilter objectFilter, QName expectedFilterDef, QName expectedTypeName, ItemPath path) { assertTrue("Wrong filter class: " + objectFilter.getClass(), objectFilter instanceof EqualFilter); EqualFilter filter = (EqualFilter) objectFilter; //we don't have definition in all situation..this is almost OK..it will be computed dynamicaly if (filter.getDefinition() != null){ assertEquals("Wrong filter definition element name", expectedFilterDef, filter.getDefinition().getName()); assertEquals("Wrong filter definition type", expectedTypeName, filter.getDefinition().getTypeName()); } assertPathEquivalent("Wrong filter path", path, filter.getFullPath()); }
private RoleSelectionSpecEntry getRoleSelectionSpecEq(EqualFilter<String> eqFilter) throws SchemaException { if (QNameUtil.match(RoleType.F_ROLE_TYPE, eqFilter.getElementName()) || QNameUtil.match(RoleType.F_SUBTYPE, eqFilter.getElementName())) { List<PrismPropertyValue<String>> ppvs = eqFilter.getValues(); if (ppvs.size() > 1) { throw new SchemaException("More than one value in roleType search filter"); } String roleType = ppvs.get(0).getValue(); RoleSelectionSpecEntry roleTypeDval = new RoleSelectionSpecEntry(roleType, roleType, null); return roleTypeDval; } return null; }
private static <T extends PrismValue> Collection<T> getValuesFromFilter(ObjectFilter filter, QName itemName, PrismContext prismContext) throws SchemaException { ItemPath propertyPath = ItemName.fromQName(itemName); if (filter instanceof EqualFilter && propertyPath.equivalent(((EqualFilter) filter).getFullPath())) { return ((EqualFilter) filter).getValues(); } else if (filter instanceof RefFilter && propertyPath.equivalent(((RefFilter) filter).getFullPath())) { return (Collection<T>) ((RefFilter) filter).getValues(); } else if (filter instanceof AndFilter) { return getValuesFromFilter(((NaryLogicalFilter) filter).getConditions(), itemName, prismContext); } else if (filter instanceof TypeFilter) { return getValuesFromFilter(((TypeFilter) filter).getFilter(), itemName, prismContext); } else { return null; } }
assertTrue("Wrong kind of filter: " + objectFilter, objectFilter instanceof EqualFilter); EqualFilter equalFilter = (EqualFilter) objectFilter; ItemPath path = equalFilter.getPath(); // should be extension/x:extConnType PrismAsserts.assertPathEqualsExceptForPrefixes("Wrong filter path", namespaces ? ItemPath.create(new QName("extension"), new QName("extConnType")), path); PrismPropertyValue filterValue = (PrismPropertyValue) equalFilter.getValues().get(0); assertEquals("Wrong filter value", "org.identityconnectors.ldap.LdapConnector", ((RawType) filterValue.getValue()).getParsedRealValue(String.class).trim());
@Test public void test140EvaluateExpressionEmployeeTypeEmptyFilter() throws Exception { final String TEST_NAME = "testEvaluateExpressionEmployeeTypeEmptyFilter"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TestFilterExpression.class.getName() + "." + TEST_NAME); Task task = taskManager.createTaskInstance(TEST_NAME); ObjectFilter filter = evaluateExpressionAssertFilter("expression-employeeType-empty-filter.xml", null, EqualFilter.class, task, result); EqualFilter equalFilter = (EqualFilter) filter; AssertJUnit.assertNull("Expected NO values in filter, but found " + equalFilter.getValues(), equalFilter.getValues()); executeFilter(filter, 4, task, result); }
@Test public void test150EvaluateExpressionEmployeeTypeDefaultsNull() throws Exception { final String TEST_NAME = "test150EvaluateExpressionEmployeeTypeDefaultsNull"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TestFilterExpression.class.getName() + "." + TEST_NAME); Task task = taskManager.createTaskInstance(TEST_NAME); ObjectFilter filter = evaluateExpressionAssertFilter("expression-employeeType-filter-defaults.xml", null, EqualFilter.class, task, result); EqualFilter equalFilter = (EqualFilter) filter; AssertJUnit.assertNull("Expected NO values in filter, but found " + equalFilter.getValues(), equalFilter.getValues()); executeFilter(filter, 4, task, result); }
@Test public void test152EvaluateExpressionEmployeeTypeDefaultsCaptain() throws Exception { final String TEST_NAME = "test152EvaluateExpressionEmployeeTypeDefaultsCaptain"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TestFilterExpression.class.getName() + "." + TEST_NAME); Task task = taskManager.createTaskInstance(TEST_NAME); ObjectFilter filter = evaluateExpressionAssertFilter("expression-employeeType-filter-defaults.xml", "CAPTAIN", EqualFilter.class, task, result); EqualFilter equalFilter = (EqualFilter) filter; PrismAsserts.assertValues("Wrong values in filter", equalFilter.getValues(), "CAPTAIN"); executeFilter(filter, 1, task, result); }
EqualFilter<T> eq = (EqualFilter<T>) objectFilter; Collection<Object> convertedValues = convertValues(propName, eq.getValues()); if (convertedValues == null || convertedValues.isEmpty()) { QName propName = valueFilter.getDefinition().getName(); EqualFilter<T> eq = (EqualFilter<T>) objectFilter; List<PrismPropertyValue<T>> values = eq.getValues(); if (values.size() != 1) { throw new SchemaException("Unexpected number of values in filter "+objectFilter);