[hibernate-commits] Hibernate SVN: r18109 - core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Dec 1 02:20:17 EST 2009


Author: adamw
Date: 2009-12-01 02:20:17 -0500 (Tue, 01 Dec 2009)
New Revision: 18109

Modified:
   core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/AuditMetadataGenerator.java
   core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/IdMetadataGenerator.java
Log:
* Skipping auditing id mapping generation if the id mapping is unsupported (e.g. key-many-to-one)
* Some logging

Modified: core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/AuditMetadataGenerator.java
===================================================================
--- core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/AuditMetadataGenerator.java	2009-12-01 04:54:05 UTC (rev 18108)
+++ core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/AuditMetadataGenerator.java	2009-12-01 07:20:17 UTC (rev 18109)
@@ -45,6 +45,8 @@
 import org.hibernate.cfg.Configuration;
 import org.hibernate.mapping.*;
 import org.hibernate.type.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @author Adam Warski (adam at warski dot org)
@@ -52,6 +54,8 @@
  * @author Tomasz Bech
  */
 public final class AuditMetadataGenerator {
+    private static final Logger log = LoggerFactory.getLogger(AuditMetadataGenerator.class);
+
     private final Configuration cfg;
     private final GlobalConfiguration globalCfg;
     private final AuditEntitiesConfiguration verEntCfg;
@@ -317,6 +321,15 @@
 		if (!isAudited) {
 			String entityName = pc.getEntityName();
 			IdMappingData idMapper = idMetadataGenerator.addId(pc);
+
+            if (idMapper == null) {
+                // Unsupported id mapping, e.g. key-many-to-one. If the entity is used in auditing, an exception
+                // will be thrown later on.
+                log.debug("Unable to create auditing id mapping for entity " + entityName +
+                        ", because of an unsupported Hibernate id mapping (e.g. key-many-to-one).");
+                return;
+            }
+
 			ExtendedPropertyMapper propertyMapper = null;
 			String parentEntityName = null;
 			EntityConfiguration entityCfg = new EntityConfiguration(entityName, idMapper, propertyMapper,
@@ -326,6 +339,8 @@
 		}
 
         String entityName = pc.getEntityName();
+        log.debug("Generating first-pass auditing mapping for entity " + entityName + ".");
+
         String auditEntityName = verEntCfg.getAuditEntityName(entityName);
         String auditTableName = verEntCfg.getAuditTableName(entityName, pc.getTable().getName());
 
@@ -395,6 +410,7 @@
     public void generateSecondPass(PersistentClass pc, ClassAuditingData auditingData,
                                    EntityXmlMappingData xmlMappingData) {
         String entityName = pc.getEntityName();
+        log.debug("Generating second-pass auditing mapping for entity " + entityName + ".");
 
         CompositeMapperBuilder propertyMapper = entitiesConfigurations.get(entityName).getPropertyMapper();
 

Modified: core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/IdMetadataGenerator.java
===================================================================
--- core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/IdMetadataGenerator.java	2009-12-01 04:54:05 UTC (rev 18108)
+++ core/trunk/envers/src/main/java/org/hibernate/envers/configuration/metadata/IdMetadataGenerator.java	2009-12-01 07:20:17 UTC (rev 18109)
@@ -84,6 +84,11 @@
         Property id_prop = pc.getIdentifierProperty();
         Component id_mapper = pc.getIdentifierMapper();
 
+        // Checking if the id mapping is supported
+        if (id_mapper == null && id_prop == null) {
+            return null;
+        }
+
         SimpleIdMapperBuilder mapper;
         if (id_mapper != null) {
             // Multiple id



More information about the hibernate-commits mailing list