in modules/frontend/app/configuration/generator/generator/ConfigurationGenerator.js [2509:2618]
static cacheStore(cache, domains, available, deps, ccfg = this.cacheConfigurationBean(cache)) {
const kind = _.get(cache, 'cacheStoreFactory.kind');
if (kind && cache.cacheStoreFactory[kind]) {
let bean = null;
const storeFactory = cache.cacheStoreFactory[kind];
switch (kind) {
case 'CacheJdbcPojoStoreFactory':
bean = new Bean('org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory', 'cacheStoreFactory',
storeFactory, cacheDflts.cacheStoreFactory.CacheJdbcPojoStoreFactory);
const jdbcId = bean.valueOf('dataSourceBean');
bean.dataSource(jdbcId, 'dataSourceBean', this.dataSourceBean(jdbcId, storeFactory.dialect, available, deps, storeFactory.implementationVersion))
.beanProperty('dialect', new EmptyBean(this.dialectClsName(storeFactory.dialect)));
bean.intProperty('batchSize')
.intProperty('maximumPoolSize')
.intProperty('maximumWriteAttempts')
.intProperty('parallelLoadCacheMinimumThreshold')
.emptyBeanProperty('hasher')
.emptyBeanProperty('transformer')
.boolProperty('sqlEscapeAll');
const setType = (typeBean, propName) => {
if (javaTypes.nonBuiltInClass(typeBean.valueOf(propName)))
typeBean.stringProperty(propName);
else
typeBean.classProperty(propName);
};
const types = _.reduce(domains, (acc, domain) => {
if (isNil(domain.databaseTable))
return acc;
const typeBean = this.domainJdbcTypeBean(_.merge({}, domain, {cacheName: cache.name}))
.stringProperty('cacheName');
setType(typeBean, 'keyType');
setType(typeBean, 'valueType');
this.domainStore(domain, typeBean);
acc.push(typeBean);
return acc;
}, []);
bean.varArgProperty('types', 'types', types, 'org.apache.ignite.cache.store.jdbc.JdbcType');
break;
case 'CacheJdbcBlobStoreFactory':
bean = new Bean('org.apache.ignite.cache.store.jdbc.CacheJdbcBlobStoreFactory', 'cacheStoreFactory',
storeFactory);
if (bean.valueOf('connectVia') === 'DataSource') {
const blobId = bean.valueOf('dataSourceBean');
bean.dataSource(blobId, 'dataSourceBean', this.dataSourceBean(blobId, storeFactory.dialect, available, deps));
}
else {
ccfg.stringProperty('connectionUrl')
.stringProperty('user')
.property('password', `ds.${storeFactory.user}.password`, 'YOUR_PASSWORD');
}
bean.boolProperty('initSchema')
.stringProperty('createTableQuery')
.stringProperty('loadQuery')
.stringProperty('insertQuery')
.stringProperty('updateQuery')
.stringProperty('deleteQuery');
break;
case 'CacheHibernateBlobStoreFactory':
bean = new Bean('org.apache.ignite.cache.store.hibernate.CacheHibernateBlobStoreFactory',
'cacheStoreFactory', storeFactory);
bean.propsProperty('props', 'hibernateProperties');
break;
default:
}
if (bean)
ccfg.beanProperty('cacheStoreFactory', bean);
}
ccfg.intProperty('storeConcurrentLoadAllThreshold')
.boolProperty('storeKeepBinary')
.boolProperty('loadPreviousValue')
.boolProperty('readThrough')
.boolProperty('writeThrough');
if (ccfg.valueOf('writeBehindEnabled')) {
ccfg.boolProperty('writeBehindEnabled')
.intProperty('writeBehindBatchSize')
.intProperty('writeBehindFlushSize')
.longProperty('writeBehindFlushFrequency')
.intProperty('writeBehindFlushThreadCount');
// Since ignite 2.0
if (available('2.0.0'))
ccfg.boolProperty('writeBehindCoalescing');
}
return ccfg;
}