001package com.nimbusds.infinispan.persistence.sql;
002
003
004import java.util.Properties;
005
006import net.jcip.annotations.Immutable;
007
008
009/**
010 * Hikari connection pool name.
011 */
012@Immutable
013public final class HikariPoolName {
014        
015        
016        /**
017         * The connection pool name.
018         */
019        private final String poolName;
020        
021        
022        /**
023         * Creates a new Hikari connection pool name.
024         *
025         * @param poolName The name. Must not be {@code null}.
026         */
027        private HikariPoolName(final String poolName) {
028                assert poolName != null;
029                this.poolName = poolName;
030        }
031        
032        
033        @Override
034        public String toString() {
035                return poolName;
036        }
037        
038        
039        /**
040         * Sets a default poolName property as "cacheName.sqlStore".
041         *
042         * @param props     The Hikari properties. Must not be {@code null}.
043         * @param cacheName The configured Infinispan cache name. Must not be
044         *                  {@code null}.
045         *
046         * @return The set pool name.
047         */
048        public static HikariPoolName setDefaultPoolName(final Properties props, final String cacheName) {
049                
050                if (props.containsKey("poolName")) {
051                        return new HikariPoolName(props.getProperty("poolName"));
052                }
053                
054                HikariPoolName poolName = new HikariPoolName(cacheName + ".sqlStore");
055                
056                props.setProperty("poolName", poolName.toString());
057                
058                return poolName;
059        }
060}