Skip to content

Commit

Permalink
Remove session customizer
Browse files Browse the repository at this point in the history
  • Loading branch information
Stefano Zilli authored and Coduz committed Jun 24, 2024
1 parent a8e46e6 commit 7b487a8
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
package org.eclipse.kapua.commons.jpa;

import org.eclipse.kapua.KapuaException;
import org.eclipse.kapua.commons.setting.system.SystemSetting;
import org.eclipse.kapua.commons.setting.system.SystemSettingKey;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -45,8 +43,6 @@ public abstract class AbstractEntityManagerFactory implements org.eclipse.kapua.
* @param uniqueConstraints
*/
protected AbstractEntityManagerFactory(String persistenceUnitName, String datasourceName, Map<String, String> uniqueConstraints) {
SystemSetting config = SystemSetting.getInstance();

//
// Initialize the EntityManagerFactory
try {
Expand All @@ -55,13 +51,7 @@ protected AbstractEntityManagerFactory(String persistenceUnitName, String dataso
Map<String, Object> configOverrides = new HashMap<>();

configOverrides.put("eclipselink.cache.shared.default", "false"); // This has to be set to false in order to disable the local object cache of EclipseLink.

configOverrides.put("eclipselink.connection-pool.default.dataSourceName", datasourceName);
configOverrides.put("eclipselink.connection-pool.default.wait", config.getString(SystemSettingKey.DB_POOL_BORROW_TIMEOUT));
configOverrides.put("eclipselink.session.customizer", "org.eclipse.kapua.commons.jpa.JpaSessionCustomizer");

configOverrides.put("eclipselink.logging.level", "FINE");
configOverrides.put("eclipselink.logging.parameters", "true");
configOverrides.put("javax.persistence.nonJtaDataSource", DataSource.getDataSource());

// Standalone JPA
entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, configOverrides);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,35 +16,29 @@
import org.eclipse.kapua.commons.setting.system.SystemSettingKey;

import com.zaxxer.hikari.HikariDataSource;
import org.eclipse.persistence.config.SessionCustomizer;
import org.eclipse.persistence.sessions.DatabaseLogin;
import org.eclipse.persistence.sessions.JNDIConnector;
import org.eclipse.persistence.sessions.Session;

public class JpaSessionCustomizer implements SessionCustomizer {
public final class DataSource {

private static JNDIConnector jndiConnector;
private static HikariDataSource hikariDataSource;

@Override
public void customize(Session session) throws Exception {
DatabaseLogin databaseLogin = session.getLogin();
if (jndiConnector == null) {
private DataSource() {}

public static HikariDataSource getDataSource() {
if (hikariDataSource == null) {
SystemSetting config = SystemSetting.getInstance();

HikariDataSource hikariDataSource = new HikariDataSource();
hikariDataSource.setDriverClassName(config.getString(SystemSettingKey.DB_JDBC_DRIVER)); //loads the jdbc driver
hikariDataSource = new HikariDataSource();
hikariDataSource.setDriverClassName(config.getString(SystemSettingKey.DB_JDBC_DRIVER));
hikariDataSource.setJdbcUrl(JdbcConnectionUrlResolvers.resolveJdbcUrl());
hikariDataSource.setUsername(config.getString(SystemSettingKey.DB_USERNAME));
hikariDataSource.setPassword(config.getString(SystemSettingKey.DB_PASSWORD));

hikariDataSource.setMaximumPoolSize(config.getInt(SystemSettingKey.DB_POOL_SIZE_MAX, 30));
hikariDataSource.setMinimumIdle(config.getInt(SystemSettingKey.DB_POOL_SIZE_MIN, 2));
hikariDataSource.setKeepaliveTime(30000);
hikariDataSource.setConnectionTestQuery("SELECT 1");

jndiConnector = new JNDIConnector(hikariDataSource);
hikariDataSource.setMaximumPoolSize(config.getInt(SystemSettingKey.DB_POOL_SIZE_MAX, 20));
hikariDataSource.setMinimumIdle(config.getInt(SystemSettingKey.DB_POOL_SIZE_MIN, 1));
hikariDataSource.setIdleTimeout(config.getInt(SystemSettingKey.DB_POOL_IDLE_TIMEOUT, 180000));
hikariDataSource.setKeepaliveTime(config.getInt(SystemSettingKey.DB_POOL_KEEPALIVE_TIME, 30000));
hikariDataSource.setConnectionTestQuery(config.getString(SystemSettingKey.DB_POOL_TEST_QUERY, "SELECT 1"));
}
databaseLogin.setConnector(jndiConnector);
return hikariDataSource;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -146,11 +146,19 @@ public enum SystemSettingKey implements SettingKey {
* Database character encoding
*/
DB_CHAR_ENCODING("commons.db.characterEncoding"),

/**
* Database pool initial pool size
* Character used in DB query to escape other special characters
*/
DB_CHARACTER_ESCAPE("commons.db.character.escape"),
/**
* Character used in DB query to use as wildcard
*/
DB_CHARACTER_WILDCARD_ANY("commons.db.character.wildcard.any"),
/**
* Character used in DB query to use as single character wildcard
*/
DB_POOL_SIZE_INITIAL("commons.db.pool.size.initial"),
DB_CHARACTER_WILDCARD_SINGLE("commons.db.character.wildcard.single"),

/**
* Database pool minimum pool size
*/
Expand All @@ -160,21 +168,17 @@ public enum SystemSettingKey implements SettingKey {
*/
DB_POOL_SIZE_MAX("commons.db.pool.size.max"),
/**
* Database pool connection borrow timeout
*/
DB_POOL_BORROW_TIMEOUT("commons.db.pool.borrow.timeout"),
/**
* Character used in DB query to escape other special characters
* Database pool maximum time before evicting an idle connection
*/
DB_CHARACTER_ESCAPE("commons.db.character.escape"),
DB_POOL_IDLE_TIMEOUT("commons.db.pool.idle.timeout"),
/**
* Character used in DB query to use as wildcard
* Database pool keepalive query interval for idle connections
*/
DB_CHARACTER_WILDCARD_ANY("commons.db.character.wildcard.any"),
DB_POOL_KEEPALIVE_TIME("commons.db.pool.keepalive.timeout"),
/**
* Character used in DB query to use as single character wildcard
* Database pool test query used for connection liveness tests and keepalive
*/
DB_CHARACTER_WILDCARD_SINGLE("commons.db.character.wildcard.single"),
DB_POOL_TEST_QUERY("commons.db.pool.test.query"),

/**
* Broker schema (e.g. mqtt, mqtts, ..)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,25 +30,24 @@ public void keyTest() {
SystemSettingKey.DB_CONNECTION_PORT, SystemSettingKey.DB_CONNECTION_USE_SSL, SystemSettingKey.DB_CONNECTION_TRUSTSTORE_URL,
SystemSettingKey.DB_CONNECTION_TRUSTSTORE_PWD, SystemSettingKey.DB_CONNECTION_ADDITIONAL_OPTIONS, SystemSettingKey.DB_SCHEMA,
SystemSettingKey.DB_SCHEMA_ENV, SystemSettingKey.DB_SCHEMA_UPDATE, SystemSettingKey.DB_USE_TIMEZONE, SystemSettingKey.DB_USE_LEGACY_DATETIME_CODE,
SystemSettingKey.DB_SERVER_TIMEZONE, SystemSettingKey.DB_CHAR_ENCODING, SystemSettingKey.DB_POOL_SIZE_INITIAL, SystemSettingKey.DB_POOL_SIZE_MIN,
SystemSettingKey.DB_POOL_SIZE_MAX, SystemSettingKey.DB_POOL_BORROW_TIMEOUT, SystemSettingKey.DB_CHARACTER_ESCAPE, SystemSettingKey.DB_CHARACTER_WILDCARD_ANY,
SystemSettingKey.DB_CHARACTER_WILDCARD_SINGLE, SystemSettingKey.BROKER_SCHEME, SystemSettingKey.BROKER_HOST, SystemSettingKey.METRICS_ENABLE_JMX,
SystemSettingKey.KAPUA_KEY_SIZE, SystemSettingKey.KAPUA_INSERT_MAX_RETRY, SystemSettingKey.EVENT_BUS_URL, SystemSettingKey.EVENT_BUS_USERNAME, SystemSettingKey.EVENT_BUS_PASSWORD,
SystemSettingKey.EVENT_BUS_PRODUCER_POOL_MIN_SIZE, SystemSettingKey.EVENT_BUS_PRODUCER_POOL_MAX_SIZE,
SystemSettingKey.EVENT_BUS_PRODUCER_POOL_BORROW_WAIT_MAX, SystemSettingKey.EVENT_BUS_PRODUCER_EVICTION_INTERVAL, SystemSettingKey.EVENT_BUS_CONSUMER_POOL_SIZE,
SystemSettingKey.EVENT_BUS_MESSAGE_SERIALIZER, SystemSettingKey.EVENT_BUS_TRANSPORT_USE_EPOLL, SystemSettingKey.HOUSEKEEPER_EXECUTION_WAIT_TIME,
SystemSettingKey.HOUSEKEEPER_EVENT_SCAN_WINDOW, SystemSettingKey.HOUSEKEEPER_OLD_MESSAGES_TIME_WINDOW, SystemSettingKey.SETTINGS_HOTSWAP,
SystemSettingKey.CACHING_PROVIDER, SystemSettingKey.TMETADATA_LOCAL_CACHE_SIZE_MAXIMUM, SystemSettingKey.CACHE_CONFIG_URL,
SystemSettingKey.DB_SERVER_TIMEZONE, SystemSettingKey.DB_CHAR_ENCODING, SystemSettingKey.DB_POOL_SIZE_MIN, SystemSettingKey.DB_POOL_SIZE_MAX,
SystemSettingKey.DB_POOL_IDLE_TIMEOUT, SystemSettingKey.DB_POOL_KEEPALIVE_TIME, SystemSettingKey.DB_POOL_TEST_QUERY, SystemSettingKey.DB_CHARACTER_ESCAPE,
SystemSettingKey.DB_CHARACTER_WILDCARD_ANY, SystemSettingKey.DB_CHARACTER_WILDCARD_SINGLE, SystemSettingKey.BROKER_SCHEME, SystemSettingKey.BROKER_HOST,
SystemSettingKey.METRICS_ENABLE_JMX, SystemSettingKey.KAPUA_KEY_SIZE, SystemSettingKey.KAPUA_INSERT_MAX_RETRY, SystemSettingKey.EVENT_BUS_URL,
SystemSettingKey.EVENT_BUS_USERNAME, SystemSettingKey.EVENT_BUS_PASSWORD, SystemSettingKey.EVENT_BUS_PRODUCER_POOL_MIN_SIZE,
SystemSettingKey.EVENT_BUS_PRODUCER_POOL_MAX_SIZE, SystemSettingKey.EVENT_BUS_PRODUCER_POOL_BORROW_WAIT_MAX, SystemSettingKey.EVENT_BUS_PRODUCER_EVICTION_INTERVAL,
SystemSettingKey.EVENT_BUS_CONSUMER_POOL_SIZE, SystemSettingKey.EVENT_BUS_MESSAGE_SERIALIZER, SystemSettingKey.EVENT_BUS_TRANSPORT_USE_EPOLL,
SystemSettingKey.HOUSEKEEPER_EXECUTION_WAIT_TIME, SystemSettingKey.HOUSEKEEPER_EVENT_SCAN_WINDOW, SystemSettingKey.HOUSEKEEPER_OLD_MESSAGES_TIME_WINDOW,
SystemSettingKey.SETTINGS_HOTSWAP, SystemSettingKey.CACHING_PROVIDER, SystemSettingKey.TMETADATA_LOCAL_CACHE_SIZE_MAXIMUM, SystemSettingKey.CACHE_CONFIG_URL,
SystemSettingKey.CACHE_TTL, SystemSettingKey.JCACHE_EXPIRY_POLICY};

String[] expectedValue = {"commons.sys.provision.account.name", "commons.sys.admin.account", "commons.sys.admin.userName", "commons.version", "commons.build.revision",
"commons.build.number", "character.encoding", "commons.db.jdbcConnectionUrlResolver", "commons.db.name", "commons.db.username", "commons.db.password",
"commons.db.jdbc.driver", "commons.db.connection.scheme", "commons.db.connection.host", "commons.db.connection.port", "commons.db.connection.useSsl",
"commons.db.connection.trust.store.url", "commons.db.connection.trust.store.pwd", "commons.db.connection.additionalOptions", "commons.db.schema",
"COMMONS_DB_SCHEMA", "commons.db.schema.update", "commons.db.useTimezone", "commons.db.useLegacyDatetimeCode",
"commons.db.serverTimezone", "commons.db.characterEncoding", "commons.db.pool.size.initial", "commons.db.pool.size.min",
"commons.db.pool.size.max", "commons.db.pool.borrow.timeout", "commons.db.character.escape", "commons.db.character.wildcard.any",
"commons.db.character.wildcard.single", "broker.scheme", "broker.host", "metrics.enable.jmx",
"COMMONS_DB_SCHEMA", "commons.db.schema.update", "commons.db.useTimezone", "commons.db.useLegacyDatetimeCode", "commons.db.serverTimezone", "commons.db.characterEncoding",
"commons.db.pool.size.min", "commons.db.pool.size.max", "commons.db.pool.idle.timeout", "commons.db.pool.keepalive.timeout", "commons.db.pool.test.query",
"commons.db.character.escape", "commons.db.character.wildcard.any", "commons.db.character.wildcard.single", "broker.scheme", "broker.host", "metrics.enable.jmx",
"commons.entity.key.size", "commons.entity.insert.max.retry", "commons.eventbus.url", "commons.eventbus.username",
"commons.eventbus.password", "commons.eventbus.producerPool.minSize", "commons.eventbus.producerPool.maxSize", "commons.eventbus.producerPool.maxWaitOnBorrow",
"commons.eventbus.producerPool.evictionInterval", "commons.eventbus.consumerPool.size", "commons.eventbus.messageSerializer", "commons.eventbus.transport.useEpoll",
Expand Down

0 comments on commit 7b487a8

Please sign in to comment.