CollectionSupport coll = graph.getService(CollectionSupport.class);
THashSet<Resource> visited = new THashSet<>();
- List<Resource> rec = findRec(graph, index, filter, visited);
+ List<Resource> rec_ = findRec(graph, index, filter, visited);
+ // We must not modify rec_!
+ List<Resource> rec = rec_;
for(Resource global : Layer0Utils.listGlobalOntologies(graph)) {
if(!visited.add(global)) continue;
List<Resource> rs = graph.syncRequest(new QueryIndex(global, type, filter), TransientCacheListener.<List<Resource>>instance());
- if(rec.isEmpty() && !rs.isEmpty()) {
- // TODO: rec could be an immutable empty list
- rec = new ArrayList<Resource>();
+ if(!rs.isEmpty()) {
+ if(rec == rec_)
+ rec = new ArrayList<>(rec);
+ rec.addAll(rs);
}
- rec.addAll(rs);
}
Collection<Resource> result = coll.asSortedList(rec);
return result;