public static AuditReader get(Session session) throws AuditException {
SessionImplementor sessionImpl = (SessionImplementor) session;
EventListeners listeners = sessionImpl.getListeners();
for (PostInsertEventListener listener : listeners.getPostInsertEventListeners()) {
if (listener instanceof AuditEventListener) {
if (arrayIncludesInstanceOf(listeners.getPostUpdateEventListeners(), AuditEventListener.class) &&
arrayIncludesInstanceOf(listeners.getPostDeleteEventListeners(), AuditEventListener.class)) {
return new AuditReaderImpl(((AuditEventListener) listener).getVerCfg(), session,
sessionImpl);
}
}
}
throw new AuditException("You need to install the org.hibernate.envers.event.AuditEventListener " +
"class as post insert, update and delete event listener.");
}
|