Skip to content

Commit ed71a97

Browse files
committed
Fix dataSource selection when importing -- use bean name as it identifies the domain, not it's dataSource name
1 parent b325cf2 commit ed71a97

3 files changed

Lines changed: 14 additions & 5 deletions

File tree

src/main/java/tigase/db/util/SchemaManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,6 +1139,10 @@ public Class<?> getImplementation() {
11391139
return implementation;
11401140
}
11411141

1142+
public String getBeanName() {
1143+
return beanConfig.getBeanName();
1144+
}
1145+
11421146
@Override
11431147
public String toString() {
11441148
return beanConfig.getBeanName() + "[dataSource=" + dataSource.getName() + ", class=" + implementation + "]";

src/main/java/tigase/db/util/importexport/RepositoryHolder.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@
2525
import java.util.Optional;
2626
import java.util.concurrent.ConcurrentHashMap;
2727
import java.util.function.Function;
28+
import java.util.logging.Logger;
2829

2930
public class RepositoryHolder {
3031

32+
Logger log = Logger.getLogger(RepositoryHolder.class.getName());
33+
3134
private record RepoCacheKey(Class<?> ifc, String name) {
3235

3336
}
@@ -58,6 +61,9 @@ public <X> X getRepository(Class<X> ifc, String name)
5861
.toList();
5962
SchemaManager.RepoInfo repoInfo = findRepoInfo(matchingClasses, name).or(
6063
() -> findRepoInfo(matchingClasses, "default")).orElseThrow();
64+
65+
log.info("Using repository bean: " + repoInfo + " to import domain: " + name);
66+
6167
repo = prepareRepository((X) dataSourceHelper.createRepository(repoInfo));
6268
repoCache.put(key, repo);
6369
}
@@ -84,6 +90,9 @@ protected <X> X prepareRepository(X repo)
8490
}
8591

8692
private Optional<SchemaManager.RepoInfo> findRepoInfo(List<SchemaManager.RepoInfo> repoInfos, String name) {
87-
return repoInfos.stream().filter(repoInfo -> name.equals(repoInfo.getDataSource().getName())).findFirst();
93+
return repoInfos.stream().filter(repoInfo -> {
94+
log.info("Checking import domain name " + name + " against repository (bean): " + repoInfo);
95+
return name.equals(repoInfo.getBeanName());
96+
}).findFirst();
8897
}
8998
}

src/main/java/tigase/db/util/importexport/RepositoryManager.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,6 @@ private void initialize(CommandlineParameter fileParam, Properties properties)
183183

184184
List<SchemaManager.RepoInfo> repositories = SchemaManager.getRepositories(kernel, repoBeans, config);
185185

186-
Map<String, SchemaManager.RepoInfo> userRepoMap = repositories.stream()
187-
.filter(repoInfo -> UserRepository.class.isAssignableFrom(repoInfo.getImplementation()))
188-
.collect(Collectors.toMap(repoInfo -> repoInfo.getDataSource().getName(), Function.identity()));
189-
190186
dataSourceHelper = new DataSourceHelper(
191187
repositories.stream().map(SchemaManager.RepoInfo::getDataSource).distinct().toList());
192188
repositoryHolder = new RepositoryHolder(dataSourceHelper, repositories);

0 commit comments

Comments
 (0)