/** * Creates a new session and auditReader. */ public void forceNewSession() { session = getSessionFactory().openSession(); auditReader = AuditReaderFactory.get( session ); }
protected AuditReader getAuditReader() { if ( auditReader != null ) { return auditReader; } return auditReader = AuditReaderFactory.get( getOrCreateEntityManager() ); }
/** * Create an audit reader associated with an open entity manager. * * @param entityManager An open entity manager. * * @return An audit reader associated with the given entity manager. It shouldn't be used * after the entity manager is closed. * * @throws AuditException When the given entity manager is not based on Hibernate, or if the required * listeners aren't installed. */ public static AuditReader get(EntityManager entityManager) throws AuditException { if ( entityManager.getDelegate() instanceof Session ) { return get( (Session) entityManager.getDelegate() ); } if ( entityManager.getDelegate() instanceof EntityManager ) { return get( (EntityManager) entityManager.getDelegate() ); } throw new AuditException( "Hibernate EntityManager not present!" ); } }
private void printAddressAtRevision(StringBuilder sb, int addressId, int revision) { AuditReader reader = AuditReaderFactory.get(entityManager); Address a = reader.find(Address.class, addressId, revision); if (a == null) { sb.append("This address does not exist at that revision."); } else { printAddress(sb, a); } }
private void printPersonAtRevision(StringBuilder sb, int personId, int revision) { AuditReader reader = AuditReaderFactory.get(entityManager); Person p = reader.find(Person.class, personId, revision); if (p == null) { sb.append("This person does not exist at that revision."); } else { printPerson(sb, p); } }
/** * Creates a new session and auditReader only if there is nothing created * before */ @Before public void initializeSession() { if ( getSession() == null ) { session = getSessionFactory().openSession(); auditReader = AuditReaderFactory.get( session ); } }
@Before public void newEntityManager() { closeEntityManager(); entityManager = emf.createEntityManager(); if ( audited ) { auditReader = AuditReaderFactory.get( entityManager ); } }
private void printAddressHistory(StringBuilder sb, int addressId) { AuditReader reader = AuditReaderFactory.get(entityManager); List addressHistory = reader.createQuery() .forRevisionsOfEntity(Address.class, false, true) .add(AuditEntity.id().eq(addressId)) .getResultList(); if (addressHistory.size() == 0) { sb.append("A address with id ").append(addressId).append(" does not exist.\n"); } else { for (Object historyObj : addressHistory) { Object[] history = (Object[]) historyObj; DefaultRevisionEntity revision = (DefaultRevisionEntity) history[1]; sb.append("revision = ").append(revision.getId()).append(", "); printAddress(sb, (Address) history[0]); sb.append(" (").append(revision.getRevisionDate()).append(")\n"); } } }
private void printPersonHistory(StringBuilder sb, int personId) { AuditReader reader = AuditReaderFactory.get(entityManager); List personHistory = reader.createQuery() .forRevisionsOfEntity(Person.class, false, true) .add(AuditEntity.id().eq(personId)) .getResultList(); if (personHistory.size() == 0) { sb.append("A person with id ").append(personId).append(" does not exist.\n"); } else { for (Object historyObj : personHistory) { Object[] history = (Object[]) historyObj; DefaultRevisionEntity revision = (DefaultRevisionEntity) history[1]; sb.append("revision = ").append(revision.getId()).append(", "); printPerson(sb, (Person) history[0]); sb.append(" (").append(revision.getRevisionDate()).append(")\n"); } } }
@Test public void testJpaEnvers() throws Exception { final ServiceReference serviceReference = bundleContext.getServiceReference( PersistenceProvider.class.getName() ); final PersistenceProvider persistenceProvider = (PersistenceProvider) bundleContext.getService( serviceReference ); final EntityManagerFactory emf = persistenceProvider.createEntityManagerFactory( "hibernate-osgi-test", null ); final Integer adpId; EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); AuditedDataPoint adp = new AuditedDataPoint( "Chris" ); em.persist( adp ); em.getTransaction().commit(); adpId = adp.getId(); em.close(); em = emf.createEntityManager(); em.getTransaction().begin(); adp = em.find( AuditedDataPoint.class, adpId ); adp.setName( "Chris2" ); em.getTransaction().commit(); em.close(); em = emf.createEntityManager(); AuditReader ar = AuditReaderFactory.get( em ); assertEquals( 2, ar.getRevisions( AuditedDataPoint.class, adpId ).size() ); AuditedDataPoint rev1 = ar.find( AuditedDataPoint.class, adpId, 1 ); AuditedDataPoint rev2 = ar.find( AuditedDataPoint.class, adpId, 2 ); assertEquals( new AuditedDataPoint( adpId, "Chris" ), rev1 ); assertEquals( new AuditedDataPoint( adpId, "Chris2" ), rev2 ); em.close(); }
@Test public void testEmbeddableThatExtendsMappedSuperclass() { // Reload and Compare Revision EntityManager em = getEntityManager(); em.getTransaction().begin(); EntityWithEmbeddableWithNoDeclaredData entityLoaded = em.find( EntityWithEmbeddableWithNoDeclaredData.class, id ); AuditReader reader = AuditReaderFactory.get( em ); List<Number> revs = reader.getRevisions( EntityWithEmbeddableWithNoDeclaredData.class, id ); Assert.assertEquals( 1, revs.size() ); EntityWithEmbeddableWithNoDeclaredData entityRev1 = reader.find( EntityWithEmbeddableWithNoDeclaredData.class, id, revs.get( 0 ) ); em.getTransaction().commit(); Assert.assertEquals( entityLoaded.getName(), entityRev1.getName() ); // value should be null because there is no data in EmbeddableWithNoDeclaredData // and the fields in AbstractEmbeddable should not be audited. Assert.assertNull( entityRev1.getValue() ); } }
@Test public void testNativeEnvers() throws Exception { final ServiceReference sr = bundleContext.getServiceReference( SessionFactory.class.getName() ); final SessionFactory sf = ( SessionFactory )bundleContext.getService( sr ); final Integer adpId; Session s = sf.openSession(); s.getTransaction().begin(); AuditedDataPoint adp = new AuditedDataPoint( "Chris" ); s.persist( adp ); s.getTransaction().commit(); adpId = adp.getId(); s.close(); s = sf.openSession(); s.getTransaction().begin(); adp = s.get( AuditedDataPoint.class, adpId ); adp.setName( "Chris2" ); s.getTransaction().commit(); s.close(); s = sf.openSession(); AuditReader ar = AuditReaderFactory.get( s ); assertEquals( 2, ar.getRevisions( AuditedDataPoint.class, adpId ).size() ); AuditedDataPoint rev1 = ar.find( AuditedDataPoint.class, adpId, 1 ); AuditedDataPoint rev2 = ar.find( AuditedDataPoint.class, adpId, 2 ); assertEquals( new AuditedDataPoint( adpId, "Chris" ), rev1 ); assertEquals( new AuditedDataPoint( adpId, "Chris2" ), rev2 ); s.close(); }
@Test @FailureExpected( jiraKey = "HHH-9193" ) public void testEmbeddableThatExtendsMappedSuperclass() { // Reload and Compare Revision EntityManager em = getEntityManager(); em.getTransaction().begin(); EntityWithEmbeddableWithDeclaredData entityLoaded = em.find( EntityWithEmbeddableWithDeclaredData.class, id ); AuditReader reader = AuditReaderFactory.get( em ); List<Number> revs = reader.getRevisions( EntityWithEmbeddableWithDeclaredData.class, id ); Assert.assertEquals( 1, revs.size() ); EntityWithEmbeddableWithDeclaredData entityRev1 = reader.find( EntityWithEmbeddableWithDeclaredData.class, id, revs.get( 0 ) ); em.getTransaction().commit(); Assert.assertEquals( entityLoaded.getName(), entityRev1.getName() ); // only value.codeArt should be audited because it is the only audited field in EmbeddableWithDeclaredData; // fields in AbstractEmbeddable should not be audited. Assert.assertEquals( entityLoaded.getValue().getCodeart(), entityRev1.getValue().getCodeart() ); Assert.assertNull( entityRev1.getValue().getCode() ); } }
protected AuditReader getAuditReader() { Session session = getSession(); if(session.getTransaction().getStatus() != TransactionStatus.ACTIVE ){ session.getTransaction().begin(); } return AuditReaderFactory.get( getSession() ); }
@Test public void testEnversCompatibility() throws Exception { // revision 1 userTransaction.begin(); entityManager.joinTransaction(); AuditedEntity entity = new AuditedEntity( 1, "Marco Polo" ); entityManager.persist( entity ); userTransaction.commit(); // revision 2 userTransaction.begin(); entityManager.joinTransaction(); entity.setName( "George Washington" ); entityManager.merge( entity ); userTransaction.commit(); entityManager.clear(); // verify audit history revision counts userTransaction.begin(); final AuditReader auditReader = AuditReaderFactory.get( entityManager ); assertEquals( Arrays.asList( 1, 2 ), auditReader.getRevisions( AuditedEntity.class, 1 ) ); userTransaction.commit(); } }
"org.hibernate.userguide.envers.EntityTypeChangeAuditTest$Customer", AuditReaderFactory .get( entityManager ) .getCrossTypeRevisionChangesReader() .findEntityTypes( 1 ) "org.hibernate.userguide.envers.EntityTypeChangeAuditTest$ApplicationCustomer", AuditReaderFactory .get( entityManager ) .getCrossTypeRevisionChangesReader() .findEntityTypes( 2 )
AuditReader auditReader = AuditReaderFactory.get( entityManager );
return AuditReaderFactory.get( entityManager ).getRevisions( Customer.class, 1L .get( entityManager ) .createQuery() .forEntitiesAtRevision( Customer.class, revisions.get( 0 ) ) .get( entityManager ) .createQuery() .forEntitiesAtRevision( Customer.class, revisions.get( 1 ) ) try { Customer customer = (Customer) AuditReaderFactory .get( entityManager ) .createQuery() .forEntitiesAtRevision( Customer.class, revisions.get( 2 ) ) .get( entityManager ) .createQuery() .forEntitiesAtRevision(
.get( entityManager ) .createQuery() .forEntitiesAtRevision( Customer.class, 1 ) .get( entityManager ) .createQuery() .forEntitiesAtRevision( Customer.class, 1 ) .get( entityManager ) .createQuery() .forEntitiesAtRevision( Customer.class, 1 ) List<Number> revisions = AuditReaderFactory.get( entityManager ).getRevisions( Customer.class, 1L .get( entityManager ) .createQuery() .forEntitiesAtRevision( Customer.class, revisions.get( revisions.size() - 1 ) )