Skip to content

Commit

Permalink
HHH-14837 - Move to Jakarta EE
Browse files Browse the repository at this point in the history
More settings work
  • Loading branch information
sebersole committed Sep 29, 2021
1 parent 05b2ca3 commit 986d65a
Show file tree
Hide file tree
Showing 73 changed files with 933 additions and 1,159 deletions.
Expand Up @@ -56,7 +56,6 @@ protected void addConfigOptions(Map options) {
options.put( AvailableSettings.CACHE_REGION_FACTORY, "jcache" );
options.put( AvailableSettings.USE_QUERY_CACHE, Boolean.TRUE.toString() );
options.put( AvailableSettings.GENERATE_STATISTICS, Boolean.TRUE.toString() );
//options.put( AvailableSettings.CACHE_REGION_PREFIX, "" );
}

@Test
Expand Down
Expand Up @@ -69,7 +69,7 @@ public void testLifecycle() {
try {
Map settings = buildSettings();
settings.put(
org.hibernate.jpa.AvailableSettings.LOADED_CLASSES,
AvailableSettings.LOADED_CLASSES,
Collections.singletonList(
Person.class
)
Expand Down
Expand Up @@ -59,7 +59,7 @@ public void testLifecycle() {
try {
Map settings = buildSettings();
settings.put(
org.hibernate.jpa.AvailableSettings.LOADED_CLASSES,
AvailableSettings.LOADED_CLASSES,
Arrays.asList(
ApplicationCustomer.class,
CustomTrackingRevisionEntity.class
Expand Down
Expand Up @@ -9,7 +9,6 @@
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jakarta.persistence.Column;
Expand All @@ -31,7 +30,6 @@
import org.hibernate.envers.DefaultRevisionEntity;
import org.hibernate.envers.ModifiedEntityNames;
import org.hibernate.envers.RevisionEntity;
import org.hibernate.envers.tools.Pair;
import org.hibernate.jpa.boot.spi.Bootstrap;
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;

Expand Down Expand Up @@ -83,7 +81,7 @@ public void test() {
try {
Map settings = buildSettings();
settings.put(
org.hibernate.jpa.AvailableSettings.LOADED_CLASSES,
AvailableSettings.LOADED_CLASSES,
Arrays.asList(
ApplicationCustomer.class,
CustomTrackingRevisionEntity.class
Expand Down
Expand Up @@ -74,7 +74,7 @@ public void testLifecycle() {
try {
Map settings = buildSettings();
settings.put(
org.hibernate.jpa.AvailableSettings.LOADED_CLASSES,
AvailableSettings.LOADED_CLASSES,
Arrays.asList(
ApplicationCustomer.class,
CustomTrackingRevisionEntity.class,
Expand Down
Expand Up @@ -9,23 +9,23 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.NoResultException;
import jakarta.persistence.Temporal;
import jakarta.persistence.TemporalType;

import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.envers.AuditReaderFactory;
import org.hibernate.envers.Audited;
import org.hibernate.envers.configuration.EnversSettings;
import org.hibernate.envers.strategy.ValidityAuditStrategy;
import org.hibernate.jpa.AvailableSettings;
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;

import org.junit.Test;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.NoResultException;
import jakarta.persistence.Temporal;
import jakarta.persistence.TemporalType;

import static org.hibernate.testing.transaction.TransactionUtil.doInJPA;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
Expand Down
Expand Up @@ -44,8 +44,6 @@ protected Class<?>[] getAnnotatedClasses() {

@Override
protected void addMappings(Map settings) {
// settings.put( AvailableSettings.USE_SECOND_LEVEL_CACHE, true );
// settings.put( AvailableSettings.CACHE_REGION_FACTORY, "jcache" );
settings.put( AvailableSettings.GENERATE_STATISTICS, Boolean.TRUE.toString() );
sqlStatementInterceptor = new SQLStatementInterceptor( settings );
}
Expand Down
Expand Up @@ -32,7 +32,6 @@
/**
* ConnectionProvider based on Agroal connection pool
* To use this ConnectionProvider set: <pre> hibernate.connection.provider_class AgroalConnectionProvider </pre>
* ( @see AvailableSettings#CONNECTION_PROVIDER )
*
* Usual hibernate properties are supported:
* <pre>
Expand All @@ -46,6 +45,8 @@
*
* Other configuration options are available, using the <pre>hibernate.agroal</pre> prefix ( @see AgroalPropertiesReader )
*
* @see AvailableSettings#CONNECTION_PROVIDER
*
* @author Luis Barreiro
*/
public class AgroalConnectionProvider implements ConnectionProvider, Configurable, Stoppable {
Expand Down
Expand Up @@ -592,7 +592,7 @@ public MetadataBuildingOptionsImpl(StandardServiceRegistry serviceRegistry) {
);

this.sharedCacheMode = configService.getSetting(
AvailableSettings.JAKARTA_JPA_SHARED_CACHE_MODE,
AvailableSettings.JAKARTA_SHARED_CACHE_MODE,
value -> {
if ( value == null ) {
return null;
Expand All @@ -613,7 +613,7 @@ public MetadataBuildingOptionsImpl(StandardServiceRegistry serviceRegistry) {

DeprecationLogger.DEPRECATION_LOGGER.deprecatedSetting(
AvailableSettings.JPA_SHARED_CACHE_MODE,
AvailableSettings.JAKARTA_JPA_SHARED_CACHE_MODE
AvailableSettings.JAKARTA_SHARED_CACHE_MODE
);

if ( value instanceof SharedCacheMode ) {
Expand Down
Expand Up @@ -38,6 +38,7 @@
import org.hibernate.boot.spi.SessionFactoryBuilderFactory;
import org.hibernate.boot.spi.SessionFactoryBuilderImplementor;
import org.hibernate.boot.spi.SessionFactoryBuilderService;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.cfg.annotations.NamedEntityGraphDefinition;
import org.hibernate.engine.config.spi.ConfigurationService;
import org.hibernate.engine.spi.FilterDefinition;
Expand Down Expand Up @@ -413,12 +414,10 @@ public void initSessionFactory(SessionFactoryImplementor sessionFactory) {
continue;
}
final String propertyName = (String) entry.getKey();
if ( !propertyName.startsWith( org.hibernate.jpa.AvailableSettings.EVENT_LISTENER_PREFIX ) ) {
if ( ! propertyName.startsWith( AvailableSettings.EVENT_LISTENER_PREFIX ) ) {
continue;
}
final String eventTypeName = propertyName.substring(
org.hibernate.jpa.AvailableSettings.EVENT_LISTENER_PREFIX.length() + 1
);
final String eventTypeName = propertyName.substring( AvailableSettings.EVENT_LISTENER_PREFIX.length() + 1 );
final EventType eventType = EventType.resolveEventTypeByName( eventTypeName );
final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup( eventType );
for ( String listenerImpl : LISTENER_SEPARATION_PATTERN.split( ( (String) entry.getValue() ) ) ) {
Expand Down
Expand Up @@ -11,15 +11,11 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import jakarta.persistence.NamedStoredProcedureQuery;
import jakarta.persistence.ParameterMode;
import jakarta.persistence.StoredProcedureParameter;

import org.hibernate.CacheMode;
import org.hibernate.FlushMode;
import org.hibernate.MappingException;
import org.hibernate.boot.query.NamedProcedureCallDefinition;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.cfg.annotations.QueryHintDefinition;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.internal.util.StringHelper;
Expand All @@ -30,6 +26,10 @@
import org.hibernate.query.internal.ResultSetMappingResolutionContext;
import org.hibernate.query.results.ResultSetMappingImpl;

import jakarta.persistence.NamedStoredProcedureQuery;
import jakarta.persistence.ParameterMode;
import jakarta.persistence.StoredProcedureParameter;

import static org.hibernate.procedure.spi.NamedCallableQueryMemento.ParameterMemento;

/**
Expand Down Expand Up @@ -206,27 +206,13 @@ static class ParameterDefinition {
private final String name;
private final ParameterMode parameterMode;
private final Class type;
private final Boolean explicitPassNullSetting;

static ParameterDefinition from(
ParameterStrategy parameterStrategy,
StoredProcedureParameter parameterAnnotation,
int adjustedPosition,
Map<String, Object> queryHintMap) {
// see if there was an explicit hint for this parameter in regards to NULL passing
final Object explicitNullPassingHint;
if ( parameterStrategy == ParameterStrategy.NAMED ) {
explicitNullPassingHint = queryHintMap.get( AvailableSettings.PROCEDURE_NULL_PARAM_PASSING + '.' + parameterAnnotation.name() );
}
else {
explicitNullPassingHint = queryHintMap.get( AvailableSettings.PROCEDURE_NULL_PARAM_PASSING + '.' + adjustedPosition );
}

return new ParameterDefinition(
adjustedPosition,
parameterAnnotation,
interpretBoolean( explicitNullPassingHint )
);
return new ParameterDefinition( adjustedPosition, parameterAnnotation );
}

private static Boolean interpretBoolean(Object value) {
Expand All @@ -241,12 +227,11 @@ private static Boolean interpretBoolean(Object value) {
return Boolean.valueOf( value.toString() );
}

ParameterDefinition(int position, StoredProcedureParameter annotation, Boolean explicitPassNullSetting) {
ParameterDefinition(int position, StoredProcedureParameter annotation) {
this.position = position;
this.name = normalize( annotation.name() );
this.parameterMode = annotation.mode();
this.type = annotation.type();
this.explicitPassNullSetting = explicitPassNullSetting;
}

@SuppressWarnings("UnnecessaryUnboxing")
Expand Down
Expand Up @@ -25,7 +25,6 @@
import org.hibernate.HibernateException;
import org.hibernate.Interceptor;
import org.hibernate.MultiTenancyStrategy;
import org.hibernate.query.NullPrecedence;
import org.hibernate.SessionEventListener;
import org.hibernate.SessionFactoryObserver;
import org.hibernate.boot.SchemaAutoTooling;
Expand All @@ -49,13 +48,15 @@
import org.hibernate.id.uuid.LocalObjectUuidHelper;
import org.hibernate.internal.CoreMessageLogger;
import org.hibernate.internal.log.DeprecationLogger;
import org.hibernate.internal.util.NullnessHelper;
import org.hibernate.internal.util.StringHelper;
import org.hibernate.internal.util.config.ConfigurationHelper;
import org.hibernate.jpa.spi.JpaCompliance;
import org.hibernate.jpa.spi.MutableJpaCompliance;
import org.hibernate.loader.BatchFetchStyle;
import org.hibernate.proxy.EntityNotFoundDelegate;
import org.hibernate.query.ImmutableEntityUpdateQueryHandlingMode;
import org.hibernate.query.NullPrecedence;
import org.hibernate.query.criteria.ValueHandlingMode;
import org.hibernate.query.hql.HqlTranslator;
import org.hibernate.query.sqm.function.SqmFunctionDescriptor;
Expand Down Expand Up @@ -89,6 +90,7 @@
import static org.hibernate.cfg.AvailableSettings.DEFAULT_BATCH_FETCH_SIZE;
import static org.hibernate.cfg.AvailableSettings.DEFAULT_ENTITY_MODE;
import static org.hibernate.cfg.AvailableSettings.DELAY_ENTITY_LOADER_CREATIONS;
import static org.hibernate.cfg.AvailableSettings.DISCARD_PC_ON_CLOSE;
import static org.hibernate.cfg.AvailableSettings.ENABLE_LAZY_LOAD_NO_TRANS;
import static org.hibernate.cfg.AvailableSettings.FAIL_ON_PAGINATION_OVER_COLLECTION_FETCH;
import static org.hibernate.cfg.AvailableSettings.FLUSH_BEFORE_COMPLETION;
Expand All @@ -107,7 +109,6 @@
import static org.hibernate.cfg.AvailableSettings.ORDER_INSERTS;
import static org.hibernate.cfg.AvailableSettings.ORDER_UPDATES;
import static org.hibernate.cfg.AvailableSettings.PREFER_USER_TRANSACTION;
import static org.hibernate.cfg.AvailableSettings.PROCEDURE_NULL_PARAM_PASSING;
import static org.hibernate.cfg.AvailableSettings.QUERY_CACHE_FACTORY;
import static org.hibernate.cfg.AvailableSettings.QUERY_STARTUP_CHECKING;
import static org.hibernate.cfg.AvailableSettings.QUERY_STATISTICS_MAX_SIZE;
Expand All @@ -132,7 +133,6 @@
import static org.hibernate.cfg.AvailableSettings.WRAP_RESULT_SETS;
import static org.hibernate.engine.config.spi.StandardConverters.BOOLEAN;
import static org.hibernate.internal.CoreLogging.messageLogger;
import static org.hibernate.jpa.AvailableSettings.DISCARD_PC_ON_CLOSE;

/**
* In-flight state of {@link SessionFactoryOptions}
Expand Down Expand Up @@ -217,7 +217,6 @@ public class SessionFactoryOptionsBuilder implements SessionFactoryOptions {
private Map querySubstitutions;
private boolean namedQueryStartupCheckingEnabled;
private boolean conventionalJavaConstants;
private final boolean procedureParameterNullPassingEnabled;
private final boolean omitJoinOfSuperclassTablesEnabled;
private final int preferredSqlTypeCodeForBoolean;

Expand Down Expand Up @@ -279,13 +278,23 @@ public SessionFactoryOptionsBuilder(StandardServiceRegistry serviceRegistry, Boo
( (ConfigurationServiceImpl) cfgService ).injectServices( (ServiceRegistryImplementor) serviceRegistry );
}

this.beanManagerReference = configurationSettings.getOrDefault(
AvailableSettings.CDI_BEAN_MANAGER,
configurationSettings.get( AvailableSettings.JAKARTA_CDI_BEAN_MANAGER )
this.beanManagerReference = NullnessHelper.coalesceSuppliedValues(
() -> configurationSettings.get( AvailableSettings.JAKARTA_CDI_BEAN_MANAGER ),
() -> {
final Object value = configurationSettings.get( AvailableSettings.CDI_BEAN_MANAGER );
if ( value != null ) {
DeprecationLogger.DEPRECATION_LOGGER.deprecatedSetting(
AvailableSettings.CDI_BEAN_MANAGER,
AvailableSettings.JAKARTA_CDI_BEAN_MANAGER
);
}
return value;
}
);

this.validatorFactoryReference = configurationSettings.getOrDefault(
AvailableSettings.JPA_VALIDATION_FACTORY,
configurationSettings.get( AvailableSettings.JAKARTA_JPA_VALIDATION_FACTORY )
configurationSettings.get( AvailableSettings.JAKARTA_VALIDATION_FACTORY )
);

this.sessionFactoryName = (String) configurationSettings.get( SESSION_FACTORY_NAME );
Expand Down Expand Up @@ -411,7 +420,6 @@ public SessionFactoryOptionsBuilder(StandardServiceRegistry serviceRegistry, Boo
this.namedQueryStartupCheckingEnabled = cfgService.getSetting( QUERY_STARTUP_CHECKING, BOOLEAN, true );
this.conventionalJavaConstants = cfgService.getSetting(
CONVENTIONAL_JAVA_CONSTANTS, BOOLEAN, true );
this.procedureParameterNullPassingEnabled = cfgService.getSetting( PROCEDURE_NULL_PARAM_PASSING, BOOLEAN, false );
this.omitJoinOfSuperclassTablesEnabled = cfgService.getSetting( OMIT_JOIN_OF_SUPERCLASS_TABLES, BOOLEAN, true );
this.preferredSqlTypeCodeForBoolean = ConfigurationHelper.getPreferredSqlTypeCodeForBoolean( serviceRegistry );

Expand Down Expand Up @@ -644,10 +652,10 @@ private static Interceptor determineInterceptor(Map configurationSettings, Strat
Object setting = configurationSettings.get( INTERCEPTOR );
if ( setting == null ) {
// try the legacy (deprecated) JPA name
setting = configurationSettings.get( org.hibernate.jpa.AvailableSettings.INTERCEPTOR );
setting = configurationSettings.get( org.hibernate.cfg.AvailableSettings.INTERCEPTOR );
if ( setting != null ) {
DeprecationLogger.DEPRECATION_LOGGER.deprecatedSetting(
org.hibernate.jpa.AvailableSettings.INTERCEPTOR,
org.hibernate.cfg.AvailableSettings.INTERCEPTOR,
INTERCEPTOR
);
}
Expand All @@ -659,21 +667,11 @@ private static Interceptor determineInterceptor(Map configurationSettings, Strat
);
}

@SuppressWarnings({"unchecked", "deprecation"})
@SuppressWarnings({"unchecked" })
private static Supplier<? extends Interceptor> determineStatelessInterceptor(
Map configurationSettings,
StrategySelector strategySelector) {
Object setting = configurationSettings.get( SESSION_SCOPED_INTERCEPTOR );
if ( setting == null ) {
// try the legacy (deprecated) JPA name
setting = configurationSettings.get( org.hibernate.jpa.AvailableSettings.SESSION_INTERCEPTOR );
if ( setting != null ) {
DeprecationLogger.DEPRECATION_LOGGER.deprecatedSetting(
org.hibernate.jpa.AvailableSettings.SESSION_INTERCEPTOR,
SESSION_SCOPED_INTERCEPTOR
);
}
}

if ( setting == null ) {
return null;
Expand Down Expand Up @@ -995,11 +993,6 @@ public boolean isConventionalJavaConstants() {
return conventionalJavaConstants;
}

@Override
public boolean isProcedureParameterNullPassingEnabled() {
return procedureParameterNullPassingEnabled;
}

@Override
public boolean isSecondLevelCacheEnabled() {
return secondLevelCacheEnabled;
Expand Down

0 comments on commit 986d65a

Please sign in to comment.