/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.envers.test.integration.collection.norevision;
import java.util.List;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.envers.configuration.EnversSettings;
import org.hibernate.envers.test.BaseEnversFunctionalTestCase;
import org.hibernate.envers.test.Priority;
import org.junit.Test;
public abstract class AbstractCollectionChangeTest extends BaseEnversFunctionalTestCase {
protected Integer personId;
@Override
protected void addSettings(Map settings) {
super.addSettings( settings );
settings.put( EnversSettings.REVISION_ON_COLLECTION_CHANGE, getCollectionChangeValue() );
}
@Override
protected Class<?>[] getAnnotatedClasses() {
return new Class[] {Person.class, Name.class};
}
protected abstract String getCollectionChangeValue();
protected abstract List<Integer> getExpectedPersonRevisions();
@Test
@Priority(10)
public void initData() {
Session session = openSession();
// Rev 1
session.getTransaction().begin();
Person p = new Person();
Name n = new Name();
n.setName( "name1" );
p.getNames().add( n );
session.saveOrUpdate( p );
session.getTransaction().commit();
// Rev 2
session.getTransaction().begin();
n.setName( "Changed name" );
session.saveOrUpdate( p );
session.getTransaction().commit();
// Rev 3
session.getTransaction().begin();
Name n2 = new Name();
n2.setName( "name2" );
p.getNames().add( n2 );
session.getTransaction().commit();
personId = p.getId();
session.close();
}
@Test
public void testPersonRevisionCount() {
assert getAuditReader().getRevisions( Person.class, personId ).equals( getExpectedPersonRevisions() );
}
}