2020import org .hibernate .dialect .sequence .ANSISequenceSupport ;
2121import org .hibernate .dialect .sequence .SequenceSupport ;
2222import org .hibernate .engine .jdbc .spi .JdbcServices ;
23+ import org .hibernate .generator .GeneratorCreationContext ;
2324import org .hibernate .id .OptimizableGenerator ;
2425import org .hibernate .id .PersistentIdentifierGenerator ;
2526import org .hibernate .id .enhanced .DatabaseStructure ;
3334import org .hibernate .id .enhanced .SequenceStyleGenerator ;
3435import org .hibernate .id .enhanced .StandardOptimizerDescriptor ;
3536import org .hibernate .id .enhanced .TableStructure ;
37+ import org .hibernate .mapping .PersistentClass ;
38+ import org .hibernate .mapping .Property ;
39+ import org .hibernate .service .ServiceRegistry ;
3640import org .hibernate .type .StandardBasicTypes ;
3741import org .hibernate .type .spi .TypeConfiguration ;
3842
@@ -70,16 +74,18 @@ public void testDefaultedSequenceBackedConfiguration() {
7074 () -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
7175 serviceRegistry
7276 );
77+ Database database = new Database ( buildingContext .getBuildingOptions () );
78+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
7379 Properties props = buildGeneratorPropertiesBase ( buildingContext );
7480 SequenceStyleGenerator generator = new SequenceStyleGenerator ();
81+ generator .create ( generatorCreationContext );
7582 generator .configure (
7683 new TypeConfiguration ().getBasicTypeRegistry ()
7784 .resolve ( StandardBasicTypes .LONG ),
7885 props ,
7986 serviceRegistry
8087 );
8188
82- Database database = new Database ( buildingContext .getBuildingOptions () );
8389 generator .registerExportables ( database );
8490 generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
8591
@@ -160,18 +166,22 @@ public void testDefaultOptimizerBasedOnIncrementBackedBySequence() {
160166 () -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
161167 serviceRegistry
162168 );
169+
170+ Database database = new Database ( buildingContext .getBuildingOptions () );
171+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
172+
163173 Properties props = buildGeneratorPropertiesBase ( buildingContext );
164174 props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "10" );
165175
166176 SequenceStyleGenerator generator = new SequenceStyleGenerator ();
177+ generator .create ( generatorCreationContext );
167178 generator .configure (
168179 new TypeConfiguration ().getBasicTypeRegistry ()
169180 .resolve ( StandardBasicTypes .LONG ),
170181 props ,
171182 serviceRegistry
172183 );
173184
174- Database database = new Database ( buildingContext .getBuildingOptions () );
175185 generator .registerExportables ( database );
176186 generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
177187
@@ -190,17 +200,20 @@ public void testDefaultOptimizerBasedOnIncrementBackedBySequence() {
190200 () -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
191201 serviceRegistry
192202 );
203+ Database database = new Database ( buildingContext .getBuildingOptions () );
204+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
205+
193206 Properties props = buildGeneratorPropertiesBase ( buildingContext );
194207 props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "10" );
195208
196209 SequenceStyleGenerator generator = new SequenceStyleGenerator ();
210+ generator .create ( generatorCreationContext );
197211 generator .configure (
198212 new TypeConfiguration ().getBasicTypeRegistry ()
199213 .resolve ( StandardBasicTypes .LONG ),
200214 props ,
201215 serviceRegistry
202216 );
203- Database database = new Database ( buildingContext .getBuildingOptions () );
204217 generator .registerExportables ( database );
205218 generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
206219
@@ -226,17 +239,20 @@ public void testDefaultOptimizerBasedOnIncrementBackedByTable() {
226239 () -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
227240 serviceRegistry
228241 );
242+ Database database = new Database ( buildingContext .getBuildingOptions () );
243+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
244+
229245 Properties props = buildGeneratorPropertiesBase ( buildingContext );
230246 props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "10" );
231247
232248 SequenceStyleGenerator generator = new SequenceStyleGenerator ();
249+ generator .create ( generatorCreationContext );
233250 generator .configure (
234251 new TypeConfiguration ().getBasicTypeRegistry ()
235252 .resolve ( StandardBasicTypes .LONG ),
236253 props ,
237254 serviceRegistry
238255 );
239- Database database = new Database ( buildingContext .getBuildingOptions () );
240256 generator .registerExportables ( database );
241257 generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
242258
@@ -285,6 +301,44 @@ public void testForceTableUse() {
285301 }
286302 }
287303
304+ private static class GeneratorCreationContextImpl implements GeneratorCreationContext {
305+ private final Database database ;
306+
307+ public GeneratorCreationContextImpl (Database database ) {
308+ this .database = database ;
309+ }
310+
311+ @ Override
312+ public Database getDatabase () {
313+ return database ;
314+ }
315+
316+ @ Override
317+ public ServiceRegistry getServiceRegistry () {
318+ return database .getServiceRegistry ();
319+ }
320+
321+ @ Override
322+ public String getDefaultCatalog () {
323+ throw new UnsupportedOperationException ();
324+ }
325+
326+ @ Override
327+ public String getDefaultSchema () {
328+ throw new UnsupportedOperationException ();
329+ }
330+
331+ @ Override
332+ public PersistentClass getPersistentClass () {
333+ throw new UnsupportedOperationException ();
334+ }
335+
336+ @ Override
337+ public Property getProperty () {
338+ throw new UnsupportedOperationException ();
339+ }
340+ }
341+
288342 /**
289343 * Test explicitly specifying both optimizer and increment
290344 */
@@ -302,14 +356,18 @@ public void testExplicitOptimizerWithExplicitIncrementSize() {
302356 Properties props = buildGeneratorPropertiesBase ( buildingContext );
303357 props .setProperty ( SequenceStyleGenerator .OPT_PARAM , StandardOptimizerDescriptor .NONE .getExternalName () );
304358 props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "20" );
359+
360+ Database database = new Database ( buildingContext .getBuildingOptions () );
361+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
362+
305363 SequenceStyleGenerator generator = new SequenceStyleGenerator ();
364+ generator .create ( generatorCreationContext );
306365 generator .configure (
307366 new TypeConfiguration ().getBasicTypeRegistry ()
308367 .resolve ( StandardBasicTypes .LONG ),
309368 props ,
310369 serviceRegistry
311370 );
312- Database database = new Database ( buildingContext .getBuildingOptions () );
313371 generator .registerExportables ( database );
314372 generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
315373
@@ -323,6 +381,7 @@ public void testExplicitOptimizerWithExplicitIncrementSize() {
323381 props .setProperty ( SequenceStyleGenerator .OPT_PARAM , StandardOptimizerDescriptor .HILO .getExternalName () );
324382 props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "20" );
325383 generator = new SequenceStyleGenerator ();
384+ generator .create ( generatorCreationContext );
326385 generator .configure (
327386 new TypeConfiguration ().getBasicTypeRegistry ()
328387 .resolve ( StandardBasicTypes .LONG ),
@@ -341,6 +400,7 @@ public void testExplicitOptimizerWithExplicitIncrementSize() {
341400 props .setProperty ( SequenceStyleGenerator .OPT_PARAM , StandardOptimizerDescriptor .POOLED .getExternalName () );
342401 props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "20" );
343402 generator = new SequenceStyleGenerator ();
403+ generator .create ( generatorCreationContext );
344404 generator .configure (
345405 new TypeConfiguration ().getBasicTypeRegistry ()
346406 .resolve ( StandardBasicTypes .LONG ),
@@ -368,23 +428,27 @@ public void testPreferredPooledOptimizerSetting() {
368428 () -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
369429 serviceRegistry
370430 );
431+ Database database = new Database ( buildingContext .getBuildingOptions () );
432+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
433+
371434 Properties props = buildGeneratorPropertiesBase ( buildingContext );
372435 props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "20" );
373436 SequenceStyleGenerator generator = new SequenceStyleGenerator ();
437+ generator .create ( generatorCreationContext );
374438 generator .configure (
375439 new TypeConfiguration ().getBasicTypeRegistry ()
376440 .resolve ( StandardBasicTypes .LONG ),
377441 props ,
378442 serviceRegistry
379443 );
380- Database database = new Database ( buildingContext .getBuildingOptions () );
381444 generator .registerExportables ( database );
382445 generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
383446 assertClassAssignability ( SequenceStructure .class , generator .getDatabaseStructure ().getClass () );
384447 assertClassAssignability ( PooledOptimizer .class , generator .getOptimizer ().getClass () );
385448
386449 props .setProperty ( Environment .PREFERRED_POOLED_OPTIMIZER , StandardOptimizerDescriptor .POOLED_LO .getExternalName () );
387450 generator = new SequenceStyleGenerator ();
451+ generator .create ( generatorCreationContext );
388452 generator .configure (
389453 new TypeConfiguration ().getBasicTypeRegistry ()
390454 .resolve ( StandardBasicTypes .LONG ),
@@ -398,6 +462,7 @@ public void testPreferredPooledOptimizerSetting() {
398462
399463 props .setProperty ( Environment .PREFERRED_POOLED_OPTIMIZER , StandardOptimizerDescriptor .POOLED_LOTL .getExternalName () );
400464 generator = new SequenceStyleGenerator ();
465+ generator .create ( generatorCreationContext );
401466 generator .configure (
402467 new TypeConfiguration ().getBasicTypeRegistry ()
403468 .resolve ( StandardBasicTypes .LONG ),
0 commit comments