squash lots of warnings in services
change the raw Map representation of config properties to Map<String,Object>
This commit is contained in:
parent
1f40ed164c
commit
e51c210d78
|
@ -27,6 +27,7 @@ import org.hibernate.cfg.AvailableSettings;
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl;
|
import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
|
import org.hibernate.internal.util.PropertiesHelper;
|
||||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
import org.hibernate.service.spi.Stoppable;
|
import org.hibernate.service.spi.Stoppable;
|
||||||
import org.hibernate.tool.schema.internal.HibernateSchemaManagementTool;
|
import org.hibernate.tool.schema.internal.HibernateSchemaManagementTool;
|
||||||
|
@ -88,7 +89,7 @@ public abstract class AbstractMultiTenancyTest extends BaseUnitTestCase {
|
||||||
|
|
||||||
DriverManagerConnectionProviderImpl connectionProvider =
|
DriverManagerConnectionProviderImpl connectionProvider =
|
||||||
new DriverManagerConnectionProviderImpl();
|
new DriverManagerConnectionProviderImpl();
|
||||||
connectionProvider.configure(properties);
|
connectionProvider.configure( PropertiesHelper.map(properties) );
|
||||||
connectionProviderMap.put(tenantIdentifier, connectionProvider);
|
connectionProviderMap.put(tenantIdentifier, connectionProvider);
|
||||||
}
|
}
|
||||||
//end::multitenacy-hibernate-MultiTenantConnectionProvider-example[]
|
//end::multitenacy-hibernate-MultiTenantConnectionProvider-example[]
|
||||||
|
|
|
@ -34,6 +34,7 @@ import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.dialect.H2Dialect;
|
import org.hibernate.dialect.H2Dialect;
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl;
|
import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
|
import org.hibernate.internal.util.PropertiesHelper;
|
||||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
import org.hibernate.service.spi.Stoppable;
|
import org.hibernate.service.spi.Stoppable;
|
||||||
import org.hibernate.tool.schema.internal.HibernateSchemaManagementTool;
|
import org.hibernate.tool.schema.internal.HibernateSchemaManagementTool;
|
||||||
|
@ -101,12 +102,12 @@ public class DatabaseTimeZoneMultiTenancyTest extends BaseUnitTestCase {
|
||||||
Properties properties = properties();
|
Properties properties = properties();
|
||||||
properties.put(
|
properties.put(
|
||||||
Environment.URL,
|
Environment.URL,
|
||||||
tenantUrl(properties.getProperty(Environment.URL), tenantIdentifier)
|
tenantUrl( properties.getProperty(Environment.URL), tenantIdentifier )
|
||||||
);
|
);
|
||||||
|
|
||||||
DriverManagerConnectionProviderImpl connectionProvider =
|
DriverManagerConnectionProviderImpl connectionProvider =
|
||||||
new DriverManagerConnectionProviderImpl();
|
new DriverManagerConnectionProviderImpl();
|
||||||
connectionProvider.configure(properties);
|
connectionProvider.configure( PropertiesHelper.map(properties) );
|
||||||
|
|
||||||
connectionProviderMap.put(tenantIdentifier, connectionProvider);
|
connectionProviderMap.put(tenantIdentifier, connectionProvider);
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class AgroalConnectionProvider implements ConnectionProvider, Configurabl
|
||||||
|
|
||||||
// --- Configurable
|
// --- Configurable
|
||||||
|
|
||||||
private static void resolveIsolationSetting(Map<String, String> properties, AgroalConnectionFactoryConfigurationSupplier cf) {
|
private static void resolveIsolationSetting(Map<String, Object> properties, AgroalConnectionFactoryConfigurationSupplier cf) {
|
||||||
Integer isolation = ConnectionProviderInitiator.extractIsolation( properties );
|
Integer isolation = ConnectionProviderInitiator.extractIsolation( properties );
|
||||||
if ( isolation != null ) {
|
if ( isolation != null ) {
|
||||||
// Agroal resolves transaction isolation from the 'nice' name
|
// Agroal resolves transaction isolation from the 'nice' name
|
||||||
|
@ -67,19 +67,19 @@ public class AgroalConnectionProvider implements ConnectionProvider, Configurabl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T> void copyProperty(Map<String, String> properties, String key, Consumer<T> consumer, Function<String, T> converter) {
|
private static <T> void copyProperty(Map<String, Object> properties, String key, Consumer<T> consumer, Function<String, T> converter) {
|
||||||
String value = properties.get( key );
|
Object value = properties.get( key );
|
||||||
if ( value != null ) {
|
if ( value instanceof String ) {
|
||||||
consumer.accept( converter.apply( value ) );
|
consumer.accept( converter.apply( (String) value ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( "unchecked" )
|
public void configure(Map<String, Object> props) throws HibernateException {
|
||||||
public void configure(Map props) throws HibernateException {
|
|
||||||
LOGGER.debug( "Configuring Agroal" );
|
LOGGER.debug( "Configuring Agroal" );
|
||||||
try {
|
try {
|
||||||
AgroalPropertiesReader agroalProperties = new AgroalPropertiesReader( CONFIG_PREFIX ).readProperties( props );
|
AgroalPropertiesReader agroalProperties = new AgroalPropertiesReader( CONFIG_PREFIX )
|
||||||
|
.readProperties( (Map) props ); //TODO: this is a garbage cast
|
||||||
agroalProperties.modify().connectionPoolConfiguration( cp -> cp.connectionFactoryConfiguration( cf -> {
|
agroalProperties.modify().connectionPoolConfiguration( cp -> cp.connectionFactoryConfiguration( cf -> {
|
||||||
copyProperty( props, AvailableSettings.DRIVER, cf::connectionProviderClassName, Function.identity() );
|
copyProperty( props, AvailableSettings.DRIVER, cf::connectionProviderClassName, Function.identity() );
|
||||||
copyProperty( props, AvailableSettings.URL, cf::jdbcUrl, Function.identity() );
|
copyProperty( props, AvailableSettings.URL, cf::jdbcUrl, Function.identity() );
|
||||||
|
@ -119,15 +119,17 @@ public class AgroalConnectionProvider implements ConnectionProvider, Configurabl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( "rawtypes" )
|
public boolean isUnwrappableAs(Class<?> unwrapType) {
|
||||||
public boolean isUnwrappableAs(Class unwrapType) {
|
return ConnectionProvider.class.equals( unwrapType )
|
||||||
return ConnectionProvider.class.equals( unwrapType ) || AgroalConnectionProvider.class.isAssignableFrom( unwrapType ) || DataSource.class.isAssignableFrom( unwrapType );
|
|| AgroalConnectionProvider.class.isAssignableFrom( unwrapType )
|
||||||
|
|| DataSource.class.isAssignableFrom( unwrapType );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( "unchecked" )
|
@SuppressWarnings( "unchecked" )
|
||||||
public <T> T unwrap(Class<T> unwrapType) {
|
public <T> T unwrap(Class<T> unwrapType) {
|
||||||
if ( ConnectionProvider.class.equals( unwrapType ) || AgroalConnectionProvider.class.isAssignableFrom( unwrapType ) ) {
|
if ( ConnectionProvider.class.equals( unwrapType )
|
||||||
|
|| AgroalConnectionProvider.class.isAssignableFrom( unwrapType ) ) {
|
||||||
return (T) this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
if ( DataSource.class.isAssignableFrom( unwrapType ) ) {
|
if ( DataSource.class.isAssignableFrom( unwrapType ) ) {
|
||||||
|
|
|
@ -21,6 +21,7 @@ import org.hibernate.boot.registry.classloading.spi.ClassLoadingException;
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator;
|
import org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
|
import org.hibernate.internal.util.PropertiesHelper;
|
||||||
import org.hibernate.internal.util.config.ConfigurationHelper;
|
import org.hibernate.internal.util.config.ConfigurationHelper;
|
||||||
import org.hibernate.service.UnknownUnwrapTypeException;
|
import org.hibernate.service.UnknownUnwrapTypeException;
|
||||||
import org.hibernate.service.spi.Configurable;
|
import org.hibernate.service.spi.Configurable;
|
||||||
|
@ -67,11 +68,10 @@ public class C3P0ConnectionProvider
|
||||||
private ServiceRegistryImplementor serviceRegistry;
|
private ServiceRegistryImplementor serviceRegistry;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("UnnecessaryUnboxing")
|
|
||||||
public Connection getConnection() throws SQLException {
|
public Connection getConnection() throws SQLException {
|
||||||
final Connection c = ds.getConnection();
|
final Connection c = ds.getConnection();
|
||||||
if ( isolation != null && !isolation.equals( c.getTransactionIsolation() ) ) {
|
if ( isolation != null && isolation != c.getTransactionIsolation() ) {
|
||||||
c.setTransactionIsolation( isolation.intValue() );
|
c.setTransactionIsolation( isolation );
|
||||||
}
|
}
|
||||||
if ( c.getAutoCommit() != autocommit ) {
|
if ( c.getAutoCommit() != autocommit ) {
|
||||||
c.setAutoCommit( autocommit );
|
c.setAutoCommit( autocommit );
|
||||||
|
@ -85,7 +85,7 @@ public class C3P0ConnectionProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isUnwrappableAs(Class unwrapType) {
|
public boolean isUnwrappableAs(Class<?> unwrapType) {
|
||||||
return ConnectionProvider.class.equals( unwrapType ) ||
|
return ConnectionProvider.class.equals( unwrapType ) ||
|
||||||
C3P0ConnectionProvider.class.isAssignableFrom( unwrapType ) ||
|
C3P0ConnectionProvider.class.isAssignableFrom( unwrapType ) ||
|
||||||
DataSource.class.isAssignableFrom( unwrapType );
|
DataSource.class.isAssignableFrom( unwrapType );
|
||||||
|
@ -107,8 +107,7 @@ public class C3P0ConnectionProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings({"unchecked"})
|
public void configure(Map<String, Object> props) {
|
||||||
public void configure(Map props) {
|
|
||||||
final String jdbcDriverClass = (String) props.get( Environment.DRIVER );
|
final String jdbcDriverClass = (String) props.get( Environment.DRIVER );
|
||||||
final String jdbcUrl = (String) props.get( Environment.URL );
|
final String jdbcUrl = (String) props.get( Environment.URL );
|
||||||
final Properties connectionProps = ConnectionProviderInitiator.getConnectionProperties( props );
|
final Properties connectionProps = ConnectionProviderInitiator.getConnectionProperties( props );
|
||||||
|
@ -145,11 +144,7 @@ public class C3P0ConnectionProvider
|
||||||
|
|
||||||
// turn hibernate.c3p0.* into c3p0.*, so c3p0
|
// turn hibernate.c3p0.* into c3p0.*, so c3p0
|
||||||
// gets a chance to see all hibernate.c3p0.*
|
// gets a chance to see all hibernate.c3p0.*
|
||||||
for ( Object o : props.keySet() ) {
|
for ( String key : props.keySet() ) {
|
||||||
if ( !String.class.isInstance( o ) ) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
final String key = (String) o;
|
|
||||||
if ( key.startsWith( "hibernate.c3p0." ) ) {
|
if ( key.startsWith( "hibernate.c3p0." ) ) {
|
||||||
final String newKey = key.substring( 15 );
|
final String newKey = key.substring( 15 );
|
||||||
if ( props.containsKey( newKey ) ) {
|
if ( props.containsKey( newKey ) ) {
|
||||||
|
@ -185,9 +180,9 @@ public class C3P0ConnectionProvider
|
||||||
|
|
||||||
final DataSource unpooled = DataSources.unpooledDataSource( jdbcUrl, connectionProps );
|
final DataSource unpooled = DataSources.unpooledDataSource( jdbcUrl, connectionProps );
|
||||||
|
|
||||||
final Map allProps = new HashMap();
|
final Map<String,Object> allProps = new HashMap<>();
|
||||||
allProps.putAll( props );
|
allProps.putAll( props );
|
||||||
allProps.putAll( c3props );
|
allProps.putAll( PropertiesHelper.map(c3props) );
|
||||||
|
|
||||||
ds = DataSources.pooledDataSource( unpooled, allProps );
|
ds = DataSources.pooledDataSource( unpooled, allProps );
|
||||||
}
|
}
|
||||||
|
@ -208,7 +203,7 @@ public class C3P0ConnectionProvider
|
||||||
private void setOverwriteProperty(
|
private void setOverwriteProperty(
|
||||||
String hibernateStyleKey,
|
String hibernateStyleKey,
|
||||||
String c3p0StyleKey,
|
String c3p0StyleKey,
|
||||||
Map hibp,
|
Map<String,Object> hibp,
|
||||||
Properties c3p,
|
Properties c3p,
|
||||||
Integer value) {
|
Integer value) {
|
||||||
if ( value != null ) {
|
if ( value != null ) {
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
package org.hibernate.test.c3p0;
|
package org.hibernate.test.c3p0;
|
||||||
|
|
||||||
import java.lang.management.ManagementFactory;
|
import java.lang.management.ManagementFactory;
|
||||||
import java.util.Properties;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import javax.management.MBeanServer;
|
import javax.management.MBeanServer;
|
||||||
import javax.management.ObjectName;
|
import javax.management.ObjectName;
|
||||||
|
@ -94,8 +95,8 @@ public class C3P0ConnectionProviderTest extends BaseCoreFunctionalTestCase {
|
||||||
public void testIsolationPropertyCouldBeEmpty() {
|
public void testIsolationPropertyCouldBeEmpty() {
|
||||||
C3P0ConnectionProvider provider = new C3P0ConnectionProvider();
|
C3P0ConnectionProvider provider = new C3P0ConnectionProvider();
|
||||||
try {
|
try {
|
||||||
Properties configuration = new Properties();
|
Map<String,Object> configuration = new HashMap<>();
|
||||||
configuration.setProperty( Environment.ISOLATION, "" );
|
configuration.put( Environment.ISOLATION, "" );
|
||||||
provider.configure( configuration );
|
provider.configure( configuration );
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class C3P0DefaultIsolationLevelTest extends
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
connectionProvider = new C3P0ProxyConnectionProvider();
|
connectionProvider = new C3P0ProxyConnectionProvider();
|
||||||
settings.put( AvailableSettings.CONNECTION_PROVIDER, connectionProvider );
|
settings.put( AvailableSettings.CONNECTION_PROVIDER, connectionProvider );
|
||||||
settings.put( AvailableSettings.ISOLATION, "READ_COMMITTED" );
|
settings.put( AvailableSettings.ISOLATION, "READ_COMMITTED" );
|
||||||
|
|
|
@ -19,7 +19,6 @@ import org.junit.Test;
|
||||||
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
|
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.Mockito.never;
|
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
@ -47,7 +46,7 @@ public class C3P0DifferentIsolationLevelTest extends
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
connectionProvider = new C3P0ProxyConnectionProvider();
|
connectionProvider = new C3P0ProxyConnectionProvider();
|
||||||
settings.put( AvailableSettings.CONNECTION_PROVIDER, connectionProvider );
|
settings.put( AvailableSettings.CONNECTION_PROVIDER, connectionProvider );
|
||||||
settings.put( AvailableSettings.ISOLATION, "REPEATABLE_READ" );
|
settings.put( AvailableSettings.ISOLATION, "REPEATABLE_READ" );
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class C3P0ProxyConnectionProvider extends C3P0ConnectionProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map props) {
|
public void configure(Map<String, Object> props) {
|
||||||
super.configure( props );
|
super.configure( props );
|
||||||
DataSource ds = unwrap( DataSource.class );
|
DataSource ds = unwrap( DataSource.class );
|
||||||
DataSource dataSource = spy( ds );
|
DataSource dataSource = spy( ds );
|
||||||
|
@ -45,7 +45,7 @@ public class C3P0ProxyConnectionProvider extends C3P0ConnectionProvider {
|
||||||
throw new IllegalStateException( e );
|
throw new IllegalStateException( e );
|
||||||
}
|
}
|
||||||
|
|
||||||
ReflectionUtil.setField( C3P0ConnectionProvider.class.cast( this ), "ds", dataSource );
|
ReflectionUtil.setField( this, "ds", dataSource );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.community.dialect;
|
package org.hibernate.community.dialect;
|
||||||
|
|
||||||
import java.util.Properties;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import org.hibernate.boot.registry.BootstrapServiceRegistry;
|
import org.hibernate.boot.registry.BootstrapServiceRegistry;
|
||||||
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
|
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
|
||||||
|
@ -14,8 +14,6 @@ import org.hibernate.boot.registry.StandardServiceRegistry;
|
||||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||||
import org.hibernate.dialect.Dialect;
|
import org.hibernate.dialect.Dialect;
|
||||||
import org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl;
|
import org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl;
|
||||||
import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
|
|
||||||
import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfoSource;
|
|
||||||
import org.hibernate.engine.jdbc.dialect.spi.DialectResolver;
|
import org.hibernate.engine.jdbc.dialect.spi.DialectResolver;
|
||||||
import org.hibernate.orm.test.dialect.resolver.TestingDialectResolutionInfo;
|
import org.hibernate.orm.test.dialect.resolver.TestingDialectResolutionInfo;
|
||||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
|
@ -80,13 +78,8 @@ public class CommunityDialectFactoryTest extends BaseUnitTestCase {
|
||||||
DialectResolver resolver) {
|
DialectResolver resolver) {
|
||||||
dialectFactory.setDialectResolver( resolver );
|
dialectFactory.setDialectResolver( resolver );
|
||||||
Dialect resolved = dialectFactory.buildDialect(
|
Dialect resolved = dialectFactory.buildDialect(
|
||||||
new Properties(),
|
new HashMap<>(),
|
||||||
new DialectResolutionInfoSource() {
|
() -> TestingDialectResolutionInfo.forDatabaseInfo( databaseName, driverName, majorVersion, minorVersion )
|
||||||
@Override
|
|
||||||
public DialectResolutionInfo getDialectResolutionInfo() {
|
|
||||||
return TestingDialectResolutionInfo.forDatabaseInfo( databaseName, driverName, majorVersion, minorVersion );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
assertEquals( expected, resolved.getClass() );
|
assertEquals( expected, resolved.getClass() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ import org.hibernate.boot.cfgxml.spi.LoadedConfig;
|
||||||
public class CfgXmlAccessServiceImpl implements CfgXmlAccessService {
|
public class CfgXmlAccessServiceImpl implements CfgXmlAccessService {
|
||||||
private final LoadedConfig aggregatedCfgXml;
|
private final LoadedConfig aggregatedCfgXml;
|
||||||
|
|
||||||
public CfgXmlAccessServiceImpl(Map configurationValues) {
|
public CfgXmlAccessServiceImpl(Map<?,?> configurationValues) {
|
||||||
aggregatedCfgXml = (LoadedConfig) configurationValues.get( LOADED_CONFIG_KEY );
|
aggregatedCfgXml = (LoadedConfig) configurationValues.get( LOADED_CONFIG_KEY );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class CfgXmlAccessServiceInitiator implements StandardServiceInitiator<Cf
|
||||||
public static final CfgXmlAccessServiceInitiator INSTANCE = new CfgXmlAccessServiceInitiator();
|
public static final CfgXmlAccessServiceInitiator INSTANCE = new CfgXmlAccessServiceInitiator();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CfgXmlAccessService initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public CfgXmlAccessService initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return new CfgXmlAccessServiceImpl( configurationValues );
|
return new CfgXmlAccessServiceImpl( configurationValues );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,11 +38,11 @@ public class LoadedConfig {
|
||||||
|
|
||||||
private String sessionFactoryName;
|
private String sessionFactoryName;
|
||||||
|
|
||||||
private final Map configurationValues = new ConcurrentHashMap( 16, 0.75f, 1 );
|
private final Map<String,Object> configurationValues = new ConcurrentHashMap<>( 16, 0.75f, 1 );
|
||||||
|
|
||||||
private List<CacheRegionDefinition> cacheRegionDefinitions;
|
private List<CacheRegionDefinition> cacheRegionDefinitions;
|
||||||
private List<MappingReference> mappingReferences;
|
private List<MappingReference> mappingReferences;
|
||||||
private Map<EventType,Set<String>> eventListenerMap;
|
private Map<EventType<?>,Set<String>> eventListenerMap;
|
||||||
|
|
||||||
public LoadedConfig(String sessionFactoryName) {
|
public LoadedConfig(String sessionFactoryName) {
|
||||||
this.sessionFactoryName = sessionFactoryName;
|
this.sessionFactoryName = sessionFactoryName;
|
||||||
|
@ -52,7 +52,7 @@ public class LoadedConfig {
|
||||||
return sessionFactoryName;
|
return sessionFactoryName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map getConfigurationValues() {
|
public Map<String,Object> getConfigurationValues() {
|
||||||
return configurationValues;
|
return configurationValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ public class LoadedConfig {
|
||||||
return mappingReferences == null ? Collections.emptyList() : mappingReferences;
|
return mappingReferences == null ? Collections.emptyList() : mappingReferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<EventType, Set<String>> getEventListenerMap() {
|
public Map<EventType<?>, Set<String>> getEventListenerMap() {
|
||||||
return eventListenerMap == null ? Collections.emptyMap() : eventListenerMap;
|
return eventListenerMap == null ? Collections.emptyMap() : eventListenerMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ public class LoadedConfig {
|
||||||
|
|
||||||
if ( !jaxbCfg.getSessionFactory().getListener().isEmpty() ) {
|
if ( !jaxbCfg.getSessionFactory().getListener().isEmpty() ) {
|
||||||
for ( JaxbCfgEventListenerType listener : jaxbCfg.getSessionFactory().getListener() ) {
|
for ( JaxbCfgEventListenerType listener : jaxbCfg.getSessionFactory().getListener() ) {
|
||||||
final EventType eventType = EventType.resolveEventTypeByName( listener.getType().value() );
|
final EventType<?> eventType = EventType.resolveEventTypeByName( listener.getType().value() );
|
||||||
cfg.addEventListener( eventType, listener.getClazz() );
|
cfg.addEventListener( eventType, listener.getClazz() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ public class LoadedConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
final String eventTypeName = listenerGroup.getType().value();
|
final String eventTypeName = listenerGroup.getType().value();
|
||||||
final EventType eventType = EventType.resolveEventTypeByName( eventTypeName );
|
final EventType<?> eventType = EventType.resolveEventTypeByName( eventTypeName );
|
||||||
|
|
||||||
for ( JaxbCfgEventListenerType listener : listenerGroup.getListener() ) {
|
for ( JaxbCfgEventListenerType listener : listenerGroup.getListener() ) {
|
||||||
if ( listener.getType() != null ) {
|
if ( listener.getType() != null ) {
|
||||||
|
@ -127,7 +127,6 @@ public class LoadedConfig {
|
||||||
return value.trim();
|
return value.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
private void addConfigurationValue(String propertyName, String value) {
|
private void addConfigurationValue(String propertyName, String value) {
|
||||||
value = trim( value );
|
value = trim( value );
|
||||||
configurationValues.put( propertyName, value );
|
configurationValues.put( propertyName, value );
|
||||||
|
@ -146,7 +145,7 @@ public class LoadedConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CacheRegionDefinition parseCacheRegionDefinition(Object cacheDeclaration) {
|
private static CacheRegionDefinition parseCacheRegionDefinition(Object cacheDeclaration) {
|
||||||
if ( JaxbCfgEntityCacheType.class.isInstance( cacheDeclaration ) ) {
|
if ( cacheDeclaration instanceof JaxbCfgEntityCacheType ) {
|
||||||
final JaxbCfgEntityCacheType jaxbClassCache = (JaxbCfgEntityCacheType) cacheDeclaration;
|
final JaxbCfgEntityCacheType jaxbClassCache = (JaxbCfgEntityCacheType) cacheDeclaration;
|
||||||
return new CacheRegionDefinition(
|
return new CacheRegionDefinition(
|
||||||
CacheRegionDefinition.CacheRegionType.ENTITY,
|
CacheRegionDefinition.CacheRegionType.ENTITY,
|
||||||
|
@ -175,7 +174,7 @@ public class LoadedConfig {
|
||||||
cacheRegionDefinitions.add( cacheRegionDefinition );
|
cacheRegionDefinitions.add( cacheRegionDefinition );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addEventListener(EventType eventType, String listenerClass) {
|
public void addEventListener(EventType<?> eventType, String listenerClass) {
|
||||||
if ( eventListenerMap == null ) {
|
if ( eventListenerMap == null ) {
|
||||||
eventListenerMap = new HashMap<>();
|
eventListenerMap = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
@ -216,8 +215,7 @@ public class LoadedConfig {
|
||||||
addEventListeners( incoming.getEventListenerMap() );
|
addEventListeners( incoming.getEventListenerMap() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
protected void addConfigurationValues(Map<String,Object> configurationValues) {
|
||||||
protected void addConfigurationValues(Map configurationValues) {
|
|
||||||
if ( configurationValues == null ) {
|
if ( configurationValues == null ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -247,7 +245,7 @@ public class LoadedConfig {
|
||||||
this.cacheRegionDefinitions.addAll( cacheRegionDefinitions );
|
this.cacheRegionDefinitions.addAll( cacheRegionDefinitions );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addEventListeners(Map<EventType, Set<String>> eventListenerMap) {
|
private void addEventListeners(Map<EventType<?>, Set<String>> eventListenerMap) {
|
||||||
if ( eventListenerMap == null ) {
|
if ( eventListenerMap == null ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -256,7 +254,7 @@ public class LoadedConfig {
|
||||||
this.eventListenerMap = new HashMap<>();
|
this.eventListenerMap = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( Map.Entry<EventType, Set<String>> incomingEntry : eventListenerMap.entrySet() ) {
|
for ( Map.Entry<EventType<?>, Set<String>> incomingEntry : eventListenerMap.entrySet() ) {
|
||||||
Set<String> listenerClasses = this.eventListenerMap.get( incomingEntry.getKey() );
|
Set<String> listenerClasses = this.eventListenerMap.get( incomingEntry.getKey() );
|
||||||
if ( listenerClasses == null ) {
|
if ( listenerClasses == null ) {
|
||||||
listenerClasses = new HashSet<>();
|
listenerClasses = new HashSet<>();
|
||||||
|
|
|
@ -20,7 +20,7 @@ public final class DefaultSessionFactoryBuilderInitiator implements StandardServ
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SessionFactoryBuilderService initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public SessionFactoryBuilderService initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return DefaultSessionFactoryBuilderService.INSTANCE;
|
return DefaultSessionFactoryBuilderService.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@ import java.util.TimeZone;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import org.hibernate.ConnectionReleaseMode;
|
|
||||||
import org.hibernate.CustomEntityDirtinessStrategy;
|
import org.hibernate.CustomEntityDirtinessStrategy;
|
||||||
import org.hibernate.EmptyInterceptor;
|
import org.hibernate.EmptyInterceptor;
|
||||||
import org.hibernate.EntityNameResolver;
|
import org.hibernate.EntityNameResolver;
|
||||||
|
@ -50,6 +49,7 @@ import org.hibernate.engine.jdbc.spi.JdbcServices;
|
||||||
import org.hibernate.id.uuid.LocalObjectUuidHelper;
|
import org.hibernate.id.uuid.LocalObjectUuidHelper;
|
||||||
import org.hibernate.internal.CoreMessageLogger;
|
import org.hibernate.internal.CoreMessageLogger;
|
||||||
import org.hibernate.internal.util.NullnessHelper;
|
import org.hibernate.internal.util.NullnessHelper;
|
||||||
|
import org.hibernate.internal.util.PropertiesHelper;
|
||||||
import org.hibernate.internal.util.StringHelper;
|
import org.hibernate.internal.util.StringHelper;
|
||||||
import org.hibernate.internal.util.config.ConfigurationHelper;
|
import org.hibernate.internal.util.config.ConfigurationHelper;
|
||||||
import org.hibernate.jpa.spi.JpaCompliance;
|
import org.hibernate.jpa.spi.JpaCompliance;
|
||||||
|
@ -268,8 +268,8 @@ public class SessionFactoryOptionsBuilder implements SessionFactoryOptions {
|
||||||
ConfigurationService cfgService = serviceRegistry.getService( ConfigurationService.class );
|
ConfigurationService cfgService = serviceRegistry.getService( ConfigurationService.class );
|
||||||
final JdbcServices jdbcServices = serviceRegistry.getService( JdbcServices.class );
|
final JdbcServices jdbcServices = serviceRegistry.getService( JdbcServices.class );
|
||||||
|
|
||||||
final Map<Object,Object> configurationSettings = new HashMap<>();
|
final Map<String,Object> configurationSettings = new HashMap<>();
|
||||||
configurationSettings.putAll( jdbcServices.getJdbcEnvironment().getDialect().getDefaultProperties() );
|
configurationSettings.putAll( PropertiesHelper.map( jdbcServices.getJdbcEnvironment().getDialect().getDefaultProperties() ) );
|
||||||
configurationSettings.putAll( cfgService.getSettings() );
|
configurationSettings.putAll( cfgService.getSettings() );
|
||||||
if ( cfgService == null ) {
|
if ( cfgService == null ) {
|
||||||
cfgService = new ConfigurationServiceImpl( configurationSettings );
|
cfgService = new ConfigurationServiceImpl( configurationSettings );
|
||||||
|
@ -702,7 +702,7 @@ public class SessionFactoryOptionsBuilder implements SessionFactoryOptions {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Interceptor determineInterceptor(
|
private static Interceptor determineInterceptor(
|
||||||
Map<Object,Object> configurationSettings,
|
Map<String,Object> configurationSettings,
|
||||||
StrategySelector strategySelector) {
|
StrategySelector strategySelector) {
|
||||||
Object setting = configurationSettings.get( INTERCEPTOR );
|
Object setting = configurationSettings.get( INTERCEPTOR );
|
||||||
if ( setting == null ) {
|
if ( setting == null ) {
|
||||||
|
@ -724,7 +724,7 @@ public class SessionFactoryOptionsBuilder implements SessionFactoryOptions {
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private static Supplier<? extends Interceptor> determineStatelessInterceptor(
|
private static Supplier<? extends Interceptor> determineStatelessInterceptor(
|
||||||
Map<Object,Object> configurationSettings,
|
Map<String,Object> configurationSettings,
|
||||||
StrategySelector strategySelector) {
|
StrategySelector strategySelector) {
|
||||||
Object setting = configurationSettings.get( SESSION_SCOPED_INTERCEPTOR );
|
Object setting = configurationSettings.get( SESSION_SCOPED_INTERCEPTOR );
|
||||||
|
|
||||||
|
@ -761,7 +761,7 @@ public class SessionFactoryOptionsBuilder implements SessionFactoryOptions {
|
||||||
}
|
}
|
||||||
|
|
||||||
private PhysicalConnectionHandlingMode interpretConnectionHandlingMode(
|
private PhysicalConnectionHandlingMode interpretConnectionHandlingMode(
|
||||||
Map<Object,Object> configurationSettings,
|
Map<String,Object> configurationSettings,
|
||||||
StandardServiceRegistry serviceRegistry) {
|
StandardServiceRegistry serviceRegistry) {
|
||||||
final PhysicalConnectionHandlingMode specifiedHandlingMode = PhysicalConnectionHandlingMode.interpret(
|
final PhysicalConnectionHandlingMode specifiedHandlingMode = PhysicalConnectionHandlingMode.interpret(
|
||||||
configurationSettings.get( CONNECTION_HANDLING )
|
configurationSettings.get( CONNECTION_HANDLING )
|
||||||
|
|
|
@ -54,7 +54,6 @@ public class TypeBeanInstanceProducer implements BeanInstanceProducer, TypeBoots
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public Map<String, Object> getConfigurationSettings() {
|
public Map<String, Object> getConfigurationSettings() {
|
||||||
return typeConfiguration.getServiceRegistry().getService( ConfigurationService.class ).getSettings();
|
return typeConfiguration.getServiceRegistry().getService( ConfigurationService.class ).getSettings();
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,5 +28,5 @@ public interface StandardServiceInitiator<R extends Service> extends ServiceInit
|
||||||
*
|
*
|
||||||
* @return The initiated service.
|
* @return The initiated service.
|
||||||
*/
|
*/
|
||||||
R initiateService(Map configurationValues, ServiceRegistryImplementor registry);
|
R initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.hibernate.boot.cfgxml.internal.ConfigLoader;
|
import org.hibernate.boot.cfgxml.internal.ConfigLoader;
|
||||||
import org.hibernate.boot.cfgxml.spi.LoadedConfig;
|
import org.hibernate.boot.cfgxml.spi.LoadedConfig;
|
||||||
|
@ -20,6 +21,7 @@ import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.integrator.spi.Integrator;
|
import org.hibernate.integrator.spi.Integrator;
|
||||||
import org.hibernate.integrator.spi.IntegratorService;
|
import org.hibernate.integrator.spi.IntegratorService;
|
||||||
|
import org.hibernate.internal.util.PropertiesHelper;
|
||||||
import org.hibernate.internal.util.config.ConfigurationHelper;
|
import org.hibernate.internal.util.config.ConfigurationHelper;
|
||||||
import org.hibernate.service.Service;
|
import org.hibernate.service.Service;
|
||||||
import org.hibernate.service.ServiceRegistry;
|
import org.hibernate.service.ServiceRegistry;
|
||||||
|
@ -47,13 +49,13 @@ public class StandardServiceRegistryBuilder {
|
||||||
public static StandardServiceRegistryBuilder forJpa(BootstrapServiceRegistry bootstrapServiceRegistry) {
|
public static StandardServiceRegistryBuilder forJpa(BootstrapServiceRegistry bootstrapServiceRegistry) {
|
||||||
final LoadedConfig loadedConfig = new LoadedConfig( null ) {
|
final LoadedConfig loadedConfig = new LoadedConfig( null ) {
|
||||||
@Override
|
@Override
|
||||||
protected void addConfigurationValues(Map configurationValues) {
|
protected void addConfigurationValues(Map<String,Object> configurationValues) {
|
||||||
// here, do nothing
|
// here, do nothing
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return new StandardServiceRegistryBuilder(
|
return new StandardServiceRegistryBuilder(
|
||||||
bootstrapServiceRegistry,
|
bootstrapServiceRegistry,
|
||||||
new HashMap(),
|
new HashMap<>(),
|
||||||
loadedConfig
|
loadedConfig
|
||||||
) {
|
) {
|
||||||
@Override
|
@Override
|
||||||
|
@ -66,13 +68,13 @@ public class StandardServiceRegistryBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default resource name for a hibernate configuration xml file.
|
* The default resource name for a Hibernate configuration xml file.
|
||||||
*/
|
*/
|
||||||
public static final String DEFAULT_CFG_RESOURCE_NAME = "hibernate.cfg.xml";
|
public static final String DEFAULT_CFG_RESOURCE_NAME = "hibernate.cfg.xml";
|
||||||
|
|
||||||
private final Map settings;
|
private final Map<String,Object> settings;
|
||||||
private final List<StandardServiceInitiator> initiators;
|
private final List<StandardServiceInitiator<?>> initiators;
|
||||||
private final List<ProvidedService> providedServices = new ArrayList<>();
|
private final List<ProvidedService<?>> providedServices = new ArrayList<>();
|
||||||
|
|
||||||
private boolean autoCloseRegistry = true;
|
private boolean autoCloseRegistry = true;
|
||||||
|
|
||||||
|
@ -97,14 +99,14 @@ public class StandardServiceRegistryBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Intended for use exclusively from JPA boot-strapping, or extensions of
|
* Intended for use exclusively from JPA bootstrapping, or extensions of
|
||||||
* this class. Consider this an SPI.
|
* this class. Consider this an SPI.
|
||||||
*
|
*
|
||||||
* @see #forJpa
|
* @see #forJpa
|
||||||
*/
|
*/
|
||||||
protected StandardServiceRegistryBuilder(
|
protected StandardServiceRegistryBuilder(
|
||||||
BootstrapServiceRegistry bootstrapServiceRegistry,
|
BootstrapServiceRegistry bootstrapServiceRegistry,
|
||||||
Map settings,
|
Map<String,Object> settings,
|
||||||
LoadedConfig loadedConfig) {
|
LoadedConfig loadedConfig) {
|
||||||
this.bootstrapServiceRegistry = bootstrapServiceRegistry;
|
this.bootstrapServiceRegistry = bootstrapServiceRegistry;
|
||||||
this.configLoader = new ConfigLoader( bootstrapServiceRegistry );
|
this.configLoader = new ConfigLoader( bootstrapServiceRegistry );
|
||||||
|
@ -114,7 +116,7 @@ public class StandardServiceRegistryBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Intended for use exclusively from Quarkus boot-strapping, or extensions of
|
* Intended for use exclusively from Quarkus bootstrapping, or extensions of
|
||||||
* this class which need to override the standard ServiceInitiator list.
|
* this class which need to override the standard ServiceInitiator list.
|
||||||
* Consider this an SPI.
|
* Consider this an SPI.
|
||||||
* @deprecated Quarkus will switch to use {@link #StandardServiceRegistryBuilder(BootstrapServiceRegistry, Map, ConfigLoader, LoadedConfig, List)}
|
* @deprecated Quarkus will switch to use {@link #StandardServiceRegistryBuilder(BootstrapServiceRegistry, Map, ConfigLoader, LoadedConfig, List)}
|
||||||
|
@ -122,9 +124,9 @@ public class StandardServiceRegistryBuilder {
|
||||||
@Deprecated
|
@Deprecated
|
||||||
protected StandardServiceRegistryBuilder(
|
protected StandardServiceRegistryBuilder(
|
||||||
BootstrapServiceRegistry bootstrapServiceRegistry,
|
BootstrapServiceRegistry bootstrapServiceRegistry,
|
||||||
Map settings,
|
Map <String,Object> settings,
|
||||||
LoadedConfig loadedConfig,
|
LoadedConfig loadedConfig,
|
||||||
List<StandardServiceInitiator> initiators) {
|
List<StandardServiceInitiator<?>> initiators) {
|
||||||
this.bootstrapServiceRegistry = bootstrapServiceRegistry;
|
this.bootstrapServiceRegistry = bootstrapServiceRegistry;
|
||||||
this.configLoader = new ConfigLoader( bootstrapServiceRegistry );
|
this.configLoader = new ConfigLoader( bootstrapServiceRegistry );
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
|
@ -133,16 +135,16 @@ public class StandardServiceRegistryBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Intended for use exclusively from Quarkus boot-strapping, or extensions of
|
* Intended for use exclusively from Quarkus bootstrapping, or extensions of
|
||||||
* this class which need to override the standard ServiceInitiator list.
|
* this class which need to override the standard ServiceInitiator list.
|
||||||
* Consider this an SPI.
|
* Consider this an SPI.
|
||||||
*/
|
*/
|
||||||
protected StandardServiceRegistryBuilder(
|
protected StandardServiceRegistryBuilder(
|
||||||
BootstrapServiceRegistry bootstrapServiceRegistry,
|
BootstrapServiceRegistry bootstrapServiceRegistry,
|
||||||
Map settings,
|
Map<String,Object> settings,
|
||||||
ConfigLoader loader,
|
ConfigLoader loader,
|
||||||
LoadedConfig loadedConfig,
|
LoadedConfig loadedConfig,
|
||||||
List<StandardServiceInitiator> initiators) {
|
List<StandardServiceInitiator<?>> initiators) {
|
||||||
this.bootstrapServiceRegistry = bootstrapServiceRegistry;
|
this.bootstrapServiceRegistry = bootstrapServiceRegistry;
|
||||||
this.configLoader = loader;
|
this.configLoader = loader;
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
|
@ -158,7 +160,7 @@ public class StandardServiceRegistryBuilder {
|
||||||
public StandardServiceRegistryBuilder(
|
public StandardServiceRegistryBuilder(
|
||||||
BootstrapServiceRegistry bootstrapServiceRegistry,
|
BootstrapServiceRegistry bootstrapServiceRegistry,
|
||||||
LoadedConfig loadedConfigBaseline) {
|
LoadedConfig loadedConfigBaseline) {
|
||||||
this.settings = Environment.getProperties();
|
this.settings = PropertiesHelper.map( Environment.getProperties() );
|
||||||
this.bootstrapServiceRegistry = bootstrapServiceRegistry;
|
this.bootstrapServiceRegistry = bootstrapServiceRegistry;
|
||||||
this.configLoader = new ConfigLoader( bootstrapServiceRegistry );
|
this.configLoader = new ConfigLoader( bootstrapServiceRegistry );
|
||||||
this.aggregatedCfgXml = loadedConfigBaseline;
|
this.aggregatedCfgXml = loadedConfigBaseline;
|
||||||
|
@ -181,13 +183,12 @@ public class StandardServiceRegistryBuilder {
|
||||||
*
|
*
|
||||||
* @return List of standard initiators
|
* @return List of standard initiators
|
||||||
*/
|
*/
|
||||||
private static List<StandardServiceInitiator> standardInitiatorList() {
|
private static List<StandardServiceInitiator<?>> standardInitiatorList() {
|
||||||
final List<StandardServiceInitiator> initiators = new ArrayList<>( StandardServiceInitiators.LIST.size() );
|
final List<StandardServiceInitiator<?>> initiators = new ArrayList<>( StandardServiceInitiators.LIST.size() );
|
||||||
initiators.addAll( StandardServiceInitiators.LIST );
|
initiators.addAll( StandardServiceInitiators.LIST );
|
||||||
return initiators;
|
return initiators;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public BootstrapServiceRegistry getBootstrapServiceRegistry() {
|
public BootstrapServiceRegistry getBootstrapServiceRegistry() {
|
||||||
return bootstrapServiceRegistry;
|
return bootstrapServiceRegistry;
|
||||||
}
|
}
|
||||||
|
@ -205,9 +206,8 @@ public class StandardServiceRegistryBuilder {
|
||||||
* @see #configure()
|
* @see #configure()
|
||||||
* @see #configure(String)
|
* @see #configure(String)
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unchecked"})
|
|
||||||
public StandardServiceRegistryBuilder loadProperties(String resourceName) {
|
public StandardServiceRegistryBuilder loadProperties(String resourceName) {
|
||||||
settings.putAll( configLoader.loadProperties( resourceName ) );
|
settings.putAll( PropertiesHelper.map( configLoader.loadProperties( resourceName ) ) );
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,9 +224,8 @@ public class StandardServiceRegistryBuilder {
|
||||||
* @see #configure()
|
* @see #configure()
|
||||||
* @see #configure(String)
|
* @see #configure(String)
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unchecked"})
|
|
||||||
public StandardServiceRegistryBuilder loadProperties(File file) {
|
public StandardServiceRegistryBuilder loadProperties(File file) {
|
||||||
settings.putAll( configLoader.loadProperties( file ) );
|
settings.putAll( PropertiesHelper.map( configLoader.loadProperties( file ) ) );
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,7 +261,6 @@ public class StandardServiceRegistryBuilder {
|
||||||
return configure( configLoader.loadConfigXmlUrl( url ) );
|
return configure( configLoader.loadConfigXmlUrl( url ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked"})
|
|
||||||
public StandardServiceRegistryBuilder configure(LoadedConfig loadedConfig) {
|
public StandardServiceRegistryBuilder configure(LoadedConfig loadedConfig) {
|
||||||
aggregatedCfgXml.merge( loadedConfig );
|
aggregatedCfgXml.merge( loadedConfig );
|
||||||
settings.putAll( loadedConfig.getConfigurationValues() );
|
settings.putAll( loadedConfig.getConfigurationValues() );
|
||||||
|
@ -278,25 +276,38 @@ public class StandardServiceRegistryBuilder {
|
||||||
*
|
*
|
||||||
* @return this, for method chaining
|
* @return this, for method chaining
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unchecked", "UnusedDeclaration"})
|
|
||||||
public StandardServiceRegistryBuilder applySetting(String settingName, Object value) {
|
public StandardServiceRegistryBuilder applySetting(String settingName, Object value) {
|
||||||
settings.put( settingName, value );
|
settings.put( settingName, value );
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply a groups of setting values.
|
* Apply a group of settings.
|
||||||
*
|
*
|
||||||
* @param settings The incoming settings to apply
|
* @param settings The incoming settings to apply
|
||||||
*
|
*
|
||||||
* @return this, for method chaining
|
* @return this, for method chaining
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unchecked", "UnusedDeclaration"})
|
public StandardServiceRegistryBuilder applySettings(Map<String,Object> settings) {
|
||||||
public StandardServiceRegistryBuilder applySettings(Map settings) {
|
|
||||||
this.settings.putAll( settings );
|
this.settings.putAll( settings );
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply a group of settings.
|
||||||
|
*
|
||||||
|
* @param settings The incoming settings to apply
|
||||||
|
*
|
||||||
|
* @return this, for method chaining
|
||||||
|
*/
|
||||||
|
public StandardServiceRegistryBuilder applySettings(Properties settings) {
|
||||||
|
this.settings.putAll( PropertiesHelper.map(settings) );
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Discard all the settings applied so far.
|
||||||
|
*/
|
||||||
public void clearSettings() {
|
public void clearSettings() {
|
||||||
settings.clear();
|
settings.clear();
|
||||||
}
|
}
|
||||||
|
@ -308,8 +319,7 @@ public class StandardServiceRegistryBuilder {
|
||||||
*
|
*
|
||||||
* @return this, for method chaining
|
* @return this, for method chaining
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"UnusedDeclaration"})
|
public StandardServiceRegistryBuilder addInitiator(StandardServiceInitiator<?> initiator) {
|
||||||
public StandardServiceRegistryBuilder addInitiator(StandardServiceInitiator initiator) {
|
|
||||||
initiators.add( initiator );
|
initiators.add( initiator );
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -322,9 +332,8 @@ public class StandardServiceRegistryBuilder {
|
||||||
*
|
*
|
||||||
* @return this, for method chaining
|
* @return this, for method chaining
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unchecked"})
|
public <T extends Service> StandardServiceRegistryBuilder addService(final Class<T> serviceRole, final T service) {
|
||||||
public StandardServiceRegistryBuilder addService(final Class serviceRole, final Service service) {
|
providedServices.add( new ProvidedService<>( serviceRole, service ) );
|
||||||
providedServices.add( new ProvidedService( serviceRole, service ) );
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,12 +371,11 @@ public class StandardServiceRegistryBuilder {
|
||||||
*
|
*
|
||||||
* @return The StandardServiceRegistry.
|
* @return The StandardServiceRegistry.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public StandardServiceRegistry build() {
|
public StandardServiceRegistry build() {
|
||||||
applyServiceContributingIntegrators();
|
applyServiceContributingIntegrators();
|
||||||
applyServiceContributors();
|
applyServiceContributors();
|
||||||
|
|
||||||
final Map settingsCopy = new HashMap( settings );
|
final Map<String,Object> settingsCopy = new HashMap<>( settings );
|
||||||
settingsCopy.put( org.hibernate.boot.cfgxml.spi.CfgXmlAccessService.LOADED_CONFIG_KEY, aggregatedCfgXml );
|
settingsCopy.put( org.hibernate.boot.cfgxml.spi.CfgXmlAccessService.LOADED_CONFIG_KEY, aggregatedCfgXml );
|
||||||
ConfigurationHelper.resolvePlaceHolders( settingsCopy );
|
ConfigurationHelper.resolvePlaceHolders( settingsCopy );
|
||||||
|
|
||||||
|
@ -384,9 +392,9 @@ public class StandardServiceRegistryBuilder {
|
||||||
private void applyServiceContributingIntegrators() {
|
private void applyServiceContributingIntegrators() {
|
||||||
for ( Integrator integrator : bootstrapServiceRegistry.getService( IntegratorService.class )
|
for ( Integrator integrator : bootstrapServiceRegistry.getService( IntegratorService.class )
|
||||||
.getIntegrators() ) {
|
.getIntegrators() ) {
|
||||||
if ( org.hibernate.integrator.spi.ServiceContributingIntegrator.class.isInstance( integrator ) ) {
|
if ( integrator instanceof org.hibernate.integrator.spi.ServiceContributingIntegrator ) {
|
||||||
org.hibernate.integrator.spi.ServiceContributingIntegrator.class.cast( integrator ).prepareServices(
|
( (org.hibernate.integrator.spi.ServiceContributingIntegrator) integrator )
|
||||||
this );
|
.prepareServices(this );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -411,7 +419,7 @@ public class StandardServiceRegistryBuilder {
|
||||||
* This allows code to configure the builder and access that to configure Configuration object.
|
* This allows code to configure the builder and access that to configure Configuration object.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Map getSettings() {
|
public Map<String,Object> getSettings() {
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.boot.registry.internal;
|
package org.hibernate.boot.registry.internal;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -28,7 +27,7 @@ import org.hibernate.service.spi.ServiceInitiator;
|
||||||
public class StandardServiceRegistryImpl extends AbstractServiceRegistryImpl implements StandardServiceRegistry {
|
public class StandardServiceRegistryImpl extends AbstractServiceRegistryImpl implements StandardServiceRegistry {
|
||||||
|
|
||||||
//Access to this field requires synchronization on -this-
|
//Access to this field requires synchronization on -this-
|
||||||
private Map configurationValues;
|
private Map<String,Object> configurationValues;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a StandardServiceRegistryImpl. Should not be instantiated directly; use
|
* Constructs a StandardServiceRegistryImpl. Should not be instantiated directly; use
|
||||||
|
@ -41,12 +40,11 @@ public class StandardServiceRegistryImpl extends AbstractServiceRegistryImpl imp
|
||||||
*
|
*
|
||||||
* @see org.hibernate.boot.registry.StandardServiceRegistryBuilder
|
* @see org.hibernate.boot.registry.StandardServiceRegistryBuilder
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings( {"unchecked"})
|
|
||||||
public StandardServiceRegistryImpl(
|
public StandardServiceRegistryImpl(
|
||||||
BootstrapServiceRegistry bootstrapServiceRegistry,
|
BootstrapServiceRegistry bootstrapServiceRegistry,
|
||||||
List<StandardServiceInitiator> serviceInitiators,
|
List<StandardServiceInitiator<?>> serviceInitiators,
|
||||||
List<ProvidedService> providedServices,
|
List<ProvidedService<?>> providedServices,
|
||||||
Map<?, ?> configurationValues) {
|
Map<String,Object> configurationValues) {
|
||||||
this( true, bootstrapServiceRegistry, serviceInitiators, providedServices, configurationValues );
|
this( true, bootstrapServiceRegistry, serviceInitiators, providedServices, configurationValues );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,13 +61,12 @@ public class StandardServiceRegistryImpl extends AbstractServiceRegistryImpl imp
|
||||||
*
|
*
|
||||||
* @see org.hibernate.boot.registry.StandardServiceRegistryBuilder
|
* @see org.hibernate.boot.registry.StandardServiceRegistryBuilder
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings( {"unchecked"})
|
|
||||||
public StandardServiceRegistryImpl(
|
public StandardServiceRegistryImpl(
|
||||||
boolean autoCloseRegistry,
|
boolean autoCloseRegistry,
|
||||||
BootstrapServiceRegistry bootstrapServiceRegistry,
|
BootstrapServiceRegistry bootstrapServiceRegistry,
|
||||||
List<StandardServiceInitiator> serviceInitiators,
|
List<StandardServiceInitiator<?>> serviceInitiators,
|
||||||
List<ProvidedService> providedServices,
|
List<ProvidedService<?>> providedServices,
|
||||||
Map<?, ?> configurationValues) {
|
Map<String,Object> configurationValues) {
|
||||||
super( bootstrapServiceRegistry, autoCloseRegistry );
|
super( bootstrapServiceRegistry, autoCloseRegistry );
|
||||||
|
|
||||||
this.configurationValues = configurationValues;
|
this.configurationValues = configurationValues;
|
||||||
|
@ -77,15 +74,17 @@ public class StandardServiceRegistryImpl extends AbstractServiceRegistryImpl imp
|
||||||
applyServiceRegistrations( serviceInitiators, providedServices );
|
applyServiceRegistrations( serviceInitiators, providedServices );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyServiceRegistrations(List<StandardServiceInitiator> serviceInitiators, List<ProvidedService> providedServices) {
|
private void applyServiceRegistrations(List<StandardServiceInitiator<?>> serviceInitiators, List<ProvidedService<?>> providedServices) {
|
||||||
try {
|
try {
|
||||||
// process initiators
|
// process initiators
|
||||||
for ( ServiceInitiator initiator : serviceInitiators ) {
|
for ( ServiceInitiator<?> initiator : serviceInitiators ) {
|
||||||
createServiceBinding( initiator );
|
createServiceBinding( initiator );
|
||||||
}
|
}
|
||||||
|
|
||||||
// then, explicitly provided service instances
|
// then, explicitly provided service instances
|
||||||
|
//noinspection rawtypes
|
||||||
for ( ProvidedService providedService : providedServices ) {
|
for ( ProvidedService providedService : providedServices ) {
|
||||||
|
//noinspection unchecked
|
||||||
createServiceBinding( providedService );
|
createServiceBinding( providedService );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,27 +102,11 @@ public class StandardServiceRegistryImpl extends AbstractServiceRegistryImpl imp
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized <R extends Service> void configureService(ServiceBinding<R> serviceBinding) {
|
public synchronized <R extends Service> void configureService(ServiceBinding<R> serviceBinding) {
|
||||||
if ( Configurable.class.isInstance( serviceBinding.getService() ) ) {
|
if ( serviceBinding.getService() instanceof Configurable ) {
|
||||||
( (Configurable) serviceBinding.getService() ).configure( configurationValues );
|
( (Configurable) serviceBinding.getService() ).configure( configurationValues );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Very advanced and tricky to handle: not designed for this. Intended for experiments only!
|
|
||||||
*/
|
|
||||||
public synchronized void resetAndReactivate(BootstrapServiceRegistry bootstrapServiceRegistry,
|
|
||||||
List<StandardServiceInitiator> serviceInitiators,
|
|
||||||
List<ProvidedService> providedServices,
|
|
||||||
Map<?, ?> configurationValues) {
|
|
||||||
if ( super.isActive() ) {
|
|
||||||
throw new IllegalStateException( "Can't reactivate an active registry!" );
|
|
||||||
}
|
|
||||||
super.resetParent( bootstrapServiceRegistry );
|
|
||||||
this.configurationValues = new HashMap( configurationValues );
|
|
||||||
super.reactivate();
|
|
||||||
applyServiceRegistrations( serviceInitiators, providedServices );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void destroy() {
|
public synchronized void destroy() {
|
||||||
super.destroy();
|
super.destroy();
|
||||||
|
|
|
@ -21,7 +21,7 @@ public final class BytecodeProviderInitiator implements StandardServiceInitiator
|
||||||
public static final StandardServiceInitiator<BytecodeProvider> INSTANCE = new BytecodeProviderInitiator();
|
public static final StandardServiceInitiator<BytecodeProvider> INSTANCE = new BytecodeProviderInitiator();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BytecodeProvider initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public BytecodeProvider initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
// TODO in 6 this will no longer use Environment, which is configured via global environment variables,
|
// TODO in 6 this will no longer use Environment, which is configured via global environment variables,
|
||||||
// but move to a component which can be reconfigured differently in each registry.
|
// but move to a component which can be reconfigured differently in each registry.
|
||||||
return Environment.getBytecodeProvider();
|
return Environment.getBytecodeProvider();
|
||||||
|
|
|
@ -27,7 +27,7 @@ public final class ProxyFactoryFactoryInitiator implements StandardServiceInitia
|
||||||
public static final StandardServiceInitiator<ProxyFactoryFactory> INSTANCE = new ProxyFactoryFactoryInitiator();
|
public static final StandardServiceInitiator<ProxyFactoryFactory> INSTANCE = new ProxyFactoryFactoryInitiator();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProxyFactoryFactory initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public ProxyFactoryFactory initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final BytecodeProvider bytecodeProvider = registry.getService( BytecodeProvider.class );
|
final BytecodeProvider bytecodeProvider = registry.getService( BytecodeProvider.class );
|
||||||
return bytecodeProvider.getProxyFactoryFactory();
|
return bytecodeProvider.getProxyFactoryFactory();
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ public class NoCachingRegionFactory implements RegionFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(SessionFactoryOptions settings, Map configValues) throws CacheException {
|
public void start(SessionFactoryOptions settings, Map<String,Object> configValues) throws CacheException {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class RegionFactoryInitiator implements StandardServiceInitiator<RegionFa
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RegionFactory initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public RegionFactory initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final RegionFactory regionFactory = resolveRegionFactory( configurationValues, registry );
|
final RegionFactory regionFactory = resolveRegionFactory( configurationValues, registry );
|
||||||
|
|
||||||
LOG.debugf( "Cache region factory : %s", regionFactory.getClass().getName() );
|
LOG.debugf( "Cache region factory : %s", regionFactory.getClass().getName() );
|
||||||
|
@ -52,7 +52,7 @@ public class RegionFactoryInitiator implements StandardServiceInitiator<RegionFa
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected RegionFactory resolveRegionFactory(Map configurationValues, ServiceRegistryImplementor registry) {
|
protected RegionFactory resolveRegionFactory(Map<String,Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final Properties p = new Properties();
|
final Properties p = new Properties();
|
||||||
p.putAll( configurationValues );
|
p.putAll( configurationValues );
|
||||||
|
|
||||||
|
@ -83,8 +83,7 @@ public class RegionFactoryInitiator implements StandardServiceInitiator<RegionFa
|
||||||
|
|
||||||
if ( setting == null && implementors.size() != 1 ) {
|
if ( setting == null && implementors.size() != 1 ) {
|
||||||
// if either is explicitly defined as TRUE we need a RegionFactory
|
// if either is explicitly defined as TRUE we need a RegionFactory
|
||||||
if ( ( useSecondLevelCache != null && useSecondLevelCache == TRUE )
|
if ( useSecondLevelCache == TRUE || useQueryCache == TRUE ) {
|
||||||
|| ( useQueryCache != null && useQueryCache == TRUE ) ) {
|
|
||||||
throw new CacheException( "Caching was explicitly requested, but no RegionFactory was defined and there is not a single registered RegionFactory" );
|
throw new CacheException( "Caching was explicitly requested, but no RegionFactory was defined and there is not a single registered RegionFactory" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -125,7 +124,7 @@ public class RegionFactoryInitiator implements StandardServiceInitiator<RegionFa
|
||||||
return NoCachingRegionFactory.INSTANCE;
|
return NoCachingRegionFactory.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RegionFactory getFallback(Map configurationValues, ServiceRegistryImplementor registry) {
|
protected RegionFactory getFallback(Map<?,?> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ public abstract class AbstractRegionFactory implements RegionFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void start(SessionFactoryOptions settings, Map configValues) throws CacheException {
|
public final void start(SessionFactoryOptions settings, Map<String,Object> configValues) throws CacheException {
|
||||||
if ( started.compareAndSet( false, true ) ) {
|
if ( started.compareAndSet( false, true ) ) {
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
this.options = settings;
|
this.options = settings;
|
||||||
|
@ -99,7 +99,7 @@ public abstract class AbstractRegionFactory implements RegionFactory {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void prepareForUse(SessionFactoryOptions settings, Map configValues);
|
protected abstract void prepareForUse(SessionFactoryOptions settings, Map<String,Object> configValues);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void stop() {
|
public final void stop() {
|
||||||
|
|
|
@ -51,7 +51,7 @@ public interface RegionFactory extends Service, Stoppable {
|
||||||
* considered as a sign to stop {@link org.hibernate.SessionFactory}
|
* considered as a sign to stop {@link org.hibernate.SessionFactory}
|
||||||
* building.
|
* building.
|
||||||
*/
|
*/
|
||||||
void start(SessionFactoryOptions settings, Map configValues) throws CacheException;
|
void start(SessionFactoryOptions settings, Map<String,Object> configValues) throws CacheException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* By default should we perform "minimal puts" when using this second
|
* By default should we perform "minimal puts" when using this second
|
||||||
|
|
|
@ -165,7 +165,7 @@ public class Configuration {
|
||||||
entityTuplizerFactory = new EntityTuplizerFactory();
|
entityTuplizerFactory = new EntityTuplizerFactory();
|
||||||
interceptor = EmptyInterceptor.INSTANCE;
|
interceptor = EmptyInterceptor.INSTANCE;
|
||||||
properties = new Properties( );
|
properties = new Properties( );
|
||||||
properties.putAll( standardServiceRegistryBuilder.getSettings());
|
properties.putAll( standardServiceRegistryBuilder.getSettings() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ public class Configuration {
|
||||||
*
|
*
|
||||||
* @param type The type to register.
|
* @param type The type to register.
|
||||||
*/
|
*/
|
||||||
public Configuration registerTypeOverride(BasicType type) {
|
public Configuration registerTypeOverride(BasicType<?> type) {
|
||||||
basicTypes.add( type );
|
basicTypes.add( type );
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -865,7 +865,7 @@ public class Configuration {
|
||||||
* @return this for method chaining
|
* @return this for method chaining
|
||||||
*/
|
*/
|
||||||
public Configuration mergeProperties(Properties properties) {
|
public Configuration mergeProperties(Properties properties) {
|
||||||
for ( Map.Entry entry : properties.entrySet() ) {
|
for ( Map.Entry<Object,Object> entry : properties.entrySet() ) {
|
||||||
if ( this.properties.containsKey( entry.getKey() ) ) {
|
if ( this.properties.containsKey( entry.getKey() ) ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class ConfigurationServiceImpl implements ConfigurationService, ServiceRe
|
||||||
ConfigurationServiceImpl.class.getName()
|
ConfigurationServiceImpl.class.getName()
|
||||||
);
|
);
|
||||||
|
|
||||||
private final Map settings;
|
private final Map<String, Object> settings;
|
||||||
private ServiceRegistryImplementor serviceRegistry;
|
private ServiceRegistryImplementor serviceRegistry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,13 +37,12 @@ public class ConfigurationServiceImpl implements ConfigurationService, ServiceRe
|
||||||
*
|
*
|
||||||
* @param settings The map of settings
|
* @param settings The map of settings
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings( "unchecked" )
|
public ConfigurationServiceImpl(Map<String, Object> settings) {
|
||||||
public ConfigurationServiceImpl(Map settings) {
|
|
||||||
this.settings = Collections.unmodifiableMap( settings );
|
this.settings = Collections.unmodifiableMap( settings );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map getSettings() {
|
public Map<String, Object> getSettings() {
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +85,7 @@ public class ConfigurationServiceImpl implements ConfigurationService, ServiceRe
|
||||||
|
|
||||||
Class<T> target;
|
Class<T> target;
|
||||||
if (candidate instanceof Class) {
|
if (candidate instanceof Class) {
|
||||||
target = (Class) candidate;
|
target = (Class<T>) candidate;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class ConfigurationServiceInitiator implements StandardServiceInitiator<C
|
||||||
public static final ConfigurationServiceInitiator INSTANCE = new ConfigurationServiceInitiator();
|
public static final ConfigurationServiceInitiator INSTANCE = new ConfigurationServiceInitiator();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConfigurationService initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public ConfigurationService initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return new ConfigurationServiceImpl( configurationValues );
|
return new ConfigurationServiceImpl( configurationValues );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ public interface ConfigurationService extends Service {
|
||||||
*
|
*
|
||||||
* @return The immutable map of config settings.
|
* @return The immutable map of config settings.
|
||||||
*/
|
*/
|
||||||
Map getSettings();
|
Map<String,Object> getSettings();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the named setting, using the specified converter.
|
* Get the named setting, using the specified converter.
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class BatchBuilderInitiator implements StandardServiceInitiator<BatchBuil
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BatchBuilder initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public BatchBuilder initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final Object builder = configurationValues.get( BUILDER );
|
final Object builder = configurationValues.get( BUILDER );
|
||||||
if ( builder == null ) {
|
if ( builder == null ) {
|
||||||
return new BatchBuilderImpl(
|
return new BatchBuilderImpl(
|
||||||
|
@ -46,7 +46,7 @@ public class BatchBuilderInitiator implements StandardServiceInitiator<BatchBuil
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( BatchBuilder.class.isInstance( builder ) ) {
|
if ( builder instanceof BatchBuilder ) {
|
||||||
return (BatchBuilder) builder;
|
return (BatchBuilder) builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@ package org.hibernate.engine.jdbc.batch.internal;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.hibernate.boot.registry.StandardServiceInitiator;
|
import org.hibernate.boot.registry.StandardServiceInitiator;
|
||||||
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
|
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.engine.jdbc.batch.spi.BatchBuilder;
|
import org.hibernate.engine.jdbc.batch.spi.BatchBuilder;
|
||||||
import org.hibernate.internal.util.config.ConfigurationHelper;
|
import org.hibernate.internal.util.config.ConfigurationHelper;
|
||||||
|
@ -36,7 +35,7 @@ public final class UnmodifiableBatchBuilderInitiator implements StandardServiceI
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BatchBuilder initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public BatchBuilder initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final Object builder = configurationValues.get( BatchBuilderInitiator.BUILDER );
|
final Object builder = configurationValues.get( BatchBuilderInitiator.BUILDER );
|
||||||
if ( builder == null ) {
|
if ( builder == null ) {
|
||||||
return new UnmodifiableBatchBuilderImpl(
|
return new UnmodifiableBatchBuilderImpl(
|
||||||
|
|
|
@ -27,6 +27,6 @@ interface ConnectionCreatorFactory {
|
||||||
Boolean autocommit,
|
Boolean autocommit,
|
||||||
Integer isolation,
|
Integer isolation,
|
||||||
String initSql,
|
String initSql,
|
||||||
Map<Object, Object> configurationValues);
|
Map<String, Object> configurationValues);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ public class ConnectionCreatorFactoryImpl implements ConnectionCreatorFactory {
|
||||||
Boolean autoCommit,
|
Boolean autoCommit,
|
||||||
Integer isolation,
|
Integer isolation,
|
||||||
String initSql,
|
String initSql,
|
||||||
Map<Object, Object> configurationValues) {
|
Map<String, Object> configurationValues) {
|
||||||
if ( driver == null ) {
|
if ( driver == null ) {
|
||||||
return new DriverManagerConnectionCreator(
|
return new DriverManagerConnectionCreator(
|
||||||
serviceRegistry,
|
serviceRegistry,
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.engine.jdbc.connections.internal;
|
package org.hibernate.engine.jdbc.connections.internal;
|
||||||
|
|
||||||
import java.beans.BeanInfo;
|
|
||||||
import java.beans.PropertyDescriptor;
|
import java.beans.PropertyDescriptor;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
|
@ -27,7 +26,6 @@ import org.hibernate.internal.CoreMessageLogger;
|
||||||
import org.hibernate.internal.log.DeprecationLogger;
|
import org.hibernate.internal.log.DeprecationLogger;
|
||||||
import org.hibernate.internal.util.StringHelper;
|
import org.hibernate.internal.util.StringHelper;
|
||||||
import org.hibernate.internal.util.beans.BeanInfoHelper;
|
import org.hibernate.internal.util.beans.BeanInfoHelper;
|
||||||
import org.hibernate.internal.util.collections.CollectionHelper;
|
|
||||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -94,7 +92,7 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConnectionProvider initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public ConnectionProvider initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
if ( configurationValues.containsKey( AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER ) ) {
|
if ( configurationValues.containsKey( AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER ) ) {
|
||||||
// nothing to do, but given the separate hierarchies have to handle this here.
|
// nothing to do, but given the separate hierarchies have to handle this here.
|
||||||
return null;
|
return null;
|
||||||
|
@ -108,7 +106,7 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
return (ConnectionProvider) explicitSetting;
|
return (ConnectionProvider) explicitSetting;
|
||||||
}
|
}
|
||||||
else if ( explicitSetting instanceof Class ) {
|
else if ( explicitSetting instanceof Class ) {
|
||||||
final Class providerClass = (Class) explicitSetting;
|
final Class<?> providerClass = (Class<?>) explicitSetting;
|
||||||
LOG.instantiatingExplicitConnectionProvider( providerClass.getName() );
|
LOG.instantiatingExplicitConnectionProvider( providerClass.getName() );
|
||||||
return instantiateExplicitConnectionProvider( providerClass );
|
return instantiateExplicitConnectionProvider( providerClass );
|
||||||
}
|
}
|
||||||
|
@ -125,7 +123,7 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG.instantiatingExplicitConnectionProvider( providerName );
|
LOG.instantiatingExplicitConnectionProvider( providerName );
|
||||||
final Class providerClass = strategySelector.selectStrategyImplementor(
|
final Class<?> providerClass = strategySelector.selectStrategyImplementor(
|
||||||
ConnectionProvider.class,
|
ConnectionProvider.class,
|
||||||
providerName
|
providerName
|
||||||
);
|
);
|
||||||
|
@ -200,23 +198,21 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
final Map injectionData = (Map) configurationValues.get( INJECTION_DATA );
|
final Map<?,?> injectionData = (Map<?,?>) configurationValues.get( INJECTION_DATA );
|
||||||
if ( injectionData != null && injectionData.size() > 0 ) {
|
if ( injectionData != null && injectionData.size() > 0 ) {
|
||||||
final ConnectionProvider theConnectionProvider = connectionProvider;
|
final ConnectionProvider theConnectionProvider = connectionProvider;
|
||||||
new BeanInfoHelper( connectionProvider.getClass() ).applyToBeanInfo(
|
new BeanInfoHelper( connectionProvider.getClass() ).applyToBeanInfo(
|
||||||
connectionProvider,
|
connectionProvider,
|
||||||
new BeanInfoHelper.BeanInfoDelegate() {
|
beanInfo -> {
|
||||||
public void processBeanInfo(BeanInfo beanInfo) throws Exception {
|
final PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();
|
||||||
final PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();
|
for ( PropertyDescriptor descriptor : descriptors ) {
|
||||||
for ( PropertyDescriptor descriptor : descriptors ) {
|
final String propertyName = descriptor.getName();
|
||||||
final String propertyName = descriptor.getName();
|
if ( injectionData.containsKey( propertyName ) ) {
|
||||||
if ( injectionData.containsKey( propertyName ) ) {
|
final Method method = descriptor.getWriteMethod();
|
||||||
final Method method = descriptor.getWriteMethod();
|
method.invoke(
|
||||||
method.invoke(
|
theConnectionProvider,
|
||||||
theConnectionProvider,
|
injectionData.get( propertyName )
|
||||||
injectionData.get( propertyName )
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -235,7 +231,7 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ConnectionProvider instantiateExplicitConnectionProvider(Class providerClass) {
|
private ConnectionProvider instantiateExplicitConnectionProvider(Class<?> providerClass) {
|
||||||
try {
|
try {
|
||||||
return (ConnectionProvider) providerClass.newInstance();
|
return (ConnectionProvider) providerClass.newInstance();
|
||||||
}
|
}
|
||||||
|
@ -244,10 +240,9 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean c3p0ConfigDefined(Map configValues) {
|
private static boolean c3p0ConfigDefined(Map<String, Object> configValues) {
|
||||||
for ( Object key : configValues.keySet() ) {
|
for ( String key : configValues.keySet() ) {
|
||||||
if ( String.class.isInstance( key )
|
if ( key.startsWith( AvailableSettings.C3P0_CONFIG_PREFIX ) ) {
|
||||||
&& ( (String) key ).startsWith( AvailableSettings.C3P0_CONFIG_PREFIX ) ) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -264,10 +259,9 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean proxoolConfigDefined(Map configValues) {
|
private static boolean proxoolConfigDefined(Map<String, Object> configValues) {
|
||||||
for ( Object key : configValues.keySet() ) {
|
for ( String key : configValues.keySet() ) {
|
||||||
if ( String.class.isInstance( key )
|
if ( key.startsWith( AvailableSettings.PROXOOL_CONFIG_PREFIX ) ) {
|
||||||
&& ( (String) key ).startsWith( AvailableSettings.PROXOOL_CONFIG_PREFIX ) ) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -284,13 +278,9 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean hikariConfigDefined(Map configValues) {
|
private boolean hikariConfigDefined(Map<String, Object> configValues) {
|
||||||
for ( Object key : configValues.keySet() ) {
|
for ( String key : configValues.keySet() ) {
|
||||||
if ( !String.class.isInstance( key ) ) {
|
if ( key.startsWith( "hibernate.hikari." ) ) {
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( (String) key ).startsWith( "hibernate.hikari." ) ) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -307,13 +297,9 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean viburConfigDefined(Map configValues) {
|
private boolean viburConfigDefined(Map<String, Object> configValues) {
|
||||||
for ( Object key : configValues.keySet() ) {
|
for ( String key : configValues.keySet() ) {
|
||||||
if ( !String.class.isInstance( key ) ) {
|
if ( key.startsWith( "hibernate.vibur." ) ) {
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( (String) key ).startsWith( "hibernate.vibur." ) ) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -321,13 +307,9 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private boolean agroalConfigDefined(Map configValues) {
|
private boolean agroalConfigDefined(Map<String, Object> configValues) {
|
||||||
for ( Object key : configValues.keySet() ) {
|
for ( String key : configValues.keySet() ) {
|
||||||
if ( !String.class.isInstance( key ) ) {
|
if ( key.startsWith( "hibernate.agroal." ) ) {
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( (String) key ).startsWith( "hibernate.agroal." ) ) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -355,19 +337,20 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build the connection properties capable of being passed to the {@link java.sql.DriverManager#getConnection}
|
* Build the connection properties capable of being passed to
|
||||||
* forms taking {@link Properties} argument. We seek out all keys in the passed map which start with
|
* {@link java.sql.DriverManager#getConnection(String, Properties)} forms taking {@link Properties} argument.
|
||||||
* {@code hibernate.connection.}, using them to create a new {@link Properties} instance. The keys in this
|
* We seek out all keys in the passed map which start with {@code hibernate.connection.}, using them to create
|
||||||
* new {@link Properties} have the {@code hibernate.connection.} prefix trimmed.
|
* a new {@link Properties} instance. The keys in this new {@link Properties} have the
|
||||||
|
* {@code hibernate.connection.} prefix trimmed.
|
||||||
*
|
*
|
||||||
* @param properties The map from which to build the connection specific properties.
|
* @param properties The map from which to build the connection specific properties.
|
||||||
*
|
*
|
||||||
* @return The connection properties.
|
* @return The connection properties.
|
||||||
*/
|
*/
|
||||||
public static Properties getConnectionProperties(Map<?,?> properties) {
|
public static Properties getConnectionProperties(Map<String,Object> properties) {
|
||||||
final Properties result = new Properties();
|
final Properties result = new Properties();
|
||||||
for ( Map.Entry entry : properties.entrySet() ) {
|
for ( Map.Entry<?,?> entry : properties.entrySet() ) {
|
||||||
if ( ! ( String.class.isInstance( entry.getKey() ) ) || ! String.class.isInstance( entry.getValue() ) ) {
|
if ( !(entry.getKey() instanceof String) || !(entry.getValue() instanceof String) ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
final String key = (String) entry.getKey();
|
final String key = (String) entry.getKey();
|
||||||
|
@ -444,7 +427,7 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
AvailableSettings.ENABLE_SYNONYMS, "includeSynonyms"
|
AvailableSettings.ENABLE_SYNONYMS, "includeSynonyms"
|
||||||
);
|
);
|
||||||
|
|
||||||
public static Integer extractIsolation(Map settings) {
|
public static Integer extractIsolation(Map<String,?> settings) {
|
||||||
return interpretIsolation( settings.get( AvailableSettings.ISOLATION ) );
|
return interpretIsolation( settings.get( AvailableSettings.ISOLATION ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -453,7 +436,7 @@ public class ConnectionProviderInitiator implements StandardServiceInitiator<Con
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( Number.class.isInstance( setting ) ) {
|
if ( setting instanceof Number ) {
|
||||||
return ( (Number) setting ).intValue();
|
return ( (Number) setting ).intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class DatasourceConnectionProviderImpl implements ConnectionProvider, Con
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isUnwrappableAs(Class unwrapType) {
|
public boolean isUnwrappableAs(Class<?> unwrapType) {
|
||||||
return ConnectionProvider.class.equals( unwrapType ) ||
|
return ConnectionProvider.class.equals( unwrapType ) ||
|
||||||
DatasourceConnectionProviderImpl.class.isAssignableFrom( unwrapType ) ||
|
DatasourceConnectionProviderImpl.class.isAssignableFrom( unwrapType ) ||
|
||||||
DataSource.class.isAssignableFrom( unwrapType );
|
DataSource.class.isAssignableFrom( unwrapType );
|
||||||
|
@ -78,10 +78,10 @@ public class DatasourceConnectionProviderImpl implements ConnectionProvider, Con
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map configValues) {
|
public void configure(Map<String, Object> configValues) {
|
||||||
if ( this.dataSource == null ) {
|
if ( this.dataSource == null ) {
|
||||||
final Object dataSource = configValues.get( Environment.DATASOURCE );
|
final Object dataSource = configValues.get( Environment.DATASOURCE );
|
||||||
if ( DataSource.class.isInstance( dataSource ) ) {
|
if ( dataSource instanceof DataSource ) {
|
||||||
this.dataSource = (DataSource) dataSource;
|
this.dataSource = (DataSource) dataSource;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -73,15 +73,14 @@ public class DriverManagerConnectionProviderImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map configurationValues) {
|
public void configure(Map<String, Object> configurationValues) {
|
||||||
CONNECTIONS_MESSAGE_LOGGER.usingHibernateBuiltInConnectionPool();
|
CONNECTIONS_MESSAGE_LOGGER.usingHibernateBuiltInConnectionPool();
|
||||||
PooledConnections pool = buildPool( configurationValues, serviceRegistry );
|
PooledConnections pool = buildPool( configurationValues, serviceRegistry );
|
||||||
final long validationInterval = ConfigurationHelper.getLong( VALIDATION_INTERVAL, configurationValues, 30 );
|
final long validationInterval = ConfigurationHelper.getLong( VALIDATION_INTERVAL, configurationValues, 30 );
|
||||||
PoolState newstate = new PoolState( pool, validationInterval );
|
this.state = new PoolState( pool, validationInterval );
|
||||||
this.state = newstate;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private PooledConnections buildPool(Map configurationValues, ServiceRegistryImplementor serviceRegistry) {
|
private PooledConnections buildPool(Map<String,Object> configurationValues, ServiceRegistryImplementor serviceRegistry) {
|
||||||
final boolean autoCommit = ConfigurationHelper.getBoolean(
|
final boolean autoCommit = ConfigurationHelper.getBoolean(
|
||||||
AvailableSettings.AUTOCOMMIT,
|
AvailableSettings.AUTOCOMMIT,
|
||||||
configurationValues,
|
configurationValues,
|
||||||
|
@ -103,7 +102,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
return pooledConnectionBuilder.build();
|
return pooledConnectionBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ConnectionCreator buildCreator(Map configurationValues, ServiceRegistryImplementor serviceRegistry) {
|
private static ConnectionCreator buildCreator(Map<String,Object> configurationValues, ServiceRegistryImplementor serviceRegistry) {
|
||||||
final String url = (String) configurationValues.get( AvailableSettings.URL );
|
final String url = (String) configurationValues.get( AvailableSettings.URL );
|
||||||
|
|
||||||
String driverClassName = (String) configurationValues.get( AvailableSettings.DRIVER );
|
String driverClassName = (String) configurationValues.get( AvailableSettings.DRIVER );
|
||||||
|
@ -276,7 +275,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isUnwrappableAs(Class unwrapType) {
|
public boolean isUnwrappableAs(Class<?> unwrapType) {
|
||||||
return ConnectionProvider.class.equals( unwrapType ) ||
|
return ConnectionProvider.class.equals( unwrapType ) ||
|
||||||
DriverManagerConnectionProviderImpl.class.isAssignableFrom( unwrapType );
|
DriverManagerConnectionProviderImpl.class.isAssignableFrom( unwrapType );
|
||||||
}
|
}
|
||||||
|
@ -516,7 +515,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
private final ConnectionCreator connectionCreator;
|
private final ConnectionCreator connectionCreator;
|
||||||
private ConnectionValidator connectionValidator;
|
private ConnectionValidator connectionValidator;
|
||||||
private boolean autoCommit;
|
private final boolean autoCommit;
|
||||||
private int initialSize = 1;
|
private int initialSize = 1;
|
||||||
private int minSize = 1;
|
private int minSize = 1;
|
||||||
private int maxSize = 20;
|
private int maxSize = 20;
|
||||||
|
|
|
@ -38,8 +38,7 @@ public class MultiTenantConnectionProviderInitiator implements StandardServiceIn
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( {"unchecked"})
|
public MultiTenantConnectionProvider initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
public MultiTenantConnectionProvider initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
|
||||||
if ( !configurationValues.containsKey( AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER ) ) {
|
if ( !configurationValues.containsKey( AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER ) ) {
|
||||||
// nothing to do, but given the separate hierarchies have to handle this here.
|
// nothing to do, but given the separate hierarchies have to handle this here.
|
||||||
return null;
|
return null;
|
||||||
|
@ -50,20 +49,22 @@ public class MultiTenantConnectionProviderInitiator implements StandardServiceIn
|
||||||
// if they also specified the data source *name*, then lets assume they want
|
// if they also specified the data source *name*, then lets assume they want
|
||||||
// DataSourceBasedMultiTenantConnectionProviderImpl
|
// DataSourceBasedMultiTenantConnectionProviderImpl
|
||||||
final Object dataSourceConfigValue = configurationValues.get( AvailableSettings.DATASOURCE );
|
final Object dataSourceConfigValue = configurationValues.get( AvailableSettings.DATASOURCE );
|
||||||
if ( String.class.isInstance( dataSourceConfigValue ) ) {
|
if ( dataSourceConfigValue instanceof String ) {
|
||||||
return new DataSourceBasedMultiTenantConnectionProviderImpl();
|
return new DataSourceBasedMultiTenantConnectionProviderImpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( MultiTenantConnectionProvider.class.isInstance( configValue ) ) {
|
if ( configValue instanceof MultiTenantConnectionProvider ) {
|
||||||
return (MultiTenantConnectionProvider) configValue;
|
return (MultiTenantConnectionProvider) configValue;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
final Class<MultiTenantConnectionProvider> implClass;
|
final Class<MultiTenantConnectionProvider> implClass;
|
||||||
if ( Class.class.isInstance( configValue ) ) {
|
if ( configValue instanceof Class ) {
|
||||||
implClass = (Class) configValue;
|
@SuppressWarnings("unchecked")
|
||||||
|
Class<MultiTenantConnectionProvider> clazz = (Class<MultiTenantConnectionProvider>) configValue;
|
||||||
|
implClass = clazz;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
final String className = configValue.toString();
|
final String className = configValue.toString();
|
||||||
|
|
|
@ -22,7 +22,7 @@ import org.hibernate.service.UnknownUnwrapTypeException;
|
||||||
*/
|
*/
|
||||||
public class UserSuppliedConnectionProviderImpl implements ConnectionProvider {
|
public class UserSuppliedConnectionProviderImpl implements ConnectionProvider {
|
||||||
@Override
|
@Override
|
||||||
public boolean isUnwrappableAs(Class unwrapType) {
|
public boolean isUnwrappableAs(Class<?> unwrapType) {
|
||||||
return ConnectionProvider.class.equals( unwrapType ) ||
|
return ConnectionProvider.class.equals( unwrapType ) ||
|
||||||
UserSuppliedConnectionProviderImpl.class.isAssignableFrom( unwrapType );
|
UserSuppliedConnectionProviderImpl.class.isAssignableFrom( unwrapType );
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ public abstract class AbstractDataSourceBasedMultiTenantConnectionProviderImpl i
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isUnwrappableAs(Class unwrapType) {
|
public boolean isUnwrappableAs(Class<?> unwrapType) {
|
||||||
return
|
return
|
||||||
DataSource.class.isAssignableFrom( unwrapType ) ||
|
DataSource.class.isAssignableFrom( unwrapType ) ||
|
||||||
MultiTenantConnectionProvider.class.isAssignableFrom( unwrapType );
|
MultiTenantConnectionProvider.class.isAssignableFrom( unwrapType );
|
||||||
|
|
|
@ -47,7 +47,7 @@ public abstract class AbstractMultiTenantConnectionProvider implements MultiTena
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isUnwrappableAs(Class unwrapType) {
|
public boolean isUnwrappableAs(Class<?> unwrapType) {
|
||||||
return
|
return
|
||||||
ConnectionProvider.class.isAssignableFrom( unwrapType ) ||
|
ConnectionProvider.class.isAssignableFrom( unwrapType ) ||
|
||||||
MultiTenantConnectionProvider.class.isAssignableFrom( unwrapType );
|
MultiTenantConnectionProvider.class.isAssignableFrom( unwrapType );
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class RefCursorSupportInitiator implements StandardServiceInitiator<RefCu
|
||||||
public static final RefCursorSupportInitiator INSTANCE = new RefCursorSupportInitiator();
|
public static final RefCursorSupportInitiator INSTANCE = new RefCursorSupportInitiator();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RefCursorSupport initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public RefCursorSupport initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return new StandardRefCursorSupport();
|
return new StandardRefCursorSupport();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class DialectFactoryImpl implements DialectFactory, ServiceRegistryAwareS
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialect buildDialect(Map configValues, DialectResolutionInfoSource resolutionInfoSource) throws HibernateException {
|
public Dialect buildDialect(Map<String,Object> configValues, DialectResolutionInfoSource resolutionInfoSource) throws HibernateException {
|
||||||
final Object dialectReference = configValues.get( AvailableSettings.DIALECT );
|
final Object dialectReference = configValues.get( AvailableSettings.DIALECT );
|
||||||
Dialect dialect = !isEmpty( dialectReference ) ?
|
Dialect dialect = !isEmpty( dialectReference ) ?
|
||||||
constructDialect( dialectReference, resolutionInfoSource ) :
|
constructDialect( dialectReference, resolutionInfoSource ) :
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class DialectFactoryInitiator implements StandardServiceInitiator<Dialect
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DialectFactory initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public DialectFactory initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return new DialectFactoryImpl();
|
return new DialectFactoryImpl();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class DialectResolverInitiator implements StandardServiceInitiator<Dialec
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DialectResolver initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public DialectResolver initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final DialectResolverSet resolverSet = new DialectResolverSet();
|
final DialectResolverSet resolverSet = new DialectResolverSet();
|
||||||
|
|
||||||
applyCustomerResolvers( resolverSet, registry, configurationValues );
|
applyCustomerResolvers( resolverSet, registry, configurationValues );
|
||||||
|
|
|
@ -35,5 +35,5 @@ public interface DialectFactory extends Service {
|
||||||
*
|
*
|
||||||
* @throws HibernateException No dialect specified and no resolver could make the determination.
|
* @throws HibernateException No dialect specified and no resolver could make the determination.
|
||||||
*/
|
*/
|
||||||
Dialect buildDialect(Map configValues, DialectResolutionInfoSource resolutionInfoSource) throws HibernateException;
|
Dialect buildDialect(Map<String,Object> configValues, DialectResolutionInfoSource resolutionInfoSource) throws HibernateException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class JdbcEnvironmentInitiator implements StandardServiceInitiator<JdbcEn
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JdbcEnvironment initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public JdbcEnvironment initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final DialectFactory dialectFactory = registry.getService( DialectFactory.class );
|
final DialectFactory dialectFactory = registry.getService( DialectFactory.class );
|
||||||
|
|
||||||
// 'hibernate.temp.use_jdbc_metadata_defaults' is a temporary magic value.
|
// 'hibernate.temp.use_jdbc_metadata_defaults' is a temporary magic value.
|
||||||
|
@ -244,7 +244,7 @@ public class JdbcEnvironmentInitiator implements StandardServiceInitiator<JdbcEn
|
||||||
return new JdbcEnvironmentImpl( registry, dialectFactory.buildDialect( configurationValues, null ) );
|
return new JdbcEnvironmentImpl( registry, dialectFactory.buildDialect( configurationValues, null ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
private JdbcConnectionAccess buildJdbcConnectionAccess(Map configValues, ServiceRegistryImplementor registry) {
|
private JdbcConnectionAccess buildJdbcConnectionAccess(Map<?,?> configValues, ServiceRegistryImplementor registry) {
|
||||||
if ( !configValues.containsKey( AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER ) ) {
|
if ( !configValues.containsKey( AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER ) ) {
|
||||||
ConnectionProvider connectionProvider = registry.getService( ConnectionProvider.class );
|
ConnectionProvider connectionProvider = registry.getService( ConnectionProvider.class );
|
||||||
return new ConnectionProviderJdbcConnectionAccess( connectionProvider );
|
return new ConnectionProviderJdbcConnectionAccess( connectionProvider );
|
||||||
|
|
|
@ -8,7 +8,6 @@ package org.hibernate.engine.jdbc.internal;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.hibernate.cfg.AvailableSettings;
|
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.dialect.Dialect;
|
import org.hibernate.dialect.Dialect;
|
||||||
import org.hibernate.engine.jdbc.LobCreationContext;
|
import org.hibernate.engine.jdbc.LobCreationContext;
|
||||||
|
@ -45,7 +44,7 @@ public class JdbcServicesImpl implements JdbcServices, ServiceRegistryAwareServi
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map configValues) {
|
public void configure(Map<String, Object> configValues) {
|
||||||
this.jdbcEnvironment = serviceRegistry.getService( JdbcEnvironment.class );
|
this.jdbcEnvironment = serviceRegistry.getService( JdbcEnvironment.class );
|
||||||
assert jdbcEnvironment != null : "JdbcEnvironment was not found!";
|
assert jdbcEnvironment != null : "JdbcEnvironment was not found!";
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class JdbcServicesInitiator implements StandardServiceInitiator<JdbcServi
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JdbcServices initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public JdbcServices initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return new JdbcServicesImpl();
|
return new JdbcServicesImpl();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,14 +34,14 @@ public class SqlStatementLogger {
|
||||||
private final long logSlowQuery;
|
private final long logSlowQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new SqlStatementLogger instance.
|
* Constructs a new {@code SqlStatementLogger} instance.
|
||||||
*/
|
*/
|
||||||
public SqlStatementLogger() {
|
public SqlStatementLogger() {
|
||||||
this( false, false, false );
|
this( false, false, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new SqlStatementLogger instance.
|
* Constructs a new {@code SqlStatementLogger} instance.
|
||||||
*
|
*
|
||||||
* @param logToStdout Should we log to STDOUT in addition to our internal logger.
|
* @param logToStdout Should we log to STDOUT in addition to our internal logger.
|
||||||
* @param format Should we format the statements in the console and log
|
* @param format Should we format the statements in the console and log
|
||||||
|
@ -51,7 +51,7 @@ public class SqlStatementLogger {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new SqlStatementLogger instance.
|
* Constructs a new {@code SqlStatementLogger} instance.
|
||||||
*
|
*
|
||||||
* @param logToStdout Should we log to STDOUT in addition to our internal logger.
|
* @param logToStdout Should we log to STDOUT in addition to our internal logger.
|
||||||
* @param format Should we format the statements in the console and log
|
* @param format Should we format the statements in the console and log
|
||||||
|
@ -62,7 +62,7 @@ public class SqlStatementLogger {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new SqlStatementLogger instance.
|
* Constructs a new {@code SqlStatementLogger} instance.
|
||||||
*
|
*
|
||||||
* @param logToStdout Should we log to STDOUT in addition to our internal logger.
|
* @param logToStdout Should we log to STDOUT in addition to our internal logger.
|
||||||
* @param format Should we format the statements in the console and log
|
* @param format Should we format the statements in the console and log
|
||||||
|
|
|
@ -10,7 +10,6 @@ import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import javax.naming.Context;
|
import javax.naming.Context;
|
||||||
import javax.naming.InitialContext;
|
import javax.naming.InitialContext;
|
||||||
import javax.naming.InvalidNameException;
|
import javax.naming.InvalidNameException;
|
||||||
|
@ -39,14 +38,14 @@ final class JndiServiceImpl implements JndiService {
|
||||||
JndiServiceImpl.class.getName()
|
JndiServiceImpl.class.getName()
|
||||||
);
|
);
|
||||||
|
|
||||||
private final Hashtable initialContextSettings;
|
private final Hashtable<String,Object> initialContextSettings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a JndiServiceImpl
|
* Constructs a JndiServiceImpl
|
||||||
*
|
*
|
||||||
* @param configurationValues Map of configuration settings, some of which apply to JNDI support.
|
* @param configurationValues Map of configuration settings, some of which apply to JNDI support.
|
||||||
*/
|
*/
|
||||||
public JndiServiceImpl(Map configurationValues) {
|
public JndiServiceImpl(Map<?,?> configurationValues) {
|
||||||
this.initialContextSettings = extractJndiProperties( configurationValues );
|
this.initialContextSettings = extractJndiProperties( configurationValues );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,18 +56,17 @@ final class JndiServiceImpl implements JndiService {
|
||||||
*
|
*
|
||||||
* @return The extracted JNDI specific properties.
|
* @return The extracted JNDI specific properties.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({ "unchecked" })
|
private static Hashtable<String,Object> extractJndiProperties(Map<?,?> configurationValues) {
|
||||||
private static Hashtable extractJndiProperties(Map configurationValues) {
|
final Hashtable<String,Object> jndiProperties = new Hashtable<>();
|
||||||
final Hashtable jndiProperties = new Hashtable();
|
|
||||||
|
|
||||||
for ( Map.Entry entry : (Set<Map.Entry>) configurationValues.entrySet() ) {
|
for ( Map.Entry<?,?> entry : configurationValues.entrySet() ) {
|
||||||
if ( !String.class.isInstance( entry.getKey() ) ) {
|
if ( !(entry.getKey() instanceof String) ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
final String propertyName = (String) entry.getKey();
|
final String propertyName = (String) entry.getKey();
|
||||||
final Object propertyValue = entry.getValue();
|
final Object propertyValue = entry.getValue();
|
||||||
if ( propertyName.startsWith( Environment.JNDI_PREFIX ) ) {
|
if ( propertyName.startsWith( Environment.JNDI_PREFIX ) ) {
|
||||||
// write the IntialContextFactory class and provider url to the result only if they are
|
// write the InitialContextFactory class and provider url to the result only if they are
|
||||||
// non-null; this allows the environmental defaults (if any) to remain in effect
|
// non-null; this allows the environmental defaults (if any) to remain in effect
|
||||||
if ( Environment.JNDI_CLASS.equals( propertyName ) ) {
|
if ( Environment.JNDI_CLASS.equals( propertyName ) ) {
|
||||||
if ( propertyValue != null ) {
|
if ( propertyValue != null ) {
|
||||||
|
@ -81,8 +79,8 @@ final class JndiServiceImpl implements JndiService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
final String passThruPropertyname = propertyName.substring( Environment.JNDI_PREFIX.length() + 1 );
|
final String passThruPropertyName = propertyName.substring( Environment.JNDI_PREFIX.length() + 1 );
|
||||||
jndiProperties.put( passThruPropertyname, propertyValue );
|
jndiProperties.put( passThruPropertyName, propertyValue );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public final class JndiServiceInitiator implements StandardServiceInitiator<Jndi
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JndiService initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public JndiService initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return new JndiServiceImpl( configurationValues );
|
return new JndiServiceImpl( configurationValues );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ public abstract class AbstractJtaPlatform
|
||||||
protected abstract TransactionManager locateTransactionManager();
|
protected abstract TransactionManager locateTransactionManager();
|
||||||
protected abstract UserTransaction locateUserTransaction();
|
protected abstract UserTransaction locateUserTransaction();
|
||||||
|
|
||||||
public void configure(Map configValues) {
|
public void configure(Map<String, Object> configValues) {
|
||||||
cacheTransactionManager = ConfigurationHelper.getBoolean(
|
cacheTransactionManager = ConfigurationHelper.getBoolean(
|
||||||
AvailableSettings.JTA_CACHE_TM,
|
AvailableSettings.JTA_CACHE_TM,
|
||||||
configValues,
|
configValues,
|
||||||
|
|
|
@ -34,8 +34,7 @@ public class JtaPlatformInitiator implements StandardServiceInitiator<JtaPlatfor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( {"unchecked"})
|
public JtaPlatform initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
public JtaPlatform initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
|
||||||
final Object setting = configurationValues.get( AvailableSettings.JTA_PLATFORM );
|
final Object setting = configurationValues.get( AvailableSettings.JTA_PLATFORM );
|
||||||
JtaPlatform platform = registry.getService( StrategySelector.class ).resolveStrategy( JtaPlatform.class, setting );
|
JtaPlatform platform = registry.getService( StrategySelector.class ).resolveStrategy( JtaPlatform.class, setting );
|
||||||
|
|
||||||
|
@ -53,7 +52,7 @@ public class JtaPlatformInitiator implements StandardServiceInitiator<JtaPlatfor
|
||||||
return platform;
|
return platform;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected JtaPlatform getFallbackProvider(Map configurationValues, ServiceRegistryImplementor registry) {
|
protected JtaPlatform getFallbackProvider(Map<?,?> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class JtaPlatformResolverInitiator implements StandardServiceInitiator<Jt
|
||||||
private static final Logger log = Logger.getLogger( JtaPlatformResolverInitiator.class );
|
private static final Logger log = Logger.getLogger( JtaPlatformResolverInitiator.class );
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JtaPlatformResolver initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public JtaPlatformResolver initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final Object setting = configurationValues.get( AvailableSettings.JTA_PLATFORM_RESOLVER );
|
final Object setting = configurationValues.get( AvailableSettings.JTA_PLATFORM_RESOLVER );
|
||||||
final JtaPlatformResolver resolver = registry.getService( StrategySelector.class )
|
final JtaPlatformResolver resolver = registry.getService( StrategySelector.class )
|
||||||
.resolveStrategy( JtaPlatformResolver.class, setting );
|
.resolveStrategy( JtaPlatformResolver.class, setting );
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class EntityCopyObserverFactoryInitiator implements StandardServiceInitia
|
||||||
private static final CoreMessageLogger LOG = CoreLogging.messageLogger( EntityCopyObserverFactoryInitiator.class );
|
private static final CoreMessageLogger LOG = CoreLogging.messageLogger( EntityCopyObserverFactoryInitiator.class );
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityCopyObserverFactory initiateService(final Map configurationValues, final ServiceRegistryImplementor registry) {
|
public EntityCopyObserverFactory initiateService(final Map<String, Object> configurationValues, final ServiceRegistryImplementor registry) {
|
||||||
final Object value = getConfigurationValue( configurationValues );
|
final Object value = getConfigurationValue( configurationValues );
|
||||||
if ( value.equals( EntityCopyNotAllowedObserver.SHORT_NAME ) || value.equals( EntityCopyNotAllowedObserver.class.getName() ) ) {
|
if ( value.equals( EntityCopyNotAllowedObserver.SHORT_NAME ) || value.equals( EntityCopyNotAllowedObserver.class.getName() ) ) {
|
||||||
LOG.debugf( "Configured EntityCopyObserver strategy: %s", EntityCopyNotAllowedObserver.SHORT_NAME );
|
LOG.debugf( "Configured EntityCopyObserver strategy: %s", EntityCopyNotAllowedObserver.SHORT_NAME );
|
||||||
|
@ -51,13 +51,13 @@ public class EntityCopyObserverFactoryInitiator implements StandardServiceInitia
|
||||||
//this might look excessive, but it also happens to test eagerly (at boot) that we can actually construct these
|
//this might look excessive, but it also happens to test eagerly (at boot) that we can actually construct these
|
||||||
//and that they are indeed of the right type.
|
//and that they are indeed of the right type.
|
||||||
EntityCopyObserver exampleInstance = registry.getService( StrategySelector.class ).resolveStrategy( EntityCopyObserver.class, value );
|
EntityCopyObserver exampleInstance = registry.getService( StrategySelector.class ).resolveStrategy( EntityCopyObserver.class, value );
|
||||||
Class observerType = exampleInstance.getClass();
|
Class<?> observerType = exampleInstance.getClass();
|
||||||
LOG.debugf( "Configured EntityCopyObserver is a custom implementation of type %s", observerType.getName() );
|
LOG.debugf( "Configured EntityCopyObserver is a custom implementation of type %s", observerType.getName() );
|
||||||
return new EntityObserversFactoryFromClass( observerType );
|
return new EntityObserversFactoryFromClass( observerType );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object getConfigurationValue(final Map configurationValues) {
|
private Object getConfigurationValue(final Map<?,?> configurationValues) {
|
||||||
final Object o = configurationValues.get( AvailableSettings.MERGE_ENTITY_COPY_OBSERVER );
|
final Object o = configurationValues.get( AvailableSettings.MERGE_ENTITY_COPY_OBSERVER );
|
||||||
if ( o == null ) {
|
if ( o == null ) {
|
||||||
return EntityCopyNotAllowedObserver.SHORT_NAME; //default
|
return EntityCopyNotAllowedObserver.SHORT_NAME; //default
|
||||||
|
@ -77,9 +77,9 @@ public class EntityCopyObserverFactoryInitiator implements StandardServiceInitia
|
||||||
|
|
||||||
private static class EntityObserversFactoryFromClass implements EntityCopyObserverFactory {
|
private static class EntityObserversFactoryFromClass implements EntityCopyObserverFactory {
|
||||||
|
|
||||||
private final Class value;
|
private final Class<?> value;
|
||||||
|
|
||||||
public EntityObserversFactoryFromClass(Class value) {
|
public EntityObserversFactoryFromClass(Class<?> value) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,9 @@ import java.util.Properties;
|
||||||
import org.hibernate.HibernateException;
|
import org.hibernate.HibernateException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Configurable interface defines the contract for SQLExceptionConverter impls that
|
* This interface defines the contract for {@link SQLExceptionConverter}
|
||||||
* want to be configured prior to usage given the currently defined Hibernate properties.
|
* implementations that want to be configured prior to usage given the
|
||||||
|
* currently defined Hibernate properties.
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -12,15 +12,14 @@ import java.sql.SQLException;
|
||||||
import org.hibernate.JDBCException;
|
import org.hibernate.JDBCException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a contract for implementations that know how to convert a SQLException
|
* Defines a contract for implementations that know how to convert a
|
||||||
* into Hibernate's JDBCException hierarchy. Inspired by Spring's
|
* {@link SQLException} to Hibernate's {@link JDBCException} hierarchy.
|
||||||
* SQLExceptionTranslator.
|
|
||||||
* <p/>
|
* <p/>
|
||||||
* Implementations <b>must</b> have a constructor which takes a
|
* Implementations <b>must</b> have a constructor which takes a
|
||||||
* {@link ViolatedConstraintNameExtractor} parameter.
|
* {@link ViolatedConstraintNameExtractor} parameter.
|
||||||
* <p/>
|
* <p/>
|
||||||
* Implementations may implement {@link Configurable} if they need to perform
|
* Implementations may implement {@link Configurable} if they need to
|
||||||
* configuration steps prior to first use.
|
* perform configuration steps prior to first use.
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
@ -31,7 +30,11 @@ public interface SQLExceptionConverter extends Serializable {
|
||||||
* @param sqlException The SQLException to be converted.
|
* @param sqlException The SQLException to be converted.
|
||||||
* @param message An optional error message.
|
* @param message An optional error message.
|
||||||
* @return The resulting JDBCException.
|
* @return The resulting JDBCException.
|
||||||
* @see org.hibernate.exception.ConstraintViolationException , JDBCConnectionException, SQLGrammarException, LockAcquisitionException
|
*
|
||||||
|
* @see org.hibernate.exception.ConstraintViolationException
|
||||||
|
* @see org.hibernate.exception.JDBCConnectionException
|
||||||
|
* @see org.hibernate.exception.SQLGrammarException
|
||||||
|
* @see org.hibernate.exception.LockAcquisitionException
|
||||||
*/
|
*/
|
||||||
JDBCException convert(SQLException sqlException, String message, String sql);
|
JDBCException convert(SQLException sqlException, String message, String sql);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,8 @@ import java.sql.SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a contract for implementations that can extract the name of a violated
|
* Defines a contract for implementations that can extract the name of a violated
|
||||||
* constraint from a SQLException that is the result of that constraint violation.
|
* constraint from a {@link SQLException} that is the result of that constraint
|
||||||
|
* violation.
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||||
|
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
|
*/
|
||||||
|
package org.hibernate.internal.util;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
public class PropertiesHelper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pretend that a {@link Properties} object is really a
|
||||||
|
* {@link Map Map<String,Object>}, which of course it
|
||||||
|
* should be anyway.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||||
|
public static Map<String, Object> map(Properties properties) {
|
||||||
|
//yup, I'm really doing this, and yep, I know it's rubbish:
|
||||||
|
return (Map) properties;
|
||||||
|
}
|
||||||
|
}
|
|
@ -55,25 +55,25 @@ public class HibernatePersistenceProvider implements PersistenceProvider {
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map properties) {
|
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map<?,?> properties) {
|
||||||
return getEntityManagerFactoryBuilderOrNull( persistenceUnitName, properties, null, null );
|
return getEntityManagerFactoryBuilderOrNull( persistenceUnitName, properties, null, null );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map properties,
|
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map<?,?> properties,
|
||||||
ClassLoader providedClassLoader) {
|
ClassLoader providedClassLoader) {
|
||||||
return getEntityManagerFactoryBuilderOrNull( persistenceUnitName, properties, providedClassLoader, null );
|
return getEntityManagerFactoryBuilderOrNull( persistenceUnitName, properties, providedClassLoader, null );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map properties,
|
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map<?,?> properties,
|
||||||
ClassLoaderService providedClassLoaderService) {
|
ClassLoaderService providedClassLoaderService) {
|
||||||
return getEntityManagerFactoryBuilderOrNull( persistenceUnitName, properties, null, providedClassLoaderService );
|
return getEntityManagerFactoryBuilderOrNull( persistenceUnitName, properties, null, providedClassLoaderService );
|
||||||
}
|
}
|
||||||
|
|
||||||
private EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map properties,
|
private EntityManagerFactoryBuilder getEntityManagerFactoryBuilderOrNull(String persistenceUnitName, Map<?,?> properties,
|
||||||
ClassLoader providedClassLoader, ClassLoaderService providedClassLoaderService) {
|
ClassLoader providedClassLoader, ClassLoaderService providedClassLoaderService) {
|
||||||
log.tracef( "Attempting to obtain correct EntityManagerFactoryBuilder for persistenceUnitName : %s", persistenceUnitName );
|
log.tracef( "Attempting to obtain correct EntityManagerFactoryBuilder for persistenceUnitName : %s", persistenceUnitName );
|
||||||
|
|
||||||
final Map integration = wrap( properties );
|
final Map<?,?> integration = wrap( properties );
|
||||||
final List<ParsedPersistenceXmlDescriptor> units;
|
final List<ParsedPersistenceXmlDescriptor> units;
|
||||||
try {
|
try {
|
||||||
units = PersistenceXmlParser.locatePersistenceUnits( integration );
|
units = PersistenceXmlParser.locatePersistenceUnits( integration );
|
||||||
|
@ -124,8 +124,7 @@ public class HibernatePersistenceProvider implements PersistenceProvider {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
protected static Map<?,?> wrap(Map<?,?> properties) {
|
||||||
protected static Map wrap(Map properties) {
|
|
||||||
return properties == null ? Collections.emptyMap() : Collections.unmodifiableMap( properties );
|
return properties == null ? Collections.emptyMap() : Collections.unmodifiableMap( properties );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,17 +165,17 @@ public class HibernatePersistenceProvider implements PersistenceProvider {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(PersistenceUnitInfo info, Map integration) {
|
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(PersistenceUnitInfo info, Map<?,?> integration) {
|
||||||
return Bootstrap.getEntityManagerFactoryBuilder( info, integration );
|
return Bootstrap.getEntityManagerFactoryBuilder( info, integration );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(PersistenceUnitDescriptor persistenceUnitDescriptor,
|
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(PersistenceUnitDescriptor persistenceUnitDescriptor,
|
||||||
Map integration, ClassLoader providedClassLoader) {
|
Map<?,?> integration, ClassLoader providedClassLoader) {
|
||||||
return Bootstrap.getEntityManagerFactoryBuilder( persistenceUnitDescriptor, integration, providedClassLoader );
|
return Bootstrap.getEntityManagerFactoryBuilder( persistenceUnitDescriptor, integration, providedClassLoader );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(PersistenceUnitDescriptor persistenceUnitDescriptor,
|
protected EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(PersistenceUnitDescriptor persistenceUnitDescriptor,
|
||||||
Map integration, ClassLoaderService providedClassLoaderService) {
|
Map<?,?> integration, ClassLoaderService providedClassLoaderService) {
|
||||||
return Bootstrap.getEntityManagerFactoryBuilder( persistenceUnitDescriptor, integration, providedClassLoaderService );
|
return Bootstrap.getEntityManagerFactoryBuilder( persistenceUnitDescriptor, integration, providedClassLoaderService );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,7 @@ import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||||
import org.hibernate.integrator.spi.Integrator;
|
import org.hibernate.integrator.spi.Integrator;
|
||||||
import org.hibernate.internal.EntityManagerMessageLogger;
|
import org.hibernate.internal.EntityManagerMessageLogger;
|
||||||
import org.hibernate.internal.util.NullnessHelper;
|
import org.hibernate.internal.util.NullnessHelper;
|
||||||
|
import org.hibernate.internal.util.PropertiesHelper;
|
||||||
import org.hibernate.internal.util.StringHelper;
|
import org.hibernate.internal.util.StringHelper;
|
||||||
import org.hibernate.internal.util.config.ConfigurationHelper;
|
import org.hibernate.internal.util.config.ConfigurationHelper;
|
||||||
import org.hibernate.jpa.boot.spi.EntityManagerFactoryBuilder;
|
import org.hibernate.jpa.boot.spi.EntityManagerFactoryBuilder;
|
||||||
|
@ -166,7 +167,7 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
|
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
// things built in first phase, needed for second phase
|
// things built in first phase, needed for second phase
|
||||||
private final Map<Object,Object> configurationValues;
|
private final Map<String,Object> configurationValues;
|
||||||
private final StandardServiceRegistry standardServiceRegistry;
|
private final StandardServiceRegistry standardServiceRegistry;
|
||||||
private final ManagedResources managedResources;
|
private final ManagedResources managedResources;
|
||||||
private final MetadataBuilderImplementor metamodelBuilder;
|
private final MetadataBuilderImplementor metamodelBuilder;
|
||||||
|
@ -184,20 +185,20 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
|
|
||||||
public EntityManagerFactoryBuilderImpl(
|
public EntityManagerFactoryBuilderImpl(
|
||||||
PersistenceUnitDescriptor persistenceUnit,
|
PersistenceUnitDescriptor persistenceUnit,
|
||||||
Map<?,?> integrationSettings) {
|
Map<String, Object> integrationSettings) {
|
||||||
this( persistenceUnit, integrationSettings, null, null, null );
|
this( persistenceUnit, integrationSettings, null, null, null );
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntityManagerFactoryBuilderImpl(
|
public EntityManagerFactoryBuilderImpl(
|
||||||
PersistenceUnitDescriptor persistenceUnit,
|
PersistenceUnitDescriptor persistenceUnit,
|
||||||
Map<?,?> integrationSettings,
|
Map<String, Object> integrationSettings,
|
||||||
ClassLoader providedClassLoader ) {
|
ClassLoader providedClassLoader ) {
|
||||||
this( persistenceUnit, integrationSettings, providedClassLoader, null, null );
|
this( persistenceUnit, integrationSettings, providedClassLoader, null, null );
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntityManagerFactoryBuilderImpl(
|
public EntityManagerFactoryBuilderImpl(
|
||||||
PersistenceUnitDescriptor persistenceUnit,
|
PersistenceUnitDescriptor persistenceUnit,
|
||||||
Map<?,?> integrationSettings,
|
Map<String, Object> integrationSettings,
|
||||||
ClassLoaderService providedClassLoaderService ) {
|
ClassLoaderService providedClassLoaderService ) {
|
||||||
this( persistenceUnit, integrationSettings, null, providedClassLoaderService, null );
|
this( persistenceUnit, integrationSettings, null, providedClassLoaderService, null );
|
||||||
}
|
}
|
||||||
|
@ -208,14 +209,14 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
@Internal
|
@Internal
|
||||||
public EntityManagerFactoryBuilderImpl(
|
public EntityManagerFactoryBuilderImpl(
|
||||||
PersistenceUnitDescriptor persistenceUnitDescriptor,
|
PersistenceUnitDescriptor persistenceUnitDescriptor,
|
||||||
Map<?,?> integration,
|
Map<String, Object> integration,
|
||||||
Consumer<MergedSettings> mergedSettingsBaseline) {
|
Consumer<MergedSettings> mergedSettingsBaseline) {
|
||||||
this( persistenceUnitDescriptor, integration, null, null, mergedSettingsBaseline );
|
this( persistenceUnitDescriptor, integration, null, null, mergedSettingsBaseline );
|
||||||
}
|
}
|
||||||
|
|
||||||
private EntityManagerFactoryBuilderImpl(
|
private EntityManagerFactoryBuilderImpl(
|
||||||
PersistenceUnitDescriptor persistenceUnit,
|
PersistenceUnitDescriptor persistenceUnit,
|
||||||
Map<?,?> integrationSettings,
|
Map<String,Object> integrationSettings,
|
||||||
ClassLoader providedClassLoader,
|
ClassLoader providedClassLoader,
|
||||||
ClassLoaderService providedClassLoaderService,
|
ClassLoaderService providedClassLoaderService,
|
||||||
Consumer<MergedSettings> mergedSettingsBaseline) {
|
Consumer<MergedSettings> mergedSettingsBaseline) {
|
||||||
|
@ -514,7 +515,7 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
|
|
||||||
private MergedSettings mergeSettings(
|
private MergedSettings mergeSettings(
|
||||||
PersistenceUnitDescriptor persistenceUnit,
|
PersistenceUnitDescriptor persistenceUnit,
|
||||||
Map<?,?> integrationSettings,
|
Map<String,Object> integrationSettings,
|
||||||
StandardServiceRegistryBuilder ssrBuilder,
|
StandardServiceRegistryBuilder ssrBuilder,
|
||||||
Consumer<MergedSettings> mergedSettingsBaseline) {
|
Consumer<MergedSettings> mergedSettingsBaseline) {
|
||||||
final MergedSettings mergedSettings = new MergedSettings();
|
final MergedSettings mergedSettings = new MergedSettings();
|
||||||
|
@ -541,17 +542,17 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
// 2) additional cache region declarations
|
// 2) additional cache region declarations
|
||||||
//
|
//
|
||||||
// we will also clean up any references with null entries
|
// we will also clean up any references with null entries
|
||||||
Iterator<Map.Entry<Object,Object>> itr = mergedSettings.configurationValues.entrySet().iterator();
|
Iterator<Map.Entry<String,Object>> itr = mergedSettings.configurationValues.entrySet().iterator();
|
||||||
while ( itr.hasNext() ) {
|
while ( itr.hasNext() ) {
|
||||||
final Map.Entry<Object,Object> entry = itr.next();
|
final Map.Entry<String,Object> entry = itr.next();
|
||||||
if ( entry.getValue() == null ) {
|
if ( entry.getValue() == null ) {
|
||||||
// remove entries with null values
|
// remove entries with null values
|
||||||
itr.remove();
|
itr.remove();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( entry.getKey() instanceof String && entry.getValue() instanceof String) {
|
if ( entry.getValue() instanceof String) {
|
||||||
final String keyString = (String) entry.getKey();
|
final String keyString = entry.getKey();
|
||||||
final String valueString = (String) entry.getValue();
|
final String valueString = (String) entry.getValue();
|
||||||
|
|
||||||
if ( keyString.startsWith( CLASS_CACHE_PREFIX ) ) {
|
if ( keyString.startsWith( CLASS_CACHE_PREFIX ) ) {
|
||||||
|
@ -584,10 +585,10 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
*/
|
*/
|
||||||
private void normalizeSettings(
|
private void normalizeSettings(
|
||||||
PersistenceUnitDescriptor persistenceUnit,
|
PersistenceUnitDescriptor persistenceUnit,
|
||||||
Map<?, ?> integrationSettings,
|
Map<String, Object> integrationSettings,
|
||||||
MergedSettings mergedSettings) {
|
MergedSettings mergedSettings) {
|
||||||
// make a copy so we can remove things as we process them
|
// make a copy so we can remove things as we process them
|
||||||
final HashMap<?, ?> integrationSettingsCopy = new HashMap<>( integrationSettings );
|
final HashMap<String, Object> integrationSettingsCopy = new HashMap<>( integrationSettings );
|
||||||
|
|
||||||
normalizeConnectionAccessUserAndPass( integrationSettingsCopy, mergedSettings );
|
normalizeConnectionAccessUserAndPass( integrationSettingsCopy, mergedSettings );
|
||||||
|
|
||||||
|
@ -630,7 +631,7 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
//
|
//
|
||||||
// NOTE that this occurs after the specialized normalize calls above which remove
|
// NOTE that this occurs after the specialized normalize calls above which remove
|
||||||
// any specially-handled settings.
|
// any specially-handled settings.
|
||||||
for ( Map.Entry<?,?> entry : integrationSettingsCopy.entrySet() ) {
|
for ( Map.Entry<String,Object> entry : integrationSettingsCopy.entrySet() ) {
|
||||||
if ( entry.getKey() == null ) {
|
if ( entry.getKey() == null ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1515,7 +1516,7 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class MergedSettings {
|
public static class MergedSettings {
|
||||||
private final Map<Object,Object> configurationValues = new ConcurrentHashMap<>( 16, 0.75f, 1 );
|
private final Map<String,Object> configurationValues = new ConcurrentHashMap<>( 16, 0.75f, 1 );
|
||||||
|
|
||||||
private List<CacheRegionDefinition> cacheRegionDefinitions;
|
private List<CacheRegionDefinition> cacheRegionDefinitions;
|
||||||
|
|
||||||
|
@ -1523,12 +1524,12 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
* MergedSettings is initialized with hibernate.properties
|
* MergedSettings is initialized with hibernate.properties
|
||||||
*/
|
*/
|
||||||
private MergedSettings() {
|
private MergedSettings() {
|
||||||
configurationValues.putAll( Environment.getProperties() );
|
configurationValues.putAll( PropertiesHelper.map( Environment.getProperties() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processPersistenceUnitDescriptorProperties(PersistenceUnitDescriptor persistenceUnit) {
|
public void processPersistenceUnitDescriptorProperties(PersistenceUnitDescriptor persistenceUnit) {
|
||||||
if ( persistenceUnit.getProperties() != null ) {
|
if ( persistenceUnit.getProperties() != null ) {
|
||||||
configurationValues.putAll( persistenceUnit.getProperties() );
|
configurationValues.putAll( PropertiesHelper.map( persistenceUnit.getProperties() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
configurationValues.put( PERSISTENCE_UNIT_NAME, persistenceUnit.getName() );
|
configurationValues.put( PERSISTENCE_UNIT_NAME, persistenceUnit.getName() );
|
||||||
|
@ -1551,7 +1552,7 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil
|
||||||
configurationValues.putAll( loadedConfig.getConfigurationValues() );
|
configurationValues.putAll( loadedConfig.getConfigurationValues() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Object,Object> getConfigurationValues() {
|
public Map<String,Object> getConfigurationValues() {
|
||||||
return configurationValues;
|
return configurationValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,14 +27,13 @@ public class PersisterClassResolverInitiator implements StandardServiceInitiator
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( {"unchecked"})
|
public PersisterClassResolver initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
public PersisterClassResolver initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
|
||||||
final Object customImpl = configurationValues.get( IMPL_NAME );
|
final Object customImpl = configurationValues.get( IMPL_NAME );
|
||||||
if ( customImpl == null ) {
|
if ( customImpl == null ) {
|
||||||
return new StandardPersisterClassResolver();
|
return new StandardPersisterClassResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( PersisterClassResolver.class.isInstance( customImpl ) ) {
|
if ( customImpl instanceof PersisterClassResolver ) {
|
||||||
return (PersisterClassResolver) customImpl;
|
return (PersisterClassResolver) customImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,18 +28,18 @@ public class PersisterFactoryInitiator implements StandardServiceInitiator<Persi
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( {"unchecked"})
|
public PersisterFactory initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
public PersisterFactory initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
|
||||||
final Object customImpl = configurationValues.get( IMPL_NAME );
|
final Object customImpl = configurationValues.get( IMPL_NAME );
|
||||||
if ( customImpl == null ) {
|
if ( customImpl == null ) {
|
||||||
return new PersisterFactoryImpl();
|
return new PersisterFactoryImpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( PersisterFactory.class.isInstance( customImpl ) ) {
|
if ( customImpl instanceof PersisterFactory ) {
|
||||||
return (PersisterFactory) customImpl;
|
return (PersisterFactory) customImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Class<? extends PersisterFactory> customImplClass = Class.class.isInstance( customImpl )
|
@SuppressWarnings("unchecked")
|
||||||
|
final Class<? extends PersisterFactory> customImplClass = customImpl instanceof Class
|
||||||
? ( Class<? extends PersisterFactory> ) customImpl
|
? ( Class<? extends PersisterFactory> ) customImpl
|
||||||
: locate( registry, customImpl.toString() );
|
: locate( registry, customImpl.toString() );
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class PropertyAccessStrategyResolverInitiator implements StandardServiceI
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PropertyAccessStrategyResolver initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public PropertyAccessStrategyResolver initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return new PropertyAccessStrategyResolverStandardImpl( registry );
|
return new PropertyAccessStrategyResolverStandardImpl( registry );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -240,7 +240,6 @@ public abstract class AbstractCommonQueryContract implements CommonQueryContract
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public final boolean applyHint(String hintName, Object value) {
|
public final boolean applyHint(String hintName, Object value) {
|
||||||
getSession().checkOpen( true );
|
getSession().checkOpen( true );
|
||||||
|
|
||||||
|
@ -632,13 +631,12 @@ public abstract class AbstractCommonQueryContract implements CommonQueryContract
|
||||||
setHibernateFlushMode( FlushModeTypeHelper.getFlushMode( flushModeType ) );
|
setHibernateFlushMode( FlushModeTypeHelper.getFlushMode( flushModeType ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings( "rawtypes" )
|
public boolean applyTupleTransformer(TupleTransformer<?> transformer) {
|
||||||
public boolean applyTupleTransformer(TupleTransformer transformer) {
|
|
||||||
getQueryOptions().setTupleTransformer( transformer );
|
getQueryOptions().setTupleTransformer( transformer );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean applyResultListTransformer(ResultListTransformer transformer) {
|
public boolean applyResultListTransformer(ResultListTransformer<?> transformer) {
|
||||||
getQueryOptions().setResultListTransformer( transformer );
|
getQueryOptions().setResultListTransformer( transformer );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -649,7 +647,7 @@ public abstract class AbstractCommonQueryContract implements CommonQueryContract
|
||||||
|
|
||||||
protected abstract ParameterMetadataImplementor getParameterMetadata();
|
protected abstract ParameterMetadataImplementor getParameterMetadata();
|
||||||
|
|
||||||
@SuppressWarnings( {"unchecked", "rawtypes"} )
|
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||||
public Set<Parameter<?>> getParameters() {
|
public Set<Parameter<?>> getParameters() {
|
||||||
getSession().checkOpen( false );
|
getSession().checkOpen( false );
|
||||||
return (Set) getParameterMetadata().getRegistrations();
|
return (Set) getParameterMetadata().getRegistrations();
|
||||||
|
@ -1394,7 +1392,7 @@ public abstract class AbstractCommonQueryContract implements CommonQueryContract
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommonQueryContract setProperties(Map map) {
|
public CommonQueryContract setProperties(@SuppressWarnings("rawtypes") Map map) {
|
||||||
for ( String paramName : getParameterMetadata().getNamedParameterNames() ) {
|
for ( String paramName : getParameterMetadata().getNamedParameterNames() ) {
|
||||||
final Object object = map.get( paramName );
|
final Object object = map.get( paramName );
|
||||||
if ( object == null ) {
|
if ( object == null ) {
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
package org.hibernate.resource.beans.container.spi;
|
package org.hibernate.resource.beans.container.spi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release-able extension to ContainedBean. We make the split to make it
|
* Release-able extension to {@link ContainedBean}. We make the split to make it
|
||||||
* clear that generally speaking the callers to BeanContainer should not perform
|
* clear that generally speaking the callers to BeanContainer should not perform
|
||||||
* the release
|
* the release
|
||||||
*
|
*
|
||||||
|
|
|
@ -11,7 +11,7 @@ import jakarta.enterprise.inject.spi.BeanManager;
|
||||||
/**
|
/**
|
||||||
* This contract and the nested LifecycleListener contract represent the changes
|
* This contract and the nested LifecycleListener contract represent the changes
|
||||||
* we'd like to propose to the CDI spec. The idea being simply to allow contextual
|
* we'd like to propose to the CDI spec. The idea being simply to allow contextual
|
||||||
* registration of BeanManager lifecycle callbacks
|
* registration of {@link BeanManager} lifecycle callbacks
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
package org.hibernate.resource.beans.spi;
|
package org.hibernate.resource.beans.spi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generalized contract for a "ManagedBean" as seen by Hibernate
|
* Generalized contract for a (CDI or Spring) "managed bean" as seen by Hibernate
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -10,7 +10,7 @@ import org.hibernate.resource.beans.container.spi.BeanContainer;
|
||||||
import org.hibernate.service.Service;
|
import org.hibernate.service.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A registry for ManagedBean instances. Responsible for managing the lifecycle.
|
* A registry for {@link ManagedBean} instances. Responsible for managing the lifecycle.
|
||||||
* <p/>
|
* <p/>
|
||||||
* Access to the beans and usage of them are only valid between the time
|
* Access to the beans and usage of them are only valid between the time
|
||||||
* the registry is initialized and released (however those events are recognized).
|
* the registry is initialized and released (however those events are recognized).
|
||||||
|
|
|
@ -22,7 +22,7 @@ import org.hibernate.resource.beans.internal.ManagedBeanRegistryImpl;
|
||||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hibernate's standard initializer for the ManagedBeanRegistry service.
|
* Hibernate's standard initializer for the {@link ManagedBeanRegistry} service.
|
||||||
*
|
*
|
||||||
* Produces a {@link ManagedBeanRegistryImpl}
|
* Produces a {@link ManagedBeanRegistryImpl}
|
||||||
*
|
*
|
||||||
|
@ -41,12 +41,12 @@ public class ManagedBeanRegistryInitiator implements StandardServiceInitiator<Ma
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ManagedBeanRegistry initiateService(
|
public ManagedBeanRegistry initiateService(
|
||||||
Map configurationValues,
|
Map<String, Object> configurationValues,
|
||||||
ServiceRegistryImplementor serviceRegistry) {
|
ServiceRegistryImplementor serviceRegistry) {
|
||||||
return new ManagedBeanRegistryImpl( resolveBeanContainer( configurationValues, serviceRegistry ) );
|
return new ManagedBeanRegistryImpl( resolveBeanContainer( configurationValues, serviceRegistry ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
private BeanContainer resolveBeanContainer(Map configurationValues, ServiceRegistryImplementor serviceRegistry) {
|
private BeanContainer resolveBeanContainer(Map<?,?> configurationValues, ServiceRegistryImplementor serviceRegistry) {
|
||||||
final ClassLoaderService classLoaderService = serviceRegistry.getService( ClassLoaderService.class );
|
final ClassLoaderService classLoaderService = serviceRegistry.getService( ClassLoaderService.class );
|
||||||
final ConfigurationService cfgSvc = serviceRegistry.getService( ConfigurationService.class );
|
final ConfigurationService cfgSvc = serviceRegistry.getService( ConfigurationService.class );
|
||||||
|
|
||||||
|
@ -92,14 +92,14 @@ public class ManagedBeanRegistryInitiator implements StandardServiceInitiator<Ma
|
||||||
}
|
}
|
||||||
|
|
||||||
// otherwise we ultimately need to resolve this to a class
|
// otherwise we ultimately need to resolve this to a class
|
||||||
final Class containerClass;
|
final Class<?> containerClass;
|
||||||
if ( explicitSetting instanceof Class ) {
|
if ( explicitSetting instanceof Class ) {
|
||||||
containerClass = (Class) explicitSetting;
|
containerClass = (Class<?>) explicitSetting;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
final String name = explicitSetting.toString();
|
final String name = explicitSetting.toString();
|
||||||
// try the StrategySelector service
|
// try the StrategySelector service
|
||||||
final Class selected = serviceRegistry.getService( StrategySelector.class )
|
final Class<?> selected = serviceRegistry.getService( StrategySelector.class )
|
||||||
.selectStrategyImplementor( BeanContainer.class, name );
|
.selectStrategyImplementor( BeanContainer.class, name );
|
||||||
if ( selected != null ) {
|
if ( selected != null ) {
|
||||||
containerClass = selected;
|
containerClass = selected;
|
||||||
|
@ -128,7 +128,7 @@ public class ManagedBeanRegistryInitiator implements StandardServiceInitiator<Ma
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Class cdiBeanManagerClass(ClassLoaderService classLoaderService) throws ClassLoadingException {
|
public static Class<?> cdiBeanManagerClass(ClassLoaderService classLoaderService) throws ClassLoadingException {
|
||||||
try {
|
try {
|
||||||
return classLoaderService.classForName( "jakarta.enterprise.inject.spi.BeanManager" );
|
return classLoaderService.classForName( "jakarta.enterprise.inject.spi.BeanManager" );
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
package org.hibernate.resource.beans.spi;
|
package org.hibernate.resource.beans.spi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ManagedBean implementation for cases where we have been handed an actual
|
* {@link ManagedBean} implementation for cases where we have been handed an actual
|
||||||
* instance to use.
|
* instance to use.
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class TransactionCoordinatorBuilderInitiator implements StandardServiceIn
|
||||||
public static final TransactionCoordinatorBuilderInitiator INSTANCE = new TransactionCoordinatorBuilderInitiator();
|
public static final TransactionCoordinatorBuilderInitiator INSTANCE = new TransactionCoordinatorBuilderInitiator();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TransactionCoordinatorBuilder initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public TransactionCoordinatorBuilder initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return registry.getService( StrategySelector.class ).resolveDefaultableStrategy(
|
return registry.getService( StrategySelector.class ).resolveDefaultableStrategy(
|
||||||
TransactionCoordinatorBuilder.class,
|
TransactionCoordinatorBuilder.class,
|
||||||
determineStrategySelection( configurationValues ),
|
determineStrategySelection( configurationValues ),
|
||||||
|
|
|
@ -47,10 +47,10 @@ public final class StandardServiceInitiators {
|
||||||
private StandardServiceInitiators() {
|
private StandardServiceInitiators() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final List<StandardServiceInitiator> LIST = buildStandardServiceInitiatorList();
|
public static final List<StandardServiceInitiator<?>> LIST = buildStandardServiceInitiatorList();
|
||||||
|
|
||||||
private static List<StandardServiceInitiator> buildStandardServiceInitiatorList() {
|
private static List<StandardServiceInitiator<?>> buildStandardServiceInitiatorList() {
|
||||||
final ArrayList<StandardServiceInitiator> serviceInitiators = new ArrayList<>();
|
final ArrayList<StandardServiceInitiator<?>> serviceInitiators = new ArrayList<>();
|
||||||
|
|
||||||
serviceInitiators.add( DefaultSessionFactoryBuilderInitiator.INSTANCE );
|
serviceInitiators.add( DefaultSessionFactoryBuilderInitiator.INSTANCE );
|
||||||
|
|
||||||
|
|
|
@ -50,31 +50,29 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
private volatile ServiceRegistryImplementor parent;
|
private volatile ServiceRegistryImplementor parent;
|
||||||
private final boolean allowCrawling;
|
private final boolean allowCrawling;
|
||||||
|
|
||||||
private final ConcurrentMap<Class,ServiceBinding> serviceBindingMap = new ConcurrentHashMap<>();
|
private final ConcurrentMap<Class<?>,ServiceBinding<?>> serviceBindingMap = new ConcurrentHashMap<>();
|
||||||
private final ConcurrentMap<Class,Class> roleXref = new ConcurrentHashMap<>();
|
private final ConcurrentMap<Class<?>,Class<?>> roleXref = new ConcurrentHashMap<>();
|
||||||
// The services stored in initializedServiceByRole are completely initialized
|
// The services stored in initializedServiceByRole are completely initialized
|
||||||
// (i.e., configured, dependencies injected, and started)
|
// (i.e., configured, dependencies injected, and started)
|
||||||
private final ConcurrentMap<Class,Service> initializedServiceByRole = new ConcurrentHashMap<>();
|
private final ConcurrentMap<Class<?>,Service> initializedServiceByRole = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
// IMPL NOTE : the list used for ordered destruction. Cannot used map above because we need to
|
// IMPL NOTE : the list used for ordered destruction. Cannot used map above because we need to
|
||||||
// iterate it in reverse order which is only available through ListIterator
|
// iterate it in reverse order which is only available through ListIterator
|
||||||
// assume 20 services for initial sizing
|
// assume 20 services for initial sizing
|
||||||
// All access guarded by synchronization on the serviceBindingList itself.
|
// All access guarded by synchronization on the serviceBindingList itself.
|
||||||
private final List<ServiceBinding> serviceBindingList = CollectionHelper.arrayList( 20 );
|
private final List<ServiceBinding<?>> serviceBindingList = CollectionHelper.arrayList( 20 );
|
||||||
|
|
||||||
// Guarded by synchronization on this.
|
// Guarded by synchronization on this.
|
||||||
private boolean autoCloseRegistry;
|
private final boolean autoCloseRegistry;
|
||||||
// Guarded by synchronization on this.
|
// Guarded by synchronization on this.
|
||||||
private Set<ServiceRegistryImplementor> childRegistries;
|
private Set<ServiceRegistryImplementor> childRegistries;
|
||||||
|
|
||||||
private final AtomicBoolean active = new AtomicBoolean( true );
|
private final AtomicBoolean active = new AtomicBoolean( true );
|
||||||
|
|
||||||
@SuppressWarnings( {"UnusedDeclaration"})
|
|
||||||
protected AbstractServiceRegistryImpl() {
|
protected AbstractServiceRegistryImpl() {
|
||||||
this( (ServiceRegistryImplementor) null );
|
this( (ServiceRegistryImplementor) null );
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings( {"UnusedDeclaration"})
|
|
||||||
protected AbstractServiceRegistryImpl(boolean autoCloseRegistry) {
|
protected AbstractServiceRegistryImpl(boolean autoCloseRegistry) {
|
||||||
this( (ServiceRegistryImplementor) null, autoCloseRegistry );
|
this( (ServiceRegistryImplementor) null, autoCloseRegistry );
|
||||||
}
|
}
|
||||||
|
@ -100,7 +98,7 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
public AbstractServiceRegistryImpl(
|
public AbstractServiceRegistryImpl(
|
||||||
BootstrapServiceRegistry bootstrapServiceRegistry,
|
BootstrapServiceRegistry bootstrapServiceRegistry,
|
||||||
boolean autoCloseRegistry) {
|
boolean autoCloseRegistry) {
|
||||||
if ( ! ServiceRegistryImplementor.class.isInstance( bootstrapServiceRegistry ) ) {
|
if ( !(bootstrapServiceRegistry instanceof ServiceRegistryImplementor) ) {
|
||||||
throw new IllegalArgumentException( "ServiceRegistry parent needs to implement ServiceRegistryImplementor" );
|
throw new IllegalArgumentException( "ServiceRegistry parent needs to implement ServiceRegistryImplementor" );
|
||||||
}
|
}
|
||||||
this.parent = (ServiceRegistryImplementor) bootstrapServiceRegistry;
|
this.parent = (ServiceRegistryImplementor) bootstrapServiceRegistry;
|
||||||
|
@ -110,9 +108,8 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
this.parent.registerChild( this );
|
this.parent.registerChild( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({ "unchecked" })
|
|
||||||
protected <R extends Service> void createServiceBinding(ServiceInitiator<R> initiator) {
|
protected <R extends Service> void createServiceBinding(ServiceInitiator<R> initiator) {
|
||||||
final ServiceBinding serviceBinding = new ServiceBinding( this, initiator );
|
final ServiceBinding<?> serviceBinding = new ServiceBinding<>( this, initiator );
|
||||||
serviceBindingMap.put( initiator.getServiceInitiated(), serviceBinding );
|
serviceBindingMap.put( initiator.getServiceInitiated(), serviceBinding );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,25 +122,23 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
registerService( binding, providedService.getService() );
|
registerService( binding, providedService.getService() );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void visitServiceBindings(Consumer<ServiceBinding> action) {
|
protected void visitServiceBindings(Consumer<ServiceBinding<?>> action) {
|
||||||
serviceBindingList.forEach( action );
|
serviceBindingList.forEach( action );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( {"unchecked"})
|
|
||||||
public ServiceRegistry getParentServiceRegistry() {
|
public ServiceRegistry getParentServiceRegistry() {
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings({ "unchecked" })
|
|
||||||
public <R extends Service> ServiceBinding<R> locateServiceBinding(Class<R> serviceRole) {
|
public <R extends Service> ServiceBinding<R> locateServiceBinding(Class<R> serviceRole) {
|
||||||
return locateServiceBinding( serviceRole, true );
|
return locateServiceBinding( serviceRole, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({ "unchecked" })
|
@SuppressWarnings("unchecked")
|
||||||
protected <R extends Service> ServiceBinding<R> locateServiceBinding(Class<R> serviceRole, boolean checkParent) {
|
protected <R extends Service> ServiceBinding<R> locateServiceBinding(Class<R> serviceRole, boolean checkParent) {
|
||||||
ServiceBinding<R> serviceBinding = serviceBindingMap.get( serviceRole );
|
ServiceBinding<R> serviceBinding = (ServiceBinding<R>) serviceBindingMap.get( serviceRole );
|
||||||
if ( serviceBinding == null && checkParent && parent != null ) {
|
if ( serviceBinding == null && checkParent && parent != null ) {
|
||||||
// look in parent
|
// look in parent
|
||||||
serviceBinding = parent.locateServiceBinding( serviceRole );
|
serviceBinding = parent.locateServiceBinding( serviceRole );
|
||||||
|
@ -158,32 +153,32 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
// look for a previously resolved alternate registration
|
// look for a previously resolved alternate registration
|
||||||
final Class alternative = roleXref.get( serviceRole );
|
final Class<?> alternative = roleXref.get( serviceRole );
|
||||||
if ( alternative != null ) {
|
if ( alternative != null ) {
|
||||||
return serviceBindingMap.get( alternative );
|
return (ServiceBinding<R>) serviceBindingMap.get( alternative );
|
||||||
}
|
}
|
||||||
|
|
||||||
// perform a crawl looking for an alternate registration
|
// perform a crawl looking for an alternate registration
|
||||||
for ( ServiceBinding binding : serviceBindingMap.values() ) {
|
for ( ServiceBinding<?> binding : serviceBindingMap.values() ) {
|
||||||
if ( serviceRole.isAssignableFrom( binding.getServiceRole() ) ) {
|
if ( serviceRole.isAssignableFrom( binding.getServiceRole() ) ) {
|
||||||
// we found an alternate...
|
// we found an alternate...
|
||||||
log.alternateServiceRole( serviceRole.getName(), binding.getServiceRole().getName() );
|
log.alternateServiceRole( serviceRole.getName(), binding.getServiceRole().getName() );
|
||||||
registerAlternate( serviceRole, binding.getServiceRole() );
|
registerAlternate( serviceRole, binding.getServiceRole() );
|
||||||
return binding;
|
return (ServiceBinding<R>) binding;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( binding.getService() != null && serviceRole.isInstance( binding.getService() ) ) {
|
if ( binding.getService() != null && serviceRole.isInstance( binding.getService() ) ) {
|
||||||
// we found an alternate...
|
// we found an alternate...
|
||||||
log.alternateServiceRole( serviceRole.getName(), binding.getServiceRole().getName() );
|
log.alternateServiceRole( serviceRole.getName(), binding.getServiceRole().getName() );
|
||||||
registerAlternate( serviceRole, binding.getServiceRole() );
|
registerAlternate( serviceRole, binding.getServiceRole() );
|
||||||
return binding;
|
return (ServiceBinding<R>) binding;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerAlternate(Class alternate, Class target) {
|
private void registerAlternate(Class<?> alternate, Class<?> target) {
|
||||||
roleXref.put( alternate, target );
|
roleXref.put( alternate, target );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,7 +244,6 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
return service;
|
return service;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings( {"unchecked"})
|
|
||||||
protected <R extends Service> R createService(ServiceBinding<R> serviceBinding) {
|
protected <R extends Service> R createService(ServiceBinding<R> serviceBinding) {
|
||||||
final ServiceInitiator<R> serviceInitiator = serviceBinding.getServiceInitiator();
|
final ServiceInitiator<R> serviceInitiator = serviceBinding.getServiceInitiator();
|
||||||
if ( serviceInitiator == null ) {
|
if ( serviceInitiator == null ) {
|
||||||
|
@ -280,7 +274,7 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
|
|
||||||
applyInjections( service );
|
applyInjections( service );
|
||||||
|
|
||||||
if ( ServiceRegistryAwareService.class.isInstance( service ) ) {
|
if ( service instanceof ServiceRegistryAwareService ) {
|
||||||
( (ServiceRegistryAwareService) service ).injectServices( this );
|
( (ServiceRegistryAwareService) service ).injectServices( this );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -301,15 +295,15 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({ "unchecked" })
|
|
||||||
private <T extends Service> void processInjection(T service, Method injectionMethod, InjectService injectService) {
|
private <T extends Service> void processInjection(T service, Method injectionMethod, InjectService injectService) {
|
||||||
final Class<?>[] parameterTypes = injectionMethod.getParameterTypes();
|
final Class<?>[] parameterTypes = injectionMethod.getParameterTypes();
|
||||||
if ( parameterTypes == null || injectionMethod.getParameterCount() != 1 ) {
|
if ( injectionMethod.getParameterCount() != 1 ) {
|
||||||
throw new ServiceDependencyException(
|
throw new ServiceDependencyException(
|
||||||
"Encountered @InjectService on method with unexpected number of parameters"
|
"Encountered @InjectService on method with unexpected number of parameters"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//noinspection rawtypes
|
||||||
Class dependentServiceRole = injectService.serviceRole();
|
Class dependentServiceRole = injectService.serviceRole();
|
||||||
if ( dependentServiceRole == null || dependentServiceRole.equals( Void.class ) ) {
|
if ( dependentServiceRole == null || dependentServiceRole.equals( Void.class ) ) {
|
||||||
dependentServiceRole = parameterTypes[0];
|
dependentServiceRole = parameterTypes[0];
|
||||||
|
@ -317,6 +311,7 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
|
|
||||||
// todo : because of the use of proxies, this is no longer returning null here...
|
// todo : because of the use of proxies, this is no longer returning null here...
|
||||||
|
|
||||||
|
//noinspection unchecked
|
||||||
final Service dependantService = getService( dependentServiceRole );
|
final Service dependantService = getService( dependentServiceRole );
|
||||||
if ( dependantService == null ) {
|
if ( dependantService == null ) {
|
||||||
if ( injectService.required() ) {
|
if ( injectService.required() ) {
|
||||||
|
@ -336,9 +331,8 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings({ "unchecked" })
|
|
||||||
public <R extends Service> void startService(ServiceBinding<R> serviceBinding) {
|
public <R extends Service> void startService(ServiceBinding<R> serviceBinding) {
|
||||||
if ( Startable.class.isInstance( serviceBinding.getService() ) ) {
|
if ( serviceBinding.getService() instanceof Startable ) {
|
||||||
( (Startable) serviceBinding.getService() ).start();
|
( (Startable) serviceBinding.getService() ).start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -348,7 +342,6 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( {"unchecked"})
|
|
||||||
public synchronized void destroy() {
|
public synchronized void destroy() {
|
||||||
if ( active.compareAndSet( true, false ) ) {
|
if ( active.compareAndSet( true, false ) ) {
|
||||||
try {
|
try {
|
||||||
|
@ -356,11 +349,11 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
//threads not owning the synchronization lock can't get an invalid Service:
|
//threads not owning the synchronization lock can't get an invalid Service:
|
||||||
initializedServiceByRole.clear();
|
initializedServiceByRole.clear();
|
||||||
synchronized (serviceBindingList) {
|
synchronized (serviceBindingList) {
|
||||||
ListIterator<ServiceBinding> serviceBindingsIterator = serviceBindingList.listIterator(
|
ListIterator<ServiceBinding<?>> serviceBindingsIterator = serviceBindingList.listIterator(
|
||||||
serviceBindingList.size()
|
serviceBindingList.size()
|
||||||
);
|
);
|
||||||
while ( serviceBindingsIterator.hasPrevious() ) {
|
while ( serviceBindingsIterator.hasPrevious() ) {
|
||||||
final ServiceBinding serviceBinding = serviceBindingsIterator.previous();
|
final ServiceBinding<?> serviceBinding = serviceBindingsIterator.previous();
|
||||||
serviceBinding.getLifecycleOwner().stopService( serviceBinding );
|
serviceBinding.getLifecycleOwner().stopService( serviceBinding );
|
||||||
}
|
}
|
||||||
serviceBindingList.clear();
|
serviceBindingList.clear();
|
||||||
|
@ -376,7 +369,7 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
@Override
|
@Override
|
||||||
public synchronized <R extends Service> void stopService(ServiceBinding<R> binding) {
|
public synchronized <R extends Service> void stopService(ServiceBinding<R> binding) {
|
||||||
final Service service = binding.getService();
|
final Service service = binding.getService();
|
||||||
if ( Stoppable.class.isInstance( service ) ) {
|
if ( service instanceof Stoppable ) {
|
||||||
try {
|
try {
|
||||||
( (Stoppable) service ).stop();
|
( (Stoppable) service ).stop();
|
||||||
}
|
}
|
||||||
|
@ -430,7 +423,7 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
this.parent.deRegisterChild( this );
|
this.parent.deRegisterChild( this );
|
||||||
}
|
}
|
||||||
if ( newParent != null ) {
|
if ( newParent != null ) {
|
||||||
if ( ! ServiceRegistryImplementor.class.isInstance( newParent ) ) {
|
if ( !(newParent instanceof ServiceRegistryImplementor) ) {
|
||||||
throw new IllegalArgumentException( "ServiceRegistry parent needs to implement ServiceRegistryImplementor" );
|
throw new IllegalArgumentException( "ServiceRegistry parent needs to implement ServiceRegistryImplementor" );
|
||||||
}
|
}
|
||||||
this.parent = (ServiceRegistryImplementor) newParent;
|
this.parent = (ServiceRegistryImplementor) newParent;
|
||||||
|
@ -442,10 +435,7 @@ public abstract class AbstractServiceRegistryImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void reactivate() {
|
public synchronized void reactivate() {
|
||||||
if ( active.compareAndSet( false, true ) ) {
|
if ( !active.compareAndSet(false, true) ) {
|
||||||
//ok
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new IllegalStateException( "Was not inactive, could not reactivate!" );
|
throw new IllegalStateException( "Was not inactive, could not reactivate!" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,8 @@ import org.hibernate.service.spi.SessionFactoryServiceRegistryBuilder;
|
||||||
public class SessionFactoryServiceRegistryBuilderImpl implements SessionFactoryServiceRegistryBuilder {
|
public class SessionFactoryServiceRegistryBuilderImpl implements SessionFactoryServiceRegistryBuilder {
|
||||||
private final ServiceRegistryImplementor parent;
|
private final ServiceRegistryImplementor parent;
|
||||||
|
|
||||||
private final List<SessionFactoryServiceInitiator> initiators = StandardSessionFactoryServiceInitiators.buildStandardServiceInitiatorList();
|
private final List<SessionFactoryServiceInitiator<?>> initiators = StandardSessionFactoryServiceInitiators.buildStandardServiceInitiatorList();
|
||||||
private final List<ProvidedService> providedServices = new ArrayList<>();
|
private final List<ProvidedService<?>> providedServices = new ArrayList<>();
|
||||||
|
|
||||||
public SessionFactoryServiceRegistryBuilderImpl(ServiceRegistryImplementor parent) {
|
public SessionFactoryServiceRegistryBuilderImpl(ServiceRegistryImplementor parent) {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
@ -38,8 +38,7 @@ public class SessionFactoryServiceRegistryBuilderImpl implements SessionFactoryS
|
||||||
* @return this, for method chaining
|
* @return this, for method chaining
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( {"UnusedDeclaration"})
|
public SessionFactoryServiceRegistryBuilder addInitiator(SessionFactoryServiceInitiator<?> initiator) {
|
||||||
public SessionFactoryServiceRegistryBuilder addInitiator(SessionFactoryServiceInitiator initiator) {
|
|
||||||
initiators.add( initiator );
|
initiators.add( initiator );
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -53,9 +52,8 @@ public class SessionFactoryServiceRegistryBuilderImpl implements SessionFactoryS
|
||||||
* @return this, for method chaining
|
* @return this, for method chaining
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings( {"unchecked"})
|
public <R extends Service> SessionFactoryServiceRegistryBuilder addService(final Class<R> serviceRole, final R service) {
|
||||||
public SessionFactoryServiceRegistryBuilder addService(final Class serviceRole, final Service service) {
|
providedServices.add( new ProvidedService<>( serviceRole, service ) );
|
||||||
providedServices.add( new ProvidedService( serviceRole, service ) );
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class SessionFactoryServiceRegistryFactoryInitiator implements StandardSe
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SessionFactoryServiceRegistryFactoryImpl initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public SessionFactoryServiceRegistryFactoryImpl initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
return new SessionFactoryServiceRegistryFactoryImpl( registry );
|
return new SessionFactoryServiceRegistryFactoryImpl( registry );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,11 +35,10 @@ public class SessionFactoryServiceRegistryImpl
|
||||||
private final SessionFactoryOptions sessionFactoryOptions;
|
private final SessionFactoryOptions sessionFactoryOptions;
|
||||||
private final SessionFactoryImplementor sessionFactory;
|
private final SessionFactoryImplementor sessionFactory;
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
|
||||||
public SessionFactoryServiceRegistryImpl(
|
public SessionFactoryServiceRegistryImpl(
|
||||||
ServiceRegistryImplementor parent,
|
ServiceRegistryImplementor parent,
|
||||||
List<SessionFactoryServiceInitiator> initiators,
|
List<SessionFactoryServiceInitiator<?>> initiators,
|
||||||
List<ProvidedService> providedServices,
|
List<ProvidedService<?>> providedServices,
|
||||||
SessionFactoryImplementor sessionFactory,
|
SessionFactoryImplementor sessionFactory,
|
||||||
SessionFactoryOptions sessionFactoryOptions) {
|
SessionFactoryOptions sessionFactoryOptions) {
|
||||||
super( parent );
|
super( parent );
|
||||||
|
@ -48,7 +47,7 @@ public class SessionFactoryServiceRegistryImpl
|
||||||
this.sessionFactoryOptions = sessionFactoryOptions;
|
this.sessionFactoryOptions = sessionFactoryOptions;
|
||||||
|
|
||||||
// for now, just use the standard initiator list
|
// for now, just use the standard initiator list
|
||||||
for ( SessionFactoryServiceInitiator initiator : initiators ) {
|
for ( SessionFactoryServiceInitiator<?> initiator : initiators ) {
|
||||||
// create the bindings up front to help identify to which registry services belong
|
// create the bindings up front to help identify to which registry services belong
|
||||||
createServiceBinding( initiator );
|
createServiceBinding( initiator );
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,8 @@ import org.hibernate.stat.internal.StatisticsInitiator;
|
||||||
*/
|
*/
|
||||||
public final class StandardSessionFactoryServiceInitiators {
|
public final class StandardSessionFactoryServiceInitiators {
|
||||||
|
|
||||||
public static List<SessionFactoryServiceInitiator> buildStandardServiceInitiatorList() {
|
public static List<SessionFactoryServiceInitiator<?>> buildStandardServiceInitiatorList() {
|
||||||
final ArrayList<SessionFactoryServiceInitiator> serviceInitiators = new ArrayList<>();
|
final ArrayList<SessionFactoryServiceInitiator<?>> serviceInitiators = new ArrayList<>();
|
||||||
|
|
||||||
serviceInitiators.add( StatisticsInitiator.INSTANCE );
|
serviceInitiators.add( StatisticsInitiator.INSTANCE );
|
||||||
serviceInitiators.add( CacheInitiator.INSTANCE );
|
serviceInitiators.add( CacheInitiator.INSTANCE );
|
||||||
|
|
|
@ -18,5 +18,5 @@ public interface Configurable {
|
||||||
*
|
*
|
||||||
* @param configurationValues The configuration properties.
|
* @param configurationValues The configuration properties.
|
||||||
*/
|
*/
|
||||||
void configure(Map configurationValues);
|
void configure(Map<String, Object> configurationValues);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,7 @@ import org.hibernate.service.Service;
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
public interface SessionFactoryServiceRegistryBuilder {
|
public interface SessionFactoryServiceRegistryBuilder {
|
||||||
SessionFactoryServiceRegistryBuilder addInitiator(SessionFactoryServiceInitiator initiator);
|
SessionFactoryServiceRegistryBuilder addInitiator(SessionFactoryServiceInitiator<?> initiator);
|
||||||
|
|
||||||
@SuppressWarnings( {"unchecked"})
|
<R extends Service> SessionFactoryServiceRegistryBuilder addService(Class<R> serviceRole, R service);
|
||||||
SessionFactoryServiceRegistryBuilder addService(Class serviceRole, Service service);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ public interface Wrapped {
|
||||||
*
|
*
|
||||||
* @return True/false.
|
* @return True/false.
|
||||||
*/
|
*/
|
||||||
boolean isUnwrappableAs(Class unwrapType);
|
boolean isUnwrappableAs(Class<?> unwrapType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unproxy the service proxy
|
* Unproxy the service proxy
|
||||||
|
|
|
@ -125,7 +125,7 @@ public class Helper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean interpretNamespaceHandling(Map configurationValues) {
|
public static boolean interpretNamespaceHandling(Map<String,Object> configurationValues) {
|
||||||
//Print a warning if multiple conflicting properties are being set:
|
//Print a warning if multiple conflicting properties are being set:
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if ( configurationValues.containsKey( AvailableSettings.HBM2DDL_CREATE_SCHEMAS ) ) {
|
if ( configurationValues.containsKey( AvailableSettings.HBM2DDL_CREATE_SCHEMAS ) ) {
|
||||||
|
@ -158,7 +158,7 @@ public class Helper {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean interpretFormattingEnabled(Map configurationValues) {
|
public static boolean interpretFormattingEnabled(Map<String,Object> configurationValues) {
|
||||||
return ConfigurationHelper.getBoolean(
|
return ConfigurationHelper.getBoolean(
|
||||||
AvailableSettings.FORMAT_SQL,
|
AvailableSettings.FORMAT_SQL,
|
||||||
configurationValues,
|
configurationValues,
|
||||||
|
|
|
@ -9,7 +9,6 @@ package org.hibernate.tool.schema.internal;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.hibernate.boot.model.naming.Identifier;
|
|
||||||
import org.hibernate.boot.model.relational.SqlStringGenerationContext;
|
import org.hibernate.boot.model.relational.SqlStringGenerationContext;
|
||||||
import org.hibernate.boot.registry.selector.spi.StrategySelector;
|
import org.hibernate.boot.registry.selector.spi.StrategySelector;
|
||||||
import org.hibernate.cfg.AvailableSettings;
|
import org.hibernate.cfg.AvailableSettings;
|
||||||
|
@ -83,17 +82,17 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SchemaCreator getSchemaCreator(Map options) {
|
public SchemaCreator getSchemaCreator(Map<String,Object> options) {
|
||||||
return new SchemaCreatorImpl( this, getSchemaFilterProvider( options ).getCreateFilter() );
|
return new SchemaCreatorImpl( this, getSchemaFilterProvider( options ).getCreateFilter() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SchemaDropper getSchemaDropper(Map options) {
|
public SchemaDropper getSchemaDropper(Map<String,Object> options) {
|
||||||
return new SchemaDropperImpl( this, getSchemaFilterProvider( options ).getDropFilter() );
|
return new SchemaDropperImpl( this, getSchemaFilterProvider( options ).getDropFilter() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SchemaMigrator getSchemaMigrator(Map options) {
|
public SchemaMigrator getSchemaMigrator(Map<String,Object> options) {
|
||||||
if ( determineJdbcMetadaAccessStrategy( options ) == JdbcMetadaAccessStrategy.GROUPED ) {
|
if ( determineJdbcMetadaAccessStrategy( options ) == JdbcMetadaAccessStrategy.GROUPED ) {
|
||||||
return new GroupedSchemaMigratorImpl( this, getSchemaFilterProvider( options ).getMigrateFilter() );
|
return new GroupedSchemaMigratorImpl( this, getSchemaFilterProvider( options ).getMigrateFilter() );
|
||||||
}
|
}
|
||||||
|
@ -103,7 +102,7 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SchemaValidator getSchemaValidator(Map options) {
|
public SchemaValidator getSchemaValidator(Map<String,Object> options) {
|
||||||
if ( determineJdbcMetadaAccessStrategy( options ) == JdbcMetadaAccessStrategy.GROUPED ) {
|
if ( determineJdbcMetadaAccessStrategy( options ) == JdbcMetadaAccessStrategy.GROUPED ) {
|
||||||
return new GroupedSchemaValidatorImpl( this, getSchemaFilterProvider( options ).getValidateFilter() );
|
return new GroupedSchemaValidatorImpl( this, getSchemaFilterProvider( options ).getValidateFilter() );
|
||||||
}
|
}
|
||||||
|
@ -112,7 +111,7 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private SchemaFilterProvider getSchemaFilterProvider(Map options) {
|
private SchemaFilterProvider getSchemaFilterProvider(Map<String,Object> options) {
|
||||||
final Object configuredOption = (options == null)
|
final Object configuredOption = (options == null)
|
||||||
? null
|
? null
|
||||||
: options.get( AvailableSettings.HBM2DDL_FILTER_PROVIDER );
|
: options.get( AvailableSettings.HBM2DDL_FILTER_PROVIDER );
|
||||||
|
@ -123,7 +122,7 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private JdbcMetadaAccessStrategy determineJdbcMetadaAccessStrategy(Map options) {
|
private JdbcMetadaAccessStrategy determineJdbcMetadaAccessStrategy(Map<String,Object> options) {
|
||||||
return JdbcMetadaAccessStrategy.interpretSetting( options );
|
return JdbcMetadaAccessStrategy.interpretSetting( options );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +143,7 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
GenerationTarget[] buildGenerationTargets(
|
GenerationTarget[] buildGenerationTargets(
|
||||||
TargetDescriptor targetDescriptor,
|
TargetDescriptor targetDescriptor,
|
||||||
JdbcContext jdbcContext,
|
JdbcContext jdbcContext,
|
||||||
Map options,
|
Map<String,Object> options,
|
||||||
boolean needsAutoCommit) {
|
boolean needsAutoCommit) {
|
||||||
final String scriptDelimiter = ConfigurationHelper.getString( HBM2DDL_DELIMITER, options, ";" );
|
final String scriptDelimiter = ConfigurationHelper.getString( HBM2DDL_DELIMITER, options, ";" );
|
||||||
|
|
||||||
|
@ -178,7 +177,7 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
GenerationTarget[] buildGenerationTargets(
|
GenerationTarget[] buildGenerationTargets(
|
||||||
TargetDescriptor targetDescriptor,
|
TargetDescriptor targetDescriptor,
|
||||||
DdlTransactionIsolator ddlTransactionIsolator,
|
DdlTransactionIsolator ddlTransactionIsolator,
|
||||||
Map options) {
|
Map<String,Object> options) {
|
||||||
final String scriptDelimiter = ConfigurationHelper.getString( HBM2DDL_DELIMITER, options, ";" );
|
final String scriptDelimiter = ConfigurationHelper.getString( HBM2DDL_DELIMITER, options, ";" );
|
||||||
|
|
||||||
final GenerationTarget[] targets = new GenerationTarget[ targetDescriptor.getTargetTypes().size() ];
|
final GenerationTarget[] targets = new GenerationTarget[ targetDescriptor.getTargetTypes().size() ];
|
||||||
|
@ -215,7 +214,7 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
return serviceRegistry.getService( TransactionCoordinatorBuilder.class ).buildDdlTransactionIsolator( jdbcContext );
|
return serviceRegistry.getService( TransactionCoordinatorBuilder.class ).buildDdlTransactionIsolator( jdbcContext );
|
||||||
}
|
}
|
||||||
|
|
||||||
public JdbcContext resolveJdbcContext(Map configurationValues) {
|
public JdbcContext resolveJdbcContext(Map<String,Object> configurationValues) {
|
||||||
final JdbcContextBuilder jdbcContextBuilder = new JdbcContextBuilder( serviceRegistry );
|
final JdbcContextBuilder jdbcContextBuilder = new JdbcContextBuilder( serviceRegistry );
|
||||||
|
|
||||||
// see if a specific connection has been provided
|
// see if a specific connection has been provided
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class SchemaCreatorImpl implements SchemaCreator {
|
||||||
|
|
||||||
public SchemaCreatorImpl(ServiceRegistry serviceRegistry, SchemaFilter schemaFilter) {
|
public SchemaCreatorImpl(ServiceRegistry serviceRegistry, SchemaFilter schemaFilter) {
|
||||||
SchemaManagementTool smt = serviceRegistry.getService( SchemaManagementTool.class );
|
SchemaManagementTool smt = serviceRegistry.getService( SchemaManagementTool.class );
|
||||||
if ( !HibernateSchemaManagementTool.class.isInstance( smt ) ) {
|
if ( !(smt instanceof HibernateSchemaManagementTool) ) {
|
||||||
smt = new HibernateSchemaManagementTool();
|
smt = new HibernateSchemaManagementTool();
|
||||||
( (HibernateSchemaManagementTool) smt ).injectServices( (ServiceRegistryImplementor) serviceRegistry );
|
( (HibernateSchemaManagementTool) smt ).injectServices( (ServiceRegistryImplementor) serviceRegistry );
|
||||||
}
|
}
|
||||||
|
@ -382,9 +382,9 @@ public class SchemaCreatorImpl implements SchemaCreator {
|
||||||
}
|
}
|
||||||
|
|
||||||
// indexes
|
// indexes
|
||||||
final Iterator indexItr = table.getIndexIterator();
|
final Iterator<Index> indexItr = table.getIndexIterator();
|
||||||
while ( indexItr.hasNext() ) {
|
while ( indexItr.hasNext() ) {
|
||||||
final Index index = (Index) indexItr.next();
|
final Index index = indexItr.next();
|
||||||
checkExportIdentifier( index, exportIdentifiers );
|
checkExportIdentifier( index, exportIdentifiers );
|
||||||
applySqlStrings(
|
applySqlStrings(
|
||||||
dialect.getIndexExporter().getSqlCreateStrings( index, metadata,
|
dialect.getIndexExporter().getSqlCreateStrings( index, metadata,
|
||||||
|
@ -397,9 +397,9 @@ public class SchemaCreatorImpl implements SchemaCreator {
|
||||||
}
|
}
|
||||||
|
|
||||||
// unique keys
|
// unique keys
|
||||||
final Iterator ukItr = table.getUniqueKeyIterator();
|
final Iterator<UniqueKey> ukItr = table.getUniqueKeyIterator();
|
||||||
while ( ukItr.hasNext() ) {
|
while ( ukItr.hasNext() ) {
|
||||||
final UniqueKey uniqueKey = (UniqueKey) ukItr.next();
|
final UniqueKey uniqueKey = ukItr.next();
|
||||||
checkExportIdentifier( uniqueKey, exportIdentifiers );
|
checkExportIdentifier( uniqueKey, exportIdentifiers );
|
||||||
applySqlStrings(
|
applySqlStrings(
|
||||||
dialect.getUniqueKeyExporter().getSqlCreateStrings( uniqueKey, metadata,
|
dialect.getUniqueKeyExporter().getSqlCreateStrings( uniqueKey, metadata,
|
||||||
|
@ -431,9 +431,9 @@ public class SchemaCreatorImpl implements SchemaCreator {
|
||||||
}
|
}
|
||||||
|
|
||||||
// foreign keys
|
// foreign keys
|
||||||
final Iterator fkItr = table.getForeignKeyIterator();
|
final Iterator<ForeignKey> fkItr = table.getForeignKeyIterator();
|
||||||
while ( fkItr.hasNext() ) {
|
while ( fkItr.hasNext() ) {
|
||||||
final ForeignKey foreignKey = (ForeignKey) fkItr.next();
|
final ForeignKey foreignKey = fkItr.next();
|
||||||
applySqlStrings(
|
applySqlStrings(
|
||||||
dialect.getForeignKeyExporter().getSqlCreateStrings( foreignKey, metadata,
|
dialect.getForeignKeyExporter().getSqlCreateStrings( foreignKey, metadata,
|
||||||
sqlStringGenerationContext
|
sqlStringGenerationContext
|
||||||
|
@ -549,7 +549,7 @@ public class SchemaCreatorImpl implements SchemaCreator {
|
||||||
|
|
||||||
for ( String currentFile : importFiles.split( "," ) ) {
|
for ( String currentFile : importFiles.split( "," ) ) {
|
||||||
final String resourceName = currentFile.trim();
|
final String resourceName = currentFile.trim();
|
||||||
if ( resourceName != null && resourceName.isEmpty() ) {
|
if ( resourceName.isEmpty() ) {
|
||||||
//skip empty resource names
|
//skip empty resource names
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -602,7 +602,7 @@ public class SchemaCreatorImpl implements SchemaCreator {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map getConfigurationValues() {
|
public Map<String,Object> getConfigurationValues() {
|
||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -647,7 +647,7 @@ public class SchemaCreatorImpl implements SchemaCreator {
|
||||||
public void doCreation(
|
public void doCreation(
|
||||||
Metadata metadata,
|
Metadata metadata,
|
||||||
final ServiceRegistry serviceRegistry,
|
final ServiceRegistry serviceRegistry,
|
||||||
final Map settings,
|
final Map<String,Object> settings,
|
||||||
final boolean manageNamespaces,
|
final boolean manageNamespaces,
|
||||||
GenerationTarget... targets) {
|
GenerationTarget... targets) {
|
||||||
doCreation(
|
doCreation(
|
||||||
|
@ -660,7 +660,7 @@ public class SchemaCreatorImpl implements SchemaCreator {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map getConfigurationValues() {
|
public Map<String,Object> getConfigurationValues() {
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ public class SchemaDropperImpl implements SchemaDropper {
|
||||||
|
|
||||||
public SchemaDropperImpl(ServiceRegistry serviceRegistry, SchemaFilter schemaFilter) {
|
public SchemaDropperImpl(ServiceRegistry serviceRegistry, SchemaFilter schemaFilter) {
|
||||||
SchemaManagementTool smt = serviceRegistry.getService( SchemaManagementTool.class );
|
SchemaManagementTool smt = serviceRegistry.getService( SchemaManagementTool.class );
|
||||||
if ( !HibernateSchemaManagementTool.class.isInstance( smt ) ) {
|
if ( !(smt instanceof HibernateSchemaManagementTool) ) {
|
||||||
smt = new HibernateSchemaManagementTool();
|
smt = new HibernateSchemaManagementTool();
|
||||||
( (HibernateSchemaManagementTool) smt ).injectServices( (ServiceRegistryImplementor) serviceRegistry );
|
( (HibernateSchemaManagementTool) smt ).injectServices( (ServiceRegistryImplementor) serviceRegistry );
|
||||||
}
|
}
|
||||||
|
@ -370,9 +370,9 @@ public class SchemaDropperImpl implements SchemaDropper {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Iterator fks = table.getForeignKeyIterator();
|
final Iterator<ForeignKey> fks = table.getForeignKeyIterator();
|
||||||
while ( fks.hasNext() ) {
|
while ( fks.hasNext() ) {
|
||||||
final ForeignKey foreignKey = (ForeignKey) fks.next();
|
final ForeignKey foreignKey = fks.next();
|
||||||
applySqlStrings(
|
applySqlStrings(
|
||||||
dialect.getForeignKeyExporter().getSqlDropStrings( foreignKey, metadata,
|
dialect.getForeignKeyExporter().getSqlDropStrings( foreignKey, metadata,
|
||||||
sqlStringGenerationContext
|
sqlStringGenerationContext
|
||||||
|
@ -448,7 +448,7 @@ public class SchemaDropperImpl implements SchemaDropper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map getConfigurationValues() {
|
public Map<String,Object> getConfigurationValues() {
|
||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -502,7 +502,7 @@ public class SchemaDropperImpl implements SchemaDropper {
|
||||||
public void doDrop(
|
public void doDrop(
|
||||||
Metadata metadata,
|
Metadata metadata,
|
||||||
final ServiceRegistry serviceRegistry,
|
final ServiceRegistry serviceRegistry,
|
||||||
final Map settings,
|
final Map<String,Object> settings,
|
||||||
final boolean manageNamespaces,
|
final boolean manageNamespaces,
|
||||||
GenerationTarget... targets) {
|
GenerationTarget... targets) {
|
||||||
if ( targets == null || targets.length == 0 ) {
|
if ( targets == null || targets.length == 0 ) {
|
||||||
|
@ -524,7 +524,7 @@ public class SchemaDropperImpl implements SchemaDropper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map getConfigurationValues() {
|
public Map<String,Object> getConfigurationValues() {
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ import org.hibernate.tool.schema.spi.SchemaManagementTool;
|
||||||
public class SchemaManagementToolInitiator implements StandardServiceInitiator<SchemaManagementTool> {
|
public class SchemaManagementToolInitiator implements StandardServiceInitiator<SchemaManagementTool> {
|
||||||
public static final SchemaManagementToolInitiator INSTANCE = new SchemaManagementToolInitiator();
|
public static final SchemaManagementToolInitiator INSTANCE = new SchemaManagementToolInitiator();
|
||||||
|
|
||||||
public SchemaManagementTool initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public SchemaManagementTool initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final Object setting = configurationValues.get( AvailableSettings.SCHEMA_MANAGEMENT_TOOL );
|
final Object setting = configurationValues.get( AvailableSettings.SCHEMA_MANAGEMENT_TOOL );
|
||||||
SchemaManagementTool tool = registry.getService( StrategySelector.class ).resolveStrategy( SchemaManagementTool.class, setting );
|
SchemaManagementTool tool = registry.getService( StrategySelector.class ).resolveStrategy( SchemaManagementTool.class, setting );
|
||||||
if ( tool == null ) {
|
if ( tool == null ) {
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class SqlScriptExtractorInitiator implements StandardServiceInitiator<Sql
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SqlScriptCommandExtractor initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
|
public SqlScriptCommandExtractor initiateService(Map<String, Object> configurationValues, ServiceRegistryImplementor registry) {
|
||||||
final Object explicitSettingValue = configurationValues.get( Environment.HBM2DDL_IMPORT_FILES_SQL_EXTRACTOR );
|
final Object explicitSettingValue = configurationValues.get( Environment.HBM2DDL_IMPORT_FILES_SQL_EXTRACTOR );
|
||||||
|
|
||||||
if ( explicitSettingValue == null ) {
|
if ( explicitSettingValue == null ) {
|
||||||
|
|
|
@ -18,7 +18,7 @@ import org.hibernate.boot.model.relational.Exportable;
|
||||||
*/
|
*/
|
||||||
@Incubating
|
@Incubating
|
||||||
public interface ExecutionOptions {
|
public interface ExecutionOptions {
|
||||||
Map getConfigurationValues();
|
Map<String,Object> getConfigurationValues();
|
||||||
|
|
||||||
boolean shouldManageNamespaces();
|
boolean shouldManageNamespaces();
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,10 @@ import org.hibernate.tool.schema.internal.exec.GenerationTarget;
|
||||||
*/
|
*/
|
||||||
@Incubating
|
@Incubating
|
||||||
public interface SchemaManagementTool extends Service {
|
public interface SchemaManagementTool extends Service {
|
||||||
SchemaCreator getSchemaCreator(Map options);
|
SchemaCreator getSchemaCreator(Map<String,Object> options);
|
||||||
SchemaDropper getSchemaDropper(Map options);
|
SchemaDropper getSchemaDropper(Map<String,Object> options);
|
||||||
SchemaMigrator getSchemaMigrator(Map options);
|
SchemaMigrator getSchemaMigrator(Map<String,Object> options);
|
||||||
SchemaValidator getSchemaValidator(Map options);
|
SchemaValidator getSchemaValidator(Map<String,Object> options);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This allows to set an alternative implementation for the Database
|
* This allows to set an alternative implementation for the Database
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class SchemaManagementToolCoordinator {
|
||||||
public static void process(
|
public static void process(
|
||||||
final Metadata metadata,
|
final Metadata metadata,
|
||||||
final ServiceRegistry serviceRegistry,
|
final ServiceRegistry serviceRegistry,
|
||||||
final Map<?,?> configurationValues,
|
final Map<String,Object> configurationValues,
|
||||||
DelayedDropRegistry delayedDropRegistry) {
|
DelayedDropRegistry delayedDropRegistry) {
|
||||||
final Set<ActionGrouping> groupings = ActionGrouping.interpret( metadata, configurationValues );
|
final Set<ActionGrouping> groupings = ActionGrouping.interpret( metadata, configurationValues );
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ public class SchemaManagementToolCoordinator {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ExecutionOptions buildExecutionOptions(
|
public static ExecutionOptions buildExecutionOptions(
|
||||||
final Map<?,?> configurationValues,
|
final Map<String,Object> configurationValues,
|
||||||
final ExceptionHandler exceptionHandler) {
|
final ExceptionHandler exceptionHandler) {
|
||||||
return buildExecutionOptions(
|
return buildExecutionOptions(
|
||||||
configurationValues,
|
configurationValues,
|
||||||
|
@ -179,7 +179,7 @@ public class SchemaManagementToolCoordinator {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ExecutionOptions buildExecutionOptions(
|
public static ExecutionOptions buildExecutionOptions(
|
||||||
final Map<?,?> configurationValues,
|
final Map<String,Object> configurationValues,
|
||||||
final SchemaFilter schemaFilter,
|
final SchemaFilter schemaFilter,
|
||||||
final ExceptionHandler exceptionHandler) {
|
final ExceptionHandler exceptionHandler) {
|
||||||
return new ExecutionOptions() {
|
return new ExecutionOptions() {
|
||||||
|
@ -189,7 +189,7 @@ public class SchemaManagementToolCoordinator {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<?,?> getConfigurationValues() {
|
public Map<String,Object> getConfigurationValues() {
|
||||||
return configurationValues;
|
return configurationValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
//$Id$
|
//$Id$
|
||||||
package org.hibernate.orm.test.annotations;
|
package org.hibernate.orm.test.annotations;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.hibernate.AnnotationException;
|
import org.hibernate.AnnotationException;
|
||||||
|
@ -23,7 +24,7 @@ import static org.junit.Assert.fail;
|
||||||
*/
|
*/
|
||||||
public class SafeMappingTest {
|
public class SafeMappingTest {
|
||||||
@Test
|
@Test
|
||||||
public void testDeclarativeMix() throws Exception {
|
public void testDeclarativeMix() {
|
||||||
Configuration cfg = new Configuration();
|
Configuration cfg = new Configuration();
|
||||||
cfg.addAnnotatedClass( IncorrectEntity.class );
|
cfg.addAnnotatedClass( IncorrectEntity.class );
|
||||||
cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" );
|
cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" );
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class SecuredBindingTest {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testConfigurationMethods() throws Exception {
|
public void testConfigurationMethods() {
|
||||||
Configuration ac = new Configuration();
|
Configuration ac = new Configuration();
|
||||||
Properties p = new Properties();
|
Properties p = new Properties();
|
||||||
p.put( Environment.DIALECT, "org.hibernate.dialect.HSQLDialect" );
|
p.put( Environment.DIALECT, "org.hibernate.dialect.HSQLDialect" );
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class BeanValidationDisabledTest extends BaseNonConfigCoreFunctionalTestC
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
settings.put( "javax.persistence.validation.mode", "none" );
|
settings.put( "javax.persistence.validation.mode", "none" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ public class DDLTest extends BaseNonConfigCoreFunctionalTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
settings.put( "javax.persistence.validation.mode", "ddl" );
|
settings.put( "javax.persistence.validation.mode", "ddl" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ import static org.junit.Assert.fail;
|
||||||
public class DDLWithoutCallbackTest extends BaseNonConfigCoreFunctionalTestCase {
|
public class DDLWithoutCallbackTest extends BaseNonConfigCoreFunctionalTestCase {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
settings.put( "javax.persistence.validation.mode", "ddl" );
|
settings.put( "javax.persistence.validation.mode", "ddl" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ import org.junit.Test;
|
||||||
*/
|
*/
|
||||||
public class DuplicateTest {
|
public class DuplicateTest {
|
||||||
@Test
|
@Test
|
||||||
public void testDuplicateEntityName() throws Exception {
|
public void testDuplicateEntityName() {
|
||||||
Configuration cfg = new Configuration();
|
Configuration cfg = new Configuration();
|
||||||
cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" );
|
cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" );
|
||||||
ServiceRegistry serviceRegistry = null;
|
ServiceRegistry serviceRegistry = null;
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class ImmutableEntityUpdateQueryHandlingModeExceptionTest extends BaseNon
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
settings.put( AvailableSettings.IMMUTABLE_ENTITY_UPDATE_QUERY_HANDLING_MODE, "exception" );
|
settings.put( AvailableSettings.IMMUTABLE_ENTITY_UPDATE_QUERY_HANDLING_MODE, "exception" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ import org.hibernate.boot.Metadata;
|
||||||
import org.hibernate.boot.MetadataSources;
|
import org.hibernate.boot.MetadataSources;
|
||||||
import org.hibernate.cfg.AvailableSettings;
|
import org.hibernate.cfg.AvailableSettings;
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
|
import org.hibernate.internal.util.PropertiesHelper;
|
||||||
import org.hibernate.mapping.UniqueKey;
|
import org.hibernate.mapping.UniqueKey;
|
||||||
import org.hibernate.service.ServiceRegistry;
|
import org.hibernate.service.ServiceRegistry;
|
||||||
|
|
||||||
|
@ -44,7 +45,7 @@ public abstract class AbstractCharsetNamingStrategyTest extends BaseUnitTestCase
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
Map<Object, Object> properties = new HashMap<>( Environment.getProperties() );
|
Map<String, Object> properties = PropertiesHelper.map( Environment.getProperties() );
|
||||||
properties.put( AvailableSettings.HBM2DDL_CHARSET_NAME, charsetName() );
|
properties.put( AvailableSettings.HBM2DDL_CHARSET_NAME, charsetName() );
|
||||||
serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( properties );
|
serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( properties );
|
||||||
}
|
}
|
||||||
|
|
|
@ -574,7 +574,7 @@ public class OneToManyTest extends BaseNonConfigCoreFunctionalTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
super.addSettings( settings );
|
super.addSettings( settings );
|
||||||
// needed for `#testListWithBagSemanticAndOrderBy`
|
// needed for `#testListWithBagSemanticAndOrderBy`
|
||||||
settings.put( DEFAULT_LIST_SEMANTICS, CollectionClassification.BAG.name() );
|
settings.put( DEFAULT_LIST_SEMANTICS, CollectionClassification.BAG.name() );
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class BatchOptimisticLockingTest extends
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
settings.put( AvailableSettings.STATEMENT_BATCH_SIZE, String.valueOf( 2 ) );
|
settings.put( AvailableSettings.STATEMENT_BATCH_SIZE, String.valueOf( 2 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ public class OptionalSecondaryTableBatchTest extends BaseNonConfigCoreFunctional
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addSettings(Map settings) {
|
protected void addSettings(Map<String,Object> settings) {
|
||||||
super.addSettings( settings );
|
super.addSettings( settings );
|
||||||
settings.put( AvailableSettings.STATEMENT_BATCH_SIZE, 5 );
|
settings.put( AvailableSettings.STATEMENT_BATCH_SIZE, 5 );
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue