Skip to content

Commit

Permalink
HHH-17463 UnsupportedOperationException when using JAKARTA_JDBC_URL
Browse files Browse the repository at this point in the history
  • Loading branch information
dreab8 authored and beikov committed Dec 19, 2023
1 parent d5bde15 commit d90d6e6
Showing 1 changed file with 36 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.hibernate.boot.registry.BootstrapServiceRegistry;
import org.hibernate.boot.registry.StandardServiceInitiator;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.service.Service;
import org.hibernate.service.internal.AbstractServiceRegistryImpl;
import org.hibernate.service.internal.ProvidedService;
Expand All @@ -35,7 +36,7 @@ protected StandardServiceRegistryImpl(
BootstrapServiceRegistry bootstrapServiceRegistry,
Map<String,Object> configurationValues) {
super( bootstrapServiceRegistry, autoCloseRegistry );
this.configurationValues = configurationValues;
this.configurationValues = normalize( configurationValues);
}

/**
Expand Down Expand Up @@ -141,4 +142,38 @@ public synchronized void destroy() {
super.destroy();
this.configurationValues = null;
}

private static Map<String, Object> normalize(Map<String, Object> configurationValues) {
final Object jdbcUrl = configurationValues.get( AvailableSettings.JAKARTA_JDBC_URL );
if ( jdbcUrl != null ) {
configurationValues.putIfAbsent( AvailableSettings.URL, jdbcUrl );
}

final Object username = configurationValues.get( AvailableSettings.JAKARTA_JDBC_USER );
if ( username != null ) {
configurationValues.putIfAbsent( AvailableSettings.USER, username );
}

final Object password = configurationValues.get( AvailableSettings.JAKARTA_JDBC_PASSWORD );
if ( password != null ) {
configurationValues.putIfAbsent( AvailableSettings.PASS, password );
}

final Object driver = configurationValues.get( AvailableSettings.JAKARTA_JDBC_DRIVER );
if ( driver != null ) {
configurationValues.putIfAbsent( AvailableSettings.DRIVER, driver );
}

final Object nonJtaDatasource = configurationValues.get( AvailableSettings.JAKARTA_NON_JTA_DATASOURCE );
if ( nonJtaDatasource != null ) {
configurationValues.putIfAbsent( AvailableSettings.DATASOURCE, nonJtaDatasource );
}

final Object jtaDatasource = configurationValues.get( AvailableSettings.JAKARTA_JTA_DATASOURCE );
if ( jtaDatasource != null ) {
configurationValues.putIfAbsent( AvailableSettings.DATASOURCE, jtaDatasource );
}

return configurationValues;
}
}

0 comments on commit d90d6e6

Please sign in to comment.