[hibernate-commits] Hibernate SVN: r15834 - in core/trunk/envers/src: test/java/org/hibernate/envers/test/integration/accesstype and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Jan 30 05:39:53 EST 2009


Author: adamw
Date: 2009-01-30 05:39:53 -0500 (Fri, 30 Jan 2009)
New Revision: 15834

Added:
   core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/accesstype/Country.java
   core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/accesstype/ImmutableClassAccessType.java
Modified:
   core/trunk/envers/src/main/java/org/hibernate/envers/entities/EntityInstantiator.java
Log:
HHH-3736: fix and testcase.

Thank you to Erik-Berndt Scheper for providing the patches!

Modified: core/trunk/envers/src/main/java/org/hibernate/envers/entities/EntityInstantiator.java
===================================================================
--- core/trunk/envers/src/main/java/org/hibernate/envers/entities/EntityInstantiator.java	2009-01-30 08:28:30 UTC (rev 15833)
+++ core/trunk/envers/src/main/java/org/hibernate/envers/entities/EntityInstantiator.java	2009-01-30 10:39:53 UTC (rev 15834)
@@ -32,6 +32,7 @@
 import org.hibernate.envers.exception.AuditException;
 import org.hibernate.envers.reader.AuditReaderImplementor;
 import org.hibernate.envers.tools.reflection.ReflectionTools;
+import org.hibernate.util.ReflectHelper;
 
 /**
  * @author Adam Warski (adam at warski dot org)
@@ -80,7 +81,7 @@
         Object ret;
         try {
             Class<?> cls = ReflectionTools.loadClass(entityName);
-            ret = cls.newInstance();
+            ret = ReflectHelper.getDefaultConstructor(cls).newInstance();
         } catch (Exception e) {
             throw new AuditException(e);
         }

Added: core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/accesstype/Country.java
===================================================================
--- core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/accesstype/Country.java	                        (rev 0)
+++ core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/accesstype/Country.java	2009-01-30 10:39:53 UTC (rev 15834)
@@ -0,0 +1,72 @@
+package org.hibernate.envers.test.integration.accesstype;
+
+import org.hibernate.envers.Audited;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+ at Entity
+ at Audited
+public class Country {
+	@Id
+	@Column(length = 4)
+	private Integer code;
+
+	@Column(length = 40)
+	private String name;
+
+	/**
+	 * Default constructor for persistence provider.
+	 */
+	@SuppressWarnings({"UnusedDeclaration"})
+	private Country() { }
+
+	private Country(Integer code, String naam) {
+		this.code = code;
+		this.name = naam;
+	}
+
+	public Integer getCode() {
+		return code;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public static Country of(Integer code, String name) {
+		return new Country(code, name);
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((code == null) ? 0 : code.hashCode());
+		result = prime * result + ((name == null) ? 0 : name.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		Country other = (Country) obj;
+		if (code == null) {
+			if (other.code != null)
+				return false;
+		} else if (!code.equals(other.code))
+			return false;
+		if (name == null) {
+			if (other.name != null)
+				return false;
+		} else if (!name.equals(other.name))
+			return false;
+		return true;
+	}
+}

Added: core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/accesstype/ImmutableClassAccessType.java
===================================================================
--- core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/accesstype/ImmutableClassAccessType.java	                        (rev 0)
+++ core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/accesstype/ImmutableClassAccessType.java	2009-01-30 10:39:53 UTC (rev 15834)
@@ -0,0 +1,50 @@
+package org.hibernate.envers.test.integration.accesstype;
+
+import java.util.Arrays;
+
+import javax.persistence.EntityManager;
+
+import org.hibernate.ejb.Ejb3Configuration;
+import org.hibernate.envers.test.AbstractEntityTest;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
+
+public class ImmutableClassAccessType extends AbstractEntityTest {
+	private Country country;
+
+	public void configure(Ejb3Configuration cfg) {
+		cfg.addAnnotatedClass(Country.class);
+	}
+
+	@BeforeClass(dependsOnMethods = "init")
+	public void initData() {
+		EntityManager em = getEntityManager();
+
+		// Revision 1
+		em.getTransaction().begin();
+		country = Country.of(123, "Germany");
+		em.persist(country);
+		em.getTransaction().commit();
+
+	}
+
+	@Test
+	public void testRevisionsCounts() {
+		assert Arrays.asList(1)
+				.equals(
+						getAuditReader().getRevisions(Country.class,
+								country.getCode()));
+	}
+
+	@Test
+	public void testHistoryOfId1() {
+		Country country1 = getEntityManager().find(Country.class,
+				country.getCode());
+		assertEquals(country1, country);
+
+		Country history = getAuditReader().find(Country.class, country1.getCode(), 1);
+		assertEquals(country, history);
+	}
+
+}
\ No newline at end of file




More information about the hibernate-commits mailing list