[hibernate-commits] Hibernate SVN: r18113 - in core/trunk/envers/src/test: java/org/hibernate/envers/test/entities/manytomany/biowned and 3 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Dec 2 07:09:57 EST 2009


Author: adamw
Date: 2009-12-02 07:09:56 -0500 (Wed, 02 Dec 2009)
New Revision: 18113

Added:
   core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/
   core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/ListBiowning1Entity.java
   core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/ListBiowning2Entity.java
   core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/manytomany/biowned/
   core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/manytomany/biowned/BasicBiowned.java
Modified:
   core/trunk/envers/src/test/resources/testng.xml
Log:
HHH-4634:
- testcase

Copied: core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/ListBiowning1Entity.java (from rev 18068, core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/ListOwningEntity.java)
===================================================================
--- core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/ListBiowning1Entity.java	                        (rev 0)
+++ core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/ListBiowning1Entity.java	2009-12-02 12:09:56 UTC (rev 18113)
@@ -0,0 +1,110 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.hibernate.envers.test.entities.manytomany.biowned;
+
+import java.util.List;
+import java.util.ArrayList;
+import javax.persistence.*;
+
+import org.hibernate.envers.Audited;
+
+/**
+ * Entity owning a many-to-many relation, where the other entity also owns the relation.
+ * @author Adam Warski (adam at warski dot org)
+ */
+ at Entity
+ at Audited
+public class ListBiowning1Entity {
+    @Id
+    private Integer id;
+
+    private String data;
+
+    @ManyToMany
+    @JoinTable(
+		name = "biowning",
+		joinColumns = @JoinColumn(name = "biowning1_id"),
+		inverseJoinColumns = @JoinColumn(name = "biowning2_id", insertable = false, updatable = false)
+	)
+    private List<ListBiowning2Entity> references = new ArrayList<ListBiowning2Entity>();
+
+    public ListBiowning1Entity() { }
+
+    public ListBiowning1Entity(Integer id, String data) {
+        this.id = id;
+        this.data = data;
+    }
+
+    public ListBiowning1Entity(String data) {
+        this.data = data;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getData() {
+        return data;
+    }
+
+    public void setData(String data) {
+        this.data = data;
+    }
+
+    public List<ListBiowning2Entity> getReferences() {
+        return references;
+    }
+
+    public void setReferences(List<ListBiowning2Entity> references) {
+        this.references = references;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof ListBiowning1Entity)) return false;
+
+        ListBiowning1Entity that = (ListBiowning1Entity) o;
+
+        if (data != null ? !data.equals(that.data) : that.data != null) return false;
+        //noinspection RedundantIfStatement
+        if (id != null ? !id.equals(that.id) : that.id != null) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        int result;
+        result = (id != null ? id.hashCode() : 0);
+        result = 31 * result + (data != null ? data.hashCode() : 0);
+        return result;
+    }
+
+    public String toString() {
+        return "ListBiowning1Entity(id = " + id + ", data = " + data + ")";
+    }
+}
\ No newline at end of file

Added: core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/ListBiowning2Entity.java
===================================================================
--- core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/ListBiowning2Entity.java	                        (rev 0)
+++ core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/manytomany/biowned/ListBiowning2Entity.java	2009-12-02 12:09:56 UTC (rev 18113)
@@ -0,0 +1,110 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.hibernate.envers.test.entities.manytomany.biowned;
+
+import java.util.List;
+import java.util.ArrayList;
+import javax.persistence.*;
+
+import org.hibernate.envers.Audited;
+
+/**
+ * Entity owning a many-to-many relation, where the other entity also owns the relation.
+ * @author Adam Warski (adam at warski dot org)
+ */
+ at Entity
+ at Audited
+public class ListBiowning2Entity {
+    @Id
+    private Integer id;
+
+    private String data;
+
+    @ManyToMany
+    @JoinTable(
+		name = "biowning",
+		joinColumns = @JoinColumn(name = "biowning2_id"),
+		inverseJoinColumns = @JoinColumn(name = "biowning1_id", insertable = false, updatable = false)
+	)
+    private List<ListBiowning1Entity> references = new ArrayList<ListBiowning1Entity>();
+
+    public ListBiowning2Entity() { }
+
+    public ListBiowning2Entity(Integer id, String data) {
+        this.id = id;
+        this.data = data;
+    }
+
+    public ListBiowning2Entity(String data) {
+        this.data = data;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getData() {
+        return data;
+    }
+
+    public void setData(String data) {
+        this.data = data;
+    }
+
+    public List<ListBiowning1Entity> getReferences() {
+        return references;
+    }
+
+    public void setReferences(List<ListBiowning1Entity> references) {
+        this.references = references;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof ListBiowning2Entity)) return false;
+
+        ListBiowning2Entity that = (ListBiowning2Entity) o;
+
+        if (data != null ? !data.equals(that.data) : that.data != null) return false;
+        //noinspection RedundantIfStatement
+        if (id != null ? !id.equals(that.id) : that.id != null) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        int result;
+        result = (id != null ? id.hashCode() : 0);
+        result = 31 * result + (data != null ? data.hashCode() : 0);
+        return result;
+    }
+
+    public String toString() {
+        return "ListBiowning2Entity(id = " + id + ", data = " + data + ")";
+    }
+}
\ No newline at end of file

Copied: core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/manytomany/biowned/BasicBiowned.java (from rev 18068, core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/manytomany/BasicList.java)
===================================================================
--- core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/manytomany/biowned/BasicBiowned.java	                        (rev 0)
+++ core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/manytomany/biowned/BasicBiowned.java	2009-12-02 12:09:56 UTC (rev 18113)
@@ -0,0 +1,211 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.hibernate.envers.test.integration.manytomany.biowned;
+
+import org.hibernate.ejb.Ejb3Configuration;
+import org.hibernate.envers.test.AbstractEntityTest;
+import org.hibernate.envers.test.entities.manytomany.biowned.ListBiowning1Entity;
+import org.hibernate.envers.test.entities.manytomany.biowned.ListBiowning2Entity;
+import org.hibernate.envers.test.tools.TestTools;
+import org.testng.annotations.Test;
+import org.testng.annotations.BeforeClass;
+
+import javax.persistence.EntityManager;
+import java.util.Arrays;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class BasicBiowned extends AbstractEntityTest {
+    private Integer o1_1_id;
+    private Integer o1_2_id;
+    private Integer o2_1_id;
+    private Integer o2_2_id;
+
+    public void configure(Ejb3Configuration cfg) {
+        //cfg.addAnnotatedClass(ListBiowning1Entity.class);
+        //cfg.addAnnotatedClass(ListBiowning2Entity.class);
+    }
+
+    //@BeforeClass(dependsOnMethods = "init")
+    public void initData() {
+        EntityManager em = getEntityManager();
+
+        ListBiowning1Entity o1_1 = new ListBiowning1Entity("o1_1");
+        ListBiowning1Entity o1_2 = new ListBiowning1Entity("o1_2");
+        ListBiowning2Entity o2_1 = new ListBiowning2Entity("o2_1");
+        ListBiowning2Entity o2_2 = new ListBiowning2Entity("o2_2");
+
+        // Revision 1
+        em.getTransaction().begin();
+
+        em.persist(o1_1);
+        em.persist(o1_2);
+        em.persist(o2_1);
+        em.persist(o2_2);
+
+        em.getTransaction().commit();
+
+        // Revision 2 (1_1 <-> 2_1; 1_2 <-> 2_2)
+
+        em.getTransaction().begin();
+
+        o1_1 = em.find(ListBiowning1Entity.class, o1_1.getId());
+        o1_2 = em.find(ListBiowning1Entity.class, o1_2.getId());
+        o2_1 = em.find(ListBiowning2Entity.class, o2_1.getId());
+        o2_2 = em.find(ListBiowning2Entity.class, o2_2.getId());
+
+        o1_1.getReferences().add(o2_1);
+        o1_2.getReferences().add(o2_2);
+
+        em.getTransaction().commit();
+
+        // Revision 3 (1_1 <-> 2_1, 2_2; 1_2 <-> 2_2)
+        em.getTransaction().begin();
+
+        o1_1 = em.find(ListBiowning1Entity.class, o1_1.getId());
+        o2_2 = em.find(ListBiowning2Entity.class, o2_2.getId());
+
+        o1_1.getReferences().add(o2_2);
+
+        em.getTransaction().commit();
+
+        // Revision 4 (1_1 <-> 2_1; 1_2 <-> 2_1)
+        em.getTransaction().begin();
+
+        o1_1 = em.find(ListBiowning1Entity.class, o1_1.getId());
+        o1_2 = em.find(ListBiowning1Entity.class, o1_2.getId());
+        o2_1 = em.find(ListBiowning2Entity.class, o2_1.getId());
+        o2_2 = em.find(ListBiowning2Entity.class, o2_2.getId());
+
+        o2_2.getReferences().remove(o1_1);
+        o2_1.getReferences().remove(o1_1);
+        o1_2.getReferences().add(o2_1);
+
+        em.getTransaction().commit();
+
+        // Revision 5 (1_2 <-> 2_1, 2_2)
+        em.getTransaction().begin();
+
+        o1_1 = em.find(ListBiowning1Entity.class, o1_1.getId());
+        o1_2 = em.find(ListBiowning1Entity.class, o1_2.getId());
+        o2_1 = em.find(ListBiowning2Entity.class, o2_1.getId());
+        o2_2 = em.find(ListBiowning2Entity.class, o2_2.getId());
+
+        o2_1.getReferences().remove(o1_1);
+        o1_1.getReferences().remove(o2_1);
+        o1_2.getReferences().add(o2_2);
+        o2_2.getReferences().add(o1_2);
+
+        em.getTransaction().commit();
+
+        //
+
+        o1_1_id = o1_1.getId();
+        o1_2_id = o1_2.getId();
+        o2_1_id = o2_1.getId();
+        o2_2_id = o2_2.getId();
+    }
+
+    @Test(enabled = false)
+    public void testRevisionsCounts() {
+        assert Arrays.asList(1, 2, 3, 4, 5).equals(getAuditReader().getRevisions(ListBiowning1Entity.class, o1_1_id));
+        assert Arrays.asList(1, 2, 4, 5).equals(getAuditReader().getRevisions(ListBiowning1Entity.class, o1_2_id));
+
+        assert Arrays.asList(1, 2, 4, 5).equals(getAuditReader().getRevisions(ListBiowning2Entity.class, o2_1_id));
+        assert Arrays.asList(1, 2, 3, 4, 5).equals(getAuditReader().getRevisions(ListBiowning2Entity.class, o2_2_id));
+    }
+
+    @Test(enabled = false)
+    public void testHistoryOfO1_1() {
+        ListBiowning2Entity o2_1 = getEntityManager().find(ListBiowning2Entity.class, o2_1_id);
+        ListBiowning2Entity o2_2 = getEntityManager().find(ListBiowning2Entity.class, o2_2_id);
+
+        ListBiowning1Entity rev1 = getAuditReader().find(ListBiowning1Entity.class, o1_1_id, 1);
+        ListBiowning1Entity rev2 = getAuditReader().find(ListBiowning1Entity.class, o1_1_id, 2);
+        ListBiowning1Entity rev3 = getAuditReader().find(ListBiowning1Entity.class, o1_1_id, 3);
+        ListBiowning1Entity rev4 = getAuditReader().find(ListBiowning1Entity.class, o1_1_id, 4);
+        ListBiowning1Entity rev5 = getAuditReader().find(ListBiowning1Entity.class, o1_1_id, 5);
+
+        assert TestTools.checkList(rev1.getReferences());
+        assert TestTools.checkList(rev2.getReferences(), o2_1);
+        assert TestTools.checkList(rev3.getReferences(), o2_1, o2_2);
+        assert TestTools.checkList(rev4.getReferences(), o2_1);
+        assert TestTools.checkList(rev5.getReferences());
+    }
+
+    @Test(enabled = false)
+    public void testHistoryOfO1_2() {
+        ListBiowning2Entity o2_1 = getEntityManager().find(ListBiowning2Entity.class, o2_1_id);
+        ListBiowning2Entity o2_2 = getEntityManager().find(ListBiowning2Entity.class, o2_2_id);
+
+        ListBiowning1Entity rev1 = getAuditReader().find(ListBiowning1Entity.class, o1_2_id, 1);
+        ListBiowning1Entity rev2 = getAuditReader().find(ListBiowning1Entity.class, o1_2_id, 2);
+        ListBiowning1Entity rev3 = getAuditReader().find(ListBiowning1Entity.class, o1_2_id, 3);
+        ListBiowning1Entity rev4 = getAuditReader().find(ListBiowning1Entity.class, o1_2_id, 4);
+        ListBiowning1Entity rev5 = getAuditReader().find(ListBiowning1Entity.class, o1_2_id, 5);
+
+        assert TestTools.checkList(rev1.getReferences());
+        assert TestTools.checkList(rev2.getReferences(), o2_2);
+        assert TestTools.checkList(rev3.getReferences(), o2_2);
+        assert TestTools.checkList(rev4.getReferences(), o2_1);
+        assert TestTools.checkList(rev5.getReferences(), o2_1, o2_2);
+    }
+
+    @Test(enabled = false)
+    public void testHistoryOfO2_1() {
+        ListBiowning1Entity o1_1 = getEntityManager().find(ListBiowning1Entity.class, o1_1_id);
+        ListBiowning1Entity o1_2 = getEntityManager().find(ListBiowning1Entity.class, o1_2_id);
+
+        ListBiowning2Entity rev1 = getAuditReader().find(ListBiowning2Entity.class, o1_1_id, 1);
+        ListBiowning2Entity rev2 = getAuditReader().find(ListBiowning2Entity.class, o1_1_id, 2);
+        ListBiowning2Entity rev3 = getAuditReader().find(ListBiowning2Entity.class, o1_1_id, 3);
+        ListBiowning2Entity rev4 = getAuditReader().find(ListBiowning2Entity.class, o1_1_id, 4);
+        ListBiowning2Entity rev5 = getAuditReader().find(ListBiowning2Entity.class, o1_1_id, 5);
+
+        assert TestTools.checkList(rev1.getReferences());
+        assert TestTools.checkList(rev2.getReferences(), o1_1);
+        assert TestTools.checkList(rev3.getReferences(), o1_1);
+        assert TestTools.checkList(rev4.getReferences(), o1_1, o1_2);
+        assert TestTools.checkList(rev5.getReferences(), o1_2);
+    }
+
+    @Test(enabled = false)
+    public void testHistoryOfO2_2() {
+        ListBiowning1Entity o1_1 = getEntityManager().find(ListBiowning1Entity.class, o1_1_id);
+        ListBiowning1Entity o1_2 = getEntityManager().find(ListBiowning1Entity.class, o1_2_id);
+
+        ListBiowning2Entity rev1 = getAuditReader().find(ListBiowning2Entity.class, o1_2_id, 1);
+        ListBiowning2Entity rev2 = getAuditReader().find(ListBiowning2Entity.class, o1_2_id, 2);
+        ListBiowning2Entity rev3 = getAuditReader().find(ListBiowning2Entity.class, o1_2_id, 3);
+        ListBiowning2Entity rev4 = getAuditReader().find(ListBiowning2Entity.class, o1_2_id, 4);
+        ListBiowning2Entity rev5 = getAuditReader().find(ListBiowning2Entity.class, o1_2_id, 5);
+
+        assert TestTools.checkList(rev1.getReferences());
+        assert TestTools.checkList(rev2.getReferences(), o1_2);
+        assert TestTools.checkList(rev3.getReferences(), o1_1, o1_2);
+        assert TestTools.checkList(rev4.getReferences());
+        assert TestTools.checkList(rev5.getReferences(), o1_2);
+    }
+}
\ No newline at end of file

Modified: core/trunk/envers/src/test/resources/testng.xml
===================================================================
--- core/trunk/envers/src/test/resources/testng.xml	2009-12-02 11:38:32 UTC (rev 18112)
+++ core/trunk/envers/src/test/resources/testng.xml	2009-12-02 12:09:56 UTC (rev 18113)
@@ -31,6 +31,7 @@
             <package name="org.hibernate.envers.test.integration.interfaces.components" />
             <package name="org.hibernate.envers.test.integration.interfaces.relation" />
             <package name="org.hibernate.envers.test.integration.manytomany" />
+            <package name="org.hibernate.envers.test.integration.manytomany.biowned" />
             <package name="org.hibernate.envers.test.integration.manytomany.sametable" />
             <package name="org.hibernate.envers.test.integration.manytomany.ternary" />
             <package name="org.hibernate.envers.test.integration.manytomany.unidirectional" />



More information about the hibernate-commits mailing list