Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correct usage of Optional and reduce redundant calculations #11459

Merged
merged 2 commits into from Jul 22, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -74,7 +74,7 @@ private boolean isGeneratedIndex() {
private String getIndexValue(final RouteUnit routeUnit) {
Map<String, String> logicAndActualTables = getLogicAndActualTables(routeUnit);
String actualTableName = findLogicTableNameFromMetaData(identifier.getValue()).map(logicAndActualTables::get)
.orElse(logicAndActualTables.values().stream().findFirst().orElse(null));
.orElseGet(() -> logicAndActualTables.values().stream().findFirst().orElse(null));
return IndexMetaDataUtil.getActualIndexName(identifier.getValue(), actualTableName);
}

Expand Down
Expand Up @@ -61,7 +61,7 @@ public OrderByContext createOrderBy(final ShardingSphereSchema schema, final Sel
return null != result ? result : getDefaultOrderByContextWithoutOrderBy(groupByContext);
} else if (selectStatement instanceof MySQLSelectStatement) {
Optional<OrderByContext> result = createOrderByContextForMySQLSelectWithoutOrderBy(schema, selectStatement, groupByContext);
return result.orElse(getDefaultOrderByContextWithoutOrderBy(groupByContext));
return result.orElseGet(() -> getDefaultOrderByContextWithoutOrderBy(groupByContext));
}
return getDefaultOrderByContextWithoutOrderBy(groupByContext);
}
Expand Down
Expand Up @@ -132,9 +132,9 @@ private Collection<ColumnProjection> getShorthandColumns(final Collection<Simple
private Collection<ColumnProjection> getUnqualifiedShorthandColumns(final Collection<SimpleTableSegment> tables) {
Collection<ColumnProjection> result = new LinkedHashSet<>();
for (SimpleTableSegment each : tables) {
String owner = each.getAlias().orElse(each.getTableName().getIdentifier().getValue());
result.addAll(schema.getAllColumnNames(
each.getTableName().getIdentifier().getValue()).stream().map(columnName -> new ColumnProjection(owner, columnName, null)).collect(Collectors.toList()));
String tableName = each.getTableName().getIdentifier().getValue();
String owner = each.getAlias().orElse(tableName);
schema.getAllColumnNames(tableName).stream().map(columnName -> new ColumnProjection(owner, columnName, null)).forEach(result::add);
}
return result;
}
Expand All @@ -151,7 +151,7 @@ private Collection<ColumnProjection> getQualifiedShorthandColumns(final Collecti

private boolean isMatch(final ShorthandProjectionSegment projectionSegment, final SimpleTableSegment tableSegment) {
return !projectionSegment.getOwner().isPresent()
|| tableSegment.getAlias().orElse(tableSegment.getTableName().getIdentifier().getValue()).equals(projectionSegment.getOwner().get().getIdentifier().getValue());
|| tableSegment.getAlias().orElseGet(() -> tableSegment.getTableName().getIdentifier().getValue()).equals(projectionSegment.getOwner().get().getIdentifier().getValue());
}

private void appendAverageDistinctDerivedProjection(final AggregationDistinctProjection averageDistinctProjection) {
Expand Down
Expand Up @@ -79,7 +79,7 @@ public static DatabaseType getActualDatabaseType(final String name) {
* @return database type
*/
public static DatabaseType getDatabaseTypeByURL(final String url) {
return DATABASE_TYPES.values().stream().filter(each -> matchURLs(url, each)).findAny().orElse(DATABASE_TYPES.get("SQL92"));
return DATABASE_TYPES.values().stream().filter(each -> matchURLs(url, each)).findAny().orElseGet(() -> DATABASE_TYPES.get("SQL92"));
}

private static boolean matchURLs(final String url, final DatabaseType databaseType) {
Expand Down
Expand Up @@ -64,7 +64,7 @@ private void putTableMetaData(final ShardingSphereSchema schema, final Collectio
if (!containsInTableContainedRule(tableName, materials)) {
tableMetaData = loadTableMetaData(tableName, routeDataSourceNames, materials);
} else {
tableMetaData = TableMetaDataBuilder.build(tableName, materials).orElse(new TableMetaData());
tableMetaData = TableMetaDataBuilder.build(tableName, materials).orElseGet(TableMetaData::new);
}
schema.put(tableName, tableMetaData);
if (isSingleTable(tableName, materials)) {
Expand Down
Expand Up @@ -46,7 +46,7 @@ public void refresh(final ShardingSphereSchema schema, final Collection<String>
String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
TableMetaData tableMetaData;
if (containsInTableContainedRule(tableName, materials)) {
tableMetaData = TableMetaDataBuilder.build(tableName, materials).orElse(new TableMetaData());
tableMetaData = TableMetaDataBuilder.build(tableName, materials).orElseGet(TableMetaData::new);
} else {
tableMetaData = loadTableMetaData(tableName, routeDataSourceNames, materials);
}
Expand Down
Expand Up @@ -17,7 +17,6 @@

package org.apache.shardingsphere.infra.rule.single;

import com.google.common.collect.Sets;
import lombok.Getter;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
Expand All @@ -29,8 +28,10 @@
import javax.sql.DataSource;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

/**
Expand Down Expand Up @@ -80,8 +81,9 @@ private Map<String, DataSource> getAggregateDataSourceMap(final Map<String, Data
* @return whether single table is in same data source or not
*/
public boolean isSingleTableInSameDataSource(final Collection<String> logicTableNames) {
long dataSourceCount = singleTableDataNodes.values().stream().filter(each -> Sets.newHashSet(
getSingleTableNames(logicTableNames)).contains(each.getTableName())).map(SingleTableDataNode::getDataSourceName).distinct().count();
Set<String> singleTableNames = new HashSet<>(getSingleTableNames(logicTableNames));
long dataSourceCount = singleTableDataNodes.keySet().stream().filter(singleTableNames::contains).map(each -> singleTableDataNodes.get(each).getDataSourceName())
.collect(Collectors.toSet()).size();
return dataSourceCount <= 1;
}

Expand Down
Expand Up @@ -45,6 +45,6 @@ public static <T extends RequiredSPI> T getRegisteredService(final Class<T> requ
if (1 == services.size()) {
return services.iterator().next();
}
return services.stream().filter(each -> !each.isDefault()).findFirst().orElse(services.iterator().next());
return services.stream().filter(each -> !each.isDefault()).findFirst().orElseGet(() -> services.iterator().next());
}
}
Expand Up @@ -19,15 +19,15 @@

import com.google.common.collect.Maps;
import org.apache.commons.collections4.MapUtils;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlColumnMetaData;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlIndexMetaData;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlSchema;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlTableMetaData;
import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.ColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.IndexMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.infra.yaml.config.swapper.YamlConfigurationSwapper;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlColumnMetaData;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlIndexMetaData;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlSchema;
import org.apache.shardingsphere.infra.yaml.schema.pojo.YamlTableMetaData;

import java.util.Collection;
import java.util.Collections;
Expand All @@ -53,7 +53,7 @@ public YamlSchema swapToYamlConfiguration(final ShardingSphereSchema schema) {

@Override
public ShardingSphereSchema swapToObject(final YamlSchema yamlConfig) {
return Optional.ofNullable(yamlConfig).map(this::swapSchema).orElse(new ShardingSphereSchema());
return Optional.ofNullable(yamlConfig).map(this::swapSchema).orElseGet(ShardingSphereSchema::new);
}

private ShardingSphereSchema swapSchema(final YamlSchema schema) {
Expand Down
Expand Up @@ -42,6 +42,6 @@ public final class JDBCSaneQueryResultEngineFactory {
* @return new instance of JDBC sane query result engine
*/
public static SaneQueryResultEngine newInstance(final DatabaseType databaseType) {
return TypedSPIRegistry.findRegisteredService(SaneQueryResultEngine.class, databaseType.getName(), new Properties()).orElse(new DefaultSaneQueryResultEngine());
return TypedSPIRegistry.findRegisteredService(SaneQueryResultEngine.class, databaseType.getName(), new Properties()).orElseGet(DefaultSaneQueryResultEngine::new);
}
}
Expand Up @@ -27,11 +27,11 @@
import org.apache.shardingsphere.infra.rule.type.TableContainedRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterTableStatement;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Objects;
import java.util.Optional;
import javax.sql.DataSource;

/**
* ShardingSphere federate refresher for alter table statement.
Expand All @@ -58,7 +58,7 @@ private TableMetaData buildTableMetaData(final Collection<String> routeDataSourc
if (!containsInTableContainedRule(tableName, materials)) {
return loadTableMetaData(tableName, routeDataSourceNames, materials);
} else {
return TableMetaDataBuilder.build(tableName, materials).orElse(new TableMetaData());
return TableMetaDataBuilder.build(tableName, materials).orElseGet(TableMetaData::new);
}
}

Expand Down
Expand Up @@ -44,7 +44,7 @@ public void refresh(final FederateSchemaMetadata schema, final Collection<String
String tableName = sqlStatement.getTable().getTableName().getIdentifier().getValue();
TableMetaData tableMetaData;
if (containsInTableContainedRule(tableName, materials)) {
tableMetaData = TableMetaDataBuilder.load(tableName, materials).orElse(new TableMetaData());
tableMetaData = TableMetaDataBuilder.load(tableName, materials).orElseGet(TableMetaData::new);
} else {
tableMetaData = loadTableMetaData(tableName, routeDataSourceNames, materials);
}
Expand Down
Expand Up @@ -244,7 +244,9 @@ private String getActualSchema(final String schema) {
}

private String getDataSourceName() {
currentDataSourceName = Optional.ofNullable(currentDataSourceName).orElse(getRandomDataSourceName());
if (null == currentDataSourceName) {
currentDataSourceName = getRandomDataSourceName();
}
return currentDataSourceName;
}

Expand All @@ -254,7 +256,9 @@ private String getRandomDataSourceName() {
}

private DatabaseMetaData getDatabaseMetaData() throws SQLException {
currentDatabaseMetaData = Optional.ofNullable(currentDatabaseMetaData).orElse(getConnection().getMetaData());
if (null == currentDatabaseMetaData) {
currentDatabaseMetaData = getConnection().getMetaData();
}
return currentDatabaseMetaData;
}
}