@Override public YumRepository getYumRepository() throws Exception { lock.readLock().lock(); try { if (yumRepository == null) { lock.readLock().unlock(); lock.writeLock().lock(); try { if (yumRepository == null) { yumRepository = MergeMetadataTask.createTaskFor(nexusScheduler, repository).get(); } } finally { lock.readLock().lock(); lock.writeLock().unlock(); } } return yumRepository; } finally { lock.readLock().unlock(); } }
@Override public Object post(final Context context, final Request request, final Response response, final Object payload) throws ResourceException { final String taskType = request.getAttributes().get("taskType").toString(); if (taskType != null) { final NexusTask<?> taskInstance = nexusScheduler.createTaskInstance(taskType); final Map<String, String> valuesMap = request.getResourceRef().getQueryAsForm().getValuesMap(); if (valuesMap != null && !valuesMap.isEmpty()) { for (Map.Entry<String, String> entry : valuesMap.entrySet()) { taskInstance.addParameter(entry.getKey(), entry.getValue()); } } final ScheduledTask<?> scheduledTask = nexusScheduler.submit(taskType, taskInstance); try { scheduledTask.get(); } catch (Exception e) { throw new ResourceException(e); } } return null; }
@Override public YumRepository getYumRepository(final String version) throws Exception { YumRepositoryImpl yumRepository = cache.lookup(repository.getId(), version); if ((yumRepository == null) || yumRepository.isDirty()) { final ScheduledTask<YumRepository> future = createYumRepository( version, createRepositoryTempDir(repository, version) ); yumRepository = (YumRepositoryImpl) future.get(); cache.cache(yumRepository); } return yumRepository; }