@Override protected void doBind() { try { bindLock.writeLock().lock(); for (final Repository repository : repositoryManager.browse()) { handle(new RepositoryCreatedEvent(repository)); } } finally { bindLock.writeLock().unlock(); } getEventBus().register(this); }
@AllowConcurrentEvents @Subscribe public void handle(final CapabilityEvent.AfterUpdate event) { if (event.getReference().context().id().equals(capabilityIdentity)) { if (!sameRepositoryAs(repositoryBeforeLastUpdate)) { try { bindLock.writeLock().lock(); for (final Repository repository : repositoryManager.browse()) { handle(new RepositoryCreatedEvent(repository)); } } finally { bindLock.writeLock().unlock(); } } } }
@Override @Guarded(by = STARTED) public List<Repository> members() { final Repository repository = getRepository(); List<Repository> members = new ArrayList<>(config.memberNames.size()); for (String name : config.memberNames) { Repository member = repositoryManager.get(name); if (member == null) { log.warn("Ignoring missing member repository: {}", name); } else if (!repository.getFormat().equals(member.getFormat())) { log.warn( "Group {} includes an incompatible-format member: {} with format {}", repository.getName(), name, member.getFormat()); } else { members.add(member); } } return members; }