package jetbrains.buildserver.sonarplugin.sqrunner; import jetbrains.buildServer.serverSide.*; import jetbrains.buildserver.sonarplugin.Constants; import jetbrains.buildserver.sonarplugin.Util; import jetbrains.buildserver.sonarplugin.sqrunner.manager.SQSInfo; import jetbrains.buildserver.sonarplugin.sqrunner.manager.SQSManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * Created by Andrey Titov on 6/2/14. * <p> * SonarQube Server parameters provider. Resolves SQS parameters by it's ID before build is started. */ public class SQSPropertiesProvider implements BuildStartContextProcessor { @NotNull private final ProjectManager myProjectManager; @NotNull private final SQSManager mySqsManager; public SQSPropertiesProvider(@NotNull final ProjectManager projectManager, @NotNull final SQSManager sqsManager) { myProjectManager = projectManager; mySqsManager = sqsManager; } public void updateParameters(@NotNull final BuildStartContext context) { for (SRunnerContext runnerContext : context.getRunnerContexts()) { if (!Constants.RUNNER_TYPE.equals(runnerContext.getType())) { continue; } final SQSInfo server = getSqsInfo(context, runnerContext); if (server == null) { continue; } doUpdateParameters(runnerContext, server); } } private SQSInfo getSqsInfo(@NotNull final BuildStartContext context, @NotNull final SRunnerContext runnerContext) { final String serverId = runnerContext.getParameters().get(Constants.SONAR_SERVER_ID); if (serverId == null) { return null; } final SProject project = myProjectManager.findProjectById(context.getBuild().getProjectId()); if (project == null) { return null; } return mySqsManager.getServer(project, serverId); } private void doUpdateParameters(@NotNull final SRunnerContext runnerContext, @NotNull final SQSInfo server) { addIfNotNull(runnerContext, Constants.SONAR_HOST_URL, server.getUrl()); addIfNotNull(runnerContext, Constants.SONAR_LOGIN, server.getLogin()); addIfNotNull(runnerContext, Constants.SONAR_SERVER_JDBC_URL, server.getJDBCUrl()); addIfNotNull(runnerContext, Constants.SONAR_SERVER_JDBC_USERNAME, server.getJDBCUsername()); if (!Util.isEmpty(server.getPassword())) { runnerContext.addRunnerParameter(Constants.SONAR_PASSWORD, server.getPassword()); } if (!Util.isEmpty(server.getJDBCPassword())) { runnerContext.addRunnerParameter(Constants.SONAR_SERVER_JDBC_PASSWORD, server.getJDBCPassword()); } } private static void addIfNotNull(@NotNull final SRunnerContext runnerContext, @NotNull final String key, @Nullable final String value) { if (!Util.isEmpty(value)) { runnerContext.addRunnerParameter(key, value); } } }