diff --git a/pom.xml b/pom.xml
index 40e298a2..1d0a9e88 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
- 9.6.0
+ 10.2.0
${bamboo.version}
${project.groupId}.${project.artifactId}
@@ -36,14 +36,15 @@
version and not as a key regarding the Atlassian plugin descriptor -->
${project.groupId}.${project.artifactId}-${project.version}
UTF-8
- 11
+ 17
${java.version}
${java.version}
true
- 2.41.14
+ 2.41.22
4.33.13
- 8.11.4
+ 9.1.4
+ 5.0.2
@@ -113,6 +114,7 @@
commons-codec
commons-codec
1.16.0
+ test
javax.servlet
@@ -170,6 +172,10 @@
guava
com.google.guava
+
+ com.google.code.findbugs
+ jsr305
+
@@ -209,6 +215,10 @@
com.google.guava
guava
+
+ com.google.code.findbugs
+ jsr305
+
@@ -221,6 +231,10 @@
org.slf4j
slf4j-simple
+
+ com.google.code.findbugs
+ jsr305
+
@@ -241,6 +255,14 @@
org.slf4j
slf4j-simple
+
+ com.google.code.findbugs
+ jsr305
+
+
+ guava
+ com.google.guava
+
@@ -269,18 +291,40 @@
org.codehaus.groovy
groovy-all
+
+ com.google.code.findbugs
+ jsr305
+
+
+ guava
+ com.google.guava
+
+
+ org.jfrog.artifactory.client
+ artifactory-java-client-api
+ 2.17.0
+ test
+
com.fasterxml.jackson.core
jackson-core
- 2.14.1
+ 2.17.2
+ provided
com.fasterxml.jackson.core
jackson-databind
- 2.14.1
+ 2.17.2
+ provided
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ 2.17.2
+ provided
@@ -306,6 +350,10 @@
org.slf4j
slf4j-log4j12
+
+ com.google.code.findbugs
+ jsr305
+
@@ -344,6 +392,10 @@
com.tek42.perforce
p4java
+
+ com.google.code.findbugs
+ jsr305
+
@@ -357,6 +409,10 @@
com.tek42.perforce
p4java
+
+ com.google.code.findbugs
+ jsr305
+
@@ -445,6 +501,12 @@
atlassian-plugins-osgi
7.1.1
provided
+
+
+ com.google.code.findbugs
+ jsr305
+
+
@@ -455,9 +517,9 @@
com.atlassian.plugin
- atlassian-spring-scanner-runtime
- 1.2.13
- runtime
+ atlassian-spring-scanner-annotation
+ ${atlassian.spring.scanner.version}
+ provided
@@ -493,7 +555,6 @@
${bamboo.version}
${bamboo.data.version}
- true
${basedir}/src/test/resources/bamboo-home.zip
-Xms512m -Xmx1024m -server
-Datlassian.bamboo.build.disable=true -Datlassian.bamboo.branch.detection.disable=true
@@ -502,7 +563,19 @@
the active branch
${git.branch}
- false
+
+ ${atlassian.plugin.key}
+ ${atlassian.plugin.key}
+ *
+
+
+
+ !com.opensymphony.*,
+ !org.objectweb.asm.*,
+ *;resolution:="optional",
+
+ true
+
bamboo
@@ -536,7 +609,7 @@
com.atlassian.plugin
atlassian-spring-scanner-maven-plugin
- 1.2.13
+ ${atlassian.spring.scanner.version}
@@ -688,7 +761,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.11.0
+ 3.13.0
${java.version}
${java.version}
diff --git a/src/main/java/org/jfrog/bamboo/admin/ArtifactoryConfigServlet.java b/src/main/java/org/jfrog/bamboo/admin/ArtifactoryConfigServlet.java
index 354b5d6a..371360f2 100644
--- a/src/main/java/org/jfrog/bamboo/admin/ArtifactoryConfigServlet.java
+++ b/src/main/java/org/jfrog/bamboo/admin/ArtifactoryConfigServlet.java
@@ -16,6 +16,7 @@
package org.jfrog.bamboo.admin;
+import com.atlassian.plugin.spring.scanner.annotation.imports.BambooImport;
import com.atlassian.sal.api.user.UserManager;
import com.atlassian.sal.api.user.UserProfile;
import org.apache.commons.httpclient.HttpStatus;
@@ -26,6 +27,7 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
+import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -44,9 +46,10 @@ public class ArtifactoryConfigServlet extends HttpServlet {
private static final Logger log = LogManager.getLogger(ArtifactoryConfigServlet.class);
private ServerConfigManager serverConfigManager;
- private final UserManager userManager;
+ private UserManager userManager;
- public ArtifactoryConfigServlet(ServerConfigManager serverConfigManager, UserManager userManager) {
+ @Inject
+ public ArtifactoryConfigServlet(@BambooImport UserManager userManager, ServerConfigManager serverConfigManager) {
this.userManager = userManager;
this.serverConfigManager = serverConfigManager;
}
diff --git a/src/main/java/org/jfrog/bamboo/admin/ArtifactoryServerConfigAction.java b/src/main/java/org/jfrog/bamboo/admin/ArtifactoryServerConfigAction.java
index 3f82b62f..1d16d3c9 100644
--- a/src/main/java/org/jfrog/bamboo/admin/ArtifactoryServerConfigAction.java
+++ b/src/main/java/org/jfrog/bamboo/admin/ArtifactoryServerConfigAction.java
@@ -28,6 +28,7 @@
import org.jfrog.build.extractor.clientConfiguration.ArtifactoryManagerBuilder;
import org.jfrog.build.extractor.clientConfiguration.client.artifactory.ArtifactoryManager;
+import javax.inject.Inject;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
@@ -48,15 +49,17 @@ public class ArtifactoryServerConfigAction extends BambooActionSupport implement
private String password;
private int timeout;
private String isSendTest;
+ @Inject
+ private ServerConfigManager serverConfigManager;
-
- private transient ServerConfigManager serverConfigManager;
-
- public ArtifactoryServerConfigAction(ServerConfigManager serverConfigManager) {
- this.serverConfigManager = serverConfigManager;
+ public ArtifactoryServerConfigAction() {
mode = "add";
timeout = 300;
- }
+ }
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
@Override
public void validate() {
@@ -80,6 +83,10 @@ public String doAdd() throws Exception {
return INPUT;
}
+ public String create() throws Exception {
+ return doCreate();
+ }
+
public String doCreate() throws Exception {
if (isTesting()) {
testConnection();
@@ -91,15 +98,22 @@ public String doCreate() throws Exception {
return SUCCESS;
}
- public String doEdit() throws Exception {
+ public String edit() throws IllegalArgumentException {
+ return doEdit();
+ }
+
+ public String doEdit() throws IllegalArgumentException {
ServerConfig serverConfig = serverConfigManager.getServerConfigById(serverId);
if (serverConfig == null) {
throw new IllegalArgumentException("Could not find Artifactory server configuration by the ID " + serverId);
}
updateFieldsFromServerConfig(serverConfig);
return INPUT;
- }
+ }
+ public String update() throws Exception {
+ return doUpdate();
+ }
public String doUpdate() throws Exception {
// Decrypt password from UI, if encrypted.
@@ -114,6 +128,10 @@ public String doUpdate() throws Exception {
return SUCCESS;
}
+ public String delete() throws Exception {
+ return doDelete();
+ }
+
public String doDelete() throws Exception {
serverConfigManager.deleteServerConfiguration(getServerId());
return SUCCESS;
diff --git a/src/main/java/org/jfrog/bamboo/admin/BuildServlet.java b/src/main/java/org/jfrog/bamboo/admin/BuildServlet.java
index 849fbf6b..260ac5b8 100644
--- a/src/main/java/org/jfrog/bamboo/admin/BuildServlet.java
+++ b/src/main/java/org/jfrog/bamboo/admin/BuildServlet.java
@@ -28,6 +28,7 @@
import org.apache.logging.log4j.Logger;
import org.jfrog.bamboo.util.ConstantValues;
+import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -43,11 +44,16 @@
public class BuildServlet extends HttpServlet {
private static final Logger log = LogManager.getLogger(BuildServlet.class);
+ @Inject
private PlanManager planManager;
- private final UserManager userManager;
+ @Inject
+ private UserManager userManager;
- public BuildServlet(UserManager userManager) {
- planManager = (PlanManager) ContainerManager.getComponent("planManager");
+ public void setPlanManager(PlanManager planManager) {
+ this.planManager = planManager;
+ }
+
+ public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
diff --git a/src/main/java/org/jfrog/bamboo/admin/ExistingArtifactoryServerAction.java b/src/main/java/org/jfrog/bamboo/admin/ExistingArtifactoryServerAction.java
index b609bdd3..07494405 100644
--- a/src/main/java/org/jfrog/bamboo/admin/ExistingArtifactoryServerAction.java
+++ b/src/main/java/org/jfrog/bamboo/admin/ExistingArtifactoryServerAction.java
@@ -20,6 +20,7 @@
import com.atlassian.bamboo.ww2.actions.admin.user.AbstractEntityPagerSupport;
import com.atlassian.bamboo.ww2.aware.permissions.GlobalAdminSecurityAware;
+import javax.inject.Inject;
import java.util.List;
/**
@@ -29,11 +30,12 @@
*/
public class ExistingArtifactoryServerAction extends AbstractEntityPagerSupport implements GlobalAdminSecurityAware {
- private ServerConfigManager serverConfigManager;
+ @Inject
+ private ServerConfigManager serverConfigManager;
- public ExistingArtifactoryServerAction(ServerConfigManager serverConfigManager) {
- this.serverConfigManager = serverConfigManager;
- }
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
public String doBrowse() throws Exception {
return super.execute();
diff --git a/src/main/java/org/jfrog/bamboo/admin/ServerConfigManager.java b/src/main/java/org/jfrog/bamboo/admin/ServerConfigManager.java
index 79ec1d7d..6867b43d 100644
--- a/src/main/java/org/jfrog/bamboo/admin/ServerConfigManager.java
+++ b/src/main/java/org/jfrog/bamboo/admin/ServerConfigManager.java
@@ -16,376 +16,37 @@
package org.jfrog.bamboo.admin;
-import com.atlassian.bamboo.bandana.BambooBandanaContext;
-import com.atlassian.bamboo.bandana.PlanAwareBandanaContext;
-import com.atlassian.bamboo.variable.CustomVariableContext;
-import com.atlassian.bandana.BandanaManager;
-import com.atlassian.spring.container.ContainerManager;
-import com.google.common.collect.Lists;
-import org.apache.commons.lang.StringUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectWriter;
-import org.jetbrains.annotations.Nullable;
-import org.jfrog.bamboo.security.EncryptionHelper;
-import org.jfrog.bamboo.util.BuildInfoLog;
-import org.jfrog.bamboo.util.TaskUtils;
-import org.jfrog.build.extractor.clientConfiguration.ArtifactoryManagerBuilder;
-import org.jfrog.build.extractor.clientConfiguration.client.artifactory.ArtifactoryManager;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.fasterxml.jackson.core.JsonProcessingException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.Serializable;
import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Field;
-import java.nio.charset.StandardCharsets;
-import java.util.Base64;
import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
/**
* Global Artifactory server configuration manager
*
* @author Noam Y. Tenne
*/
-public class ServerConfigManager implements Serializable {
-
- private transient Logger log = LogManager.getLogger(ServerConfigManager.class);
-
- private static final String ARTIFACTORY_CONFIG_KEY = "org.jfrog.bamboo.server.configurations.v2";
- private final List configuredServers = new CopyOnWriteArrayList<>();
- private BandanaManager bandanaManager = null;
- private AtomicLong nextAvailableId = new AtomicLong(0);
- private CustomVariableContext customVariableContext;
-
-
- public List getAllServerConfigs() {
- return Lists.newArrayList(configuredServers);
- }
-
- public ServerConfig getServerConfigById(long id) {
- for (ServerConfig configuredServer : configuredServers) {
- if (configuredServer.getId() == id) {
- return configuredServer;
- }
- }
-
- return null;
- }
-
- public static ServerConfigManager getInstance() {
- ServerConfigManager serverConfigManager = new ServerConfigManager();
- ContainerManager.autowireComponent(serverConfigManager);
- return serverConfigManager;
- }
-
- public void addServerConfiguration(ServerConfig serverConfig) {
- serverConfig.setId(nextAvailableId.getAndIncrement());
- configuredServers.add(serverConfig);
- try {
- persist();
- } catch (IllegalAccessException | UnsupportedEncodingException e) {
- log.error("Could not add Artifactory configuration.", e);
- }
- }
-
- public void deleteServerConfiguration(final long id) {
- for (ServerConfig configuredServer : configuredServers) {
- if (configuredServer.getId() == id) {
- configuredServers.remove(configuredServer);
- try {
- persist();
- } catch (IllegalAccessException | UnsupportedEncodingException e) {
- log.error("Could not delete Artifactory configuration.", e);
- }
- break;
- }
- }
- }
-
- public void updateServerConfiguration(ServerConfig updated) {
- for (ServerConfig configuredServer : configuredServers) {
- if (configuredServer.getId() == updated.getId()) {
- configuredServer.setUrl(updated.getUrl());
- configuredServer.setUsername(updated.getUsername());
- configuredServer.setPassword(updated.getPassword());
- configuredServer.setTimeout(updated.getTimeout());
- try {
- persist();
- } catch (IllegalAccessException | UnsupportedEncodingException e) {
- log.error("Could not update Artifactory configuration.", e);
- }
- break;
- }
- }
- }
-
- @Autowired
- public void setBandanaManager(BandanaManager bandanaManager) {
- this.bandanaManager = bandanaManager;
- try {
- setArtifactoryServers(bandanaManager);
- } catch (InstantiationException | IllegalAccessException | IOException e) {
- log.error("Could not load Artifactory configuration.", e);
- }
- }
-
- private void setArtifactoryServers(BandanaManager bandanaManager)
- throws IOException, InstantiationException, IllegalAccessException {
-
- String existingArtifactoryConfig = (String) bandanaManager.getValue(PlanAwareBandanaContext.GLOBAL_CONTEXT, ARTIFACTORY_CONFIG_KEY);
- if (StringUtils.isNotBlank(existingArtifactoryConfig)) {
- List serverConfigList = getServersFromXml(existingArtifactoryConfig);
- for (Object serverConfig : serverConfigList) {
- // Because of some class loader issues we had to get a workaround,
- // we serialize and deserialize the serverConfig object.
- ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
- String json = ow.writeValueAsString(serverConfig);
- ServerConfig tempServerConfig = new ObjectMapper().readValue(json, ServerConfig.class);
-
- if (nextAvailableId.get() <= tempServerConfig.getId()) {
- nextAvailableId.set(tempServerConfig.getId() + 1);
- }
-
- configuredServers.add(new ServerConfig(tempServerConfig.getId(), tempServerConfig.getUrl(), tempServerConfig.getUsername(),
- EncryptionHelper.decrypt(tempServerConfig.getPassword()), tempServerConfig.getTimeout()));
- }
- }
- }
-
- public List getDeployableRepos(long serverId) {
- return getDeployableRepos(serverId, null, null);
- }
-
- public List getDeployableRepos(long serverId, HttpServletRequest req, HttpServletResponse resp) {
- ServerConfig serverConfig = getServerConfigById(serverId);
- if (serverConfig == null) {
- log.error("Error while retrieving target repository list: Could not find Artifactory server " +
- "configuration by the ID " + serverId);
- return Lists.newArrayList();
- }
- ArtifactoryManagerBuilder managerBuilder;
-
- String serverUrl = substituteVariables(serverConfig.getUrl());
- String username = null;
- String password = null;
- if (req != null) {
- username = req.getParameter("user");
- password = req.getParameter("password");
- }
- if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) {
- password = EncryptionHelper.decryptIfNeeded(password);
- } else {
- username = serverConfig.getUsername();
- password = serverConfig.getPassword();
- }
- username = substituteVariables(username);
- password = substituteVariables(password);
-
- if (StringUtils.isBlank(username)) {
- managerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(new ServerConfig(serverConfig.getId(), serverUrl,
- "", "", serverConfig.getTimeout()), new BuildInfoLog(log));
- } else {
- managerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(new ServerConfig(serverConfig.getId(), serverUrl, username,
- password, serverConfig.getTimeout()), new BuildInfoLog(log));
- }
-
- try (ArtifactoryManager client = managerBuilder.build()) {
- return client.getLocalRepositoriesKeys();
- } catch (IOException ioe) {
- log.error("Error while retrieving target repository list from: " + serverUrl, ioe);
- try {
- if (resp != null && ioe.getMessage().contains("401"))
- resp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
- if (resp != null && ioe.getMessage().contains("404"))
- resp.sendError(HttpServletResponse.SC_NOT_FOUND);
- } catch (IOException e) {
- log.error("Error while sending error to response", e);
- }
-
- return Lists.newArrayList();
- }
- }
-
- /**
- * Substitute (replace) Bamboo variable names with their defined values
- */
- public String substituteVariables(String s) {
- return s != null ? customVariableContext.substituteString(s) : null;
- }
-
- public List getResolvingRepos(long serverId, HttpServletRequest req, HttpServletResponse resp) {
- ServerConfig serverConfig = getServerConfigById(serverId);
- if (serverConfig == null) {
- log.error("Error while retrieving resolving repository list: Could not find Artifactory server " +
- "configuration by the ID " + serverId);
- return Lists.newArrayList();
- }
- ArtifactoryManagerBuilder managerBuilder;
-
- String serverUrl = substituteVariables(serverConfig.getUrl());
- String username;
- String password;
- if (StringUtils.isNotBlank(req.getParameter("user")) && StringUtils.isNotBlank(req.getParameter("password"))) {
- username = substituteVariables(req.getParameter("user"));
- password = substituteVariables(EncryptionHelper.decryptIfNeeded(req.getParameter("password")));
- } else {
- username = substituteVariables(serverConfig.getUsername());
- password = substituteVariables(serverConfig.getPassword());
- }
-
- if (StringUtils.isBlank(username)) {
- managerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(new ServerConfig(serverConfig.getId(), serverUrl,
- "", "", serverConfig.getTimeout()), new BuildInfoLog(log));
- } else {
- managerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(new ServerConfig(serverConfig.getId(), serverUrl, username,
- password, serverConfig.getTimeout()), new BuildInfoLog(log));
- }
-
- managerBuilder.setConnectionTimeout(serverConfig.getTimeout());
-
- try (ArtifactoryManager client = managerBuilder.build()) {
- return client.getVirtualRepositoriesKeys();
- } catch (IOException ioe) {
- log.error("Error while retrieving resolving repository list from: " + serverUrl, ioe);
- try {
- if (ioe.getMessage().contains("401"))
- resp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
- if (ioe.getMessage().contains("404"))
- resp.sendError(HttpServletResponse.SC_NOT_FOUND);
- } catch (IOException e) {
- log.error("Error while sending error to response", e);
- }
- return Lists.newArrayList();
- }
- }
-
- private synchronized void persist() throws IllegalAccessException, UnsupportedEncodingException {
- List serverConfigs = Lists.newArrayList();
-
- for (ServerConfig serverConfig : configuredServers) {
- serverConfigs.add(new ServerConfig(serverConfig.getId(), serverConfig.getUrl(), serverConfig.getUsername(),
- EncryptionHelper.encryptForConfig(serverConfig.getPassword()), serverConfig.getTimeout()));
- }
- String serverConfigsString = toXMLString(serverConfigs);
- bandanaManager.setValue(PlanAwareBandanaContext.GLOBAL_CONTEXT, ARTIFACTORY_CONFIG_KEY, serverConfigsString);
- }
-
- @Autowired
- public void setCustomVariableContext(CustomVariableContext customVariableContext) {
- this.customVariableContext = customVariableContext;
- }
-
- public class BandanaContext extends PlanAwareBandanaContext{
-
- public BandanaContext(@Nullable BambooBandanaContext parentContext, long planId, long chanId, @Nullable String pluginKey) {
- super(parentContext, planId, chanId, pluginKey);
- }
- }
+public interface ServerConfigManager {
- private List getServersFromXml(String stringXml) throws IllegalAccessException, InstantiationException {
- List serverConfigs = Lists.newArrayList();
- List stringServerConfigs = findAllObjects(ServerConfig.class, stringXml);
- for (String stringServerConfig : stringServerConfigs) {
- serverConfigs.add(getObjectFromStringXml(stringServerConfig, ServerConfig.class));
- }
- return serverConfigs;
- }
+ List getAllServerConfigs();
- private T getObjectFromStringXml(String stringT, Class tClass) throws IllegalAccessException, InstantiationException {
- T object = tClass.newInstance();
- boolean accsessable;
- String value;
- for (Field field : tClass.getDeclaredFields()) {
- accsessable = field.isAccessible();
- field.setAccessible(true);
- value = findFirstObject(field.getName(), stringT, true);
- if (field.getType().equals(long.class)) {
- field.set(object, Long.parseLong(value));
- } else if (field.getType().equals(int.class)) {
- field.set(object, Integer.parseInt(value));
- } else {
- field.set(object, findFirstObject(field.getName(), stringT, true));
- }
- field.setAccessible(accsessable);
- }
- return object;
- }
+ ServerConfig getServerConfigById(long id);
- private List findAllObjects(Class providedClass, String scannedString) {
- List foundStrings = Lists.newArrayList();
- String foundString = findFirstObject(providedClass.getSimpleName(), scannedString, false);
- while (!"".equals(foundString)) {
- foundStrings.add(foundString);
- scannedString = scannedString.replaceFirst(foundString, "");
- foundString = findFirstObject(providedClass.getSimpleName(), scannedString, false);
- }
- return foundStrings;
- }
+ void addServerConfiguration(ServerConfig serverConfig);
- /**
- * Returns the found string or empty string if not found
- * @param objectToFind
- * @param stringToScan
- * @return
- */
- private String findFirstObject(String objectToFind, String stringToScan, boolean dataOnly) {
- String patternString = String.format("<%s>?(.*?)%s>", objectToFind, objectToFind);
- Pattern pattern = Pattern.compile(patternString);
- Matcher matcher = pattern.matcher(stringToScan);
- if (matcher.find()) {
- if (dataOnly) {
- return new String(Base64.getDecoder().decode(matcher.group(1).getBytes()));
- }
- return matcher.group(0);
- }
- return "";
- }
+ void deleteServerConfiguration(final long id);
- private String toXMLString(List serverConfigs) throws IllegalAccessException, UnsupportedEncodingException {
- StringBuilder stringBuilder = new StringBuilder();
- openTag(stringBuilder, "List");
- for (ServerConfig serverConfig : serverConfigs) {
- stringBuilder.append(toXMLString(serverConfig));
- }
- closeTag(stringBuilder, "List");
- return stringBuilder.toString();
- }
+ void updateServerConfiguration(ServerConfig updated);
- private String toXMLString(Object object) throws IllegalAccessException, UnsupportedEncodingException {
- StringBuilder stringBuilder = new StringBuilder();
- openTag(stringBuilder, object.getClass().getSimpleName());
- for (Field field : object.getClass().getDeclaredFields()) {
- field.setAccessible(true);
- String value = field.get(object) == null ? "" : field.get(object).toString();
- appendAttribute(stringBuilder, field.getName(), value);
- }
- closeTag(stringBuilder, object.getClass().getSimpleName());
- return stringBuilder.toString();
- }
+ List getDeployableRepos(long serverId);
- private void appendAttribute(StringBuilder stringBuilder, String field, String value) throws UnsupportedEncodingException {
- openTag(stringBuilder, field);
- // Encoding the value to Base64 to prevent saving special chars like % to the database
- stringBuilder.append(Base64.getEncoder().encodeToString(value.getBytes(StandardCharsets.UTF_8)));
- closeTag(stringBuilder, field);
- }
+ List getDeployableRepos(long serverId, HttpServletRequest req, HttpServletResponse resp);
- private void openTag(StringBuilder stringBuilder, String fieldName) {
- stringBuilder.append("<");
- stringBuilder.append(fieldName);
- stringBuilder.append(">");
- }
+ String substituteVariables(String s);
+
+ List getResolvingRepos(long serverId, HttpServletRequest req, HttpServletResponse resp);
- private void closeTag(StringBuilder stringBuilder, String fieldName) {
- stringBuilder.append("");
- stringBuilder.append(fieldName);
- stringBuilder.append(">");
- }
+ void persist() throws IllegalAccessException, UnsupportedEncodingException, JsonProcessingException;
}
diff --git a/src/main/java/org/jfrog/bamboo/admin/ServerConfigManagerImpl.java b/src/main/java/org/jfrog/bamboo/admin/ServerConfigManagerImpl.java
new file mode 100644
index 00000000..aaa17522
--- /dev/null
+++ b/src/main/java/org/jfrog/bamboo/admin/ServerConfigManagerImpl.java
@@ -0,0 +1,393 @@
+/*
+ * Copyright (C) 2010 JFrog Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jfrog.bamboo.admin;
+
+import com.atlassian.bamboo.bandana.BambooBandanaContext;
+import com.atlassian.bamboo.bandana.PlanAwareBandanaContext;
+import com.atlassian.bamboo.variable.CustomVariableContext;
+import com.atlassian.bandana.BandanaManager;
+import com.atlassian.spring.container.ContainerManager;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import org.jetbrains.annotations.Nullable;
+import org.jfrog.bamboo.security.EncryptionHelper;
+import org.jfrog.bamboo.util.BuildInfoLog;
+import org.jfrog.bamboo.util.TaskUtils;
+import org.jfrog.build.extractor.clientConfiguration.ArtifactoryManagerBuilder;
+import org.jfrog.build.extractor.clientConfiguration.client.artifactory.ArtifactoryManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Global Artifactory server configuration manager
+ *
+ * @author Noam Y. Tenne
+ */
+@Component
+public class ServerConfigManagerImpl implements ServerConfigManager {
+
+ private transient Logger log = LogManager.getLogger(ServerConfigManager.class);
+
+ private static final String ARTIFACTORY_CONFIG_KEY = "org.jfrog.bamboo.server.configurations.v2";
+ private final List configuredServers = new CopyOnWriteArrayList<>();
+ private BandanaManager bandanaManager;
+ private AtomicLong nextAvailableId = new AtomicLong(0);
+ private CustomVariableContext customVariableContext;
+
+ @Inject
+ public ServerConfigManagerImpl(@ComponentImport BandanaManager bandanaManager, @ComponentImport CustomVariableContext customVariableContext) {
+ this.setBandanaManager(bandanaManager);
+ this.customVariableContext = customVariableContext;
+ }
+
+ public List getAllServerConfigs() {
+ return Lists.newArrayList(configuredServers);
+ }
+
+ public ServerConfig getServerConfigById(long id) {
+ for (ServerConfig configuredServer : configuredServers) {
+ if (configuredServer.getId() == id) {
+ return configuredServer;
+ }
+ }
+
+ return null;
+ }
+
+ public void addServerConfiguration(ServerConfig serverConfig) {
+ serverConfig.setId(nextAvailableId.getAndIncrement());
+ configuredServers.add(serverConfig);
+ try {
+ persist();
+ } catch (IllegalAccessException | UnsupportedEncodingException e) {
+ log.error("Could not add Artifactory configuration.", e);
+ }
+ }
+
+ public void deleteServerConfiguration(final long id) {
+ for (ServerConfig configuredServer : configuredServers) {
+ if (configuredServer.getId() == id) {
+ configuredServers.remove(configuredServer);
+ try {
+ persist();
+ } catch (IllegalAccessException | UnsupportedEncodingException e) {
+ log.error("Could not delete Artifactory configuration.", e);
+ }
+ break;
+ }
+ }
+ }
+
+ public void updateServerConfiguration(ServerConfig updated) {
+ for (ServerConfig configuredServer : configuredServers) {
+ if (configuredServer.getId() == updated.getId()) {
+ configuredServer.setUrl(updated.getUrl());
+ configuredServer.setUsername(updated.getUsername());
+ configuredServer.setPassword(updated.getPassword());
+ configuredServer.setTimeout(updated.getTimeout());
+ try {
+ persist();
+ } catch (IllegalAccessException | UnsupportedEncodingException e) {
+ log.error("Could not update Artifactory configuration.", e);
+ }
+ break;
+ }
+ }
+ }
+
+ public void setBandanaManager(BandanaManager bandanaManager) {
+ this.bandanaManager = bandanaManager;
+ try {
+ setArtifactoryServers(bandanaManager);
+ } catch (InstantiationException | IllegalAccessException | IOException e) {
+ log.error("Could not load Artifactory configuration.", e);
+ }
+ }
+
+ public void setCustomVariableContext(CustomVariableContext customVariableContext) {
+ this.customVariableContext = customVariableContext;
+ }
+
+
+ private void setArtifactoryServers(BandanaManager bandanaManager)
+ throws IOException, InstantiationException, IllegalAccessException {
+
+ String existingArtifactoryConfig = (String) bandanaManager.getValue(PlanAwareBandanaContext.GLOBAL_CONTEXT, ARTIFACTORY_CONFIG_KEY);
+ if (StringUtils.isNotBlank(existingArtifactoryConfig)) {
+ List serverConfigList = getServersFromXml(existingArtifactoryConfig);
+ for (Object serverConfig : serverConfigList) {
+ // Because of some class loader issues we had to get a workaround,
+ // we serialize and deserialize the serverConfig object.
+ ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
+ String json = ow.writeValueAsString(serverConfig);
+ ServerConfig tempServerConfig = new ObjectMapper().readValue(json, ServerConfig.class);
+
+ if (nextAvailableId.get() <= tempServerConfig.getId()) {
+ nextAvailableId.set(tempServerConfig.getId() + 1);
+ }
+
+ configuredServers.add(new ServerConfig(tempServerConfig.getId(), tempServerConfig.getUrl(), tempServerConfig.getUsername(),
+ EncryptionHelper.decrypt(tempServerConfig.getPassword()), tempServerConfig.getTimeout()));
+ }
+ }
+ }
+
+ public List getDeployableRepos(long serverId) {
+ return getDeployableRepos(serverId, null, null);
+ }
+
+ public List getDeployableRepos(long serverId, HttpServletRequest req, HttpServletResponse resp) {
+ ServerConfig serverConfig = getServerConfigById(serverId);
+ if (serverConfig == null) {
+ log.error("Error while retrieving target repository list: Could not find Artifactory server " +
+ "configuration by the ID " + serverId);
+ return Lists.newArrayList();
+ }
+ ArtifactoryManagerBuilder managerBuilder;
+
+ String serverUrl = substituteVariables(serverConfig.getUrl());
+ String username = null;
+ String password = null;
+ if (req != null) {
+ username = req.getParameter("user");
+ password = req.getParameter("password");
+ }
+ if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) {
+ password = EncryptionHelper.decryptIfNeeded(password);
+ } else {
+ username = serverConfig.getUsername();
+ password = serverConfig.getPassword();
+ }
+ username = substituteVariables(username);
+ password = substituteVariables(password);
+
+ if (StringUtils.isBlank(username)) {
+ managerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(new ServerConfig(serverConfig.getId(), serverUrl,
+ "", "", serverConfig.getTimeout()), new BuildInfoLog(log));
+ } else {
+ managerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(new ServerConfig(serverConfig.getId(), serverUrl, username,
+ password, serverConfig.getTimeout()), new BuildInfoLog(log));
+ }
+
+ try (ArtifactoryManager client = managerBuilder.build()) {
+ return client.getLocalRepositoriesKeys();
+ } catch (IOException ioe) {
+ log.error("Error while retrieving target repository list from: " + serverUrl, ioe);
+ try {
+ if (resp != null && ioe.getMessage().contains("401"))
+ resp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ if (resp != null && ioe.getMessage().contains("404"))
+ resp.sendError(HttpServletResponse.SC_NOT_FOUND);
+ } catch (IOException e) {
+ log.error("Error while sending error to response", e);
+ }
+
+ return Lists.newArrayList();
+ }
+ }
+
+ /**
+ * Substitute (replace) Bamboo variable names with their defined values
+ */
+ public String substituteVariables(String s) {
+ return s != null ? customVariableContext.substituteString(s) : null;
+ }
+
+ public List getResolvingRepos(long serverId, HttpServletRequest req, HttpServletResponse resp) {
+ ServerConfig serverConfig = getServerConfigById(serverId);
+ if (serverConfig == null) {
+ log.error("Error while retrieving resolving repository list: Could not find Artifactory server " +
+ "configuration by the ID " + serverId);
+ return Lists.newArrayList();
+ }
+ ArtifactoryManagerBuilder managerBuilder;
+
+ String serverUrl = substituteVariables(serverConfig.getUrl());
+ String username;
+ String password;
+ if (StringUtils.isNotBlank(req.getParameter("user")) && StringUtils.isNotBlank(req.getParameter("password"))) {
+ username = substituteVariables(req.getParameter("user"));
+ password = substituteVariables(EncryptionHelper.decryptIfNeeded(req.getParameter("password")));
+ } else {
+ username = substituteVariables(serverConfig.getUsername());
+ password = substituteVariables(serverConfig.getPassword());
+ }
+
+ if (StringUtils.isBlank(username)) {
+ managerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(new ServerConfig(serverConfig.getId(), serverUrl,
+ "", "", serverConfig.getTimeout()), new BuildInfoLog(log));
+ } else {
+ managerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(new ServerConfig(serverConfig.getId(), serverUrl, username,
+ password, serverConfig.getTimeout()), new BuildInfoLog(log));
+ }
+
+ managerBuilder.setConnectionTimeout(serverConfig.getTimeout());
+
+ try (ArtifactoryManager client = managerBuilder.build()) {
+ return client.getVirtualRepositoriesKeys();
+ } catch (IOException ioe) {
+ log.error("Error while retrieving resolving repository list from: " + serverUrl, ioe);
+ try {
+ if (ioe.getMessage().contains("401"))
+ resp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ if (ioe.getMessage().contains("404"))
+ resp.sendError(HttpServletResponse.SC_NOT_FOUND);
+ } catch (IOException e) {
+ log.error("Error while sending error to response", e);
+ }
+ return Lists.newArrayList();
+ }
+ }
+
+ public synchronized void persist() throws IllegalAccessException, UnsupportedEncodingException {
+ List serverConfigs = Lists.newArrayList();
+
+ for (ServerConfig serverConfig : configuredServers) {
+ serverConfigs.add(new ServerConfig(serverConfig.getId(), serverConfig.getUrl(), serverConfig.getUsername(),
+ EncryptionHelper.encryptForConfig(serverConfig.getPassword()), serverConfig.getTimeout()));
+ }
+ String serverConfigsString = toXMLString(serverConfigs);
+ bandanaManager.setValue(PlanAwareBandanaContext.GLOBAL_CONTEXT, ARTIFACTORY_CONFIG_KEY, serverConfigsString);
+ }
+
+ public class BandanaContext extends PlanAwareBandanaContext{
+
+ public BandanaContext(@Nullable BambooBandanaContext parentContext, long planId, long chanId, @Nullable String pluginKey) {
+ super(parentContext, planId, chanId, pluginKey);
+ }
+ }
+
+ private List getServersFromXml(String stringXml) throws IllegalAccessException, InstantiationException {
+ List serverConfigs = Lists.newArrayList();
+ List stringServerConfigs = findAllObjects(ServerConfig.class, stringXml);
+ for (String stringServerConfig : stringServerConfigs) {
+ serverConfigs.add(getObjectFromStringXml(stringServerConfig, ServerConfig.class));
+ }
+ return serverConfigs;
+ }
+
+ private T getObjectFromStringXml(String stringT, Class tClass) throws IllegalAccessException, InstantiationException {
+ T object = tClass.newInstance();
+ boolean accsessable;
+ String value;
+ for (Field field : tClass.getDeclaredFields()) {
+ accsessable = field.isAccessible();
+ field.setAccessible(true);
+ value = findFirstObject(field.getName(), stringT, true);
+ if (field.getType().equals(long.class)) {
+ field.set(object, Long.parseLong(value));
+ } else if (field.getType().equals(int.class)) {
+ field.set(object, Integer.parseInt(value));
+ } else {
+ field.set(object, findFirstObject(field.getName(), stringT, true));
+ }
+ field.setAccessible(accsessable);
+ }
+ return object;
+ }
+
+ private List findAllObjects(Class providedClass, String scannedString) {
+ List foundStrings = Lists.newArrayList();
+ String foundString = findFirstObject(providedClass.getSimpleName(), scannedString, false);
+ while (!"".equals(foundString)) {
+ foundStrings.add(foundString);
+ scannedString = scannedString.replaceFirst(foundString, "");
+ foundString = findFirstObject(providedClass.getSimpleName(), scannedString, false);
+ }
+ return foundStrings;
+ }
+
+ /**
+ * Returns the found string or empty string if not found
+ * @param objectToFind
+ * @param stringToScan
+ * @return
+ */
+ private String findFirstObject(String objectToFind, String stringToScan, boolean dataOnly) {
+ String patternString = String.format("<%s>?(.*?)%s>", objectToFind, objectToFind);
+ Pattern pattern = Pattern.compile(patternString);
+ Matcher matcher = pattern.matcher(stringToScan);
+ if (matcher.find()) {
+ if (dataOnly) {
+ return new String(Base64.getDecoder().decode(matcher.group(1).getBytes()));
+ }
+ return matcher.group(0);
+ }
+ return "";
+ }
+
+ private String toXMLString(List serverConfigs) throws IllegalAccessException, UnsupportedEncodingException {
+ StringBuilder stringBuilder = new StringBuilder();
+ openTag(stringBuilder, "List");
+ for (ServerConfig serverConfig : serverConfigs) {
+ stringBuilder.append(toXMLString(serverConfig));
+ }
+ closeTag(stringBuilder, "List");
+ return stringBuilder.toString();
+ }
+
+ private String toXMLString(Object object) throws IllegalAccessException, UnsupportedEncodingException {
+ StringBuilder stringBuilder = new StringBuilder();
+ openTag(stringBuilder, object.getClass().getSimpleName());
+ for (Field field : object.getClass().getDeclaredFields()) {
+ field.setAccessible(true);
+ String value = field.get(object) == null ? "" : field.get(object).toString();
+ appendAttribute(stringBuilder, field.getName(), value);
+ }
+ closeTag(stringBuilder, object.getClass().getSimpleName());
+ return stringBuilder.toString();
+ }
+
+ private void appendAttribute(StringBuilder stringBuilder, String field, String value) throws UnsupportedEncodingException {
+ openTag(stringBuilder, field);
+ // Encoding the value to Base64 to prevent saving special chars like % to the database
+ stringBuilder.append(Base64.getEncoder().encodeToString(value.getBytes(StandardCharsets.UTF_8)));
+ closeTag(stringBuilder, field);
+ }
+
+ private void openTag(StringBuilder stringBuilder, String fieldName) {
+ stringBuilder.append("<");
+ stringBuilder.append(fieldName);
+ stringBuilder.append(">");
+ }
+
+ private void closeTag(StringBuilder stringBuilder, String fieldName) {
+ stringBuilder.append("");
+ stringBuilder.append(fieldName);
+ stringBuilder.append(">");
+ }
+}
diff --git a/src/main/java/org/jfrog/bamboo/builder/BaseBuildInfoHelper.java b/src/main/java/org/jfrog/bamboo/builder/BaseBuildInfoHelper.java
index 91f1b264..80008ef2 100644
--- a/src/main/java/org/jfrog/bamboo/builder/BaseBuildInfoHelper.java
+++ b/src/main/java/org/jfrog/bamboo/builder/BaseBuildInfoHelper.java
@@ -70,7 +70,6 @@ public void init(BuildParamsOverrideManager buildParamsOverrideManager, BuildCon
this.buildParamsOverrideManager = buildParamsOverrideManager;
this.context = context;
buildInfoLog = new BuildInfoLog(log, logger);
- serverConfigManager = ServerConfigManager.getInstance();
ContainerManager.autowireComponent(this);
httpClient = new HttpClient();
bambooBaseUrl = determineBambooBaseUrl();
diff --git a/src/main/java/org/jfrog/bamboo/builder/BuildInfoHelper.java b/src/main/java/org/jfrog/bamboo/builder/BuildInfoHelper.java
index 4fe4b1c1..2386e5d2 100644
--- a/src/main/java/org/jfrog/bamboo/builder/BuildInfoHelper.java
+++ b/src/main/java/org/jfrog/bamboo/builder/BuildInfoHelper.java
@@ -46,9 +46,10 @@ public class BuildInfoHelper extends BaseBuildInfoHelper {
private final String buildNumber;
private final String vcsRevision;
private final String vcsUrl;
- private ServerConfig serverConfig;
-
- private BuildInfoHelper(String buildName, String buildNumber, Map env, String vcsRevision, String vcsUrl) {
+ private ServerConfig serverConfig;
+
+ private BuildInfoHelper(String buildName, String buildNumber, Map env, String vcsRevision, String vcsUrl, ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
this.buildName = buildName;
this.buildNumber = buildNumber;
this.env = env;
@@ -212,7 +213,7 @@ public ArtifactoryManagerBuilder getClientBuilder(BuildLogger buildLogger, Logge
return TaskUtils.getArtifactoryManagerBuilderBuilder(serverConfig, bambooBuildInfoLog);
}
- private static BuildInfoHelper createBuildInfoHelper(String buildName, String buildNumber, CommonTaskContext taskContext, BuildContext buildContext, EnvironmentVariableAccessor environmentVariableAccessor, BuildParamsOverrideManager buildParamsOverrideManager, ServerConfig serverConfig) {
+ private static BuildInfoHelper createBuildInfoHelper(String buildName, String buildNumber, CommonTaskContext taskContext, BuildContext buildContext, EnvironmentVariableAccessor environmentVariableAccessor, BuildParamsOverrideManager buildParamsOverrideManager, ServerConfig serverConfig, ServerConfigManager serverConfigManager) {
Map env = new HashMap<>();
env.putAll(environmentVariableAccessor.getEnvironment(taskContext));
env.putAll(environmentVariableAccessor.getEnvironment());
@@ -227,16 +228,15 @@ private static BuildInfoHelper createBuildInfoHelper(String buildName, String bu
throw new IllegalArgumentException("Could not find Artifactory server. Please check the Artifactory server in the task configuration.");
}
- BuildInfoHelper buildInfoHelper = new BuildInfoHelper(buildName, buildNumber, env, vcsRevision, vcsUrl);
+ BuildInfoHelper buildInfoHelper = new BuildInfoHelper(buildName, buildNumber, env, vcsRevision, vcsUrl, serverConfigManager);
buildInfoHelper.init(buildParamsOverrideManager, buildContext, taskContext.getBuildLogger());
return buildInfoHelper;
}
public static BuildInfoHelper createDeployBuildInfoHelper(String buildName, String buildNumber, CommonTaskContext taskContext, BuildContext buildContext, EnvironmentVariableAccessor environmentVariableAccessor,
- long selectedServerId, String username, String password, BuildParamsOverrideManager buildParamsOverrideManager) {
- ServerConfigManager serverConfigManager = ServerConfigManager.getInstance();
+ long selectedServerId, String username, String password, BuildParamsOverrideManager buildParamsOverrideManager, ServerConfigManager serverConfigManager) {
ServerConfig selectedServerConfig = serverConfigManager.getServerConfigById(selectedServerId);
- BuildInfoHelper buildInfoHelper = createBuildInfoHelper(buildName, buildNumber, taskContext, buildContext, environmentVariableAccessor, buildParamsOverrideManager, selectedServerConfig);
+ BuildInfoHelper buildInfoHelper = createBuildInfoHelper(buildName, buildNumber, taskContext, buildContext, environmentVariableAccessor, buildParamsOverrideManager, selectedServerConfig, serverConfigManager);
buildInfoHelper.serverConfig = TaskUtils.getDeploymentServerConfig(username, password, serverConfigManager,
selectedServerConfig, buildParamsOverrideManager);
@@ -244,10 +244,9 @@ public static BuildInfoHelper createDeployBuildInfoHelper(String buildName, Stri
return buildInfoHelper;
}
- public static BuildInfoHelper createResolveBuildInfoHelper(String buildName, String buildNumber, CommonTaskContext taskContext, BuildContext buildContext, EnvironmentVariableAccessor environmentVariableAccessor, long selectedServerId, String username, String password, BuildParamsOverrideManager buildParamsOverrideManager) {
- ServerConfigManager serverConfigManager = ServerConfigManager.getInstance();
+ public static BuildInfoHelper createResolveBuildInfoHelper(String buildName, String buildNumber, CommonTaskContext taskContext, BuildContext buildContext, EnvironmentVariableAccessor environmentVariableAccessor, long selectedServerId, String username, String password, BuildParamsOverrideManager buildParamsOverrideManager, ServerConfigManager serverConfigManager) {
ServerConfig selectedServerConfig = serverConfigManager.getServerConfigById(selectedServerId);
- BuildInfoHelper buildInfoHelper = createBuildInfoHelper(buildName, buildNumber, taskContext, buildContext, environmentVariableAccessor, buildParamsOverrideManager, selectedServerConfig);
+ BuildInfoHelper buildInfoHelper = createBuildInfoHelper(buildName, buildNumber, taskContext, buildContext, environmentVariableAccessor, buildParamsOverrideManager, selectedServerConfig, serverConfigManager);
buildInfoHelper.serverConfig = TaskUtils.getResolutionServerConfig(username, password, serverConfigManager,
selectedServerConfig, buildParamsOverrideManager);
diff --git a/src/main/java/org/jfrog/bamboo/builder/GradleDataHelper.java b/src/main/java/org/jfrog/bamboo/builder/GradleDataHelper.java
index 5c0e6894..fc994833 100644
--- a/src/main/java/org/jfrog/bamboo/builder/GradleDataHelper.java
+++ b/src/main/java/org/jfrog/bamboo/builder/GradleDataHelper.java
@@ -31,6 +31,7 @@
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.GradleBuildContext;
import org.jfrog.bamboo.util.BuildInfoLog;
@@ -66,7 +67,8 @@ public class GradleDataHelper extends BaseBuildInfoHelper {
private String resolverUsername;
private String resolverPassword;
- public GradleDataHelper(BuildParamsOverrideManager buildParamsOverrideManager, CommonTaskContext context, GradleBuildContext buildContext, AdministrationConfiguration administrationConfiguration, EnvironmentVariableAccessor envVarAccessor, String artifactoryPluginVersion, boolean aggregateBuildInfo) {
+ public GradleDataHelper(BuildParamsOverrideManager buildParamsOverrideManager, CommonTaskContext context, GradleBuildContext buildContext, AdministrationConfiguration administrationConfiguration, EnvironmentVariableAccessor envVarAccessor, String artifactoryPluginVersion, boolean aggregateBuildInfo, ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
super.init(buildParamsOverrideManager, ((TaskContext) context).getBuildContext(), context.getBuildLogger());
setAdministrationConfiguration(administrationConfiguration);
diff --git a/src/main/java/org/jfrog/bamboo/builder/IvyDataHelper.java b/src/main/java/org/jfrog/bamboo/builder/IvyDataHelper.java
index f1e3ee5b..0f1261de 100644
--- a/src/main/java/org/jfrog/bamboo/builder/IvyDataHelper.java
+++ b/src/main/java/org/jfrog/bamboo/builder/IvyDataHelper.java
@@ -4,6 +4,7 @@
import com.atlassian.bamboo.task.CommonTaskContext;
import com.atlassian.bamboo.task.TaskContext;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.PackageManagersContext;
import org.jfrog.build.extractor.clientConfiguration.ArtifactoryClientConfiguration;
@@ -15,8 +16,8 @@
*/
public class IvyDataHelper extends MavenAndIvyBuildInfoDataHelperBase {
- public IvyDataHelper(BuildParamsOverrideManager buildParamsOverrideManager, CommonTaskContext context, PackageManagersContext buildContext, EnvironmentVariableAccessor envVarAccessor, String artifactoryPluginVersion, boolean aggregateBuildInfo) {
- super(buildParamsOverrideManager, (TaskContext) context, buildContext, envVarAccessor, artifactoryPluginVersion, aggregateBuildInfo);
+ public IvyDataHelper(BuildParamsOverrideManager buildParamsOverrideManager, CommonTaskContext context, PackageManagersContext buildContext, EnvironmentVariableAccessor envVarAccessor, String artifactoryPluginVersion, boolean aggregateBuildInfo, ServerConfigManager serverConfigManager) {
+ super(buildParamsOverrideManager, (TaskContext) context, buildContext, envVarAccessor, artifactoryPluginVersion, aggregateBuildInfo, serverConfigManager);
}
@Override
diff --git a/src/main/java/org/jfrog/bamboo/builder/MavenAndIvyBuildInfoDataHelperBase.java b/src/main/java/org/jfrog/bamboo/builder/MavenAndIvyBuildInfoDataHelperBase.java
index 668bb8c2..909a9a43 100644
--- a/src/main/java/org/jfrog/bamboo/builder/MavenAndIvyBuildInfoDataHelperBase.java
+++ b/src/main/java/org/jfrog/bamboo/builder/MavenAndIvyBuildInfoDataHelperBase.java
@@ -28,6 +28,7 @@
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.PackageManagersContext;
import org.jfrog.bamboo.util.BuildInfoLog;
@@ -62,7 +63,8 @@ public abstract class MavenAndIvyBuildInfoDataHelperBase extends BaseBuildInfoHe
public MavenAndIvyBuildInfoDataHelperBase(BuildParamsOverrideManager buildParamsOverrideManager, TaskContext context,
PackageManagersContext abstractBuildContext,
EnvironmentVariableAccessor envVarAccessor, String artifactoryPluginVersion,
- boolean aggregateBuildInfo) {
+ boolean aggregateBuildInfo, ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
BuildContext buildContext = context.getBuildContext();
super.init(buildParamsOverrideManager, context.getBuildContext(), context.getBuildLogger());
long selectedServerId = abstractBuildContext.getArtifactoryServerId();
diff --git a/src/main/java/org/jfrog/bamboo/builder/MavenDataHelper.java b/src/main/java/org/jfrog/bamboo/builder/MavenDataHelper.java
index bac5ed6e..c859a200 100644
--- a/src/main/java/org/jfrog/bamboo/builder/MavenDataHelper.java
+++ b/src/main/java/org/jfrog/bamboo/builder/MavenDataHelper.java
@@ -5,6 +5,7 @@
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.Maven3BuildContext;
import org.jfrog.bamboo.context.PackageManagersContext;
@@ -29,8 +30,8 @@ public class MavenDataHelper extends MavenAndIvyBuildInfoDataHelperBase {
public MavenDataHelper(BuildParamsOverrideManager buildParamsOverrideManager, TaskContext context,
PackageManagersContext buildContext, EnvironmentVariableAccessor envVarAccessor,
- String artifactoryPluginVersion, boolean aggregateBuildInfo) {
- super(buildParamsOverrideManager, context, buildContext, envVarAccessor, artifactoryPluginVersion, aggregateBuildInfo);
+ String artifactoryPluginVersion, boolean aggregateBuildInfo, ServerConfigManager serverConfigManager) {
+ super(buildParamsOverrideManager, context, buildContext, envVarAccessor, artifactoryPluginVersion, aggregateBuildInfo, serverConfigManager);
long selectedServerId = buildContext.getArtifactoryServerId();
if (selectedServerId == -1) {
// No deployment server configured, configure resolution server if needed.
diff --git a/src/main/java/org/jfrog/bamboo/buildinfo/action/condition/BuildInfoActionCondition.java b/src/main/java/org/jfrog/bamboo/buildinfo/action/condition/BuildInfoActionCondition.java
index 60c1b194..ff4189fd 100644
--- a/src/main/java/org/jfrog/bamboo/buildinfo/action/condition/BuildInfoActionCondition.java
+++ b/src/main/java/org/jfrog/bamboo/buildinfo/action/condition/BuildInfoActionCondition.java
@@ -22,9 +22,12 @@
import com.atlassian.bamboo.resultsummary.ResultsSummaryManager;
import com.atlassian.plugin.PluginParseException;
import com.atlassian.plugin.web.Condition;
+import com.atlassian.plugin.spring.scanner.annotation.imports.BambooImport;
import org.apache.commons.lang3.StringUtils;
import org.jfrog.bamboo.util.ConstantValues;
+import javax.inject.Inject;
+
import java.util.Map;
/**
@@ -53,7 +56,8 @@ public boolean shouldDisplay(Map context) {
Boolean.valueOf(resultsSummary.getCustomBuildData().get(ConstantValues.BUILD_RESULT_COLLECTION_ACTIVATED_PARAM));
}
- public void setResultsSummaryManager(ResultsSummaryManager resultsSummaryManager) {
+ @Inject
+ public BuildInfoActionCondition(@BambooImport ResultsSummaryManager resultsSummaryManager) {
this.resultsSummaryManager = resultsSummaryManager;
}
}
diff --git a/src/main/java/org/jfrog/bamboo/configuration/AbstractArtifactoryConfiguration.java b/src/main/java/org/jfrog/bamboo/configuration/AbstractArtifactoryConfiguration.java
index 95e50afa..7794489d 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/AbstractArtifactoryConfiguration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/AbstractArtifactoryConfiguration.java
@@ -8,6 +8,8 @@
import com.atlassian.bamboo.task.*;
import com.atlassian.bamboo.v2.build.agent.capability.Requirement;
import com.atlassian.bamboo.ww2.actions.build.admin.create.UIConfigSupport;
+import com.atlassian.plugin.spring.scanner.annotation.imports.BambooImport;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import com.atlassian.sal.api.message.I18nResolver;
import com.atlassian.spring.container.ContainerManager;
import com.google.common.collect.ImmutableMap;
@@ -27,6 +29,7 @@
import org.jfrog.bamboo.release.vcs.git.GitAuthenticationType;
import org.jfrog.bamboo.security.EncryptionHelper;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@@ -46,6 +49,8 @@
public abstract class AbstractArtifactoryConfiguration extends AbstractTaskConfigurator implements
TaskTestResultsSupport, BuildTaskRequirementSupport {
+ @Inject
+ @ComponentImport
protected I18nResolver i18nResolver;
public static final String CFG_TEST_RESULTS_FILE_PATTERN_OPTION_CUSTOM = "customTestDirectory";
public static final String CFG_TEST_RESULTS_FILE_PATTERN_OPTION_STANDARD = "standardTestDirectory";
@@ -69,27 +74,32 @@ public abstract class AbstractArtifactoryConfiguration extends AbstractTaskConfi
public static final Map CFG_SPEC_SOURCE = ImmutableMap.of(CFG_SPEC_SOURCE_JOB_CONFIGURATION, "Task configuration", CFG_SPEC_SOURCE_FILE, "File");
public static final Map SIGN_METHOD_MAP = ImmutableMap.of("false", "Don't Sign", "true", "Sign");
public static final String SIGN_METHOD_MAP_KEY = "signMethods";
+ @Inject
protected transient ServerConfigManager serverConfigManager;
+ @Inject
+ @ComponentImport
protected transient CredentialsAccessor credentialsAccessor;
- protected AdministrationConfiguration administrationConfiguration;
+ private AdministrationConfiguration administrationConfiguration;
+ @Inject
+ @BambooImport
protected UIConfigSupport uiConfigSupport;
- private final String builderContextPrefix;
- private final String capabilityPrefix;
private static final Logger log = LogManager.getLogger(AbstractArtifactoryConfiguration.class);
protected TaskConfiguratorHelperImpl taskConfiguratorHelper = new TaskConfiguratorHelperImpl();
- protected AbstractArtifactoryConfiguration() {
- this(null, null);
- }
-
- protected AbstractArtifactoryConfiguration(String builderContextPrefix, @Nullable String capabilityPrefix) {
- serverConfigManager = ServerConfigManager.getInstance();
+ protected AdministrationConfiguration getAdministrationConfiguration() {
if (administrationConfiguration == null) {
administrationConfiguration =
(AdministrationConfiguration) ContainerManager.getComponent("administrationConfiguration");
}
- this.builderContextPrefix = builderContextPrefix;
- this.capabilityPrefix = capabilityPrefix;
+ return administrationConfiguration;
+ }
+
+ protected String getBuilderContextPrefix() {
+ return null;
+ }
+
+ protected String getCapabilityPrefix() {
+ return null;
}
public String getTestDirectory(PackageManagersContext buildContext) {
@@ -105,7 +115,6 @@ public String getTestDirectory(PackageManagersContext buildContext) {
@Override
public void populateContextForEdit(@NotNull Map context, @NotNull TaskDefinition taskDefinition) {
super.populateContextForEdit(context, taskDefinition);
- serverConfigManager = ServerConfigManager.getInstance();
populateContextForAllOperations(context);
}
@@ -126,7 +135,6 @@ public void populateLegacyContextForEdit(@NotNull Map context, @
@Override
public void populateContextForCreate(@NotNull Map context) {
super.populateContextForCreate(context);
- serverConfigManager = ServerConfigManager.getInstance();
populateContextForAllOperations(context);
}
@@ -145,7 +153,7 @@ public void populateLegacyContextForCreate(@NotNull Map context)
public Map generateTaskConfigMap(@NotNull ActionParametersMap params,
@Nullable TaskDefinition previousTaskDefinition) {
Map taskConfigMap = super.generateTaskConfigMap(params, previousTaskDefinition);
- taskConfigMap.put("baseUrl", administrationConfiguration.getBaseUrl());
+ taskConfigMap.put("baseUrl", getAdministrationConfiguration().getBaseUrl());
return taskConfigMap;
}
@@ -154,13 +162,13 @@ public Map generateTaskConfigMap(@NotNull ActionParametersMap pa
@Override
public Set calculateRequirements(@NotNull TaskDefinition taskDefinition, @NotNull Job job) {
Set requirements = Sets.newHashSet();
- if (StringUtils.isNotBlank(builderContextPrefix)) {
+ if (StringUtils.isNotBlank(getBuilderContextPrefix())) {
taskConfiguratorHelper.addJdkRequirement(requirements, taskDefinition,
- builderContextPrefix + TaskConfigConstants.CFG_JDK_LABEL);
+ getBuilderContextPrefix() + TaskConfigConstants.CFG_JDK_LABEL);
if (!isUseWrapper(taskDefinition)) {
- if (StringUtils.isNotBlank(capabilityPrefix)) {
+ if (StringUtils.isNotBlank(getCapabilityPrefix())) {
taskConfiguratorHelper.addSystemRequirementFromConfiguration(requirements, taskDefinition,
- builderContextPrefix + PackageManagersContext.EXECUTABLE, capabilityPrefix);
+ getBuilderContextPrefix() + PackageManagersContext.EXECUTABLE, getCapabilityPrefix());
}
}
}
@@ -223,8 +231,8 @@ public void setCredentialsAccessor(final CredentialsAccessor credentialsAccessor
this.credentialsAccessor = credentialsAccessor;
}
- public void setAdministrationConfiguration(AdministrationConfiguration administrationConfiguration) {
- this.administrationConfiguration = administrationConfiguration;
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
}
protected String readFileByKey(final ActionParametersMap params, String keyToRead) {
diff --git a/src/main/java/org/jfrog/bamboo/configuration/AbstractDotNetBuildConfiguration.java b/src/main/java/org/jfrog/bamboo/configuration/AbstractDotNetBuildConfiguration.java
index b93d4b4f..37d00046 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/AbstractDotNetBuildConfiguration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/AbstractDotNetBuildConfiguration.java
@@ -28,16 +28,17 @@ public abstract class AbstractDotNetBuildConfiguration extends AbstractArtifacto
private static final Map CFG_COMMAND_OPTIONS = ImmutableMap.of(CFG_COMMAND_RESTORE, "restore",
CFG_COMMAND_PUSH, "push");
- public AbstractDotNetBuildConfiguration(String capability) {
- super(DotNetBuildContext.PREFIX, capability);
+ @Override
+ protected String getBuilderContextPrefix() {
+ return DotNetBuildContext.PREFIX;
}
@Override
public void populateContextForCreate(@NotNull Map context) {
super.populateContextForCreate(context);
populateCommandsContext(context);
- context.put("adminConfig", administrationConfiguration);
- context.put("baseUrl", administrationConfiguration.getBaseUrl());
+ context.put("adminConfig", getAdministrationConfiguration());
+ context.put("baseUrl", getAdministrationConfiguration().getBaseUrl());
Plan plan = (Plan) context.get("plan");
context.put("build", plan);
context.put("dummyList", Lists.newArrayList());
diff --git a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryDockerConfiguration.java b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryDockerConfiguration.java
index bdc697a4..20156ad4 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryDockerConfiguration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryDockerConfiguration.java
@@ -29,9 +29,15 @@ public class ArtifactoryDockerConfiguration extends AbstractArtifactoryConfigura
private static final String KEY = "artifactoryDockerBuilder";
private static final Set FIELDS_TO_COPY = DockerBuildContext.getFieldsToCopy();
private static final Map CFG_DOCKER_COMMAND_OPTIONS = ImmutableMap.of(CFG_DOCKER_COMMAND_PULL, "pull", CFG_DOCKER_COMMAND_PUSH, "push");
+
+ @Override
+ protected String getBuilderContextPrefix() {
+ return DockerBuildContext.PREFIX;
+ }
- public ArtifactoryDockerConfiguration() {
- super(DockerBuildContext.PREFIX, CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".docker");
+ @Override
+ protected String getCapabilityPrefix() {
+ return CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".docker";
}
@Override
@@ -41,8 +47,8 @@ public void populateContextForCreate(@NotNull Map context) {
context.put("artifactoryDockerTask", this);
context.put("builderType", this);
context.put("builder", this);
- context.put("adminConfig", administrationConfiguration);
- context.put("baseUrl", administrationConfiguration.getBaseUrl());
+ context.put("adminConfig", getAdministrationConfiguration());
+ context.put("baseUrl", getAdministrationConfiguration().getBaseUrl());
Plan plan = (Plan) context.get("plan");
context.put("build", plan);
context.put("dummyList", Lists.newArrayList());
diff --git a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryDotNetCoreConfiguration.java b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryDotNetCoreConfiguration.java
index f7ad5c6d..8a8252ec 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryDotNetCoreConfiguration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryDotNetCoreConfiguration.java
@@ -2,8 +2,10 @@
import com.atlassian.bamboo.v2.build.agent.capability.CapabilityDefaultsHelper;
import org.jetbrains.annotations.NotNull;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.task.ArtifactoryDotNetCoreTask;
+import javax.inject.Inject;
import java.util.Map;
/**
@@ -15,8 +17,9 @@ public class ArtifactoryDotNetCoreConfiguration extends AbstractDotNetBuildConfi
private static final String KEY = "artifactoryDotNetCoreBuilder";
- public ArtifactoryDotNetCoreConfiguration() {
- super(CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".dotnet");
+ @Override
+ protected String getCapabilityPrefix() {
+ return CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".dotnet";
}
@Override
diff --git a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryGradleConfiguration.java b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryGradleConfiguration.java
index 4fff7cb4..6121be03 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryGradleConfiguration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryGradleConfiguration.java
@@ -32,8 +32,14 @@ public class ArtifactoryGradleConfiguration extends AbstractArtifactoryConfigura
private static final String PUBLISH_FORK_COUNT_OPTIONS_KEY = "publishForkCountList";
private static final String PUBLISH_FORK_COUNT_KEY = "publishForkCount";
- public ArtifactoryGradleConfiguration() {
- super(GradleBuildContext.PREFIX, CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".gradle");
+ @Override
+ protected String getBuilderContextPrefix() {
+ return GradleBuildContext.PREFIX;
+ }
+
+ @Override
+ protected String getCapabilityPrefix() {
+ return CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".gradle";
}
@Override
@@ -43,8 +49,8 @@ public void populateContextForCreate(@NotNull Map context) {
context.put("artifactoryGradleTask", this);
context.put("builderType", this);
context.put("builder", this);
- context.put("adminConfig", administrationConfiguration);
- context.put("baseUrl", administrationConfiguration.getBaseUrl());
+ context.put("adminConfig", getAdministrationConfiguration());
+ context.put("baseUrl", getAdministrationConfiguration().getBaseUrl());
Plan plan = (Plan) context.get("plan");
context.put("build", plan);
context.put("dummyList", Lists.newArrayList());
diff --git a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryIvyConfiguration.java b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryIvyConfiguration.java
index f2a7880d..09bef4e0 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryIvyConfiguration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryIvyConfiguration.java
@@ -28,8 +28,14 @@ public class ArtifactoryIvyConfiguration extends AbstractArtifactoryConfiguratio
protected static final String DEFAULT_TEST_REPORTS_XML = "**/test-reports/*.xml";
private static final Set FIELDS_TO_COPY = IvyBuildContext.getFieldsToCopy();
- public ArtifactoryIvyConfiguration() {
- super(IvyBuildContext.PREFIX, CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".ivy");
+ @Override
+ protected String getBuilderContextPrefix() {
+ return IvyBuildContext.PREFIX;
+ }
+
+ @Override
+ protected String getCapabilityPrefix() {
+ return CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".ivy";
}
@Override
@@ -49,8 +55,8 @@ public void populateContextForCreate(@NotNull Map context) {
context.put("artifactoryIvyTask", this);
context.put("builderType", this);
context.put("builder", this);
- context.put("adminConfig", administrationConfiguration);
- context.put("baseUrl", administrationConfiguration.getBaseUrl());
+ context.put("adminConfig", getAdministrationConfiguration());
+ context.put("baseUrl", getAdministrationConfiguration().getBaseUrl());
context.put("build", context.get("plan"));
context.put("dummyList", Lists.newArrayList());
context.put("serverConfigManager", serverConfigManager);
diff --git a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryMaven3Configuration.java b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryMaven3Configuration.java
index 227e89bc..de878bd8 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryMaven3Configuration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryMaven3Configuration.java
@@ -30,8 +30,14 @@ public class ArtifactoryMaven3Configuration extends AbstractArtifactoryConfigura
private static final Set FIELDS_TO_COPY = Maven3BuildContext.getFieldsToCopy();
private static final String DEFAULT_TEST_RESULTS_FILE_PATTERN = "**/target/surefire-reports/*.xml";
- public ArtifactoryMaven3Configuration() {
- super(Maven3BuildContext.PREFIX, CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".maven");
+ @Override
+ protected String getBuilderContextPrefix() {
+ return Maven3BuildContext.PREFIX;
+ }
+
+ @Override
+ protected String getCapabilityPrefix() {
+ return CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".maven";
}
@Override
@@ -41,7 +47,7 @@ public void populateContextForCreate(@NotNull Map context) {
context.put("maven3Task", this);
context.put("builderType", this);
context.put("builder", this);
- context.put("baseUrl", administrationConfiguration.getBaseUrl());
+ context.put("baseUrl", getAdministrationConfiguration().getBaseUrl());
Plan plan = (Plan) context.get("plan");
context.put("build", plan);
context.put("dummyList", Lists.newArrayList());
diff --git a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryNpmConfiguration.java b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryNpmConfiguration.java
index 197e5be7..20eb95ee 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryNpmConfiguration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryNpmConfiguration.java
@@ -31,8 +31,14 @@ public class ArtifactoryNpmConfiguration extends AbstractArtifactoryConfiguratio
private static final Set FIELDS_TO_COPY = NpmBuildContext.getFieldsToCopy();
private static final Map CFG_NPM_COMMAND_OPTIONS = ImmutableMap.of(CFG_NPM_COMMAND_INSTALL, "install", CFG_NPM_COMMAND_PUBLISH, "pack and publish");
- public ArtifactoryNpmConfiguration() {
- super(NpmBuildContext.PREFIX, CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".npm");
+ @Override
+ protected String getBuilderContextPrefix() {
+ return NpmBuildContext.PREFIX;
+ }
+
+ @Override
+ protected String getCapabilityPrefix() {
+ return CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".npm";
}
@Override
@@ -42,8 +48,8 @@ public void populateContextForCreate(@NotNull Map context) {
context.put("artifactoryNpmTask", this);
context.put("builderType", this);
context.put("builder", this);
- context.put("adminConfig", administrationConfiguration);
- context.put("baseUrl", administrationConfiguration.getBaseUrl());
+ context.put("adminConfig", getAdministrationConfiguration());
+ context.put("baseUrl", getAdministrationConfiguration().getBaseUrl());
Plan plan = (Plan) context.get("plan");
context.put("build", plan);
context.put("dummyList", Lists.newArrayList());
diff --git a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryNugetConfiguration.java b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryNugetConfiguration.java
index f9af9113..5c986576 100644
--- a/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryNugetConfiguration.java
+++ b/src/main/java/org/jfrog/bamboo/configuration/ArtifactoryNugetConfiguration.java
@@ -15,8 +15,9 @@ public class ArtifactoryNugetConfiguration extends AbstractDotNetBuildConfigurat
private static final String KEY = "artifactoryNugetBuilder";
- public ArtifactoryNugetConfiguration() {
- super(CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".nuget");
+ @Override
+ protected String getCapabilityPrefix() {
+ return CapabilityDefaultsHelper.CAPABILITY_BUILDER_PREFIX + ".nuget";
}
@Override
diff --git a/src/main/java/org/jfrog/bamboo/release/action/ArtifactoryPostBuildCompleteAction.java b/src/main/java/org/jfrog/bamboo/release/action/ArtifactoryPostBuildCompleteAction.java
index 9383146c..1bf20328 100644
--- a/src/main/java/org/jfrog/bamboo/release/action/ArtifactoryPostBuildCompleteAction.java
+++ b/src/main/java/org/jfrog/bamboo/release/action/ArtifactoryPostBuildCompleteAction.java
@@ -17,6 +17,7 @@
import org.jfrog.bamboo.release.provider.ReleaseProvider;
import org.jfrog.bamboo.util.TaskDefinitionHelper;
+import javax.inject.Inject;
import java.util.List;
import java.util.Map;
@@ -29,8 +30,11 @@
public class ArtifactoryPostBuildCompleteAction extends AbstractBuildAction implements CustomBuildProcessor {
private static final Logger log = LogManager.getLogger(ArtifactoryPostBuildCompleteAction.class);
+ @Inject
private BuildLoggerManager buildLoggerManager;
+ @Inject
private CustomVariableContext customVariableContext;
+ @Inject
private CredentialsAccessor credentialsAccessor;
@Override
diff --git a/src/main/java/org/jfrog/bamboo/release/action/ArtifactoryPreBuildAction.java b/src/main/java/org/jfrog/bamboo/release/action/ArtifactoryPreBuildAction.java
index 0dda7e41..0629da9a 100644
--- a/src/main/java/org/jfrog/bamboo/release/action/ArtifactoryPreBuildAction.java
+++ b/src/main/java/org/jfrog/bamboo/release/action/ArtifactoryPreBuildAction.java
@@ -7,6 +7,7 @@
import com.atlassian.bamboo.task.TaskDefinition;
import com.atlassian.bamboo.v2.build.BuildContext;
import com.atlassian.bamboo.variable.CustomVariableContext;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
@@ -15,6 +16,7 @@
import org.jfrog.bamboo.release.provider.ReleaseProvider;
import org.jfrog.bamboo.util.TaskDefinitionHelper;
+import javax.inject.Inject;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -29,8 +31,12 @@
public class ArtifactoryPreBuildAction extends AbstractBuildAction implements CustomPreBuildAction {
private static final Logger log = LogManager.getLogger(ArtifactoryPreBuildAction.class);
+ @Inject
+ @ComponentImport
private BuildLoggerManager buildLoggerManager;
+ @Inject
private CustomVariableContext customVariableContext;
+ @Inject
private CredentialsAccessor credentialsAccessor;
@Override
diff --git a/src/main/java/org/jfrog/bamboo/release/action/ReleasePromotionAction.java b/src/main/java/org/jfrog/bamboo/release/action/ReleasePromotionAction.java
index c8f925e1..e1cafc5d 100644
--- a/src/main/java/org/jfrog/bamboo/release/action/ReleasePromotionAction.java
+++ b/src/main/java/org/jfrog/bamboo/release/action/ReleasePromotionAction.java
@@ -10,6 +10,7 @@
import com.atlassian.bamboo.plugin.RemoteAgentSupported;
import com.atlassian.bamboo.repository.RepositoryException;
import com.atlassian.bamboo.resultsummary.ResultsSummary;
+import com.atlassian.bamboo.resultsummary.ResultsSummaryManager;
import com.atlassian.bamboo.security.acegi.acls.BambooPermission;
import com.atlassian.bamboo.task.TaskDefinition;
import com.atlassian.bamboo.v2.build.agent.capability.CapabilityContext;
@@ -43,6 +44,7 @@
import org.jfrog.build.extractor.clientConfiguration.ArtifactoryManagerBuilder;
import org.jfrog.build.extractor.clientConfiguration.client.artifactory.ArtifactoryManager;
+import javax.inject.Inject;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -74,6 +76,7 @@ public class ReleasePromotionAction extends ViewBuildResults {
private boolean promoting = true;
private String promotionRepo = "";
private VariableDefinitionManager variableDefinitionManager;
+ private ResultsSummaryManager resultsSummaryManager;
private String comment = "";
private String target = "";
private boolean useCopy;
@@ -91,8 +94,10 @@ public class ReleasePromotionAction extends ViewBuildResults {
private String releaseBranch;
private List versions;
- public ReleasePromotionAction() {
- this.serverConfigManager = ServerConfigManager.getInstance();
+ @Inject
+ public ReleasePromotionAction(ServerConfigManager serverConfigManager, ResultsSummaryManager resultsSummaryManager) {
+ this.serverConfigManager = serverConfigManager;
+ this.resultsSummaryManager = resultsSummaryManager;
}
@Override
@@ -348,8 +353,7 @@ public List getPublishingRepos() {
if (StringUtils.isBlank(serverId)) {
return Lists.newArrayList();
}
- ServerConfigManager component = ServerConfigManager.getInstance();
- return component.getDeployableRepos(Long.parseLong(serverId));
+ return serverConfigManager.getDeployableRepos(Long.parseLong(serverId));
}
public String getReleasePublishingRepo() {
@@ -501,7 +505,6 @@ public String doPromote() throws IOException {
log.error("You are not permitted to execute build promotion.");
return ERROR;
}
- ServerConfigManager component = ServerConfigManager.getInstance();
TaskDefinition definition = getMavenOrGradleTaskDefinition(getImmutablePlan());
if (definition == null) {
return ERROR;
@@ -511,7 +514,7 @@ public String doPromote() throws IOException {
log.error("No selected Artifactory server Id");
return ERROR;
}
- ServerConfig serverConfig = component.getServerConfigById(Long.parseLong(serverId));
+ ServerConfig serverConfig = serverConfigManager.getServerConfigById(Long.parseLong(serverId));
if (serverConfig == null) {
log.error("Error while retrieving target repository list: Could not find Artifactory server " +
"configuration by the ID " + serverId);
@@ -586,8 +589,7 @@ public List getPromotionRepos() {
log.warn("No Artifactory server Id found");
return Lists.newArrayList();
}
- ServerConfigManager component = ServerConfigManager.getInstance();
- return component.getDeployableRepos(Long.parseLong(selectedServerId));
+ return serverConfigManager.getDeployableRepos(Long.parseLong(selectedServerId));
}
/**
diff --git a/src/main/java/org/jfrog/bamboo/release/action/condition/ReleasePromotionActionCondition.java b/src/main/java/org/jfrog/bamboo/release/action/condition/ReleasePromotionActionCondition.java
index ff144987..065a9d21 100644
--- a/src/main/java/org/jfrog/bamboo/release/action/condition/ReleasePromotionActionCondition.java
+++ b/src/main/java/org/jfrog/bamboo/release/action/condition/ReleasePromotionActionCondition.java
@@ -7,9 +7,12 @@
import com.atlassian.bamboo.plan.branch.ChainBranch;
import com.atlassian.bamboo.plugins.web.conditions.AbstractPlanPermissionCondition;
import com.atlassian.bamboo.security.acegi.acls.BambooPermission;
+import com.atlassian.bamboo.security.BambooPermissionManager;
import com.atlassian.bamboo.task.TaskDefinition;
+import com.atlassian.plugin.spring.scanner.annotation.imports.BambooImport;
import org.jfrog.bamboo.context.PackageManagersContext;
+import javax.inject.Inject;
import java.util.List;
import java.util.Map;
@@ -20,9 +23,15 @@
* @author Tomer Cohen
*/
public class ReleasePromotionActionCondition extends AbstractPlanPermissionCondition {
-
+
+ @Inject
+ @BambooImport
private PlanManager planManager;
+ @Inject
+ @BambooImport
+ private BambooPermissionManager bambooPermissionManager;
+
@Override
public boolean shouldDisplay(Map context) {
String planKeyStr = (String) context.get("planKey");
@@ -85,4 +94,8 @@ private Plan extractMasterPlanFromBranchPlan(PlanKey planKey) {
public void setPlanManager(PlanManager planManager) {
this.planManager = planManager;
}
+
+ public void setBambooPermissionManager(BambooPermissionManager bambooPermissionManager) {
+ this.bambooPermissionManager = bambooPermissionManager;
+ }
}
diff --git a/src/main/java/org/jfrog/bamboo/release/vcs/AbstractVcsCoordinator.java b/src/main/java/org/jfrog/bamboo/release/vcs/AbstractVcsCoordinator.java
index 91c46652..3faae5ee 100644
--- a/src/main/java/org/jfrog/bamboo/release/vcs/AbstractVcsCoordinator.java
+++ b/src/main/java/org/jfrog/bamboo/release/vcs/AbstractVcsCoordinator.java
@@ -8,7 +8,6 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jfrog.bamboo.release.vcs.git.GitCoordinator;
-import org.jfrog.bamboo.release.vcs.perforce.PerforceCoordinator;
import java.io.File;
import java.io.IOException;
@@ -57,9 +56,6 @@ public static VcsCoordinator createVcsCoordinator(BuildContext context,
if (VcsTypes.GIT.name().equals(configuration.get("artifactory.vcs.type"))) {
return new GitCoordinator(context, combined, buildLogger, customVariableContext, credentialsAccessor);
}
- if (VcsTypes.PERFORCE.name().equals(configuration.get("artifactory.vcs.type"))) {
- return new PerforceCoordinator(context, combined, buildLogger, customVariableContext, credentialsAccessor);
- }
throw new UnsupportedOperationException("This VCS type is not supported");
}
diff --git a/src/main/java/org/jfrog/bamboo/release/vcs/perforce/PerforceCoordinator.java b/src/main/java/org/jfrog/bamboo/release/vcs/perforce/PerforceCoordinator.java
deleted file mode 100644
index e48a1dfa..00000000
--- a/src/main/java/org/jfrog/bamboo/release/vcs/perforce/PerforceCoordinator.java
+++ /dev/null
@@ -1,145 +0,0 @@
-package org.jfrog.bamboo.release.vcs.perforce;
-
-import com.atlassian.bamboo.build.logger.BuildLogger;
-import com.atlassian.bamboo.builder.BuildState;
-import com.atlassian.bamboo.credentials.CredentialsAccessor;
-import com.atlassian.bamboo.v2.build.BuildContext;
-import com.atlassian.bamboo.v2.build.CurrentBuildResult;
-import com.atlassian.bamboo.variable.CustomVariableContext;
-import org.jfrog.bamboo.context.PackageManagersContext;
-import org.jfrog.bamboo.release.vcs.AbstractVcsCoordinator;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
-
-/**
- * Perforce coordinator that will perform SCM operations that are specific to the Perforce SCM.
- *
- * @author Shay Yaakov
- */
-public class PerforceCoordinator extends AbstractVcsCoordinator {
-
- private PerforceManager perforce;
-
- private final Map configuration;
- private boolean tagCreated;
- private int currentChangeListId;
-
- public PerforceCoordinator(BuildContext context, Map configuration, BuildLogger buildLogger,
- CustomVariableContext customVariableContext, CredentialsAccessor credentialsAccessor) {
- super(context, buildLogger, customVariableContext, credentialsAccessor);
- this.configuration = configuration;
- }
-
- @Override
- public void prepare() throws IOException {
- perforce = new PerforceManager(context, buildLogger);
- perforce.prepare();
- }
-
- @Override
- public void beforeReleaseVersionChange() throws IOException {
- currentChangeListId = perforce.createNewChangeList();
- }
-
- @Override
- public void afterSuccessfulReleaseVersionBuild() throws IOException, InterruptedException {
- PackageManagersContext context = PackageManagersContext.createContextFromMap(configuration);
- PackageManagersContext.ReleaseManagementContext releaseManagementContext = context.releaseManagementContext;
- String labelChangeListId = configuration.get("repository.revision.number");
- if (modifiedFilesForReleaseVersion) {
- log("Submitting release version changes");
- labelChangeListId = currentChangeListId + "";
- perforce.commitWorkingCopy(currentChangeListId, releaseManagementContext.getTagComment());
- } else {
- safeRevertWorkingCopy();
- currentChangeListId = perforce.getDefaultChangeListId();
- }
-
- if (releaseManagementContext.isCreateVcsTag()) {
- log("Creating label: '" + releaseManagementContext.getTagUrl() + "' with change list id: " + labelChangeListId);
- perforce.createTag(releaseManagementContext.getTagUrl(), releaseManagementContext.getTagComment(),
- labelChangeListId);
- tagCreated = true;
- }
- }
-
- @Override
- public void beforeDevelopmentVersionChange() throws IOException {
- currentChangeListId = perforce.getDefaultChangeListId();
- }
-
- @Override
- public void afterDevelopmentVersionChange(boolean modified) throws IOException, InterruptedException {
- super.afterDevelopmentVersionChange(modified);
- PackageManagersContext context = PackageManagersContext.createContextFromMap(configuration);
- PackageManagersContext.ReleaseManagementContext releaseManagementContext = context.releaseManagementContext;
- if (modified) {
- log("Submitting next development version changes");
- perforce.commitWorkingCopy(currentChangeListId, releaseManagementContext.getNextDevelopmentComment());
- } else {
- safeRevertWorkingCopy();
- currentChangeListId = perforce.getDefaultChangeListId();
- }
- }
-
- @Override
- public void edit(File file) throws IOException, InterruptedException {
- log("Opening file: '" + file.getAbsolutePath() + "' for editing");
- perforce.edit(currentChangeListId, file);
- }
-
- @Override
- public void buildCompleted(BuildContext buildContext) throws IOException, InterruptedException {
- PackageManagersContext context = PackageManagersContext.createContextFromMap(configuration);
- CurrentBuildResult result = buildContext.getBuildResult();
- if (!BuildState.SUCCESS.equals(result.getBuildState())) {
- safeRevertWorkingCopy();
- if (tagCreated) {
- safeDeleteLabel(context.releaseManagementContext.getTagUrl());
- }
- } else {
- log("Closing connection to perforce server");
- perforce.closeConnection();
- }
- }
-
- private void safeRevertWorkingCopy() {
- log("Reverting local changes");
- try {
- perforce.revertWorkingCopy(currentChangeListId);
- } catch (Exception e) {
- log("Failed to revert: " + e.getLocalizedMessage());
- }
- }
-
- private void safeDeleteLabel(String label) throws IOException {
- log("Deleting label '" + label + "'");
- try {
- perforce.deleteLabel(label);
- } catch (Exception e) {
- log("Failed to delete label: " + e.getLocalizedMessage());
- }
- }
-
- @Override
- public String getRemoteUrlForPom() {
- return null;
- }
-
- @Override
- public boolean isSubversion() {
- return false;
- }
-
- @Override
- public int getCurrentChangeListId() {
- return currentChangeListId;
- }
-
- @Override
- public void setCurrentChangeListId(int currentChangeListId) {
- this.currentChangeListId = currentChangeListId;
- }
-}
diff --git a/src/main/java/org/jfrog/bamboo/release/vcs/perforce/PerforceManager.java b/src/main/java/org/jfrog/bamboo/release/vcs/perforce/PerforceManager.java
deleted file mode 100644
index 648fb47e..00000000
--- a/src/main/java/org/jfrog/bamboo/release/vcs/perforce/PerforceManager.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.jfrog.bamboo.release.vcs.perforce;
-
-import com.atlassian.bamboo.build.logger.BuildLogger;
-import com.atlassian.bamboo.repository.perforce.PerforceRepository;
-import com.atlassian.bamboo.v2.build.BuildContext;
-import org.apache.commons.lang.StringUtils;
-import org.jfrog.bamboo.context.PackageManagersContext;
-import org.jfrog.bamboo.release.vcs.AbstractVcsManager;
-import org.jfrog.build.vcs.perforce.PerforceClient;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
-
-/**
- * Manager that manages the {@link PerforceRepository}
- *
- * @author Shay Yaakov
- */
-public class PerforceManager extends AbstractVcsManager {
-
- private PerforceClient perforce;
- private String port = "";
- private String client = "";
- private String username = "";
- private String password = "";
-
- public PerforceManager(BuildContext context, BuildLogger buildLogger) {
- super(context, buildLogger);
- Map confMap = getTaskConfiguration();
- if (confMap != null) {
- port = confMap.get(PackageManagersContext.VCS_PREFIX + PackageManagersContext.PERFORCE_PORT);
- client = confMap.get(PackageManagersContext.VCS_PREFIX + PackageManagersContext.PERFORCE_CLIENT);
- username = confMap.get(PackageManagersContext.VCS_PREFIX + PackageManagersContext.PERFORCE_USERNAME);
- password = confMap.get(PackageManagersContext.VCS_PREFIX + PackageManagersContext.PERFORCE_PASSWORD);
- }
- }
-
- public void prepare() throws IOException {
- PerforceClient.Builder builder = new PerforceClient.Builder();
- String hostAddress = port;
- if (!hostAddress.contains(":")) {
- hostAddress = "localhost:" + hostAddress;
- }
- builder.hostAddress(hostAddress).client(client);
- if (!StringUtils.isEmpty(username)) {
- builder.username(username).password(password);
- }
- String charset = System.getenv("P4CHARSET");
- if (!StringUtils.isBlank(charset)) {
- builder.charset(charset);
- }
- perforce = builder.build();
- }
-
- public void commitWorkingCopy(int changeListId, String commitMessage) throws IOException {
- perforce.commitWorkingCopy(changeListId, commitMessage);
- }
-
- @Override
- public void commitWorkingCopy(String commitMessage) throws IOException, InterruptedException {
- throw new UnsupportedOperationException("Use the overloaded method");
- }
-
- public void createTag(String label, String commitMessage, String changeListId) throws IOException {
- perforce.createLabel(label, commitMessage, changeListId);
- }
-
- @Override
- public void createTag(String tagUrl, String commitMessage) throws IOException, InterruptedException {
- throw new UnsupportedOperationException("Use the overloaded method");
- }
-
- @Override
- public String getRemoteUrl() {
- throw new UnsupportedOperationException("Remote URL not supported");
- }
-
- public void revertWorkingCopy(int changeListId) throws IOException {
- perforce.revertWorkingCopy(changeListId);
- }
-
- public void deleteLabel(String tagUrl) throws IOException {
- perforce.deleteLabel(tagUrl);
- }
-
- public void edit(int changeListId, File releaseVersion) throws IOException {
- perforce.editFile(changeListId, releaseVersion);
- }
-
- /**
- * Creates a new changelist and returns its id number
- *
- * @return The id of the newly created changelist
- * @throws IOException In case of errors communicating with perforce server
- */
- public int createNewChangeList() throws IOException {
- return perforce.createNewChangeList();
- }
-
- public void deleteChangeList(int changeListId) throws IOException {
- perforce.deleteChangeList(changeListId);
- }
-
- public int getDefaultChangeListId() throws IOException {
- return perforce.getDefaultChangeListId();
- }
-
- public void closeConnection() throws IOException {
- perforce.closeConnection();
- }
-}
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryCollectBuildIssuesTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryCollectBuildIssuesTask.java
index c78f1913..a487ee04 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryCollectBuildIssuesTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryCollectBuildIssuesTask.java
@@ -6,8 +6,10 @@
import com.atlassian.bamboo.v2.build.BuildContext;
import com.atlassian.bamboo.variable.CustomVariableContext;
import com.atlassian.spring.container.ContainerManager;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuildInfoHelper;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.CollectBuildIssuesContext;
@@ -19,6 +21,7 @@
import org.jfrog.build.extractor.clientConfiguration.ArtifactoryManagerBuilder;
import org.jfrog.build.extractor.issuesCollection.IssuesCollector;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.util.Map;
@@ -26,14 +29,23 @@
import static org.jfrog.build.extractor.clientConfiguration.util.GitUtils.extractVcs;
public class ArtifactoryCollectBuildIssuesTask extends ArtifactoryTaskType {
- private final EnvironmentVariableAccessor environmentVariableAccessor;
+ @Inject
+ @ComponentImport
+ private EnvironmentVariableAccessor environmentVariableAccessor;
private CollectBuildIssuesContext collectBuildIssuesContext;
+ @Inject
+ @ComponentImport
private CustomVariableContext customVariableContext;
private BuildInfoHelper buildInfoHelper;
+ @Inject
+ private ServerConfigManager serverConfigManager;
- public ArtifactoryCollectBuildIssuesTask(EnvironmentVariableAccessor environmentVariableAccessor) {
+ public void setEnvironmentVariableAccessor(EnvironmentVariableAccessor environmentVariableAccessor) {
this.environmentVariableAccessor = environmentVariableAccessor;
- ContainerManager.autowireComponent(this);
+ }
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
}
@Override
@@ -47,7 +59,7 @@ protected void initTask(@NotNull CommonTaskContext context) throws TaskException
collectBuildIssuesContext.getBuildNumber(buildContext), taskContext, buildContext,
environmentVariableAccessor, collectBuildIssuesContext.getArtifactoryServerId(),
collectBuildIssuesContext.getOverriddenUsername(runtimeContext, buildInfoLog, true),
- collectBuildIssuesContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager);
+ collectBuildIssuesContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager, serverConfigManager);
}
@NotNull
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDeploymentDownloadTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDeploymentDownloadTask.java
index c7e9f0fd..09bac493 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDeploymentDownloadTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDeploymentDownloadTask.java
@@ -7,6 +7,7 @@
import com.atlassian.bamboo.task.TaskResult;
import com.atlassian.bamboo.task.TaskResultBuilder;
import com.atlassian.bamboo.variable.CustomVariableContext;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
import org.jfrog.bamboo.admin.ServerConfigManager;
@@ -18,6 +19,7 @@
import org.jfrog.build.extractor.clientConfiguration.client.artifactory.ArtifactoryManager;
import org.jfrog.build.extractor.clientConfiguration.util.spec.SpecsHelper;
+import javax.inject.Inject;
import java.io.IOException;
import java.util.Map;
@@ -27,10 +29,14 @@
* @author Yahav Itzhak
*/
public class ArtifactoryDeploymentDownloadTask extends ArtifactoryDeploymentTaskType {
+ @Inject
+ @ComponentImport
private CustomVariableContext customVariableContext;
private ServerConfig downloadServerConfig;
private GenericContext genericContext;
private String fileSpec;
+ @Inject
+ private ServerConfigManager serverConfigManager;
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
@@ -54,7 +60,6 @@ public TaskResult runTask(@NotNull DeploymentTaskContext deploymentTaskContext)
}
private ServerConfig getArtifactoryServerConfig(BuildParamsOverrideManager buildParamsOverrideManager) {
- ServerConfigManager serverConfigManager = ServerConfigManager.getInstance();
ServerConfig selectedServerConfig = serverConfigManager.getServerConfigById(genericContext.getSelectedServerId());
if (selectedServerConfig == null) {
throw new IllegalArgumentException("Could not find Artifactory server. Please check the Artifactory server in the task configuration.");
@@ -79,6 +84,10 @@ public void setCustomVariableContext(CustomVariableContext customVariableContext
this.customVariableContext = customVariableContext;
}
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
@Override
protected ServerConfig getUsageServerConfig() {
return downloadServerConfig;
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDeploymentUploadTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDeploymentUploadTask.java
index 69d30372..5fe64ed0 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDeploymentUploadTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDeploymentUploadTask.java
@@ -6,6 +6,7 @@
import com.atlassian.bamboo.task.TaskResult;
import com.atlassian.bamboo.task.TaskResultBuilder;
import com.atlassian.bamboo.variable.CustomVariableContext;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
@@ -20,6 +21,7 @@
import org.jfrog.build.extractor.clientConfiguration.ArtifactoryManagerBuilder;
import org.jfrog.build.extractor.clientConfiguration.util.spec.SpecsHelper;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
@@ -32,10 +34,15 @@
*/
public class ArtifactoryDeploymentUploadTask extends ArtifactoryDeploymentTaskType {
+ @Inject
+ @ComponentImport
private CustomVariableContext customVariableContext;
private ServerConfig uploadServerConfig;
private String fileSpec;
+ @Inject
+ private ServerConfigManager serverConfigManager;
+
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
super.initTask(context);
@@ -45,7 +52,7 @@ protected void initTask(@NotNull CommonTaskContext context) throws TaskException
uploadServerConfig = TaskUtils.getResolutionServerConfig(
deploymentUploadContext.getOverriddenUsername(runtimeContext, buildInfoLog, true),
deploymentUploadContext.getOverriddenPassword(runtimeContext, buildInfoLog, true),
- ServerConfigManager.getInstance(), selectedServerConfig, new BuildParamsOverrideManager(customVariableContext));
+ serverConfigManager, selectedServerConfig, new BuildParamsOverrideManager(customVariableContext));
}
@NotNull
@@ -95,7 +102,6 @@ private void initFileSpec(CommonTaskContext context) throws IOException {
* Get configurations of the selected server in the task definition.
*/
private ServerConfig getSelectedServerConfig(@NotNull CommonTaskContext deploymentTaskContext) {
- ServerConfigManager serverConfigManager = ServerConfigManager.getInstance();
String serverId = deploymentTaskContext.getConfigurationMap().get(ArtifactoryDeploymentUploadConfiguration.DEPLOYMENT_PREFIX + PackageManagersContext.SERVER_ID_PARAM);
if (StringUtils.isBlank(serverId)) {
// Compatibility with version 1.8.0
@@ -127,4 +133,8 @@ private Boolean isFileSpecInJobConfiguration(CommonTaskContext context) {
public void setCustomVariableContext(CustomVariableContext customVariableContext) {
this.customVariableContext = customVariableContext;
}
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDockerTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDockerTask.java
index 28f0c659..8dd36cdf 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDockerTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDockerTask.java
@@ -5,8 +5,10 @@
import com.atlassian.bamboo.v2.build.BuildContext;
import com.atlassian.bamboo.variable.CustomVariableContext;
import com.atlassian.spring.container.ContainerManager;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuildInfoHelper;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.DockerBuildContext;
@@ -16,14 +18,18 @@
import org.jfrog.build.extractor.docker.extractor.DockerPull;
import org.jfrog.build.extractor.docker.extractor.DockerPush;
+import javax.inject.Inject;
import java.util.Map;
/**
* Created by Bar Belity on 09/10/2020.
*/
public class ArtifactoryDockerTask extends ArtifactoryTaskType {
- private final EnvironmentVariableAccessor environmentVariableAccessor;
+ @Inject
+ @ComponentImport
+ private EnvironmentVariableAccessor environmentVariableAccessor;
private BuildParamsOverrideManager buildParamsOverrideManager;
+ @Inject
private CustomVariableContext customVariableContext;
private Map environmentVariables;
private DockerBuildContext dockerBuildContext;
@@ -32,10 +38,8 @@ public class ArtifactoryDockerTask extends ArtifactoryTaskType {
private String buildName;
private ArtifactoryManagerBuilder artifactoryManagerBuilder;
- public ArtifactoryDockerTask(EnvironmentVariableAccessor environmentVariableAccessor) {
- this.environmentVariableAccessor = environmentVariableAccessor;
- ContainerManager.autowireComponent(this);
- }
+ @Inject
+ private ServerConfigManager serverConfigManager;
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
@@ -100,12 +104,12 @@ private void initBuildInfoHelper(BuildContext buildContext) {
buildInfoHelper = BuildInfoHelper.createResolveBuildInfoHelper(buildName, buildNumber, taskContext, buildContext,
environmentVariableAccessor, dockerBuildContext.getResolutionArtifactoryServerId(),
dockerBuildContext.getOverriddenUsername(runtimeContext, buildInfoLog, false),
- dockerBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, false), buildParamsOverrideManager);
+ dockerBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, false), buildParamsOverrideManager, serverConfigManager);
} else {
buildInfoHelper = BuildInfoHelper.createDeployBuildInfoHelper(buildName, buildNumber, taskContext, buildContext,
environmentVariableAccessor, dockerBuildContext.getArtifactoryServerId(),
dockerBuildContext.getOverriddenUsername(runtimeContext, buildInfoLog, true),
- dockerBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager);
+ dockerBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager, serverConfigManager);
}
}
@@ -113,6 +117,14 @@ public void setCustomVariableContext(CustomVariableContext customVariableContext
this.customVariableContext = customVariableContext;
}
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setEnvironmentVariableAccessor(EnvironmentVariableAccessor environmentVariableAccessor) {
+ this.environmentVariableAccessor = environmentVariableAccessor;
+ }
+
@Override
protected ServerConfig getUsageServerConfig() {
return buildInfoHelper.getServerConfig();
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDotNetCoreTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDotNetCoreTask.java
index 05fbfa48..a1030d9c 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDotNetCoreTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDotNetCoreTask.java
@@ -1,11 +1,11 @@
package org.jfrog.bamboo.task;
-import com.atlassian.bamboo.process.EnvironmentVariableAccessor;
import com.atlassian.bamboo.task.CommonTaskContext;
import com.atlassian.bamboo.task.TaskException;
-import com.atlassian.bamboo.v2.build.agent.capability.CapabilityContext;
import org.jetbrains.annotations.NotNull;
+import javax.inject.Inject;
+
/**
* Created by Bar Belity on 13/10/2020.
*/
@@ -14,10 +14,6 @@ public class ArtifactoryDotNetCoreTask extends ArtifactoryDotNetTaskBase {
private static final String EXECUTABLE_NAME = "dotnet";
private static final String DOTNETCORE_KEY = "system.builder.dotnet.";
- public ArtifactoryDotNetCoreTask(EnvironmentVariableAccessor environmentVariableAccessor, final CapabilityContext capabilityContext) {
- super(environmentVariableAccessor, capabilityContext);
- }
-
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
initTask(context, DOTNETCORE_KEY, EXECUTABLE_NAME, TASK_NAME, TaskType.DOTNET);
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDotNetTaskBase.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDotNetTaskBase.java
index ff0aaf90..aaa9377e 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryDotNetTaskBase.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryDotNetTaskBase.java
@@ -10,6 +10,7 @@
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuildInfoHelper;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.DotNetBuildContext;
@@ -21,6 +22,7 @@
import org.jfrog.build.extractor.clientConfiguration.util.spec.SpecsHelper;
import org.jfrog.build.extractor.nuget.extractor.NugetRun;
+import javax.inject.Inject;
import java.io.File;
import java.nio.file.Path;
import java.util.HashMap;
@@ -32,8 +34,11 @@
*/
public abstract class ArtifactoryDotNetTaskBase extends ArtifactoryTaskType {
- protected final EnvironmentVariableAccessor environmentVariableAccessor;
- protected final CapabilityContext capabilityContext;
+ @Inject
+ protected EnvironmentVariableAccessor environmentVariableAccessor;
+ @Inject
+ protected CapabilityContext capabilityContext;
+ @Inject
protected CustomVariableContext customVariableContext;
protected DotNetBuildContext dotNetBuildContext;
protected BuildInfoHelper buildInfoHelper;
@@ -51,6 +56,8 @@ public abstract class ArtifactoryDotNetTaskBase extends ArtifactoryTaskType {
" }\n" +
" ]\n" +
"}";
+ @Inject
+ private ServerConfigManager serverConfigManager;
protected void initTask(CommonTaskContext context, String taskKey, String executable, String taskName, TaskType taskType) throws TaskException {
super.initTask(context);
@@ -96,12 +103,6 @@ public TaskResult runTask(@NotNull TaskContext taskContext) {
return TaskResultBuilder.newBuilder(taskContext).success().build();
}
- protected ArtifactoryDotNetTaskBase(EnvironmentVariableAccessor environmentVariableAccessor, final CapabilityContext capabilityContext) {
- this.environmentVariableAccessor = environmentVariableAccessor;
- this.capabilityContext = capabilityContext;
- ContainerManager.autowireComponent(this);
- }
-
protected BuildInfo executeRestore() {
ArtifactoryManagerBuilder artifactoryManagerBuilder = TaskUtils.getArtifactoryManagerBuilderBuilder(
buildInfoHelper.getServerConfig(), new BuildInfoLog(log, logger));
@@ -164,12 +165,12 @@ protected void initBuildInfoHelper(BuildContext buildContext) {
buildInfoHelper = BuildInfoHelper.createResolveBuildInfoHelper(buildName, buildNumber, taskContext, buildContext,
environmentVariableAccessor, dotNetBuildContext.getResolutionArtifactoryServerId(),
dotNetBuildContext.getOverriddenUsername(runtimeContext, buildInfoLog, false),
- dotNetBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, false), buildParamsOverrideManager);
+ dotNetBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, false), buildParamsOverrideManager, serverConfigManager);
} else {
buildInfoHelper = BuildInfoHelper.createDeployBuildInfoHelper(buildName, buildNumber, taskContext, buildContext,
environmentVariableAccessor, dotNetBuildContext.getArtifactoryServerId(),
dotNetBuildContext.getOverriddenUsername(runtimeContext, buildInfoLog, true),
- dotNetBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager);
+ dotNetBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager, serverConfigManager);
}
}
@@ -177,6 +178,18 @@ public void setCustomVariableContext(CustomVariableContext customVariableContext
this.customVariableContext = customVariableContext;
}
+ public void setCapabilityContext(CapabilityContext capabilityContext) {
+ this.capabilityContext = capabilityContext;
+ }
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setEnvironmentVariableAccessor(EnvironmentVariableAccessor environmentVariableAccessor) {
+ this.environmentVariableAccessor = environmentVariableAccessor;
+ }
+
@Override
protected ServerConfig getUsageServerConfig() {
return buildInfoHelper.getServerConfig();
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryGenericDeployTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryGenericDeployTask.java
index dc245fd8..3c6dd393 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryGenericDeployTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryGenericDeployTask.java
@@ -7,19 +7,21 @@
import com.atlassian.bamboo.v2.build.CurrentBuildResult;
import com.atlassian.bamboo.variable.CustomVariableContext;
import com.atlassian.spring.container.ContainerManager;
-import com.google.common.collect.HashMultimap;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuildInfoHelper;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.GenericContext;
import org.jfrog.bamboo.util.FileSpecUtils;
import org.jfrog.bamboo.util.TaskDefinitionHelper;
import org.jfrog.bamboo.util.Utils;
+import org.jfrog.build.api.multiMap.ListMultimap;
+import org.jfrog.build.api.multiMap.Multimap;
import org.jfrog.build.api.util.FileChecksumCalculator;
import org.jfrog.build.extractor.ci.Artifact;
import org.jfrog.build.extractor.ci.BuildInfo;
@@ -29,6 +31,7 @@
import org.jfrog.build.extractor.clientConfiguration.util.PublishedItemsHelper;
import org.jfrog.build.extractor.clientConfiguration.util.spec.SpecsHelper;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
@@ -45,23 +48,32 @@
*/
public class ArtifactoryGenericDeployTask extends ArtifactoryTaskType {
public static final String TASK_NAME = "artifactoryGenericTask";
- private final EnvironmentVariableAccessor environmentVariableAccessor;
- private final BuildParamsOverrideManager buildParamsOverrideManager;
+ @Inject
+ @ComponentImport
+ private EnvironmentVariableAccessor environmentVariableAccessor;
+ private BuildParamsOverrideManager buildParamsOverrideManager;
+ @Inject
+ @ComponentImport
private CustomVariableContext customVariableContext;
private BuildInfoHelper buildInfoHelper;
private GenericContext genericContext;
private BuildContext buildContext;
private String fileSpec;
+ @Inject
+ private ServerConfigManager serverConfigManager;
- public ArtifactoryGenericDeployTask(EnvironmentVariableAccessor environmentVariableAccessor) {
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setEnvironmentVariableAccessor(EnvironmentVariableAccessor environmentVariableAccessor) {
this.environmentVariableAccessor = environmentVariableAccessor;
- ContainerManager.autowireComponent(this);
- this.buildParamsOverrideManager = new BuildParamsOverrideManager(customVariableContext);
}
@Override
public void initTask(@NotNull CommonTaskContext context) throws TaskException {
super.initTask(context);
+ this.buildParamsOverrideManager = new BuildParamsOverrideManager(customVariableContext);
buildContext = ((TaskContext) taskContext).getBuildContext();
genericContext = new GenericContext(taskContext.getConfigurationMap());
Map runtimeContext = context.getRuntimeTaskContext();
@@ -70,7 +82,8 @@ public void initTask(@NotNull CommonTaskContext context) throws TaskException {
genericContext.getSelectedServerId(),
genericContext.getOverriddenUsername(runtimeContext, buildInfoLog, true),
genericContext.getOverriddenPassword(runtimeContext, buildInfoLog, true),
- buildParamsOverrideManager);
+ buildParamsOverrideManager,
+ serverConfigManager);
}
@Override
@@ -160,7 +173,7 @@ private File getWorkingDirectory() {
private Multimap buildTargetPathToFiles(File directory, GenericContext context)
throws IOException {
- Multimap result = HashMultimap.create();
+ Multimap result = new ListMultimap<>();
String deployPattern = context.getDeployPattern();
deployPattern = StringUtils.replace(deployPattern, "\r\n", "\n");
deployPattern = StringUtils.replace(deployPattern, ",", "\n");
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryGenericResolveTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryGenericResolveTask.java
index 2b337b4d..86fb6200 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryGenericResolveTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryGenericResolveTask.java
@@ -9,6 +9,7 @@
import com.google.common.collect.Lists;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuildInfoHelper;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.GenericContext;
@@ -22,6 +23,7 @@
import org.jfrog.build.extractor.clientConfiguration.client.artifactory.ArtifactoryManager;
import org.jfrog.build.extractor.clientConfiguration.util.spec.SpecsHelper;
+import javax.inject.Inject;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -31,22 +33,21 @@
*/
public class ArtifactoryGenericResolveTask extends ArtifactoryTaskType {
- private final EnvironmentVariableAccessor environmentVariableAccessor;
- private final BuildParamsOverrideManager buildParamsOverrideManager;
+ @Inject
+ private EnvironmentVariableAccessor environmentVariableAccessor;
+ private BuildParamsOverrideManager buildParamsOverrideManager;
+ @Inject
private CustomVariableContext customVariableContext;
private BuildInfoHelper buildInfoHelper;
private GenericContext genericContext;
private String fileSpec;
-
- public ArtifactoryGenericResolveTask(EnvironmentVariableAccessor environmentVariableAccessor) {
- this.environmentVariableAccessor = environmentVariableAccessor;
- ContainerManager.autowireComponent(this);
- this.buildParamsOverrideManager = new BuildParamsOverrideManager(customVariableContext);
- }
+ @Inject
+ private ServerConfigManager serverConfigManager;
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
super.initTask(context);
+ this.buildParamsOverrideManager = new BuildParamsOverrideManager(customVariableContext);
BuildContext buildContext = ((TaskContext) context).getBuildContext();
genericContext = new GenericContext(context.getConfigurationMap());
Map runtimeContext = context.getRuntimeTaskContext();
@@ -54,7 +55,7 @@ protected void initTask(@NotNull CommonTaskContext context) throws TaskException
genericContext.getBuildNumber(buildContext), context, buildContext, environmentVariableAccessor,
genericContext.getSelectedServerId(),
genericContext.getOverriddenUsername(runtimeContext, buildInfoLog, false),
- genericContext.getOverriddenPassword(runtimeContext, buildInfoLog, false), buildParamsOverrideManager);
+ genericContext.getOverriddenPassword(runtimeContext, buildInfoLog, false), buildParamsOverrideManager, serverConfigManager);
}
@NotNull
@@ -110,4 +111,12 @@ private void initFileSpec(CommonTaskContext context, BuildLogger logger) throws
public void setCustomVariableContext(CustomVariableContext customVariableContext) {
this.customVariableContext = customVariableContext;
}
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setEnvironmentVariableAccessor(EnvironmentVariableAccessor environmentVariableAccessor) {
+ this.environmentVariableAccessor = environmentVariableAccessor;
+ }
}
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryGradleTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryGradleTask.java
index 3dc267ca..cf424f0a 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryGradleTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryGradleTask.java
@@ -16,6 +16,7 @@
import org.apache.tools.ant.types.Commandline;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuilderDependencyHelper;
import org.jfrog.bamboo.builder.GradleDataHelper;
import org.jfrog.bamboo.context.GradleBuildContext;
@@ -27,6 +28,7 @@
import org.jfrog.build.extractor.ci.BuildInfoFields;
import org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -50,32 +52,28 @@ public class ArtifactoryGradleTask extends BaseJavaBuildTask {
public static final String EXECUTABLE_WRAPPER_NAME = SystemUtils.IS_OS_WINDOWS ? "./gradlew.bat" : "./gradlew";
public static final String EXECUTABLE_NAME = SystemUtils.IS_OS_WINDOWS ? "gradle.bat" : "gradle";
private static final String GRADLE_KEY = "system.builder.gradle.";
+ @Inject
private AdministrationConfiguration administrationConfiguration;
- private final BuilderDependencyHelper dependencyHelper;
- private final CapabilityContext capabilityContext;
+ private BuilderDependencyHelper dependencyHelper;
+ @Inject
+ private CapabilityContext capabilityContext;
private GradleBuildContext gradleBuildContext;
private GradleDataHelper gradleDataHelper;
private String artifactoryPluginVersion;
private String gradleDependenciesDir;
-
- public ArtifactoryGradleTask(final ProcessService processService,
- final EnvironmentVariableAccessor environmentVariableAccessor, final CapabilityContext capabilityContext,
- TestCollationService testCollationService) {
- super(testCollationService, environmentVariableAccessor, processService);
- this.capabilityContext = capabilityContext;
- dependencyHelper = new BuilderDependencyHelper("artifactoryGradleBuilder");
- ContainerManager.autowireComponent(dependencyHelper);
- }
+ @Inject
+ private ServerConfigManager serverConfigManager;
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
super.initTask(context);
+ dependencyHelper = new BuilderDependencyHelper("artifactoryGradleBuilder");
artifactoryPluginVersion = Utils.getPluginVersion(pluginAccessor);
gradleBuildContext = createBuildContext(context);
initEnvironmentVariables(gradleBuildContext);
aggregateBuildInfo = gradleBuildContext.shouldAggregateBuildInfo(context);
gradleDataHelper = new GradleDataHelper(buildParamsOverrideManager, context, gradleBuildContext,
- administrationConfiguration, environmentVariableAccessor, artifactoryPluginVersion, aggregateBuildInfo);
+ administrationConfiguration, environmentVariableAccessor, artifactoryPluginVersion, aggregateBuildInfo, serverConfigManager);
}
@Override
@@ -240,4 +238,12 @@ private String extractGradleDependencies(long artifactoryServerId, GradleBuildCo
public void setAdministrationConfiguration(AdministrationConfiguration administrationConfiguration) {
this.administrationConfiguration = administrationConfiguration;
}
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setCapabilityContext(CapabilityContext capabilityContext) {
+ this.capabilityContext = capabilityContext;
+ }
}
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryIvyTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryIvyTask.java
index 72f9eb03..be661afa 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryIvyTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryIvyTask.java
@@ -16,6 +16,7 @@
import org.apache.tools.ant.types.Commandline;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuilderDependencyHelper;
import org.jfrog.bamboo.builder.IvyDataHelper;
import org.jfrog.bamboo.builder.MavenAndIvyBuildInfoDataHelperBase;
@@ -24,6 +25,7 @@
import org.jfrog.bamboo.util.TaskUtils;
import org.jfrog.bamboo.util.Utils;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
@@ -41,26 +43,18 @@ public class ArtifactoryIvyTask extends BaseJavaBuildTask {
public static final String TASK_NAME = "artifactoryIvyTask";
public static final String EXECUTABLE_NAME = SystemUtils.IS_OS_WINDOWS ? "ant.bat" : "ant";
private static final String IVY_KEY = "system.builder.ivy.";
- private final EnvironmentVariableAccessor environmentVariableAccessor;
- private final CapabilityContext capabilityContext;
- private final BuilderDependencyHelper dependencyHelper;
+ private CapabilityContext capabilityContext;
+ private BuilderDependencyHelper dependencyHelper;
private IvyBuildContext ivyBuildContext;
private MavenAndIvyBuildInfoDataHelperBase ivyDataHelper;
private String artifactoryPluginVersion;
-
- public ArtifactoryIvyTask(final ProcessService processService,
- final EnvironmentVariableAccessor environmentVariableAccessor, final CapabilityContext capabilityContext,
- TestCollationService testCollationService) {
- super(testCollationService, environmentVariableAccessor, processService);
- this.environmentVariableAccessor = environmentVariableAccessor;
- this.capabilityContext = capabilityContext;
- dependencyHelper = new BuilderDependencyHelper("artifactoryIvyBuilder");
- ContainerManager.autowireComponent(dependencyHelper);
- }
+ @Inject
+ private ServerConfigManager serverConfigManager;
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
super.initTask(context);
+ dependencyHelper = new BuilderDependencyHelper("artifactoryIvyBuilder");
Map combinedMap = Maps.newHashMap();
combinedMap.putAll(context.getConfigurationMap());
combinedMap.putAll(((TaskContext)context).getBuildContext().getBuildDefinition().getCustomConfiguration());
@@ -68,7 +62,7 @@ protected void initTask(@NotNull CommonTaskContext context) throws TaskException
initEnvironmentVariables(ivyBuildContext);
aggregateBuildInfo = ivyBuildContext.shouldAggregateBuildInfo(context, ivyBuildContext.getArtifactoryServerId());
artifactoryPluginVersion = Utils.getPluginVersion(pluginAccessor);
- ivyDataHelper = new IvyDataHelper(buildParamsOverrideManager, context, ivyBuildContext, environmentVariableAccessor, artifactoryPluginVersion, aggregateBuildInfo);
+ ivyDataHelper = new IvyDataHelper(buildParamsOverrideManager, context, ivyBuildContext, environmentVariableAccessor, artifactoryPluginVersion, aggregateBuildInfo, serverConfigManager);
}
@Override
@@ -177,4 +171,12 @@ private String extractIvyDependencies(long artifactoryServerId, IvyBuildContext
return dependencyHelper.downloadDependenciesAndGetPath(bambooTmp, getPlanKey(customVariableContext), context,
PluginProperties.getPluginProperty(PluginProperties.IVY_DEPENDENCY_FILENAME_KEY));
}
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setCapabilityContext(CapabilityContext capabilityContext) {
+ this.capabilityContext = capabilityContext;
+ }
}
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryMaven3Task.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryMaven3Task.java
index b9d9457e..b631dfb4 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryMaven3Task.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryMaven3Task.java
@@ -15,6 +15,7 @@
import org.apache.tools.ant.types.Commandline;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuilderDependencyHelper;
import org.jfrog.bamboo.builder.MavenDataHelper;
import org.jfrog.bamboo.context.Maven3BuildContext;
@@ -22,6 +23,7 @@
import org.jfrog.bamboo.util.TaskUtils;
import org.jfrog.bamboo.util.Utils;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -44,32 +46,24 @@
public class ArtifactoryMaven3Task extends BaseJavaBuildTask {
public static final String TASK_NAME = "maven3Task";
- private final EnvironmentVariableAccessor environmentVariableAccessor;
- private final BuilderDependencyHelper dependencyHelper;
- private final CapabilityContext capabilityContext;
+ private BuilderDependencyHelper dependencyHelper;
+ private CapabilityContext capabilityContext;
private Maven3BuildContext mavenBuildContext;
private MavenDataHelper mavenDataHelper;
private String artifactoryPluginVersion;
-
- public ArtifactoryMaven3Task(final ProcessService processService,
- final EnvironmentVariableAccessor environmentVariableAccessor, final CapabilityContext capabilityContext,
- TestCollationService testCollationService) {
- super(testCollationService, environmentVariableAccessor, processService);
- this.environmentVariableAccessor = environmentVariableAccessor;
- this.capabilityContext = capabilityContext;
- this.dependencyHelper = new BuilderDependencyHelper("artifactoryMaven3Builder");
- ContainerManager.autowireComponent(dependencyHelper);
- }
+ @Inject
+ private ServerConfigManager serverConfigManager;
@Override
protected void initTask(@NotNull CommonTaskContext taskContext) throws TaskException {
super.initTask(taskContext);
+ this.dependencyHelper = new BuilderDependencyHelper("artifactoryMaven3Builder");
artifactoryPluginVersion = Utils.getPluginVersion(pluginAccessor);
mavenBuildContext = createBuildContext(taskContext);
initEnvironmentVariables(mavenBuildContext);
aggregateBuildInfo = mavenBuildContext.shouldAggregateBuildInfo(taskContext);
mavenDataHelper = new MavenDataHelper(buildParamsOverrideManager, (TaskContext) taskContext,
- mavenBuildContext, environmentVariableAccessor, artifactoryPluginVersion, aggregateBuildInfo);
+ mavenBuildContext, environmentVariableAccessor, artifactoryPluginVersion, aggregateBuildInfo, serverConfigManager);
}
@Override
@@ -418,4 +412,12 @@ private String getMavenHome(Maven3BuildContext context) {
private String getStringWithoutNewLines(String stringToModify) {
return StringUtils.replaceChars(stringToModify, "\r\n", " ");
}
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setCapabilityContext(CapabilityContext capabilityContext) {
+ this.capabilityContext = capabilityContext;
+ }
}
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryNpmTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryNpmTask.java
index 3e34876e..dc0ff226 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryNpmTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryNpmTask.java
@@ -9,6 +9,7 @@
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuildInfoHelper;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.NpmBuildContext;
@@ -20,6 +21,7 @@
import org.jfrog.build.extractor.npm.extractor.NpmInstallCi;
import org.jfrog.build.extractor.npm.extractor.NpmPublish;
+import javax.inject.Inject;
import java.io.File;
import java.nio.file.Path;
import java.util.Map;
@@ -29,9 +31,12 @@ public class ArtifactoryNpmTask extends ArtifactoryTaskType {
private static final String NPM_KEY = "system.builder.npm.";
private static final String EXECUTABLE_NAME = "npm";
- private final EnvironmentVariableAccessor environmentVariableAccessor;
- private final CapabilityContext capabilityContext;
+ @Inject
+ private EnvironmentVariableAccessor environmentVariableAccessor;
+ @Inject
+ private CapabilityContext capabilityContext;
private BuildParamsOverrideManager buildParamsOverrideManager;
+ @Inject
private CustomVariableContext customVariableContext;
private Map environmentVariables;
private NpmBuildContext npmBuildContext;
@@ -39,12 +44,8 @@ public class ArtifactoryNpmTask extends ArtifactoryTaskType {
private String buildNumber;
private String buildName;
private Path packagePath;
-
- public ArtifactoryNpmTask(EnvironmentVariableAccessor environmentVariableAccessor, final CapabilityContext capabilityContext) {
- this.environmentVariableAccessor = environmentVariableAccessor;
- this.capabilityContext = capabilityContext;
- ContainerManager.autowireComponent(this);
- }
+ @Inject
+ private ServerConfigManager serverConfigManager;
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
@@ -98,12 +99,12 @@ private void initBuildInfoHelper(BuildContext buildContext) {
buildInfoHelper = BuildInfoHelper.createResolveBuildInfoHelper(buildName, buildNumber, taskContext, buildContext,
environmentVariableAccessor, npmBuildContext.getResolutionArtifactoryServerId(),
npmBuildContext.getOverriddenUsername(runtimeContext, buildInfoLog, false),
- npmBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, false), buildParamsOverrideManager);
+ npmBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, false), buildParamsOverrideManager, serverConfigManager);
} else {
buildInfoHelper = BuildInfoHelper.createDeployBuildInfoHelper(buildName, buildNumber, taskContext, buildContext,
environmentVariableAccessor, npmBuildContext.getArtifactoryServerId(),
npmBuildContext.getOverriddenUsername(runtimeContext, buildInfoLog, true),
- npmBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager);
+ npmBuildContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager, serverConfigManager);
}
}
@@ -148,6 +149,18 @@ public void setCustomVariableContext(CustomVariableContext customVariableContext
this.customVariableContext = customVariableContext;
}
+ public void setCapabilityContext(CapabilityContext capabilityContext) {
+ this.capabilityContext = capabilityContext;
+ }
+
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setEnvironmentVariableAccessor(EnvironmentVariableAccessor environmentVariableAccessor) {
+ this.environmentVariableAccessor = environmentVariableAccessor;
+ }
+
public Map getEnv() throws TaskException {
Map env = TaskUtils.getEnvironmentVariables(npmBuildContext, environmentVariableAccessor);
// Npm commands expect the npm executable to be in "PATH".
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryNugetTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryNugetTask.java
index aafd308f..f73fe117 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryNugetTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryNugetTask.java
@@ -1,9 +1,7 @@
package org.jfrog.bamboo.task;
-import com.atlassian.bamboo.process.EnvironmentVariableAccessor;
import com.atlassian.bamboo.task.CommonTaskContext;
import com.atlassian.bamboo.task.TaskException;
-import com.atlassian.bamboo.v2.build.agent.capability.CapabilityContext;
import org.jetbrains.annotations.NotNull;
/**
@@ -14,10 +12,6 @@ public class ArtifactoryNugetTask extends ArtifactoryDotNetTaskBase {
private static final String EXECUTABLE_NAME = "nuget";
private static final String NUGET_KEY = "system.builder.nuget.";
- public ArtifactoryNugetTask(EnvironmentVariableAccessor environmentVariableAccessor, final CapabilityContext capabilityContext) {
- super(environmentVariableAccessor, capabilityContext);
- }
-
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
initTask(context, NUGET_KEY, EXECUTABLE_NAME, TASK_NAME, TaskType.NUGET);
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryPublishBuildInfoTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryPublishBuildInfoTask.java
index 3d8fc585..a14d3090 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryPublishBuildInfoTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryPublishBuildInfoTask.java
@@ -8,6 +8,7 @@
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jfrog.bamboo.admin.ServerConfig;
+import org.jfrog.bamboo.admin.ServerConfigManager;
import org.jfrog.bamboo.builder.BuildInfoHelper;
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.PublishBuildInfoContext;
@@ -20,6 +21,7 @@
import org.jfrog.build.extractor.clientConfiguration.ArtifactoryManagerBuilder;
import org.jfrog.build.extractor.clientConfiguration.client.artifactory.ArtifactoryManager;
+import javax.inject.Inject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -34,19 +36,26 @@
public class ArtifactoryPublishBuildInfoTask extends ArtifactoryTaskType {
public static final String TASK_NAME = "artifactoryPublishBuildInfoTask";
- private final EnvironmentVariableAccessor environmentVariableAccessor;
+ @Inject
+ private EnvironmentVariableAccessor environmentVariableAccessor;
+ @Inject
private CustomVariableContext customVariableContext;
private BuildInfoHelper buildInfoHelper;
-
- public ArtifactoryPublishBuildInfoTask(EnvironmentVariableAccessor environmentVariableAccessor) {
- this.environmentVariableAccessor = environmentVariableAccessor;
- ContainerManager.autowireComponent(this);
- }
+ @Inject
+ private ServerConfigManager serverConfigManager;
public void setCustomVariableContext(CustomVariableContext customVariableContext) {
this.customVariableContext = customVariableContext;
}
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
+ public void setEnvironmentVariableAccessor(EnvironmentVariableAccessor environmentVariableAccessor) {
+ this.environmentVariableAccessor = environmentVariableAccessor;
+ }
+
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
super.initTask(context);
@@ -58,7 +67,7 @@ protected void initTask(@NotNull CommonTaskContext context) throws TaskException
publishBuildInfoContext.getBuildNumber(buildContext), context, buildContext, environmentVariableAccessor,
publishBuildInfoContext.getArtifactoryServerId(),
publishBuildInfoContext.getOverriddenUsername(runtimeContext, buildInfoLog, true),
- publishBuildInfoContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager);
+ publishBuildInfoContext.getOverriddenPassword(runtimeContext, buildInfoLog, true), buildParamsOverrideManager, serverConfigManager);
}
@NotNull
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryTaskBase.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryTaskBase.java
index 4c62a23d..398a50eb 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryTaskBase.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryTaskBase.java
@@ -4,6 +4,7 @@
import com.atlassian.bamboo.task.CommonTaskContext;
import com.atlassian.bamboo.task.TaskException;
import com.atlassian.plugin.PluginAccessor;
+import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
@@ -13,6 +14,7 @@
import org.jfrog.build.api.util.Log;
import org.jfrog.build.extractor.usageReport.UsageReporter;
+import javax.inject.Inject;
import java.io.File;
/**
@@ -21,6 +23,8 @@
public abstract class ArtifactoryTaskBase {
protected static final Logger log = LogManager.getLogger(ArtifactoryTaskBase.class);
+ @Inject
+ @ComponentImport
protected PluginAccessor pluginAccessor;
protected CommonTaskContext taskContext;
// True if the task is attending to be run in a Docker container
diff --git a/src/main/java/org/jfrog/bamboo/task/ArtifactoryXrayScanTask.java b/src/main/java/org/jfrog/bamboo/task/ArtifactoryXrayScanTask.java
index a76ca329..e6f29821 100644
--- a/src/main/java/org/jfrog/bamboo/task/ArtifactoryXrayScanTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/ArtifactoryXrayScanTask.java
@@ -13,6 +13,7 @@
import org.jfrog.build.client.artifactoryXrayResponse.Summary;
import org.jfrog.build.extractor.clientConfiguration.client.artifactory.ArtifactoryManager;
+import javax.inject.Inject;
import java.io.IOException;
import java.util.Map;
@@ -20,9 +21,12 @@
* Created by Bar Belity on 24/05/2018.
*/
public class ArtifactoryXrayScanTask extends ArtifactoryTaskType {
+ @Inject
private CustomVariableContext customVariableContext;
private ServerConfig xrayServerConfig;
private XrayScanContext xrayContext;
+ @Inject
+ private ServerConfigManager serverConfigManager;
@Override
protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
@@ -54,6 +58,10 @@ public void setCustomVariableContext(CustomVariableContext customVariableContext
this.customVariableContext = customVariableContext;
}
+ public void setServerConfigManager(ServerConfigManager serverConfigManager) {
+ this.serverConfigManager = serverConfigManager;
+ }
+
@Override
protected ServerConfig getUsageServerConfig() {
return xrayServerConfig;
@@ -93,7 +101,6 @@ private Summary getSummaryFromResponse(ArtifactoryXrayResponse buildScanResult)
}
private void setXrayServerConfigurations(XrayScanContext xrayContext) {
- ServerConfigManager serverConfigManager = ServerConfigManager.getInstance();
xrayServerConfig = serverConfigManager.getServerConfigById(xrayContext.getArtifactoryServerId());
if (xrayServerConfig == null) {
throw new IllegalArgumentException("Could not find Artifactory server. Please check the Artifactory server in the task configuration.");
diff --git a/src/main/java/org/jfrog/bamboo/task/BaseJavaBuildTask.java b/src/main/java/org/jfrog/bamboo/task/BaseJavaBuildTask.java
index 4f844684..3dbe81af 100644
--- a/src/main/java/org/jfrog/bamboo/task/BaseJavaBuildTask.java
+++ b/src/main/java/org/jfrog/bamboo/task/BaseJavaBuildTask.java
@@ -23,6 +23,7 @@
import org.jfrog.bamboo.util.TaskUtils;
import org.jfrog.build.extractor.ci.BuildInfoFields;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.util.List;
@@ -42,30 +43,42 @@ public abstract class BaseJavaBuildTask extends ArtifactoryTaskType {
public static final String JAVA_HOME = "JAVA_HOME";
protected Map environmentVariables;
- protected final EnvironmentVariableAccessor environmentVariableAccessor;
- private final TestCollationService testCollationService;
+ @Inject
+ protected EnvironmentVariableAccessor environmentVariableAccessor;
+ @Inject
+ private TestCollationService testCollationService;
protected BuildParamsOverrideManager buildParamsOverrideManager;
+ @Inject
protected CustomVariableContext customVariableContext;
- private final ProcessService processService;
+ @Inject
+ private ProcessService processService;
String buildInfoPropertiesFile;
boolean activateBuildInfoRecording;
boolean aggregateBuildInfo;
- final File bambooTmp;
+ File bambooTmp;
- protected BaseJavaBuildTask(TestCollationService testCollationService,
- EnvironmentVariableAccessor environmentVariableAccessor, ProcessService processService) {
- ContainerManager.autowireComponent(this);
- this.testCollationService = testCollationService;
- this.processService = processService;
- this.environmentVariableAccessor = environmentVariableAccessor;
+ @Override
+ protected void initTask(@NotNull CommonTaskContext context) throws TaskException {
this.buildParamsOverrideManager = new BuildParamsOverrideManager(customVariableContext);
- this.bambooTmp = getBambooTmp(customVariableContext);
+ this.bambooTmp = getBambooTmp(customVariableContext);
}
public void setCustomVariableContext(CustomVariableContext customVariableContext) {
this.customVariableContext = customVariableContext;
}
+ public void setTestCollationService(TestCollationService testCollationService) {
+ this.testCollationService = testCollationService;
+ }
+
+ public void setCProcessService(ProcessService processService) {
+ this.processService = processService;
+ }
+
+ public void setEnvironmentVariableAccessor(EnvironmentVariableAccessor environmentVariableAccessor) {
+ this.environmentVariableAccessor = environmentVariableAccessor;
+ }
+
void initEnvironmentVariables(PackageManagersContext buildContext) {
environmentVariables = TaskUtils.getEnvironmentVariables(buildContext, environmentVariableAccessor);
}
diff --git a/src/main/java/org/jfrog/bamboo/util/TaskUtils.java b/src/main/java/org/jfrog/bamboo/util/TaskUtils.java
index 659d384b..5680f4e3 100644
--- a/src/main/java/org/jfrog/bamboo/util/TaskUtils.java
+++ b/src/main/java/org/jfrog/bamboo/util/TaskUtils.java
@@ -7,9 +7,7 @@
import com.atlassian.bamboo.v2.build.agent.capability.CapabilityContext;
import com.atlassian.bamboo.v2.build.agent.capability.ReadOnlyCapabilitySet;
import com.atlassian.bamboo.variable.CustomVariableContext;
-import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Maps;
-import com.google.common.collect.Multimaps;
import org.apache.commons.lang.SystemUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.tools.ant.types.Commandline;
@@ -19,6 +17,8 @@
import org.jfrog.bamboo.configuration.BuildParamsOverrideManager;
import org.jfrog.bamboo.context.PackageManagersContext;
import org.jfrog.bamboo.util.version.VcsHelper;
+import org.jfrog.build.api.multiMap.ListMultimap;
+import org.jfrog.build.api.multiMap.Multimap;
import org.jfrog.build.api.util.Log;
import org.jfrog.build.extractor.BuildInfoExtractorUtils;
import org.jfrog.build.extractor.ci.BuildInfo;
@@ -296,10 +296,10 @@ public static Map getEnvironmentVariables(PackageManagersContext
*
* @return Map containing all properties.
*/
- public static ArrayListMultimap getCommonArtifactPropertiesMap(BuildInfoHelper buildInfoHelper) {
+ public static Multimap getCommonArtifactPropertiesMap(BuildInfoHelper buildInfoHelper) {
Map propertiesMap = new HashMap<>();
buildInfoHelper.addCommonProperties(propertiesMap);
- return ArrayListMultimap.create(Multimaps.forMap(propertiesMap));
+ return new ListMultimap(propertiesMap);
}
/**
diff --git a/src/main/resources/META-INF/spring/spring-scanner.xml b/src/main/resources/META-INF/spring/spring-scanner.xml
new file mode 100644
index 00000000..8fbe42d9
--- /dev/null
+++ b/src/main/resources/META-INF/spring/spring-scanner.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/atlassian-plugin.xml b/src/main/resources/atlassian-plugin.xml
index 722ebb3c..da0fba48 100644
--- a/src/main/resources/atlassian-plugin.xml
+++ b/src/main/resources/atlassian-plugin.xml
@@ -29,10 +29,6 @@
-
-
-
/admin/jfrogConfig.action
@@ -397,10 +393,4 @@
-
-
-
-
-
-
\ No newline at end of file