}
final boolean cacheDoesNotExist = CollectionUtils.isEmpty(packages);
final PackageCacheMode packageCacheMode = configuration.getSystemPackageCacheMode();
if (packageCacheMode.isReadFromCache() == false || cacheDoesNotExist || !validCache) {
packages = packageScanner.scanWebApplicationPackages();
}
if (packageCacheMode.isForceWriteToCache() || (cacheDoesNotExist && packageCacheMode.isWriteToCache())) {
writeCachedPackages(packages);
}