Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit 39bc44d

Browse files
committed
Issue #274 apply Generated annotation to methods/constructors created with AST transformation, to improve test coverage reports
1 parent f4eae7d commit 39bc44d

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

grails-datastore-gorm-hibernate5/src/main/groovy/org/grails/orm/hibernate/compiler/HibernateEntityTransformation.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.grails.orm.hibernate.compiler
33
import grails.gorm.dirty.checking.DirtyCheckedProperty
44
import groovy.transform.CompilationUnitAware
55
import groovy.transform.CompileStatic
6+
import org.apache.groovy.ast.tools.AnnotatedNodeUtils
67
import org.codehaus.groovy.ast.*
78
import org.codehaus.groovy.ast.stmt.BlockStatement
89
import org.codehaus.groovy.ast.stmt.IfStatement
@@ -124,6 +125,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
124125
returnS(varX(interceptorField))
125126
)
126127
classNode.addMethod(getInterceptorMethod)
128+
AnnotatedNodeUtils.markAsGenerated(classNode, getInterceptorMethod)
127129
staticCompilationVisitor.visitMethod(getInterceptorMethod)
128130

129131
// add method: void $$_hibernate_setInterceptor(PersistentAttributeInterceptor interceptor)
@@ -137,6 +139,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
137139
assignS( varX(interceptorField), varX(p1) )
138140
)
139141
classNode.addMethod(setInterceptorMethod)
142+
AnnotatedNodeUtils.markAsGenerated(classNode, setInterceptorMethod)
140143
staticCompilationVisitor.visitMethod(setInterceptorMethod)
141144

142145
// add method: Object $$_hibernate_getEntityInstance()
@@ -149,6 +152,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
149152
returnS(varX("this"))
150153
)
151154
classNode.addMethod(getEntityInstanceMethod)
155+
AnnotatedNodeUtils.markAsGenerated(classNode, getEntityInstanceMethod)
152156
staticCompilationVisitor.visitMethod(getEntityInstanceMethod)
153157

154158

@@ -162,6 +166,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
162166
returnS(varX(entityEntryHolderField))
163167
)
164168
classNode.addMethod(getEntityEntryMethod)
169+
AnnotatedNodeUtils.markAsGenerated(classNode, getEntityEntryMethod)
165170
staticCompilationVisitor.visitMethod(getEntityEntryMethod)
166171

167172
// add method: void $$_hibernate_setEntityEntry(EntityEntry entityEntry)
@@ -175,6 +180,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
175180
assignS( varX(entityEntryHolderField), varX(entityEntryParam) )
176181
)
177182
classNode.addMethod(setEntityEntryMethod)
183+
AnnotatedNodeUtils.markAsGenerated(classNode, setEntityEntryMethod)
178184
staticCompilationVisitor.visitMethod(setEntityEntryMethod)
179185

180186
// add method: ManagedEntity $$_hibernate_getPreviousManagedEntity()
@@ -187,6 +193,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
187193
returnS(varX(previousManagedEntityField))
188194
)
189195
classNode.addMethod(getPreviousManagedEntityMethod)
196+
AnnotatedNodeUtils.markAsGenerated(classNode, getPreviousManagedEntityMethod)
190197
staticCompilationVisitor.visitMethod(getPreviousManagedEntityMethod)
191198

192199
// add method: ManagedEntity $$_hibernate_getNextManagedEntity() {
@@ -199,6 +206,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
199206
returnS(varX(nextManagedEntityField))
200207
)
201208
classNode.addMethod(getNextManagedEntityMethod)
209+
AnnotatedNodeUtils.markAsGenerated(classNode, getNextManagedEntityMethod)
202210
staticCompilationVisitor.visitMethod(getNextManagedEntityMethod)
203211

204212
// add method: void $$_hibernate_setPreviousManagedEntity(ManagedEntity previous)
@@ -212,6 +220,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
212220
assignS( varX(previousManagedEntityField), varX(previousParam) )
213221
)
214222
classNode.addMethod(setPreviousManagedEntityMethod)
223+
AnnotatedNodeUtils.markAsGenerated(classNode, setPreviousManagedEntityMethod)
215224
staticCompilationVisitor.visitMethod(setPreviousManagedEntityMethod)
216225

217226
// add method: void $$_hibernate_setNextManagedEntity(ManagedEntity next)
@@ -225,6 +234,7 @@ class HibernateEntityTransformation implements ASTTransformation, CompilationUni
225234
assignS( varX(nextManagedEntityField), varX(nextParam) )
226235
)
227236
classNode.addMethod(setNextManagedEntityMethod)
237+
AnnotatedNodeUtils.markAsGenerated(classNode, setNextManagedEntityMethod)
228238
staticCompilationVisitor.visitMethod(setNextManagedEntityMethod)
229239

230240
List<MethodNode> allMethods = classNode.getMethods()

grails-datastore-gorm-hibernate5/src/test/groovy/org/grails/orm/hibernate/compiler/HibernateEntityTransformationSpec.groovy

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.grails.orm.hibernate.compiler
22

3+
import groovy.transform.Generated
4+
import org.hibernate.engine.spi.EntityEntry
35
import org.hibernate.engine.spi.ManagedEntity
46
import org.hibernate.engine.spi.PersistentAttributeInterceptable
57
import org.hibernate.engine.spi.PersistentAttributeInterceptor
@@ -153,6 +155,17 @@ class MyEntity {
153155

154156
then:"The value is changed"
155157
myEntity.name == 'changed'
158+
159+
and: "by transformation added methods are all marked as Generated"
160+
cls.getMethod('$$_hibernate_getInterceptor').isAnnotationPresent(Generated)
161+
cls.getMethod('$$_hibernate_setInterceptor', PersistentAttributeInterceptor).isAnnotationPresent(Generated)
162+
cls.getMethod('$$_hibernate_getEntityInstance').isAnnotationPresent(Generated)
163+
cls.getMethod('$$_hibernate_getEntityEntry').isAnnotationPresent(Generated)
164+
cls.getMethod('$$_hibernate_setEntityEntry', EntityEntry).isAnnotationPresent(Generated)
165+
cls.getMethod('$$_hibernate_getPreviousManagedEntity').isAnnotationPresent(Generated)
166+
cls.getMethod('$$_hibernate_getNextManagedEntity').isAnnotationPresent(Generated)
167+
cls.getMethod('$$_hibernate_setPreviousManagedEntity', ManagedEntity).isAnnotationPresent(Generated)
168+
cls.getMethod('$$_hibernate_setNextManagedEntity', ManagedEntity).isAnnotationPresent(Generated)
156169
}
157170
}
158171
@grails.gorm.hibernate.annotation.ManagedEntity

0 commit comments

Comments
 (0)