Skip to content

Commit ea95723

Browse files
Add missing metadata for hibernate-core (#496)
* Add missing hints for hibernate-orm types referenced from ValueGenerationType. Closes: #323 * Back port hints to metadata for hibernate 6.2 See: #323
1 parent e9f8af0 commit ea95723

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

metadata/org.hibernate.orm/hibernate-core/6.2.0.Final/reflect-config.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,46 @@
453453
"name":"org.hibernate.event.spi.EventType",
454454
"allDeclaredFields":true
455455
},
456+
{
457+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
458+
"name":"org.hibernate.generator.internal.CurrentTimestampGeneration",
459+
"queryAllDeclaredConstructors":true,
460+
"methods":[
461+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.CreationTimestamp","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] },
462+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.CurrentTimestamp","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] },
463+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.UpdateTimestamp","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] }
464+
]
465+
},
466+
{
467+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
468+
"name":"org.hibernate.generator.internal.GeneratedAlwaysGeneration",
469+
"queryAllDeclaredConstructors":true,
470+
"methods":[{"name":"<init>","parameterTypes":[] }]
471+
},
472+
{
473+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
474+
"name":"org.hibernate.generator.internal.GeneratedGeneration",
475+
"queryAllDeclaredConstructors":true,
476+
"methods":[
477+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.Generated"] },
478+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.GenerationTime"] }
479+
]
480+
},
481+
{
482+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
483+
"name":"org.hibernate.generator.internal.SourceGeneration",
484+
"queryAllDeclaredConstructors":true,
485+
"methods":[
486+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.Source","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] },
487+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.SourceType","java.lang.Class","org.hibernate.generator.GeneratorCreationContext"] }
488+
]
489+
},
490+
{
491+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
492+
"name":"org.hibernate.generator.internal.TenantIdGeneration",
493+
"queryAllDeclaredConstructors":true,
494+
"methods":[{"name":"<init>","parameterTypes":["org.hibernate.annotations.TenantId","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] }]
495+
},
456496
{
457497
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
458498
"name":"org.hibernate.id.Assigned",

metadata/org.hibernate.orm/hibernate-core/6.5.0.Final/reflect-config.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,46 @@
518518
"name":"org.hibernate.event.spi.EventType",
519519
"allDeclaredFields":true
520520
},
521+
{
522+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
523+
"name":"org.hibernate.generator.internal.CurrentTimestampGeneration",
524+
"queryAllDeclaredConstructors":true,
525+
"methods":[
526+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.CreationTimestamp","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] },
527+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.CurrentTimestamp","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] },
528+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.UpdateTimestamp","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] }
529+
]
530+
},
531+
{
532+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
533+
"name":"org.hibernate.generator.internal.GeneratedAlwaysGeneration",
534+
"queryAllDeclaredConstructors":true,
535+
"methods":[{"name":"<init>","parameterTypes":[] }]
536+
},
537+
{
538+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
539+
"name":"org.hibernate.generator.internal.GeneratedGeneration",
540+
"queryAllDeclaredConstructors":true,
541+
"methods":[
542+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.Generated"] },
543+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.GenerationTime"] }
544+
]
545+
},
546+
{
547+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
548+
"name":"org.hibernate.generator.internal.SourceGeneration",
549+
"queryAllDeclaredConstructors":true,
550+
"methods":[
551+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.Source","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] },
552+
{"name":"<init>","parameterTypes":["org.hibernate.annotations.SourceType","java.lang.Class","org.hibernate.generator.GeneratorCreationContext"] }
553+
]
554+
},
555+
{
556+
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
557+
"name":"org.hibernate.generator.internal.TenantIdGeneration",
558+
"queryAllDeclaredConstructors":true,
559+
"methods":[{"name":"<init>","parameterTypes":["org.hibernate.annotations.TenantId","java.lang.reflect.Member","org.hibernate.generator.GeneratorCreationContext"] }]
560+
},
521561
{
522562
"condition":{"typeReachable":"org.hibernate.id.factory.internal.StandardIdentifierGeneratorFactory"},
523563
"name":"org.hibernate.id.Assigned",

tests/src/org.hibernate.orm/hibernate-core/6.5.0.Final/src/test/java/org_hibernate_orm/hibernate_core/IdentifierGeneratorTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,32 @@ public class IdentifierGeneratorTest {
2626
org.hibernate.id.ForeignGenerator.class
2727
};
2828

29+
private static final Class[] VALUE_GENERATION_TYPE_GENERATORS_FROM_ANNOTATIONS = new Class[]{
30+
org.hibernate.generator.internal.CurrentTimestampGeneration.class,
31+
org.hibernate.generator.internal.GeneratedAlwaysGeneration.class,
32+
org.hibernate.generator.internal.GeneratedGeneration.class,
33+
org.hibernate.generator.internal.SourceGeneration.class,
34+
org.hibernate.generator.internal.TenantIdGeneration.class
35+
};
36+
2937
@Test
3038
public void testIdentifierGenerators() throws Exception {
3139
for (Class clazz : identifierGenerators) {
3240
Constructor constructor = clazz.getConstructor();
3341
assertThat(constructor).isNotNull();
3442
}
3543
}
44+
45+
/**
46+
* {@link org.hibernate.annotations.ValueGenerationType#generatedBy()} may hold types reflectively instantiated.
47+
* This uses a list of those to make sure hints are present.
48+
*/
49+
@Test
50+
public void testValueGenerationTypes() throws Exception {
51+
for (Class clazz : VALUE_GENERATION_TYPE_GENERATORS_FROM_ANNOTATIONS) {
52+
for (Constructor<?> ctor : clazz.getDeclaredConstructors()) {
53+
assertThat(clazz.getConstructor(ctor.getParameterTypes())).isEqualTo(ctor);
54+
}
55+
}
56+
}
3657
}

0 commit comments

Comments
 (0)