Skip to content

Commit fb83f5e

Browse files
committed
Small progress on the multi-tenancy tests
1 parent a1b1be4 commit fb83f5e

File tree

3 files changed

+37
-35
lines changed

3 files changed

+37
-35
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/provider/service/NoJdbcMultiTenantConnectionProviderInitiator.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.Map;
99

1010
import org.hibernate.boot.registry.StandardServiceInitiator;
11+
import org.hibernate.cfg.AvailableSettings;
1112
import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider;
1213
import org.hibernate.service.spi.ServiceRegistryImplementor;
1314

@@ -23,14 +24,15 @@ public class NoJdbcMultiTenantConnectionProviderInitiator implements StandardSer
2324

2425
@Override
2526
public MultiTenantConnectionProvider initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
26-
// final MultiTenancyStrategy strategy = MultiTenancyStrategy.determineMultiTenancyStrategy( configurationValues );
27-
// if ( !strategy.requiresMultiTenantConnectionProvider() ) {
28-
// // nothing to do, but given the separate hierarchies have to handle this here.
29-
// return null;
30-
// }
31-
32-
// return new NoJdbcMultiTenantConnectionProvider();
33-
return null;
27+
//TODO surely we should interpret some meaning!?
28+
//Couldn't find any other way to force the SessionFactory into multi-tenancy mode. See https://hibernate.atlassian.net/browse/HHH-16246
29+
if ( !configurationValues.containsKey( AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER ) ) {
30+
//If this configuration key is not set, then multi-tenancy won't happen:
31+
return null;
32+
}
33+
//Otherwise, return a non-null implementation to ensure the SessionFactory enforces the use of a tenantId consistently
34+
//across all operations.
35+
return new NoJdbcMultiTenantConnectionProvider();
3436
}
3537

3638
@Override

hibernate-reactive-core/src/test/java/org/hibernate/reactive/ReactiveMultitenantNoResolverTest.java

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,25 @@
55
*/
66
package org.hibernate.reactive;
77

8-
import java.util.Objects;
9-
import java.util.concurrent.CompletionStage;
10-
11-
import org.assertj.core.api.Assertions;
8+
import io.smallrye.mutiny.Uni;
9+
import io.vertx.ext.unit.TestContext;
10+
import jakarta.persistence.Entity;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.Table;
13+
import jakarta.persistence.Version;
1214
import org.hibernate.HibernateException;
1315
import org.hibernate.LockMode;
16+
import org.hibernate.cfg.AvailableSettings;
1417
import org.hibernate.cfg.Configuration;
1518
import org.hibernate.reactive.mutiny.Mutiny;
1619
import org.hibernate.reactive.provider.Settings;
1720
import org.hibernate.reactive.stage.Stage;
1821
import org.hibernate.reactive.testing.DatabaseSelectionRule;
19-
2022
import org.junit.Rule;
2123
import org.junit.Test;
2224

23-
import io.smallrye.mutiny.Uni;
24-
import io.vertx.ext.unit.TestContext;
25-
import jakarta.persistence.Entity;
26-
import jakarta.persistence.Id;
27-
import jakarta.persistence.Table;
28-
import jakarta.persistence.Version;
25+
import java.util.Objects;
26+
import java.util.concurrent.CompletionStage;
2927

3028
import static org.assertj.core.api.Assertions.assertThat;
3129
import static org.hibernate.reactive.MyCurrentTenantIdentifierResolver.Tenant.DEFAULT;
@@ -49,18 +47,19 @@ public class ReactiveMultitenantNoResolverTest extends BaseReactiveTest {
4947
@Rule
5048
public DatabaseSelectionRule selectionRule = DatabaseSelectionRule.runOnlyFor( POSTGRESQL );
5149

52-
@Override
53-
protected Configuration constructConfiguration() {
54-
Configuration configuration = super.constructConfiguration();
55-
configuration.addAnnotatedClass( GuineaPig.class );
56-
Assertions.fail( "ORM-6: TODO: Check how multi-tenancy works in ORM 6" );
57-
// FIXME: Find new syntax for ORM 6
58-
// configuration.setProperty( Settings.MULTI_TENANT, MultiTenancyStrategy.DATABASE.name() );
59-
// Contains the SQL scripts for the creation of the additional databases
60-
configuration.setProperty( Settings.HBM2DDL_IMPORT_FILES, "/multitenancy-test.sql" );
61-
configuration.setProperty( Settings.SQL_CLIENT_POOL, TenantDependentPool.class.getName() );
62-
return configuration;
63-
}
50+
@Override
51+
protected Configuration constructConfiguration() {
52+
Configuration configuration = super.constructConfiguration();
53+
configuration.addAnnotatedClass(GuineaPig.class);
54+
configuration.setProperty(
55+
AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER,
56+
"anything"
57+
);//FIXME this is terrible?
58+
// Contains the SQL scripts for the creation of the additional databases
59+
configuration.setProperty(Settings.HBM2DDL_IMPORT_FILES, "/multitenancy-test.sql");
60+
configuration.setProperty(Settings.SQL_CLIENT_POOL, TenantDependentPool.class.getName());
61+
return configuration;
62+
}
6463

6564
@Test
6665
public void reactivePersistFindDelete(TestContext context) {

hibernate-reactive-core/src/test/java/org/hibernate/reactive/ReactiveMultitenantTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import java.util.Objects;
99

10-
import org.assertj.core.api.Assertions;
1110
import org.hibernate.LockMode;
11+
import org.hibernate.cfg.AvailableSettings;
1212
import org.hibernate.cfg.Configuration;
1313
import org.hibernate.reactive.provider.Settings;
1414
import org.hibernate.reactive.testing.DatabaseSelectionRule;
@@ -43,9 +43,10 @@ public class ReactiveMultitenantTest extends BaseReactiveTest {
4343
protected Configuration constructConfiguration() {
4444
Configuration configuration = super.constructConfiguration();
4545
configuration.addAnnotatedClass( GuineaPig.class );
46-
Assertions.fail( "ORM-6: TODO: Check how multi-tenancy works in ORM 6" );
47-
// FIXME: Find new syntax for ORM 6
48-
// configuration.setProperty( Settings.MULTI_TENANT, MultiTenancyStrategy.DATABASE.name() );
46+
configuration.setProperty(
47+
AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER,
48+
"anything"
49+
);//FIXME this is terrible?
4950
configuration.getProperties().put( Settings.MULTI_TENANT_IDENTIFIER_RESOLVER, TENANT_RESOLVER );
5051
// Contains the SQL scripts for the creation of the additional databases
5152
configuration.setProperty( Settings.HBM2DDL_IMPORT_FILES, "/multitenancy-test.sql" );

0 commit comments

Comments
 (0)