Skip to content

Commit f02eb42

Browse files
committed
Rename AutoTimestampUtils to AuditMetadataUtils and log debug ignored exceptions
1 parent 485e41a commit f02eb42

File tree

4 files changed

+22
-9
lines changed

4 files changed

+22
-9
lines changed

grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/events/AutoTimestampEventListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
import org.grails.datastore.mapping.engine.event.EventType;
4949
import org.grails.datastore.mapping.engine.event.PreInsertEvent;
5050
import org.grails.datastore.mapping.engine.event.PreUpdateEvent;
51-
import org.grails.datastore.mapping.model.AutoTimestampUtils;
51+
import org.grails.datastore.mapping.model.AuditMetadataUtils;
5252
import org.grails.datastore.mapping.model.ClassMapping;
5353
import org.grails.datastore.mapping.model.MappingContext;
5454
import org.grails.datastore.mapping.model.PersistentEntity;
@@ -249,7 +249,7 @@ protected void storeDateCreatedAndLastUpdatedInfo(PersistentEntity persistentEnt
249249
} else if (property.getName().equals(DATE_CREATED_PROPERTY)) {
250250
storeTimestampAvailability(entitiesWithDateCreated, persistentEntity, property);
251251
} else {
252-
AuditMetadataType auditMetadataType = AutoTimestampUtils.getAuditMetadataType(property, cacheAutoTimestampAnnotations);
252+
AuditMetadataType auditMetadataType = AuditMetadataUtils.getAuditMetadataType(property, cacheAutoTimestampAnnotations);
253253
if (auditMetadataType == AuditMetadataType.CREATED) {
254254
storeTimestampAvailability(entitiesWithDateCreated, persistentEntity, property);
255255
} else if (auditMetadataType == AuditMetadataType.UPDATED) {

grails-datamapping-validation/src/main/groovy/org/grails/datastore/gorm/validation/constraints/eval/DefaultConstraintEvaluator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
import org.grails.datastore.mapping.config.AuditMetadataType;
5050
import org.grails.datastore.mapping.config.Property;
5151
import org.grails.datastore.mapping.keyvalue.mapping.config.KeyValueMappingContext;
52-
import org.grails.datastore.mapping.model.AutoTimestampUtils;
52+
import org.grails.datastore.mapping.model.AuditMetadataUtils;
5353
import org.grails.datastore.mapping.model.MappingContext;
5454
import org.grails.datastore.mapping.model.PersistentEntity;
5555
import org.grails.datastore.mapping.model.PersistentProperty;
@@ -316,7 +316,7 @@ protected boolean isConstrainableProperty(PersistentProperty persistentProperty,
316316
// Check if property has @CreatedDate or @LastModifiedDate annotations
317317
// Note: We only exclude timestamp date fields (CREATED/UPDATED), not auditor fields (CREATED_BY/UPDATED_BY)
318318
// because auditor fields can have various types and should support constraints (e.g., maxSize for String)
319-
AuditMetadataType auditMetadataType = AutoTimestampUtils.getAuditMetadataType(persistentProperty, cacheAutoTimestampAnnotations);
319+
AuditMetadataType auditMetadataType = AuditMetadataUtils.getAuditMetadataType(persistentProperty, cacheAutoTimestampAnnotations);
320320
if (auditMetadataType == AuditMetadataType.CREATED || auditMetadataType == AuditMetadataType.UPDATED) {
321321
return false;
322322
}

grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/model/AutoTimestampUtils.java renamed to grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/model/AuditMetadataUtils.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@
2020

2121
import java.lang.reflect.Field;
2222

23+
import org.slf4j.Logger;
24+
import org.slf4j.LoggerFactory;
2325
import org.springframework.util.ReflectionUtils;
2426

2527
import org.grails.datastore.mapping.config.AuditMetadataType;
2628
import org.grails.datastore.mapping.config.Property;
2729

2830
/**
29-
* Utility class for detecting and caching auto-timestamp and auditing annotations on domain properties.
31+
* Utility class for detecting and caching audit metadata annotations on domain properties.
3032
* This avoids repeated reflection calls by storing the annotation type in the Property metadata.
3133
*
3234
* <p>Supports the following annotations (both GORM and Spring Data variants):</p>
@@ -46,7 +48,9 @@
4648
* @author Scott Murphy Heiberg
4749
* @since 7.1
4850
*/
49-
public class AutoTimestampUtils {
51+
public class AuditMetadataUtils {
52+
53+
private static final Logger LOG = LoggerFactory.getLogger(AuditMetadataUtils.class);
5054

5155
private static final String CREATED_DATE_ANNOTATION = "grails.gorm.annotation.CreatedDate";
5256
private static final String LAST_MODIFIED_DATE_ANNOTATION = "grails.gorm.annotation.LastModifiedDate";
@@ -145,14 +149,23 @@ private static AuditMetadataType detectAuditMetadataType(PersistentProperty<?> p
145149
}
146150
} catch (Exception e) {
147151
// If we can't read the value, default to CREATED
152+
if (LOG.isDebugEnabled()) {
153+
LOG.debug("Failed to read @AutoTimestamp EventType value for property [{}], defaulting to CREATED",
154+
persistentProperty.getName(), e);
155+
}
148156
return AuditMetadataType.CREATED;
149157
}
150158
break;
151159
}
152160
}
153161
}
154-
} catch (Exception ignored) {
162+
} catch (Exception e) {
155163
// If reflection fails, return NONE
164+
if (LOG.isDebugEnabled()) {
165+
LOG.debug("Failed to detect audit metadata annotations for property [{}] on entity [{}]",
166+
persistentProperty.getName(),
167+
persistentProperty.getOwner().getName(), e);
168+
}
156169
}
157170

158171
return AuditMetadataType.NONE;

grails-fields/src/main/groovy/org/grails/scaffolding/model/DomainModelServiceImpl.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import org.springframework.beans.factory.annotation.Value
2929
import grails.util.GrailsClassUtils
3030
import org.grails.datastore.mapping.config.Property
3131
import org.grails.datastore.mapping.config.Settings
32-
import org.grails.datastore.mapping.model.AutoTimestampUtils
32+
import org.grails.datastore.mapping.model.AuditMetadataUtils
3333
import org.grails.datastore.mapping.model.PersistentEntity
3434
import org.grails.datastore.mapping.model.PersistentProperty
3535
import org.grails.datastore.mapping.model.types.Embedded
@@ -153,7 +153,7 @@ class DomainModelServiceImpl implements DomainModelService {
153153
// Add properties with audit metadata annotations to blacklist only if excludeAnnotatedTimestamps is true
154154
if (excludeAnnotatedTimestamps) {
155155
properties.each { DomainProperty property ->
156-
if (AutoTimestampUtils.hasAuditMetadataAnnotation(property.persistentProperty, cacheAutoTimestampAnnotations)) {
156+
if (AuditMetadataUtils.hasAuditMetadataAnnotation(property.persistentProperty, cacheAutoTimestampAnnotations)) {
157157
if (!blacklist.contains(property.name)) {
158158
blacklist.add(property.name)
159159
}

0 commit comments

Comments
 (0)