private void reportMissingPlugin( final PluginManagerResponse response, final NoSuchPluginRepositoryArtifactException cause) { final GAVCoordinate gav = cause.getCoordinate(); final PluginResponse result = new PluginResponse(gav, response.getRequest()); result.setThrowable(cause); result.setAchievedGoal(PluginActivationResult.MISSING); response.addPluginResponse(result); pluginResponses.put(gav, result); }
private void reportActivationResult( final PluginManagerResponse response, final PluginResponse result) { final Event<NexusPluginManager> pluginEvent; final GAVCoordinate gav = result.getPluginCoordinates(); if (result.isSuccessful()) { pluginEvent = new PluginActivatedEvent(this, result.getPluginDescriptor()); } else { pluginEvent = new PluginRejectedEvent(this, gav, result.getThrowable()); activePlugins.remove(gav); } response.addPluginResponse(result); pluginResponses.put(gav, result); eventBus.post(pluginEvent); }
private void activatePlugin( final PluginRepositoryArtifact plugin, final PluginManagerResponse response, final Set<GAVCoordinate> installedPluginsFilteredByGA) throws NoSuchPluginRepositoryArtifactException { final GAVCoordinate pluginGAV = plugin.getCoordinate(); final PluginMetadata metadata = plugin.getPluginMetadata(); final PluginDescriptor descriptor = new PluginDescriptor(pluginGAV); descriptor.setPluginMetadata(metadata); final PluginResponse result = new PluginResponse(pluginGAV, PluginActivationRequest.ACTIVATE); result.setPluginDescriptor(descriptor); activePlugins.put(pluginGAV, descriptor); final List<GAVCoordinate> importList = new ArrayList<GAVCoordinate>(); final List<GAVCoordinate> resolvedList = new ArrayList<GAVCoordinate>(); for (final PluginDependency pd : metadata.getPluginDependencies()) { // here, a plugin might express a need for GAV1, but GAV2 might be already activated // since today we just "play" dependency resolution, we support GA resolution only // so, we say "relax version matching" and rely on luck for now it will work final GAVCoordinate gav = new GAVCoordinate(pd.getGroupId(), pd.getArtifactId(), pd.getVersion()); final PluginManagerResponse dependencyActivationResponse = activatePlugin(gav, false, installedPluginsFilteredByGA); response.addPluginManagerResponse(dependencyActivationResponse); importList.add(dependencyActivationResponse.getOriginator()); resolvedList.add(dependencyActivationResponse.getOriginator()); } descriptor.setImportedPlugins(importList); descriptor.setResolvedPlugins(resolvedList); if (!response.isSuccessful()) { result.setAchievedGoal(PluginActivationResult.BROKEN); } else { try { createPluginInjector(plugin, descriptor); result.setAchievedGoal(PluginActivationResult.ACTIVATED); } catch (final Throwable e) { result.setThrowable(e); } } reportActivationResult(response, result); }