@Override
public List<Repository> getRepositories(MetadataContext ctx) {
MetadataContext context = ctx != null ? ctx : new MetadataContext();
if (!context.isRefreshRepsitory()) {
return cache.values();
}
ExpirableCache<Repository> newCache = new ExpirableCache<Repository>(maxCacheSize, cacheExpiredTime);
BasicDBObject query = new BasicDBObject();
query.put(Repository.STATE_FIELD, Repository.StateEnum.normal.toString());
List<Repository> result = new ArrayList<Repository>();
DBCursor cursor = repoCollection.find(query);
while (cursor.hasNext()) {
DBObject object = cursor.next();
Repository r = repositoryConverter.fromBson(object, Repository.class);
createServiceForRepository(r);
result.add(r);
newCache.putObject(r.getRepositoryName(), r);
}
cache = newCache;
return result;
}