Author: adamw
Date: 2008-09-21 08:51:09 -0400 (Sun, 21 Sep 2008)
New Revision: 153
Added:
trunk/src/test/org/jboss/envers/test/entities/collection/
trunk/src/test/org/jboss/envers/test/entities/collection/StringSetEntity.java
trunk/src/test/org/jboss/envers/test/integration/collection/
trunk/src/test/org/jboss/envers/test/integration/collection/StringSet.java
Modified:
trunk/resources/test/testng.xml
trunk/src/main/org/jboss/envers/configuration/metadata/CollectionMetadataGenerator.java
Log:
ENVERS-42: support for sets, with a test
Modified: trunk/resources/test/testng.xml
===================================================================
--- trunk/resources/test/testng.xml 2008-09-21 12:21:25 UTC (rev 152)
+++ trunk/resources/test/testng.xml 2008-09-21 12:51:09 UTC (rev 153)
@@ -4,6 +4,7 @@
<test name="All">
<packages>
<package name="org.jboss.envers.test.integration.basic" />
+ <package name="org.jboss.envers.test.integration.collection"
/>
<package name="org.jboss.envers.test.integration.components"
/>
<package name="org.jboss.envers.test.integration.data" />
<package name="org.jboss.envers.test.integration.flush" />
Modified:
trunk/src/main/org/jboss/envers/configuration/metadata/CollectionMetadataGenerator.java
===================================================================
---
trunk/src/main/org/jboss/envers/configuration/metadata/CollectionMetadataGenerator.java 2008-09-21
12:21:25 UTC (rev 152)
+++
trunk/src/main/org/jboss/envers/configuration/metadata/CollectionMetadataGenerator.java 2008-09-21
12:51:09 UTC (rev 153)
@@ -261,12 +261,16 @@
// ******
// Storing information about this relation.
// ******
- if (value.isInverse()) {
-
mainGenerator.getEntitiesConfigurations().get(entityName).addToManyMiddleNotOwningRelation(name,
mappedBy,
- referencedEntityName);
- } else {
-
mainGenerator.getEntitiesConfigurations().get(entityName).addToManyMiddleRelation(name,
- referencedEntityName);
+
+ // Only if this is a relation (when there is a referenced entity).
+ if (referencedEntityName != null) {
+ if (value.isInverse()) {
+
mainGenerator.getEntitiesConfigurations().get(entityName).addToManyMiddleNotOwningRelation(name,
mappedBy,
+ referencedEntityName);
+ } else {
+
mainGenerator.getEntitiesConfigurations().get(entityName).addToManyMiddleRelation(name,
+ referencedEntityName);
+ }
}
}
Added: trunk/src/test/org/jboss/envers/test/entities/collection/StringSetEntity.java
===================================================================
--- trunk/src/test/org/jboss/envers/test/entities/collection/StringSetEntity.java
(rev 0)
+++
trunk/src/test/org/jboss/envers/test/entities/collection/StringSetEntity.java 2008-09-21
12:51:09 UTC (rev 153)
@@ -0,0 +1,63 @@
+package org.jboss.envers.test.entities.collection;
+
+import org.jboss.envers.Versioned;
+import org.hibernate.annotations.CollectionOfElements;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.GeneratedValue;
+import java.util.Set;
+import java.util.HashSet;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+@Entity
+public class StringSetEntity {
+ @Id
+ @GeneratedValue
+ private Integer id;
+
+ @Versioned
+ @CollectionOfElements
+ private Set<String> strings;
+
+ public StringSetEntity() {
+ strings = new HashSet<String>();
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Set<String> getStrings() {
+ return strings;
+ }
+
+ public void setStrings(Set<String> strings) {
+ this.strings = strings;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof StringSetEntity)) return false;
+
+ StringSetEntity that = (StringSetEntity) o;
+
+ if (id != null ? !id.equals(that.id) : that.id != null) return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ return (id != null ? id.hashCode() : 0);
+ }
+
+ public String toString() {
+ return "SSE(id = " + id + ", strings = " + strings +
")";
+ }
+}
\ No newline at end of file
Copied: trunk/src/test/org/jboss/envers/test/integration/collection/StringSet.java (from
rev 148, trunk/src/test/org/jboss/envers/test/integration/manytomany/BasicSet.java)
===================================================================
--- trunk/src/test/org/jboss/envers/test/integration/collection/StringSet.java
(rev 0)
+++ trunk/src/test/org/jboss/envers/test/integration/collection/StringSet.java 2008-09-21
12:51:09 UTC (rev 153)
@@ -0,0 +1,101 @@
+package org.jboss.envers.test.integration.collection;
+
+import org.jboss.envers.test.integration.AbstractEntityTest;
+import org.jboss.envers.test.tools.TestTools;
+import org.jboss.envers.test.entities.collection.StringSetEntity;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.hibernate.ejb.Ejb3Configuration;
+
+import javax.persistence.EntityManager;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class StringSet extends AbstractEntityTest {
+ private Integer sse1_id;
+ private Integer sse2_id;
+
+ public void configure(Ejb3Configuration cfg) {
+ cfg.addAnnotatedClass(StringSetEntity.class);
+ }
+
+ @BeforeClass(dependsOnMethods = "init")
+ public void initData() {
+ EntityManager em = getEntityManager();
+
+ StringSetEntity sse1 = new StringSetEntity();
+ StringSetEntity sse2 = new StringSetEntity();
+
+ // Revision 1
+ em.getTransaction().begin();
+
+ sse2.getStrings().add("sse2_string1");
+
+ em.persist(sse1);
+ em.persist(sse2);
+
+ em.getTransaction().commit();
+
+ // Revision 2
+
+ em.getTransaction().begin();
+
+ sse1 = em.find(StringSetEntity.class, sse1.getId());
+ sse2 = em.find(StringSetEntity.class, sse2.getId());
+
+ sse1.getStrings().add("sse1_string1");
+ sse1.getStrings().add("sse1_string2");
+
+ sse2.getStrings().add("sse2_string1");
+
+ em.getTransaction().commit();
+
+ // Revision 3
+ em.getTransaction().begin();
+
+ sse1 = em.find(StringSetEntity.class, sse1.getId());
+ sse2 = em.find(StringSetEntity.class, sse2.getId());
+
+ sse1.getStrings().remove("sse1_string3");
+ sse2.getStrings().remove("sse2_string1");
+
+ em.getTransaction().commit();
+
+ //
+
+ sse1_id = sse1.getId();
+ sse2_id = sse2.getId();
+ }
+
+ @Test
+ public void testRevisionsCounts() {
+ assert Arrays.asList(1,
2).equals(getVersionsReader().getRevisions(StringSetEntity.class, sse1_id));
+ assert Arrays.asList(1,
3).equals(getVersionsReader().getRevisions(StringSetEntity.class, sse2_id));
+ }
+
+ @Test
+ public void testHistoryOfSse1() {
+ StringSetEntity rev1 = getVersionsReader().find(StringSetEntity.class, sse1_id,
1);
+ StringSetEntity rev2 = getVersionsReader().find(StringSetEntity.class, sse1_id,
2);
+ StringSetEntity rev3 = getVersionsReader().find(StringSetEntity.class, sse1_id,
3);
+
+ assert rev1.getStrings().equals(Collections.EMPTY_SET);
+ assert rev2.getStrings().equals(TestTools.makeSet("sse1_string1",
"sse1_string2"));
+ assert rev3.getStrings().equals(TestTools.makeSet("sse1_string1",
"sse1_string2"));
+ }
+
+ @Test
+ public void testHistoryOfSse2() {
+ StringSetEntity rev1 = getVersionsReader().find(StringSetEntity.class, sse2_id,
1);
+ StringSetEntity rev2 = getVersionsReader().find(StringSetEntity.class, sse2_id,
2);
+ StringSetEntity rev3 = getVersionsReader().find(StringSetEntity.class, sse2_id,
3);
+
+ assert rev1.getStrings().equals(TestTools.makeSet("sse2_string1"));
+ assert rev2.getStrings().equals(TestTools.makeSet("sse2_string1"));
+ assert rev3.getStrings().equals(Collections.EMPTY_SET);
+ }
+}
\ No newline at end of file
Property changes on:
trunk/src/test/org/jboss/envers/test/integration/collection/StringSet.java
___________________________________________________________________
Name: svn:mergeinfo
+