SoftReference<Repository> ref = cache.get(str);
repo = ref == null ? null : ref.get();
if (repo == null) {
File file = new File(str);
if (file.isFile() && StringUtils.isZipOrJarFile(str)) {
repo = new ZipRepository(str);
} else {
repo = new FileRepository(str);
}
cache.put(repo.getPath(), new SoftReference<Repository>(repo));
}