private MapXNodeImpl serializeNotFilter(NotFilter filter, PrismSerializer<RootXNode> xnodeSerializer) throws SchemaException{ return createFilter(CLAUSE_NOT, serializeFilter(filter.getFilter(), xnodeSerializer)); }
ObjectFilter subfilter = ((NotFilter)filter).getFilter(); ObjectFilter simplifiedSubfilter = simplify(subfilter, prismContext); if (simplifiedSubfilter instanceof NoneFilter) { return FilterCreationUtil.createNone(prismContext); } else { NotFilter simplifiedFilter = ((NotFilter)filter).cloneEmpty(); simplifiedFilter.setFilter(simplifiedSubfilter); return simplifiedFilter;
if (not.getFilter() == null){ LOGGER.debug("Not filter does not contain any condition. Skipping processing not filter."); return null;
return getRoleSelectionSpecEntries(((TypeFilter)filter).getFilter()); } else if (filter instanceof NotFilter) { Collection<RoleSelectionSpecEntry> subRoleSelectionSpec = getRoleSelectionSpecEntries(((NotFilter)filter).getFilter()); RoleSelectionSpecEntry.negate(subRoleSelectionSpec); return subRoleSelectionSpec;
@Test public void testFilterNotFullText() throws Exception { displayTestTitle("testFilterNotFullText"); SearchFilterType filterType = PrismTestUtil.parseAnyValue(FILTER_NOT_FULL_TEXT); ObjectQuery query = toObjectQuery(UserType.class, filterType); displayQuery(query); assertNotNull(query); ObjectFilter filter = query.getFilter(); assertTrue("Filter is not of NOT type", filter instanceof NotFilter); ObjectFilter subFilter = ((NotFilter) filter).getFilter(); assertTrue("Subfilter is not of FULL_TEXT type", subFilter instanceof FullTextFilter); QueryType convertedQueryType = toQueryType(query); System.out.println("Re-converted query type"); System.out.println(convertedQueryType.debugDump()); Element filterClauseElement = convertedQueryType.getFilter().getFilterClauseAsElement(getPrismContext()); LOGGER.info(convertedQueryType.getFilter().getFilterClauseXNode().debugDump()); System.out.println("Serialized filter (JAXB->DOM)"); String filterAsString = DOMUtil.serializeDOMToString(filterClauseElement); System.out.println(filterAsString); LOGGER.info(filterAsString); DomAsserts.assertElementQName(filterClauseElement, new QName(PrismConstants.NS_QUERY, "not")); assertEquals("wrong # of fullText subfilters", 1, filterClauseElement.getElementsByTagNameNS(PrismConstants.NS_QUERY, "fullText").getLength()); assertEquals("wrong # of value subfilters", 2, filterClauseElement.getElementsByTagNameNS(PrismConstants.NS_QUERY, "value").getLength()); }
@Test public void testFilterNotInOid() throws Exception { displayTestTitle("testFilterNotInOid"); SearchFilterType filterType = PrismTestUtil.parseAnyValue(FILTER_NOT_IN_OID); ObjectQuery query = toObjectQuery(UserType.class, filterType); displayQuery(query); assertNotNull(query); ObjectFilter filter = query.getFilter(); assertTrue("Filter is not of NOT type", filter instanceof NotFilter); ObjectFilter subFilter = ((NotFilter) filter).getFilter(); assertTrue("Subfilter is not of IN_OID type", subFilter instanceof InOidFilter); QueryType convertedQueryType = toQueryType(query); System.out.println("Re-converted query type"); System.out.println(convertedQueryType.debugDump()); Element filterClauseElement = convertedQueryType.getFilter().getFilterClauseAsElement(getPrismContext()); LOGGER.info(convertedQueryType.getFilter().getFilterClauseXNode().debugDump()); System.out.println("Serialized filter (JAXB->DOM)"); String filterAsString = DOMUtil.serializeDOMToString(filterClauseElement); System.out.println(filterAsString); LOGGER.info(filterAsString); DomAsserts.assertElementQName(filterClauseElement, new QName(PrismConstants.NS_QUERY, "not")); assertEquals("wrong # of inOid subfilters", 1, filterClauseElement.getElementsByTagNameNS(PrismConstants.NS_QUERY, "inOid").getLength()); assertEquals("wrong # of value subfilters", 4, filterClauseElement.getElementsByTagNameNS(PrismConstants.NS_QUERY, "value").getLength()); }