in elastic-db-tools/src/main/java/com/microsoft/azure/elasticdb/shard/mapper/BaseShardMapper.java [519:564]
protected final <MappingT> List<MappingT> getMappingsForRange(Range range,
Shard shard,
LookupOptions lookupOptions,
ActionGeneric3Param<ShardMapManager, ShardMap, StoreMapping, MappingT> constructMapping,
ShardManagementErrorCategory errorCategory,
String mappingType) {
ShardRange sr = null;
if (shard != null) {
ExceptionUtils.ensureShardBelongsToShardMap(this.getShardMapManager(), this.getShardMap(), shard, "GetMappings", mappingType);
}
if (range != null) {
sr = range.getShardRange();
}
if (lookupOptions.getValue() == 1 || lookupOptions.getValue() == 5) {
List<ICacheStoreMapping> cachedMappings = this.getShardMapManager().getCache()
.lookupMappingsForRange(this.getShardMap().getStoreShardMap(), sr);
if (cachedMappings != null && cachedMappings.size() > 0) {
return Collections.unmodifiableList(
cachedMappings.stream().map(sm -> constructMapping.invoke(this.getShardMapManager(), this.getShardMap(), sm.getMapping()))
.collect(Collectors.toList()));
}
}
if (lookupOptions.getValue() >= 4) {
StoreResults result;
try (IStoreOperationGlobal op = shardMapManager.getStoreOperationFactory().createGetMappingsByRangeGlobalOperation(shardMapManager,
"GetMappingsForRange", shardMap.getStoreShardMap(), shard != null ? shard.getStoreShard() : null, sr, errorCategory, true,
false)) {
result = op.doGlobal();
}
catch (Exception e) {
e.printStackTrace();
throw (ShardManagementException) e.getCause();
}
return Collections.unmodifiableList(result.getStoreMappings().stream()
.map(sm -> constructMapping.invoke(this.getShardMapManager(), this.getShardMap(), sm)).collect(Collectors.toList()));
}
return null;
}