@Override
public void onHandle(final Repository repository, final ResourceStoreRequest request, final Action action) {
if (action.isReadAction() && request.getRequestPath().startsWith("/" + Yum.PATH_OF_REPOMD_XML)) {
try {
log.trace("Checking if {}:{} should be processed", repository.getId(), request.getRequestPath());
StorageFileItem repoMDItem = (StorageFileItem) repository.retrieveItem(
false, new ResourceStoreRequest(REPOMD_XML_PATH)
);
if (repoMDItem.getRepositoryItemAttributes().get(YumProxy.PROCESSED) == null) {
try {
repoMDItem.getRepositoryItemUid().getLock().lock(Action.update);
if (repoMDItem.getRepositoryItemAttributes().get(YumProxy.PROCESSED) == null) {
MetadataProcessor.processProxiedMetadata((ProxyRepository) repository);
repoMDItem.getRepositoryItemAttributes().put(
YumProxy.PROCESSED, String.valueOf(System.currentTimeMillis())
);
repository.getAttributesHandler().storeAttributes(repoMDItem);
}
}
finally {
repoMDItem.getRepositoryItemUid().getLock().unlock();
}
}
}
catch (ItemNotFoundException e) {
// ignore as we do not have a repomd.xml