package org.jfrog.bamboo.release.action; import com.atlassian.bamboo.task.TaskDefinition; import com.atlassian.spring.container.ContainerManager; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.jfrog.bamboo.admin.ServerConfig; import org.jfrog.bamboo.admin.ServerConfigManager; import org.jfrog.bamboo.context.AbstractBuildContext; import org.jfrog.bamboo.util.ConstantValues; import org.jfrog.bamboo.util.TaskUtils; import org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; /** * @author Aviad Shikloshi */ public class MavenSyncUtils { private static final Logger log = Logger.getLogger(MavenSyncUtils.class); private static final String NEXUS_PUSH_PLUGIN_NAME = "bintrayOsoPush"; public static boolean isPushToNexusEnabled(ServerConfigManager serverConfigManager, TaskDefinition definition, String serverId) { ServerConfigManager component = (ServerConfigManager) ContainerManager.getComponent( ConstantValues.PLUGIN_CONFIG_MANAGER_KEY); if (definition == null) { return false; } if (StringUtils.isBlank(serverId)) { log.error("No special promotion modes enabled: no selected Artifactory server Id."); return false; } ServerConfig serverConfig = component.getServerConfigById(Long.parseLong(serverId)); if (serverConfig == null) { log.error("No special promotion modes enabled: error while retrieving querying for enabled user plugins: " + "could not find Artifactory server configuration by the ID " + serverId); return false; } AbstractBuildContext context = AbstractBuildContext.createContextFromMap(definition.getConfiguration()); ArtifactoryBuildInfoClient client = TaskUtils.createClient(serverConfigManager, serverConfig, context, log); try { Map<String, List<Map>> userPluginInfo = client.getUserPluginInfo(); if (!userPluginInfo.containsKey("promotions")) { log.debug("No special promotion modes enabled: no 'execute' user plugins could be found."); return false; } List<Map> executionPlugins = userPluginInfo.get("promotions"); Iterables.find(executionPlugins, new Predicate<Map>() { @Override public boolean apply(Map pluginInfo) { if ((pluginInfo != null) && pluginInfo.containsKey("name")) { String pluginName = pluginInfo.get("name").toString(); return NEXUS_PUSH_PLUGIN_NAME.equals(pluginName); } return false; } }); return true; } catch (IOException ioe) { log.error("No special promotion modes enabled: error while retrieving querying for enabled user plugins: " + ioe.getMessage()); if (log.isDebugEnabled()) { log.debug("No special promotion modes enabled: error while retrieving querying for enabled user " + "plugins.", ioe); } } catch (NoSuchElementException nsee) { log.debug("No special promotion modes enabled: no relevant execute user plugins could be found."); } return false; } }