use of org.commonjava.maven.ext.core.state.VersioningState in project pom-manipulation-ext by release-engineering.
the class ProjectVersioningManipulator method init.
/**
* Initialize the {@link VersioningState} state holder in the {@link ManipulationSession}. This state holder detects
* version-change configuration from the Maven user properties (-D properties from the CLI) and makes it available for
* later.
*/
@Override
public void init(final ManipulationSession session) {
this.session = session;
session.setState(new VersioningState(session.getUserProperties()));
}
use of org.commonjava.maven.ext.core.state.VersioningState in project pom-manipulation-ext by release-engineering.
the class RESTCollector method collect.
/**
* Prescans the Project to build up a list of Project GAs and also the various Dependencies.
*/
private void collect(final List<Project> projects) throws ManipulationException {
final RESTState state = session.getState(RESTState.class);
final VersioningState vs = session.getState(VersioningState.class);
final DependencyState ds = session.getState(DependencyState.class);
final PluginState ps = session.getState(PluginState.class);
if (!session.isEnabled() || !state.isEnabled()) {
logger.debug(getClass().getSimpleName() + ": Nothing to do!");
return;
}
final ArrayList<ProjectVersionRef> restParam = new ArrayList<>();
final ArrayList<ProjectVersionRef> newProjectKeys = new ArrayList<>();
final String override = vs.getOverride();
for (final Project project : projects) {
if (isEmpty(override)) {
// TODO: Check this : For the rest API I think we need to check every project GA not just inheritance root.
// Strip SNAPSHOT from the version for matching. DA will handle OSGi conversion.
ProjectVersionRef newKey = new SimpleProjectVersionRef(project.getKey());
if (project.getKey().getVersionString().endsWith("-SNAPSHOT")) {
if (!vs.preserveSnapshot()) {
newKey = new SimpleProjectVersionRef(project.getKey().asProjectRef(), project.getKey().getVersionString().substring(0, project.getKey().getVersionString().indexOf("-SNAPSHOT")));
} else {
logger.warn("SNAPSHOT detected for REST call but preserve-snapshots is enabled.");
}
}
newProjectKeys.add(newKey);
} else if (project.isExecutionRoot()) {
// We want to manually override the version ; therefore ignore what is in the project and calculate potential
// matches for that instead.
Project p = projects.get(0);
newProjectKeys.add(new SimpleProjectVersionRef(p.getGroupId(), p.getArtifactId(), override));
}
}
restParam.addAll(newProjectKeys);
// We only recognise dependencyManagement of the form g:a:version-rebuild not g:a:version-rebuild-<numeric>.
for (ProjectVersionRef bom : (ds.getRemoteBOMDepMgmt() == null ? Collections.<ProjectVersionRef>emptyList() : ds.getRemoteBOMDepMgmt())) {
if (!Version.hasBuildNumber(bom.getVersionString()) && bom.getVersionString().contains(PropertiesUtils.getSuffix(session))) {
// Create the dummy PVR to send to DA (which requires a numeric suffix).
ProjectVersionRef newBom = new SimpleProjectVersionRef(bom.asProjectRef(), bom.getVersionString() + "-0");
logger.debug("Adding dependencyManagement BOM {} into REST call.", newBom);
restParam.add(newBom);
}
}
Set<ArtifactRef> localDeps = establishAllDependencies(session, projects, null);
// Need to send that to the rest interface to get a translation.
for (ArtifactRef p : localDeps) {
restParam.add(p.asProjectVersionRef());
}
// Call the REST to populate the result.
logger.debug("Passing {} GAVs following into the REST client api {} ", restParam.size(), restParam);
logger.info("Calling REST client...");
long start = System.nanoTime();
Map<ProjectVersionRef, String> restResult = null;
try {
restResult = state.getVersionTranslator().translateVersions(restParam);
} finally {
printFinishTime(start, (restResult != null));
}
logger.debug("REST Client returned {} ", restResult);
// Process rest result for boms
ListIterator<ProjectVersionRef> iterator = (ds.getRemoteBOMDepMgmt() == null ? Collections.<ProjectVersionRef>emptyList().listIterator() : ds.getRemoteBOMDepMgmt().listIterator());
while (iterator.hasNext()) {
ProjectVersionRef pvr = iterator.next();
// As before, only process the BOMs if they are of the format <rebuild suffix> without a numeric portion.
if (!Version.hasBuildNumber(pvr.getVersionString()) && pvr.getVersionString().contains(PropertiesUtils.getSuffix(session))) {
// Create the dummy PVR to compare with results to...
ProjectVersionRef newBom = new SimpleProjectVersionRef(pvr.asProjectRef(), pvr.getVersionString() + "-0");
if (restResult.keySet().contains(newBom)) {
ProjectVersionRef replacementBOM = new SimpleProjectVersionRef(pvr.asProjectRef(), restResult.get(newBom));
logger.debug("Replacing BOM value of {} with {}.", pvr, replacementBOM);
iterator.remove();
iterator.add(replacementBOM);
}
}
}
vs.setRESTMetadata(parseVersions(session, projects, state, newProjectKeys, restResult));
final Map<ArtifactRef, String> overrides = new HashMap<>();
// Convert the loaded remote ProjectVersionRefs to the original ArtifactRefs
for (ArtifactRef a : localDeps) {
if (restResult.containsKey(a.asProjectVersionRef())) {
overrides.put(a, restResult.get(a.asProjectVersionRef()));
}
}
logger.debug("Setting REST Overrides {} ", overrides);
ds.setRemoteRESTOverrides(overrides);
// Unfortunately as everything is just GAVs we have to send everything to the PluginManipulator as well.
ps.setRemoteRESTOverrides(overrides);
}
use of org.commonjava.maven.ext.core.state.VersioningState in project pom-manipulation-ext by release-engineering.
the class CheckStrictValueTest method beforeTest.
@Before
public void beforeTest() throws ManipulationException {
Properties user = new Properties();
user.setProperty(VersioningState.VERSION_SUFFIX_SYSPROP.getCurrent(), "redhat-5");
final VersioningState vs = new VersioningState(user);
session.setState(vs);
if (!strictIgnoreSuffix) {
user.setProperty(CommonState.STRICT_ALIGNMENT_IGNORE_SUFFIX, "false");
}
final CommonState cs = new CommonState(user);
session.setState(cs);
}
use of org.commonjava.maven.ext.core.state.VersioningState in project pom-manipulation-ext by release-engineering.
the class PropertiesUtilsTest method createUpdateSession.
private ManipulationSession createUpdateSession() throws Exception {
ManipulationSession session = new ManipulationSession();
session.setState(new DependencyState(p));
session.setState(new VersioningState(p));
session.setState(new CommonState(p));
final MavenExecutionRequest req = new DefaultMavenExecutionRequest().setUserProperties(p).setRemoteRepositories(Collections.<ArtifactRepository>emptyList());
final PlexusContainer container = new DefaultPlexusContainer();
final MavenSession mavenSession = new MavenSession(container, null, req, new DefaultMavenExecutionResult());
session.setMavenSession(mavenSession);
return session;
}
use of org.commonjava.maven.ext.core.state.VersioningState in project pom-manipulation-ext by release-engineering.
the class VersionCalculator method calculate.
/**
* Calculate the version modification for a given GAV.
*
* @param groupId the groupId to search for
* @param artifactId the artifactId to search for.
* @param version the original version to search for.
* @param session the container session.
* @return a Version object allowing the modified version to be extracted.
* @throws ManipulationException if an error occurs.
*/
protected String calculate(final String groupId, final String artifactId, final String version, final ManipulationSession session) throws ManipulationException {
final VersioningState state = session.getState(VersioningState.class);
final String incrementalSuffix = state.getIncrementalSerialSuffix();
final String staticSuffix = state.getSuffix();
final String override = state.getOverride();
logger.debug("Got the following original version: {}", version);
logger.debug("Got the following version suffixes:\n Static: {}\n Incremental: {}", staticSuffix, incrementalSuffix);
logger.debug("Got the following version override: {}", override);
String newVersion = version;
if (override != null) {
newVersion = override;
}
if (staticSuffix != null) {
newVersion = Version.appendQualifierSuffix(newVersion, staticSuffix);
if (!state.preserveSnapshot()) {
newVersion = Version.removeSnapshot(newVersion);
}
} else if (incrementalSuffix != null) {
final Set<String> versionCandidates = this.getVersionCandidates(state, groupId, artifactId);
newVersion = Version.appendQualifierSuffix(newVersion, incrementalSuffix);
int highestRemoteBuildNumPlusOne = findHighestMatchingBuildNumber(newVersion, versionCandidates) + 1;
if (highestRemoteBuildNumPlusOne > Version.getIntegerBuildNumber(newVersion)) {
String paddedBuildNumber = StringUtils.leftPad(Integer.toString(highestRemoteBuildNumPlusOne), state.getIncrementalSerialSuffixPadding(), '0');
newVersion = Version.setBuildNumber(newVersion, paddedBuildNumber);
}
if (!state.preserveSnapshot()) {
newVersion = Version.removeSnapshot(newVersion);
}
}
logger.debug("Returning version: {}", newVersion);
return newVersion;
}
Aggregations