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

Commit 39f8854

Browse files
authored
Merge pull request #275 from aulea/issue-274-mark-generated-code
Issue 274 mark generated code
2 parents c7fb100 + 39bc44d commit 39f8854

File tree

4 files changed

+55
-0
lines changed

4 files changed

+55
-0
lines changed

grails-datastore-gorm-hibernate5/src/main/groovy/grails/orm/hibernate/HibernateEntity.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package grails.gorm.hibernate
22

33
import groovy.transform.CompileStatic
4+
import groovy.transform.Generated
45
import org.grails.datastore.gorm.GormEnhancer
56
import org.grails.datastore.gorm.GormEntity
67
import org.grails.orm.hibernate.AbstractHibernateGormStaticApi
@@ -21,6 +22,7 @@ trait HibernateEntity<D> extends GormEntity<D> {
2122
*
2223
* @return The object
2324
*/
25+
@Generated
2426
static List<D> findAllWithSql(CharSequence sql) {
2527
currentHibernateStaticApi().findAllWithSql sql, Collections.emptyMap()
2628
}
@@ -31,6 +33,7 @@ trait HibernateEntity<D> extends GormEntity<D> {
3133
* @param sql The sql query
3234
* @return The entity
3335
*/
36+
@Generated
3437
static D findWithSql(CharSequence sql) {
3538
currentHibernateStaticApi().findWithSql(sql, Collections.emptyMap())
3639
}
@@ -42,6 +45,7 @@ trait HibernateEntity<D> extends GormEntity<D> {
4245
*
4346
* @return The object
4447
*/
48+
@Generated
4549
static List<D> findAllWithSql(CharSequence sql, Map args) {
4650
currentHibernateStaticApi().findAllWithSql sql, args
4751
}
@@ -52,10 +56,12 @@ trait HibernateEntity<D> extends GormEntity<D> {
5256
* @param sql The sql query
5357
* @return The entity
5458
*/
59+
@Generated
5560
static D findWithSql(CharSequence sql, Map args) {
5661
currentHibernateStaticApi().findWithSql(sql, args)
5762
}
5863

64+
@Generated
5965
private static AbstractHibernateGormStaticApi currentHibernateStaticApi() {
6066
(AbstractHibernateGormStaticApi)GormEnhancer.findStaticApi(this)
6167
}

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()
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package grails.gorm.tests
2+
3+
import grails.gorm.transactions.Rollback
4+
import groovy.transform.Generated
5+
import org.grails.orm.hibernate.HibernateDatastore
6+
import org.springframework.transaction.PlatformTransactionManager
7+
import spock.lang.AutoCleanup
8+
import spock.lang.IgnoreIf
9+
import spock.lang.Shared
10+
import spock.lang.Specification
11+
12+
@Rollback
13+
class HibernateEntityTraitGeneratedSpec extends Specification {
14+
15+
@Shared @AutoCleanup HibernateDatastore datastore = new HibernateDatastore(Club)
16+
17+
void "test that all HibernateEntity trait methods are marked as Generated"() {
18+
// Unfortunately static methods have to check directly one by one
19+
expect:
20+
Club.getMethod('findAllWithSql', CharSequence).isAnnotationPresent(Generated)
21+
Club.getMethod('findWithSql', CharSequence).isAnnotationPresent(Generated)
22+
Club.getMethod('findAllWithSql', CharSequence, Map).isAnnotationPresent(Generated)
23+
Club.getMethod('findWithSql', CharSequence, Map).isAnnotationPresent(Generated)
24+
}
25+
26+
}

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)