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;
+
+@Entity
+@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
Show replies by date