/** * Both ObjectType and AssignmentHolderType are mapped to RObject. So when searching for AssignmentHolderType it is not sufficient to * query this table. This method hacks this situation a bit by introducing explicit type filter for AssignmentHolderType. */ private ObjectQuery refineAssignmentHolderQuery(Class<? extends Containerable> type, ObjectQuery query) { if (!type.equals(AssignmentHolderType.class)) { return query; } if (query == null) { query = prismContext.queryFactory().createQuery(); } query.setFilter(prismContext.queryFactory().createType(AssignmentHolderType.COMPLEX_TYPE, query.getFilter())); return query; } }
@Test public void test0540queryObjectClassTypeUser() throws Exception { Session session = open(); try { TypeFilter type = prismContext.queryFactory().createType(UserType.COMPLEX_TYPE, null); String real = getInterpretedQuery2(session, ObjectType.class, prismContext.queryFactory().createQuery(type)); String expected = "select\n" + " o.oid, o.fullObject,\n" + " o.stringsCount,\n" + " o.longsCount,\n" + " o.datesCount,\n" + " o.referencesCount,\n" + " o.polysCount,\n" + " o.booleansCount\n" + "from\n" + " RObject o\n" + "where\n" + " o.objectTypeClass = :objectTypeClass\n"; assertEqualsIgnoreWhitespace(expected, real); } finally { close(session); } }
@Test public void test0550queryObjectClassTypeAbstractRole() throws Exception { Session session = open(); try { TypeFilter type = prismContext.queryFactory().createType(AbstractRoleType.COMPLEX_TYPE, null); String real = getInterpretedQuery2(session, ObjectType.class, prismContext.queryFactory().createQuery(type)); String expected = "select\n" + " o.oid, o.fullObject,\n" + " o.stringsCount,\n" + " o.longsCount,\n" + " o.datesCount,\n" + " o.referencesCount,\n" + " o.polysCount,\n" + " o.booleansCount\n" + "from\n" + " RObject o\n" + "where\n" + " o.objectTypeClass in (:objectTypeClass)"; assertEqualsIgnoreWhitespace(expected, real); } finally { close(session); } }
objSpecTypeFilter = prismContext.queryFactory().createType(specTypeQName, null); prismContext.queryFactory().createType(specTypeQName, specialFilter) : specialFilter; } else { LOGGER.trace(" specials empty: {}", specSpecial);