Skip to content

Commit

Permalink
Rename StorageUnit to StorageUnitNodeMapper (#28000)
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Aug 9, 2023
1 parent 80347c1 commit a220b69
Show file tree
Hide file tree
Showing 13 changed files with 122 additions and 120 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public final class DataSourceProvidedDatabaseConfiguration implements DatabaseCo

public DataSourceProvidedDatabaseConfiguration(final Map<String, DataSource> dataSources, final Collection<RuleConfiguration> ruleConfigurations) {
this.ruleConfigurations = ruleConfigurations;
this.storageResource = new StorageResource(dataSources, StorageUtils.getStorageUnits(dataSources));
this.storageResource = new StorageResource(dataSources, StorageUtils.getStorageUnitNodeMappers(dataSources));
dataSourcePropsMap = createDataSourcePropertiesMap(dataSources);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,15 @@ public ResourceMetaData(final String databaseName, final Map<String, DataSource>
Map<String, DataSource> enabledDataSources = DataSourceStateManager.getInstance().getEnabledDataSources(databaseName, dataSources);
Map<String, DatabaseType> storageTypes = createStorageTypes(dataSources, enabledDataSources);
storageNodeMetaData = new StorageNodeMetaData(dataSources);
storageUnitMetaData = new StorageUnitMetaData(dataSources, storageTypes, StorageUtils.getStorageUnits(dataSources), enabledDataSources);
storageUnitMetaData = new StorageUnitMetaData(dataSources, storageTypes, StorageUtils.getStorageUnitNodeMappers(dataSources), enabledDataSources);

}

public ResourceMetaData(final String databaseName, final StorageResource storageResource, final Map<String, DataSourceProperties> dataSourcePropsMap) {
Map<String, DataSource> enabledDataSources = DataSourceStateManager.getInstance().getEnabledDataSources(databaseName, storageResource.getStorageNodes());
Map<String, DatabaseType> storageTypes = createStorageTypes(storageResource.getStorageNodes(), enabledDataSources);
storageNodeMetaData = new StorageNodeMetaData(storageResource.getStorageNodes());
storageUnitMetaData = new StorageUnitMetaData(storageResource.getStorageNodes(), dataSourcePropsMap, storageTypes, storageResource.getStorageUnits(), enabledDataSources);
storageUnitMetaData = new StorageUnitMetaData(storageResource.getStorageNodes(), dataSourcePropsMap, storageTypes, storageResource.getStorageUnitNodeMappers(), enabledDataSources);
}

private Map<String, DatabaseType> createStorageTypes(final Map<String, DataSource> dataSources, final Map<String, DataSource> enabledDataSources) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import org.apache.shardingsphere.infra.datasource.ShardingSphereStorageDataSourceWrapper;
import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCreator;
import org.apache.shardingsphere.infra.datasource.storage.StorageUnit;
import org.apache.shardingsphere.infra.datasource.storage.StorageUnitNodeMapper;

import javax.sql.DataSource;
import java.util.Collections;
Expand All @@ -46,40 +46,36 @@ public final class StorageUnitMetaData {

private final Map<String, DatabaseType> storageTypes;

private final Map<String, StorageUnit> storageUnits;
private final Map<String, StorageUnitNodeMapper> unitNodeMappers;

private final Map<String, ConnectionProperties> connectionPropsMap;

public StorageUnitMetaData(final Map<String, DataSource> dataSources, final Map<String, DatabaseType> storageTypes, final Map<String, StorageUnit> storageUnits,
public StorageUnitMetaData(final Map<String, DataSource> dataSources, final Map<String, DatabaseType> storageTypes, final Map<String, StorageUnitNodeMapper> unitNodeMappers,
final Map<String, DataSource> enabledDataSources) {
this.storageUnits = storageUnits;
this.dataSources = getStorageUnitDataSources(dataSources, storageUnits);
dataSourcePropsMap = DataSourcePropertiesCreator.create(dataSources);
this.storageTypes = getStorageUnitTypes(storageTypes);
connectionPropsMap = createConnectionPropertiesMap(enabledDataSources, storageTypes, storageUnits);
this(dataSources, DataSourcePropertiesCreator.create(dataSources), storageTypes, unitNodeMappers, enabledDataSources);
}

public StorageUnitMetaData(final Map<String, DataSource> dataSources, final Map<String, DataSourceProperties> dataSourcePropsMap,
final Map<String, DatabaseType> storageTypes, final Map<String, StorageUnit> storageUnits, final Map<String, DataSource> enabledDataSources) {
this.storageUnits = storageUnits;
this.dataSources = getStorageUnitDataSources(dataSources, storageUnits);
final Map<String, DatabaseType> storageTypes, final Map<String, StorageUnitNodeMapper> unitNodeMappers, final Map<String, DataSource> enabledDataSources) {
this.unitNodeMappers = unitNodeMappers;
this.dataSources = getStorageUnitDataSources(dataSources, unitNodeMappers);
this.dataSourcePropsMap = dataSourcePropsMap;
this.storageTypes = getStorageUnitTypes(storageTypes);
connectionPropsMap = createConnectionPropertiesMap(enabledDataSources, storageTypes, storageUnits);
connectionPropsMap = createConnectionPropertiesMap(enabledDataSources, storageTypes, unitNodeMappers);
}

private Map<String, DataSource> getStorageUnitDataSources(final Map<String, DataSource> storageNodes, final Map<String, StorageUnit> storageUnits) {
private Map<String, DataSource> getStorageUnitDataSources(final Map<String, DataSource> storageNodes, final Map<String, StorageUnitNodeMapper> storageUnits) {
Map<String, DataSource> result = new LinkedHashMap<>(storageUnits.size(), 1F);
for (Entry<String, StorageUnit> entry : storageUnits.entrySet()) {
for (Entry<String, StorageUnitNodeMapper> entry : storageUnits.entrySet()) {
DataSource dataSource = storageNodes.get(entry.getValue().getNodeName());
result.put(entry.getKey(), new ShardingSphereStorageDataSourceWrapper(dataSource, entry.getValue().getCatalog(), entry.getValue().getUrl()));
}
return result;
}

private Map<String, DatabaseType> getStorageUnitTypes(final Map<String, DatabaseType> storageTypes) {
Map<String, DatabaseType> result = new LinkedHashMap<>(storageUnits.size(), 1F);
for (Entry<String, StorageUnit> entry : storageUnits.entrySet()) {
Map<String, DatabaseType> result = new LinkedHashMap<>(unitNodeMappers.size(), 1F);
for (Entry<String, StorageUnitNodeMapper> entry : unitNodeMappers.entrySet()) {
DatabaseType storageType = storageTypes.containsKey(entry.getValue().getNodeName())
? storageTypes.get(entry.getValue().getNodeName())
: DatabaseTypeEngine.getStorageType(Collections.emptyList());
Expand All @@ -89,9 +85,9 @@ private Map<String, DatabaseType> getStorageUnitTypes(final Map<String, Database
}

private Map<String, ConnectionProperties> createConnectionPropertiesMap(final Map<String, DataSource> enabledDataSources,
final Map<String, DatabaseType> storageTypes, final Map<String, StorageUnit> storageUnits) {
final Map<String, DatabaseType> storageTypes, final Map<String, StorageUnitNodeMapper> storageUnits) {
Map<String, ConnectionProperties> result = new LinkedHashMap<>(storageUnits.size(), 1F);
for (Entry<String, StorageUnit> entry : storageUnits.entrySet()) {
for (Entry<String, StorageUnitNodeMapper> entry : storageUnits.entrySet()) {
String nodeName = entry.getValue().getNodeName();
if (enabledDataSources.containsKey(nodeName)) {
Map<String, Object> standardProps = DataSourcePropertiesCreator.create(enabledDataSources.get(nodeName)).getConnectionPropertySynonyms().getStandardProperties();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.apache.shardingsphere.infra.datasource.storage.StorageNodeProperties;
import org.apache.shardingsphere.infra.datasource.storage.StorageResource;
import org.apache.shardingsphere.infra.datasource.storage.StorageResourceWithProperties;
import org.apache.shardingsphere.infra.datasource.storage.StorageUnit;
import org.apache.shardingsphere.infra.datasource.storage.StorageUnitNodeMapper;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;

import javax.sql.DataSource;
Expand Down Expand Up @@ -70,11 +70,11 @@ public static StorageResource createStorageResource(final Map<String, DataSource
*/
public static StorageResource createStorageResource(final Map<String, DataSourceProperties> dataSourcePropsMap, final boolean cacheEnabled) {
Map<String, DataSource> storageNodes = new LinkedHashMap<>();
Map<String, StorageUnit> storageUnits = new LinkedHashMap<>();
Map<String, StorageUnitNodeMapper> storageUnitNodeMappers = new LinkedHashMap<>();
for (Entry<String, DataSourceProperties> entry : dataSourcePropsMap.entrySet()) {
StorageNodeProperties storageNodeProperties = getStorageNodeProperties(entry.getKey(), entry.getValue());
if (storageNodes.containsKey(storageNodeProperties.getName())) {
appendStorageUnit(storageUnits, storageNodeProperties, entry.getKey(), entry.getValue());
StorageNodeProperties storageNodeProps = getStorageNodeProperties(entry.getKey(), entry.getValue());
if (storageNodes.containsKey(storageNodeProps.getName())) {
appendStorageUnitNodeMapper(storageUnitNodeMappers, storageNodeProps, entry.getKey(), entry.getValue());
continue;
}
DataSource dataSource;
Expand All @@ -88,10 +88,10 @@ public static StorageResource createStorageResource(final Map<String, DataSource
}
throw ex;
}
storageNodes.put(storageNodeProperties.getName(), dataSource);
appendStorageUnit(storageUnits, storageNodeProperties, entry.getKey(), entry.getValue());
storageNodes.put(storageNodeProps.getName(), dataSource);
appendStorageUnitNodeMapper(storageUnitNodeMappers, storageNodeProps, entry.getKey(), entry.getValue());
}
return new StorageResource(storageNodes, storageUnits);
return new StorageResource(storageNodes, storageUnitNodeMappers);
}

/**
Expand All @@ -102,51 +102,51 @@ public static StorageResource createStorageResource(final Map<String, DataSource
*/
public static StorageResourceWithProperties createStorageResourceWithoutDataSource(final Map<String, DataSourceProperties> dataSourcePropsMap) {
Map<String, DataSource> storageNodes = new LinkedHashMap<>();
Map<String, StorageUnit> storageUnits = new LinkedHashMap<>();
Map<String, StorageUnitNodeMapper> storageUnitNodeMappers = new LinkedHashMap<>();
Map<String, DataSourceProperties> dataSourcePropertiesMap = new LinkedHashMap<>();
for (Entry<String, DataSourceProperties> entry : dataSourcePropsMap.entrySet()) {
StorageNodeProperties storageNodeProperties = getStorageNodeProperties(entry.getKey(), entry.getValue());
if (storageNodes.containsKey(storageNodeProperties.getName())) {
appendStorageUnit(storageUnits, storageNodeProperties, entry.getKey(), entry.getValue());
appendStorageUnitNodeMapper(storageUnitNodeMappers, storageNodeProperties, entry.getKey(), entry.getValue());
continue;
}
storageNodes.put(storageNodeProperties.getName(), null);
appendStorageUnit(storageUnits, storageNodeProperties, entry.getKey(), entry.getValue());
appendStorageUnitNodeMapper(storageUnitNodeMappers, storageNodeProperties, entry.getKey(), entry.getValue());
dataSourcePropertiesMap.put(storageNodeProperties.getName(), entry.getValue());
}
return new StorageResourceWithProperties(storageNodes, storageUnits, dataSourcePropertiesMap);
return new StorageResourceWithProperties(storageNodes, storageUnitNodeMappers, dataSourcePropertiesMap);
}

private static void appendStorageUnit(final Map<String, StorageUnit> storageUnits, final StorageNodeProperties storageNodeProperties,
final String unitName, final DataSourceProperties dataSourceProps) {
private static void appendStorageUnitNodeMapper(final Map<String, StorageUnitNodeMapper> storageUnitNodeMappers, final StorageNodeProperties storageNodeProps,
final String unitName, final DataSourceProperties dataSourceProps) {
String url = dataSourceProps.getConnectionPropertySynonyms().getStandardProperties().get("url").toString();
storageUnits.put(unitName, getStorageUnit(storageNodeProperties, unitName, url));
storageUnitNodeMappers.put(unitName, getStorageUnitNodeMapper(storageNodeProps, unitName, url));
}

private static StorageUnit getStorageUnit(final StorageNodeProperties storageNodeProperties, final String unitName, final String url) {
DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(storageNodeProperties.getDatabaseType()).getDialectDatabaseMetaData();
private static StorageUnitNodeMapper getStorageUnitNodeMapper(final StorageNodeProperties storageNodeProps, final String unitName, final String url) {
DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(storageNodeProps.getDatabaseType()).getDialectDatabaseMetaData();
return dialectDatabaseMetaData.isInstanceConnectionAvailable()
? new StorageUnit(unitName, storageNodeProperties.getName(), storageNodeProperties.getDatabase(), url)
: new StorageUnit(unitName, storageNodeProperties.getName(), url);
? new StorageUnitNodeMapper(unitName, storageNodeProps.getName(), storageNodeProps.getDatabase(), url)
: new StorageUnitNodeMapper(unitName, storageNodeProps.getName(), url);
}

private static StorageNodeProperties getStorageNodeProperties(final String dataSourceName, final DataSourceProperties dataSourceProperties) {
Map<String, Object> standardProperties = dataSourceProperties.getConnectionPropertySynonyms().getStandardProperties();
private static StorageNodeProperties getStorageNodeProperties(final String dataSourceName, final DataSourceProperties storageNodeProps) {
Map<String, Object> standardProperties = storageNodeProps.getConnectionPropertySynonyms().getStandardProperties();
String url = standardProperties.get("url").toString();
String username = standardProperties.get("username").toString();
DatabaseType databaseType = DatabaseTypeFactory.get(url);
return getStorageNodeProperties(dataSourceName, dataSourceProperties, url, username, databaseType);
return getStorageNodeProperties(dataSourceName, storageNodeProps, url, username, databaseType);
}

private static StorageNodeProperties getStorageNodeProperties(final String dataSourceName, final DataSourceProperties dataSourceProperties,
private static StorageNodeProperties getStorageNodeProperties(final String dataSourceName, final DataSourceProperties dataSourceProps,
final String url, final String username, final DatabaseType databaseType) {
try {
JdbcUrl jdbcUrl = new StandardJdbcUrlParser().parse(url);
DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
String nodeName = dialectDatabaseMetaData.isInstanceConnectionAvailable() ? generateStorageNodeName(jdbcUrl.getHostname(), jdbcUrl.getPort(), username) : dataSourceName;
return new StorageNodeProperties(nodeName, databaseType, dataSourceProperties, jdbcUrl.getDatabase());
return new StorageNodeProperties(nodeName, databaseType, dataSourceProps, jdbcUrl.getDatabase());
} catch (final UnrecognizedDatabaseURLException ex) {
return new StorageNodeProperties(dataSourceName, databaseType, dataSourceProperties, null);
return new StorageNodeProperties(dataSourceName, databaseType, dataSourceProps, null);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,19 @@ public class StorageResource {

private final Map<String, DataSource> storageNodes;

private final Map<String, StorageUnit> storageUnits;
private final Map<String, StorageUnitNodeMapper> storageUnitNodeMappers;

private final Map<String, DataSource> wrappedDataSources;

public StorageResource(final Map<String, DataSource> storageNodes, final Map<String, StorageUnit> storageUnits) {
public StorageResource(final Map<String, DataSource> storageNodes, final Map<String, StorageUnitNodeMapper> storageUnitNodeMappers) {
this.storageNodes = storageNodes;
this.storageUnits = storageUnits;
wrappedDataSources = getWrappedDataSources(storageUnits);
this.storageUnitNodeMappers = storageUnitNodeMappers;
wrappedDataSources = createWrappedDataSources();
}

private Map<String, DataSource> getWrappedDataSources(final Map<String, StorageUnit> storageUnits) {
Map<String, DataSource> result = new LinkedHashMap<>(storageUnits.size(), 1F);
for (Entry<String, StorageUnit> entry : storageUnits.entrySet()) {
private Map<String, DataSource> createWrappedDataSources() {
Map<String, DataSource> result = new LinkedHashMap<>(storageUnitNodeMappers.size(), 1F);
for (Entry<String, StorageUnitNodeMapper> entry : storageUnitNodeMappers.entrySet()) {
DataSource dataSource = storageNodes.get(entry.getValue().getNodeName());
if (null != dataSource) {
result.put(entry.getKey(), new ShardingSphereStorageDataSourceWrapper(dataSource, entry.getValue().getCatalog(), entry.getValue().getUrl()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ public final class StorageResourceWithProperties extends StorageResource {

private final Map<String, DataSourceProperties> dataSourcePropertiesMap;

public StorageResourceWithProperties(final Map<String, DataSource> storageNodes, final Map<String, StorageUnit> storageUnits, final Map<String, DataSourceProperties> dataSourcePropertiesMap) {
super(storageNodes, storageUnits);
public StorageResourceWithProperties(final Map<String, DataSource> storageNodes,
final Map<String, StorageUnitNodeMapper> storageUnitNodeMappers, final Map<String, DataSourceProperties> dataSourcePropertiesMap) {
super(storageNodes, storageUnitNodeMappers);
this.dataSourcePropertiesMap = dataSourcePropertiesMap;
}
}
Loading

0 comments on commit a220b69

Please sign in to comment.