Author: adamw
Date: 2009-01-30 08:38:07 -0500 (Fri, 30 Jan 2009)
New Revision: 15836
Added:
core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/components/relations/NotAuditedManyToOneComponent.java
core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/components/relations/NotAuditedManyToOneComponentTestEntity.java
core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/components/relations/NotAuditedManyToOneInComponent.java
Modified:
core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/ComponentMetadataGenerator.java
core/trunk/envers/src/main/java/org/hibernate/envers/synchronization/work/PersistentCollectionChangeWorkUnit.java
Log:
HHH-3740: fix with test
Thanks for the test to Erik-Berndt Scheper
Modified:
core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/ComponentMetadataGenerator.java
===================================================================
---
core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/ComponentMetadataGenerator.java 2009-01-30
12:01:00 UTC (rev 15835)
+++
core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/ComponentMetadataGenerator.java 2009-01-30
13:38:07 UTC (rev 15836)
@@ -37,9 +37,14 @@
while (properties.hasNext()) {
Property property = properties.next();
- mainGenerator.addValue(parent, property.getValue(), componentMapper, entityName,
xmlMappingData,
- componentAuditingData.getPropertyAuditingData(property.getName()),
- property.isInsertable(), firstPass);
+ PropertyAuditingData componentPropertyAuditingData =
+ componentAuditingData.getPropertyAuditingData(property.getName());
+
+ // Checking if that property is audited
+ if (componentPropertyAuditingData != null) {
+ mainGenerator.addValue(parent, property.getValue(), componentMapper, entityName,
xmlMappingData,
+ componentPropertyAuditingData, property.isInsertable(), firstPass);
+ }
}
}
}
Modified:
core/trunk/envers/src/main/java/org/hibernate/envers/synchronization/work/PersistentCollectionChangeWorkUnit.java
===================================================================
---
core/trunk/envers/src/main/java/org/hibernate/envers/synchronization/work/PersistentCollectionChangeWorkUnit.java 2009-01-30
12:01:00 UTC (rev 15835)
+++
core/trunk/envers/src/main/java/org/hibernate/envers/synchronization/work/PersistentCollectionChangeWorkUnit.java 2009-01-30
13:38:07 UTC (rev 15836)
@@ -46,7 +46,7 @@
Serializable snapshot, Serializable id) {
super(entityName, verCfg, null);
- referencingPropertyName = role.substring(role.lastIndexOf(".") + 1);
+ referencingPropertyName = role.substring(entityName.length() + 1);
collectionChanges = verCfg.getEntCfg().get(getEntityName()).getPropertyMapper()
.mapCollectionChanges(referencingPropertyName, collection, snapshot,
id);
Added:
core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/components/relations/NotAuditedManyToOneComponent.java
===================================================================
---
core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/components/relations/NotAuditedManyToOneComponent.java
(rev 0)
+++
core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/components/relations/NotAuditedManyToOneComponent.java 2009-01-30
13:38:07 UTC (rev 15836)
@@ -0,0 +1,90 @@
+/*
+ * 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.components.relations;
+
+import org.hibernate.envers.test.entities.UnversionedStrTestEntity;
+import org.hibernate.envers.NotAudited;
+
+import javax.persistence.ManyToOne;
+import javax.persistence.Embeddable;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+@Embeddable
+public class NotAuditedManyToOneComponent {
+ @ManyToOne
+ @NotAudited
+ private UnversionedStrTestEntity entity;
+
+ private String data;
+
+ public NotAuditedManyToOneComponent(UnversionedStrTestEntity entity, String data) {
+ this.entity = entity;
+ this.data = data;
+ }
+
+ public NotAuditedManyToOneComponent() {
+ }
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public UnversionedStrTestEntity getEntity() {
+ return entity;
+ }
+
+ public void setEntity(UnversionedStrTestEntity entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ NotAuditedManyToOneComponent that = (NotAuditedManyToOneComponent) o;
+
+ if (data != null ? !data.equals(that.data) : that.data != null) return false;
+ if (entity != null ? !entity.equals(that.entity) : that.entity != null) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = entity != null ? entity.hashCode() : 0;
+ result = 31 * result + (data != null ? data.hashCode() : 0);
+ return result;
+ }
+
+ public String toString() {
+ return "NotAuditedManyToOneComponent(str1 = " + data + ")";
+ }
+}
\ No newline at end of file
Added:
core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/components/relations/NotAuditedManyToOneComponentTestEntity.java
===================================================================
---
core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/components/relations/NotAuditedManyToOneComponentTestEntity.java
(rev 0)
+++
core/trunk/envers/src/test/java/org/hibernate/envers/test/entities/components/relations/NotAuditedManyToOneComponentTestEntity.java 2009-01-30
13:38:07 UTC (rev 15836)
@@ -0,0 +1,97 @@
+/*
+ * 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.components.relations;
+
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.hibernate.envers.Audited;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+@Entity
+public class NotAuditedManyToOneComponentTestEntity {
+ @Id
+ @GeneratedValue
+ private Integer id;
+
+ @Embedded
+ @Audited
+ private NotAuditedManyToOneComponent comp1;
+
+ public NotAuditedManyToOneComponentTestEntity() {
+ }
+
+ public NotAuditedManyToOneComponentTestEntity(Integer id,
NotAuditedManyToOneComponent comp1) {
+ this.id = id;
+ this.comp1 = comp1;
+ }
+
+ public NotAuditedManyToOneComponentTestEntity(NotAuditedManyToOneComponent comp1) {
+ this.comp1 = comp1;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public NotAuditedManyToOneComponent getComp1() {
+ return comp1;
+ }
+
+ public void setComp1(NotAuditedManyToOneComponent comp1) {
+ this.comp1 = comp1;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ NotAuditedManyToOneComponentTestEntity that = (NotAuditedManyToOneComponentTestEntity)
o;
+
+ if (comp1 != null ? !comp1.equals(that.comp1) : that.comp1 != null) return false;
+ if (id != null ? !id.equals(that.id) : that.id != null) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = id != null ? id.hashCode() : 0;
+ result = 31 * result + (comp1 != null ? comp1.hashCode() : 0);
+ return result;
+ }
+
+ public String toString() {
+ return "NAMTOCTE(id = " + id + ", comp1 = " + comp1 +
")";
+ }
+}
\ No newline at end of file
Copied:
core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/components/relations/NotAuditedManyToOneInComponent.java
(from rev 15835,
core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/components/relations/ManyToOneInComponent.java)
===================================================================
---
core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/components/relations/NotAuditedManyToOneInComponent.java
(rev 0)
+++
core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/components/relations/NotAuditedManyToOneInComponent.java 2009-01-30
13:38:07 UTC (rev 15836)
@@ -0,0 +1,113 @@
+/*
+ * 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.components.relations;
+
+import java.util.Arrays;
+import javax.persistence.EntityManager;
+
+import org.hibernate.envers.test.AbstractEntityTest;
+import
org.hibernate.envers.test.entities.components.relations.NotAuditedManyToOneComponentTestEntity;
+import
org.hibernate.envers.test.entities.components.relations.NotAuditedManyToOneComponent;
+import org.hibernate.envers.test.entities.UnversionedStrTestEntity;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import org.hibernate.ejb.Ejb3Configuration;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class NotAuditedManyToOneInComponent extends AbstractEntityTest {
+ private Integer mtocte_id1;
+
+ public void configure(Ejb3Configuration cfg) {
+ cfg.addAnnotatedClass(NotAuditedManyToOneComponentTestEntity.class);
+ cfg.addAnnotatedClass(UnversionedStrTestEntity.class);
+ }
+
+ @BeforeClass(dependsOnMethods = "init")
+ public void initData() {
+ // No revision
+ EntityManager em = getEntityManager();
+ em.getTransaction().begin();
+
+ UnversionedStrTestEntity ste1 = new UnversionedStrTestEntity();
+ ste1.setStr("str1");
+
+ UnversionedStrTestEntity ste2 = new UnversionedStrTestEntity();
+ ste2.setStr("str2");
+
+ em.persist(ste1);
+ em.persist(ste2);
+
+ em.getTransaction().commit();
+
+ // Revision 1
+ em = getEntityManager();
+ em.getTransaction().begin();
+
+ NotAuditedManyToOneComponentTestEntity mtocte1 = new
NotAuditedManyToOneComponentTestEntity(
+ new NotAuditedManyToOneComponent(ste1, "data1"));
+
+ em.persist(mtocte1);
+
+ em.getTransaction().commit();
+
+ // No revision
+ em = getEntityManager();
+ em.getTransaction().begin();
+
+ mtocte1 = em.find(NotAuditedManyToOneComponentTestEntity.class,
mtocte1.getId());
+ mtocte1.getComp1().setEntity(ste2);
+
+ em.getTransaction().commit();
+
+ // Revision 2
+ em = getEntityManager();
+ em.getTransaction().begin();
+
+ mtocte1 = em.find(NotAuditedManyToOneComponentTestEntity.class,
mtocte1.getId());
+ mtocte1.getComp1().setData("data2");
+
+ em.getTransaction().commit();
+
+ mtocte_id1 = mtocte1.getId();
+ }
+
+ @Test
+ public void testRevisionsCounts() {
+ assert Arrays.asList(1,
2).equals(getAuditReader().getRevisions(NotAuditedManyToOneComponentTestEntity.class,
mtocte_id1));
+ }
+
+ @Test
+ public void testHistoryOfId1() {
+ NotAuditedManyToOneComponentTestEntity ver1 = new
NotAuditedManyToOneComponentTestEntity(mtocte_id1,
+ new NotAuditedManyToOneComponent(null, "data1"));
+ NotAuditedManyToOneComponentTestEntity ver2 = new
NotAuditedManyToOneComponentTestEntity(mtocte_id1,
+ new NotAuditedManyToOneComponent(null, "data2"));
+
+ assert getAuditReader().find(NotAuditedManyToOneComponentTestEntity.class,
mtocte_id1, 1).equals(ver1);
+ assert getAuditReader().find(NotAuditedManyToOneComponentTestEntity.class,
mtocte_id1, 2).equals(ver2);
+ }
+}
\ No newline at end of file
Property changes on:
core/trunk/envers/src/test/java/org/hibernate/envers/test/integration/components/relations/NotAuditedManyToOneInComponent.java
___________________________________________________________________
Name: svn:mergeinfo
+