@Override public void repositoryEvent(RepositoryEvent event) { LOG.debug("Repository: {} {}", event.getType(), event.getRepository()); }
@Override public void registerListener(FeaturesListener listener) { listeners.add(listener); try { Set<String> repositoriesList = new TreeSet<>(); Map<String, Set<String>> installedFeatures = new TreeMap<>(); synchronized (lock) { repositoriesList.addAll(state.repositories); installedFeatures.putAll(copy(state.installedFeatures)); } for (String uri : repositoriesList) { Repository repository = repositories.create(URI.create(uri), false); listener.repositoryEvent(new RepositoryEvent(repository, RepositoryEvent.EventType.RepositoryAdded, true)); } for (Map.Entry<String, Set<String>> entry : installedFeatures.entrySet()) { for (String id : entry.getValue()) { Feature feature = org.apache.karaf.features.internal.model.Feature.valueOf(id); listener.featureEvent(new FeatureEvent(FeatureEvent.EventType.FeatureInstalled, feature, entry.getKey(), true)); } } } catch (Exception e) { LOGGER.error("Error notifying listener about the current state", e); } }
public void repositoryEvent(RepositoryEvent event) { if (!event.isReplay()) { Notification notification = new Notification(REPOSITORY_EVENT_TYPE, objectName, sequenceNumber++); notification.setUserData(new JmxRepositoryEvent(event).asCompositeData()); sendNotification(notification); } }
@Override public void addRepository(URI uri, boolean install) throws Exception { Repository repository = repositories.create(uri, true); synchronized (lock) { repositories.addRepository(repository); featureCache = null; // Add repo if (!state.repositories.add(uri.toString())) { return; } saveState(); } callListeners(new RepositoryEvent(repository, RepositoryEvent.EventType.RepositoryAdded, false)); // install the features in the repo if (install) { HashSet<String> features = new HashSet<>(); for (Feature feature : repository.getFeatures()) { features.add(feature.getId()); } installFeatures(features, EnumSet.noneOf(FeaturesService.Option.class)); } }
public JmxRepositoryEvent(RepositoryEvent event) { try { String[] itemNames = FeaturesServiceMBean.REPOSITORY_EVENT; Object[] itemValues = new Object[itemNames.length]; itemValues[0] = event.getRepository().getURI().toString(); switch (event.getType()) { case RepositoryAdded: itemValues[1] = FeaturesServiceMBean.REPOSITORY_EVENT_EVENT_TYPE_ADDED; break; case RepositoryRemoved: itemValues[1] = FeaturesServiceMBean.REPOSITORY_EVENT_EVENT_TYPE_REMOVED; break; default: throw new IllegalStateException("Unsupported event type: " + event.getType()); } data = new CompositeDataSupport(REPOSITORY_EVENT, itemNames, itemValues); } catch (OpenDataException e) { throw new IllegalStateException("Cannot form repository event open data", e); } }
saveState(); callListeners(new RepositoryEvent(repo, RepositoryEvent.EventType.RepositoryRemoved, false));
public void repositoryEvent(RepositoryEvent event) { try { EventAdmin eventAdmin = tracker.getService(); if (eventAdmin == null) { return; } Dictionary<String, Object> props = new Hashtable<>(); props.put(EventConstants.TYPE, event.getType()); props.put(EventConstants.EVENT, event); props.put(EventConstants.TIMESTAMP, System.currentTimeMillis()); props.put(EventConstants.REPOSITORY_URI, event.getRepository().getURI().toString()); String topic; switch (event.getType()) { case RepositoryAdded: topic = EventConstants.TOPIC_REPOSITORY_ADDED; break; case RepositoryRemoved: topic = EventConstants.TOPIC_REPOSITORY_REMOVED; break; default: throw new IllegalStateException("Unknown repository event type: " + event.getType()); } eventAdmin.postEvent(new Event(topic, props)); } catch (IllegalStateException e) { LOGGER.warn("Unable to post event to EventAdmin", e); } } }
try { Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); if (event != null && event.getRepository() != null) { Set<Group> groups = groupManager.listLocalGroups(); ClusterRepositoryEvent clusterRepositoryEvent = new ClusterRepositoryEvent(event.getRepository().getURI().toString(), event.getType()); clusterRepositoryEvent.setSourceGroup(group); clusterRepositoryEvent.setSourceNode(clusterManager.getNode()); clusterRepositoryEvent.setUninstall(false); clusterRepositoryEvent.setRefresh(false); RepositoryEvent.EventType type = event.getType(); if (!clusterRepositories.containsKey(event.getRepository().getURI().toString())) { try { clusterRepositories.put(event.getRepository().getURI().toString(), event.getRepository().getName()); } catch (Exception e) { for (Feature feature : event.getRepository().getFeatures()) { clusterRepositories.remove(event.getRepository().getURI().toString()); for (Feature feature : event.getRepository().getFeatures()) { clusterFeatures.remove(feature.getName() + "/" + feature.getVersion());
try { Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); if (event != null && event.getRepository() != null) { Set<Group> groups = groupManager.listLocalGroups(); ClusterRepositoryEvent clusterRepositoryEvent = new ClusterRepositoryEvent(event.getRepository().getURI().toString(), event.getType()); clusterRepositoryEvent.setSourceGroup(group); clusterRepositoryEvent.setSourceNode(clusterManager.getNode()); clusterRepositoryEvent.setUninstall(false); clusterRepositoryEvent.setRefresh(false); RepositoryEvent.EventType type = event.getType(); if (!clusterRepositories.containsKey(event.getRepository().getURI().toString())) { try { clusterRepositories.put(event.getRepository().getURI().toString(), event.getRepository().getName()); } catch (Exception e) { for (Feature feature : event.getRepository().getFeatures()) { clusterRepositories.remove(event.getRepository().getURI().toString()); for (Feature feature : event.getRepository().getFeatures()) { clusterFeatures.remove(feature.getName() + "/" + feature.getVersion());