package org.jfrog.bamboo.context;
import com.google.common.base.Function;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.apache.commons.lang.StringUtils;
import org.jfrog.bamboo.bintray.PushToBintrayContext;
import java.util.Map;
import java.util.Set;
/**
* @author Tomer Cohen
*/
public class Maven3BuildContext extends AbstractBuildContext {
public static final String PREFIX = "builder.artifactoryMaven3Builder.";
public static final String DEPLOYABLE_REPO_KEY = "deployableRepo";
public static final String PUBLISH_ARTIFACTS = "deployMavenArtifacts";
public static final String RECORD_ALL_DEPENDENCIES = "recordAllDependencies";
public static final String INCLUDE_PATTERN = "deployIncludePatterns";
public static final String EXCLUDE_PATTERN = "deployExcludePatterns";
public static final String GOALS = "goal";
public static final String MAVEN_OPTS = "mavenOpts";
public static final String PROJECT_FILE = "projectFile";
public static final String ADDITIONAL_MAVEN_PARAMS = "additionalMavenParams";
public static final String WORKING_SUB_DIRECTORY = "workingSubDirectory";
public static final String RESOLVE_FROM_ARTIFACTORY = "resolveFromArtifacts";
public static final String RESOLUTION_SERVER_ID = "resolutionArtifactoryServerId";
public static final String RESOLVER_USER_NAME = "resolverUsername";
public static final String RESOLVER_PASSWORD = "resolverPassword";
public Maven3BuildContext(Map<String, String> env) {
super(PREFIX, env);
}
public String getGoals() {
return env.get(PREFIX + GOALS);
}
public String getProjectFile() {
return env.get(PREFIX + PROJECT_FILE);
}
public String getAdditionalMavenParams() {
return env.get(PREFIX + ADDITIONAL_MAVEN_PARAMS);
}
@Override
public String getPublishingRepo() {
return env.get(PREFIX + DEPLOYABLE_REPO_KEY);
}
@Override
public boolean isPublishArtifacts() {
return Boolean.parseBoolean(env.get(PUBLISH_ARTIFACTS));
}
public Boolean isRecordAllDependencies() {
return Boolean.parseBoolean(env.get(RECORD_ALL_DEPENDENCIES));
}
public boolean isResolveFromArtifactory() {
return Boolean.parseBoolean(env.get(RESOLVE_FROM_ARTIFACTORY));
}
public long getResolutionArtifactoryServerId() {
String serverId = env.get(PREFIX + RESOLUTION_SERVER_ID);
if (StringUtils.isBlank(serverId)) {
return -1;
}
return Long.parseLong(serverId);
}
public String getResolverUserName() {
return env.get(PREFIX + RESOLVER_USER_NAME);
}
public String getResolverPassword() {
return env.get(PREFIX + RESOLVER_PASSWORD);
}
public String getMavenOpts() {
return env.get(PREFIX + MAVEN_OPTS);
}
public String getWorkingSubDirectory() {
return env.get(PREFIX + WORKING_SUB_DIRECTORY);
}
@Override
public String getIncludePattern() {
return env.get(PREFIX + INCLUDE_PATTERN);
}
@Override
public String getExcludePattern() {
return env.get(PREFIX + EXCLUDE_PATTERN);
}
@Override
public void resetContextToDefault() {
super.resetContextToDefault();
env.put(PREFIX + DEPLOYABLE_REPO_KEY, "");
env.put(PUBLISH_ARTIFACTS, "true");
env.put(RECORD_ALL_DEPENDENCIES, "false");
env.put(PREFIX + INCLUDE_PATTERN, "");
env.put(PREFIX + EXCLUDE_PATTERN, "");
}
public static Maven3BuildContext createMavenContextFromMap(Map<String, Object> map) {
Map<String, String> transformed = Maps.transformValues(map, new Function<Object, String>() {
@Override
public String apply(Object input) {
if (input == null) {
return "";
}
return input.toString();
}
});
return new Maven3BuildContext(transformed);
}
/**
* @return Get a set of all the fields to copy while populating the build context for a Maven 3 build.
*/
public static Set<String> getFieldsToCopy() {
Set<String> fieldsToCopy = Sets.newHashSet(PREFIX + SERVER_ID_PARAM, PREFIX + RESOLUTION_REPO_PARAM,
PREFIX + DEPLOYABLE_REPO_KEY, PREFIX + DEPLOYER_USERNAME_PARAM,
PREFIX + DEPLOYER_PASSWORD_PARAM, PUBLISH_BUILD_INFO_PARAM,
INCLUDE_ENV_VARS_PARAM, ENV_VARS_EXCLUDE_PATTERNS, ENV_VARS_INCLUDE_PATTERNS,
RUN_LICENSE_CHECKS, PREFIX + LICENSE_VIOLATION_RECIPIENTS,
PREFIX + LIMIT_CHECKS_TO_THE_FOLLOWING_SCOPES, PREFIX + ENVIRONMENT_VARIABLES,
PREFIX + INCLUDE_PUBLISHED_ARTIFACTS, PREFIX + DISABLE_AUTOMATIC_LICENSE_DISCOVERY,
PUBLISH_ARTIFACTS, RECORD_ALL_DEPENDENCIES, PREFIX + PUBLISH_MAVEN_DESCRIPTORS_PARAM, PREFIX + PROJECT_FILE,
PREFIX + PUBLISH_IVY_DESCRIPTORS_PARAM, USE_M2_COMPATIBLE_PATTERNS_PARAM,
PREFIX + IVY_PATTERN_PARAM, PREFIX + ARTIFACT_PATTERN_PARAM, PREFIX + INCLUDE_PATTERN,
PREFIX + EXCLUDE_PATTERN, PREFIX + FILTER_EXCLUDED_ARTIFACTS_FROM_BUILD_PARAM,
PREFIX + GOALS, PREFIX + ADDITIONAL_MAVEN_PARAMS, PREFIX + JDK,
PREFIX + MAVEN_OPTS, PREFIX + EXECUTABLE, TEST_CHECKED, PREFIX + TEST_RESULT_DIRECTORY,
TEST_DIRECTORY_OPTION, PREFIX + WORKING_SUB_DIRECTORY, ENABLE_RELEASE_MANAGEMENT, ENABLE_BINTRAY_CONFIGURATION,
PREFIX + VCS_TAG_BASE, PREFIX + GIT_RELEASE_BRANCH, PREFIX + ALTERNATIVE_TASKS, RESOLVE_FROM_ARTIFACTORY
, PREFIX + RESOLUTION_SERVER_ID, PREFIX + RESOLVER_USER_NAME, PREFIX + RESOLVER_PASSWORD);
fieldsToCopy.addAll(getBlackDuckFieldsToCopy());
fieldsToCopy.addAll(getOldCheckBoxFieldsToCopy());
fieldsToCopy.addAll(PushToBintrayContext.bintrayFields);
fieldsToCopy.addAll(getVcsFieldsToCopy());
return fieldsToCopy;
}
/**
* @return The deprecated checkbox fields that were used prior to the stripping of the namespace.
*/
private static Set<String> getOldCheckBoxFieldsToCopy() {
return Sets.newHashSet(PREFIX + PUBLISH_BUILD_INFO_PARAM, PREFIX + RUN_LICENSE_CHECKS,
PREFIX + PUBLISH_ARTIFACTS, PREFIX + TEST_CHECKED, PREFIX + TEST_DIRECTORY_OPTION,
PREFIX + ENABLE_RELEASE_MANAGEMENT, PREFIX + USE_M2_COMPATIBLE_PATTERNS_PARAM);
}
}