@Override @SuppressWarnings({"unchecked"}) public Set<Pair<String, Class>> findEntityTypes(Number revision) throws IllegalStateException, IllegalArgumentException { checkNotNull(revision, "Entity revision"); checkPositive(revision, "Entity revision"); checkSession(); final Session session = auditReaderImplementor.getSession(); final SessionImplementor sessionImplementor = auditReaderImplementor.getSessionImplementor(); final Set<Number> revisions = new HashSet<Number>(1); revisions.add(revision); final Criteria query = verCfg.getRevisionInfoQueryCreator().getRevisionsQuery(session, revisions); final Object revisionInfo = query.uniqueResult(); if (revisionInfo != null) { // If revision exists. final Set<String> entityNames = verCfg.getModifiedEntityNamesReader().getModifiedEntityNames(revisionInfo); if (entityNames != null) { // Generate result that contains entity names and corresponding Java classes. final Set<Pair<String, Class>> result = new HashSet<Pair<String, Class>>(); for (String entityName : entityNames) { result.add( Pair.make( entityName, EntityTools.getEntityClass(sessionImplementor, session, entityName))); } return result; } } return Collections.EMPTY_SET; }
private void checkSession() { if (!auditReaderImplementor.getSession().isOpen()) { throw new IllegalStateException("The associated entity manager is closed!"); } }