package org.jfrog.bamboo.admin; import com.atlassian.bamboo.configuration.GlobalAdminAction; import com.atlassian.bamboo.ww2.aware.permissions.GlobalAdminSecurityAware; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.jfrog.bamboo.util.TaskUtils; import java.io.IOException; /** * @author Aviad Shikloshi */ public class ConfigureBintrayAction extends GlobalAdminAction implements GlobalAdminSecurityAware { private static final Logger log = Logger.getLogger(ConfigureBintrayAction.class); private String bintrayUsername; private String bintrayApiKey; private String sonatypeOssUsername; private String sonatypeOssPassword; private String isSendTest; private ServerConfigManager serverConfigManager; private BintrayConfig bintrayConfig; public ConfigureBintrayAction(ServerConfigManager serverConfigManager) { this.serverConfigManager = serverConfigManager; if (serverConfigManager != null) { bintrayConfig = serverConfigManager.getBintrayConfig(); setBintrayConfig(bintrayConfig); } } public String execute() throws Exception { if (isTesting()) { bintrayTest(); return INPUT; } BintrayConfig newBintrayConf = new BintrayConfig( bintrayUsername, bintrayApiKey, sonatypeOssUsername, sonatypeOssPassword); serverConfigManager.updateBintrayConfiguration(newBintrayConf); setBintrayConfig(newBintrayConf); return SUCCESS; } public void bintrayTest() { String bintrayUrl = TaskUtils.getBintrayUrl(); try { int bintrayStatus = TaskUtils.testBintrayConnection(bintrayUrl, bintrayUsername, bintrayApiKey); if (bintrayStatus == 200) { addActionMessage("Connection with Bintray established successfully!"); } else { addActionError("Could not establish connection with Bintray. Server returned status: " + bintrayStatus); } } catch (IOException e) { addActionError("Error while checking connection to Bintray: " + e.getMessage()); } } public String doBrowse() throws Exception { return super.execute(); } public String browse() throws Exception { return super.execute(); } @Override public void validate() { clearErrorsAndMessages(); if (StringUtils.isNotEmpty(bintrayUsername)) { if (!StringUtils.isNotEmpty(bintrayApiKey)) { addFieldError("bintrayApiKey", "Please specify Bintray API key."); } } else { if (StringUtils.isNotEmpty(sonatypeOssUsername)) { addFieldError("bintrayUsername", "Bintray Username and API key are mandatory for syncing with Maven Central."); } } } public BintrayConfig getBintrayConfig() { if (this.bintrayConfig == null) { if (serverConfigManager != null) { bintrayConfig = serverConfigManager.getBintrayConfig(); setBintrayConfig(bintrayConfig); return this.bintrayConfig; } else { addActionError("Server manager not loaded!" + new RuntimeException().getStackTrace()); } } return new BintrayConfig(); } private void setBintrayConfig(BintrayConfig bintrayConfig) { if (bintrayConfig != null) { this.bintrayUsername = bintrayConfig.getBintrayUsername(); this.bintrayApiKey = bintrayConfig.getBintrayApiKey(); this.sonatypeOssUsername = bintrayConfig.getSonatypeOssUsername(); this.sonatypeOssPassword = bintrayConfig.getSonatypeOssPassword(); this.bintrayConfig = bintrayConfig; } } public boolean isMissedMigration() { return serverConfigManager.isMissedMigration(); } public String getSendTest() { return isSendTest; } public void setSendTest(String sendTest) { isSendTest = sendTest; } private boolean isTesting() { return StringUtils.isNotBlank(isSendTest); } public String getBintrayUsername() { return bintrayUsername; } public void setBintrayUsername(String bintrayUsername) { this.bintrayUsername = StringUtils.trim(bintrayUsername); } public String getBintrayApiKey() { return bintrayApiKey; } public void setBintrayApiKey(String bintrayApiKey) { this.bintrayApiKey = bintrayApiKey; } public String getSonatypeOssUsername() { return sonatypeOssUsername; } public void setSonatypeOssUsername(String sonatypeOssUsername) { this.sonatypeOssUsername = sonatypeOssUsername; } public String getSonatypeOssPassword() { return sonatypeOssPassword; } public void setSonatypeOssPassword(String sonatypeOssPassword) { this.sonatypeOssPassword = sonatypeOssPassword; } }