Skip to content

Commit

Permalink
Add names of versions parameters (#6)
Browse files Browse the repository at this point in the history
* Add names of versions parameters

* OCTOPUS-227 Add external parameters
  • Loading branch information
ozonophore authored Jul 10, 2023
1 parent 7ba8f2f commit 258cdf5
Show file tree
Hide file tree
Showing 11 changed files with 302 additions and 164 deletions.
6 changes: 5 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<dependency>
<groupId>org.octopusden.octopus.releng</groupId>
<artifactId>versions-api</artifactId>
<version>2.0.4</version>
<version>2.0.8</version>
<exclusions>
<exclusion>
<groupId>org.jetbrains.kotlin</groupId>
Expand Down Expand Up @@ -113,6 +113,10 @@

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,157 +1,172 @@
package org.octopusden.octopus.releng;

import org.apache.commons.lang3.StringUtils;
import org.octopusden.octopus.releng.dto.ComponentInfo;
import org.octopusden.octopus.releng.dto.JiraComponent;
import org.octopusden.octopus.releng.dto.JiraComponentVersion;
import org.octopusden.releng.versions.IVersionInfo;
import org.octopusden.releng.versions.KotlinVersionFormatter;
import org.octopusden.releng.versions.NumericVersion;
import org.octopusden.releng.versions.NumericVersionFactory;
import org.octopusden.releng.versions.VersionFormatter;
import org.apache.commons.lang3.StringUtils;
import org.octopusden.releng.versions.VersionNames;

public class JiraComponentVersionFormatter {
private final VersionFormatter versionFormatter = new KotlinVersionFormatter();
private final VersionFormatter versionFormatter;
private final NumericVersionFactory numericVersionFactory;

public JiraComponentVersionFormatter(VersionNames versionNames) {
versionFormatter = new KotlinVersionFormatter(versionNames);
numericVersionFactory = new NumericVersionFactory(versionNames);
}

public String getReleaseVersion(JiraComponentVersion jiraComponentVersion) {
return formatReleaseVersionFormat(jiraComponentVersion, jiraComponentVersion.getVersion());
public String getReleaseVersion(JiraComponent jiraComponent, String version) {
return formatReleaseVersionFormat(jiraComponent, version);
}

public String getMajorVersion(JiraComponentVersion jiraComponentVersion) {
return formatMajorVersionFormat(jiraComponentVersion, jiraComponentVersion.getVersion());
public String getMajorVersion(JiraComponent jiraComponent, String version) {
return formatMajorVersionFormat(jiraComponent, version);
}

public String getBuildVersion(JiraComponentVersion jiraComponentVersion) {
return formatBuildVersionFormat(jiraComponentVersion, jiraComponentVersion.getVersion());
public String getBuildVersion(JiraComponent jiraComponent, String version) {
return formatBuildVersionFormat(jiraComponent, version);
}

public String getLineVersion(JiraComponentVersion jiraComponentVersion) {
return formatLineVersionFormat(jiraComponentVersion, jiraComponentVersion.getVersion());
return getLineVersion(jiraComponentVersion.component, jiraComponentVersion.version);
}

public String getLineVersion(JiraComponent jiraComponent, String version) {
return formatLineVersionFormat(jiraComponent, version);
}

private String format(JiraComponentVersion jiraComponentVersion, String versionFormat, IVersionInfo versionInfo) {
private String format(JiraComponent jiraComponent, String versionFormat, IVersionInfo versionInfo) {
if (StringUtils.isBlank(versionFormat)) {
return "";
}
if (isCustomComponent(jiraComponentVersion)) {
ComponentInfo componentInfo = jiraComponentVersion.getComponent().getComponentInfo();
if (isCustomComponent(jiraComponent)) {
ComponentInfo componentInfo = jiraComponent.getComponentInfo();
return versionFormatter.formatToCustomerVersion(componentInfo.getVersionFormat(), versionFormat, componentInfo.getVersionPrefix(), versionInfo);
} else {
return versionFormatter.format(versionFormat, versionInfo);
}
}

public boolean matchesReleaseVersionFormat(JiraComponentVersion jiraComponentVersion, String version, boolean strict) {
String releaseVersionFormat = jiraComponentVersion.getComponent().getComponentVersionFormat().getReleaseVersionFormat();
return matchesVersionFormat(jiraComponentVersion, version, releaseVersionFormat, strict);
public boolean matchesReleaseVersionFormat(JiraComponent jiraComponent, String version, boolean strict) {
String releaseVersionFormat = jiraComponent.getComponentVersionFormat().getReleaseVersionFormat();
return matchesVersionFormat(jiraComponent, version, releaseVersionFormat, strict);
}

public boolean matchesReleaseVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
return matchesReleaseVersionFormat(jiraComponentVersion, version, true);
return matchesReleaseVersionFormat(jiraComponentVersion.component, version, true);
}

public boolean matchesMajorVersionFormat(JiraComponentVersion jiraComponentVersion, String version, boolean strict) {
String majorVersionFormat = jiraComponentVersion.getComponent().getComponentVersionFormat().getMajorVersionFormat();
return matchesVersionFormat(jiraComponentVersion, version, majorVersionFormat, strict);
public boolean matchesReleaseVersionFormat(JiraComponent jiraComponent, String version) {
return matchesReleaseVersionFormat(jiraComponent, version, true);
}

public boolean matchesMajorVersionFormat(JiraComponent jiraComponent, String version, boolean strict) {
String majorVersionFormat = jiraComponent.getComponentVersionFormat().getMajorVersionFormat();
return matchesVersionFormat(jiraComponent, version, majorVersionFormat, strict);
}

public boolean matchesMajorVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
return matchesMajorVersionFormat(jiraComponentVersion, version, true);
return matchesMajorVersionFormat(jiraComponentVersion.component, version, true);
}

public boolean matchesBuildVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
return matchesBuildVersionFormat(jiraComponentVersion, version, true);
return matchesBuildVersionFormat(jiraComponentVersion.component, version, true);
}

public boolean matchesBuildVersionFormat(JiraComponentVersion jiraComponentVersion, String version, boolean strict) {
String buildVersionFormat = getBuildVersionFormat(jiraComponentVersion);
return matchesVersionFormat(jiraComponentVersion, version, buildVersionFormat, strict);
public boolean matchesBuildVersionFormat(JiraComponent jiraComponent, String version, boolean strict) {
String buildVersionFormat = getBuildVersionFormat(jiraComponent);
return matchesVersionFormat(jiraComponent, version, buildVersionFormat, strict);
}

public boolean matchesLineVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
return matchesLineVersionFormat(jiraComponentVersion, version, true);
public boolean matchesLineVersionFormat(JiraComponent jiraComponent, String version) {
return matchesLineVersionFormat(jiraComponent, version, true);
}

public boolean matchesLineVersionFormat(JiraComponentVersion jiraComponentVersion, String version, boolean strict) {
String lineVersionFormat = getLineVersionFormat(jiraComponentVersion);
return matchesVersionFormat(jiraComponentVersion, version, lineVersionFormat, strict);
public boolean matchesLineVersionFormat(JiraComponent jiraComponent, String version, boolean strict) {
String lineVersionFormat = getLineVersionFormat(jiraComponent);
return matchesVersionFormat(jiraComponent, version, lineVersionFormat, strict);
}

public boolean matchesAny(JiraComponentVersion jiraComponentVersion, String version) {
return matchesAny(jiraComponentVersion, version, true);
return matchesAny(jiraComponentVersion.component, version, true);
}


public boolean matchesAny(JiraComponentVersion jiraComponentVersion, String version, boolean strict) {
return matchesReleaseVersionFormat(jiraComponentVersion, version, strict) || matchesMajorVersionFormat(jiraComponentVersion, version, strict) ||
matchesBuildVersionFormat(jiraComponentVersion, version, strict) || matchesRCVersionFormat(jiraComponentVersion, version, strict);
return matchesAny(jiraComponentVersion.component, version, strict);
}

public boolean matchesAny(JiraComponent jiraComponent, String version, boolean strict) {
return matchesReleaseVersionFormat(jiraComponent, version, strict) || matchesMajorVersionFormat(jiraComponent, version, strict) ||
matchesBuildVersionFormat(jiraComponent, version, strict) || matchesRCVersionFormat(jiraComponent, version, strict);

}

public boolean matchesRCVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
return matchesRCVersionFormat(jiraComponentVersion, version, true);
return matchesRCVersionFormat(jiraComponentVersion.component, version, true);
}

public boolean matchesRCVersionFormat(JiraComponentVersion jiraComponentVersion, String version, boolean strict) {
return version.endsWith("_RC") && matchesReleaseVersionFormat(jiraComponentVersion, version.replace("_RC", ""));
public boolean matchesRCVersionFormat(JiraComponent jiraComponent, String version, boolean strict) {
return version.endsWith("_RC") && matchesReleaseVersionFormat(jiraComponent, version.replace("_RC", ""));
}


public String formatMajorVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
String majorVersionFormat = jiraComponentVersion.getComponent().getComponentVersionFormat().getMajorVersionFormat();
return format(jiraComponentVersion, majorVersionFormat, NumericVersion.parse(version));
public String formatMajorVersionFormat(JiraComponent jiraComponent, String version) {
String majorVersionFormat = jiraComponent.getComponentVersionFormat().getMajorVersionFormat();
return format(jiraComponent, majorVersionFormat, numericVersionFactory.create(version));
}

public String formatReleaseVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
String releaseVersionFormat = jiraComponentVersion.getComponent().getComponentVersionFormat().getReleaseVersionFormat();
return format(jiraComponentVersion, releaseVersionFormat, NumericVersion.parse(version));
public String formatReleaseVersionFormat(JiraComponent jiraComponent, String version) {
String releaseVersionFormat = jiraComponent.getComponentVersionFormat().getReleaseVersionFormat();
return format(jiraComponent, releaseVersionFormat, numericVersionFactory.create(version));
}

public String formatBuildVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
String buildVersionFormat = getBuildVersionFormat(jiraComponentVersion);
return format(jiraComponentVersion, buildVersionFormat, NumericVersion.parse(version));
public String formatBuildVersionFormat(JiraComponent jiraComponent, String version) {
String buildVersionFormat = getBuildVersionFormat(jiraComponent);
return format(jiraComponent, buildVersionFormat, numericVersionFactory.create(version));
}

public String formatLineVersionFormat(JiraComponentVersion jiraComponentVersion, String version) {
String lineVersionFormat = getLineVersionFormat(jiraComponentVersion);
return format(jiraComponentVersion, lineVersionFormat, NumericVersion.parse(version));
public String formatLineVersionFormat(JiraComponent jiraComponent, String version) {
String lineVersionFormat = getLineVersionFormat(jiraComponent);
return format(jiraComponent, lineVersionFormat, numericVersionFactory.create(version));
}

public String getBuildVersionFormat(JiraComponentVersion jiraComponentVersion) {
JiraComponent component = jiraComponentVersion.getComponent();
if (component != null) {
if (StringUtils.isNotBlank(component.getComponentVersionFormat().getBuildVersionFormat())) {
return component.getComponentVersionFormat().getBuildVersionFormat();
public String getBuildVersionFormat(JiraComponent jiraComponent) {
if (jiraComponent != null) {
if (StringUtils.isNotBlank(jiraComponent.getComponentVersionFormat().getBuildVersionFormat())) {
return jiraComponent.getComponentVersionFormat().getBuildVersionFormat();
} else {
return component.getComponentVersionFormat().getReleaseVersionFormat();
return jiraComponent.getComponentVersionFormat().getReleaseVersionFormat();
}
} else {
return null;
}
}

public String getLineVersionFormat(JiraComponentVersion jiraComponentVersion) {
JiraComponent component = jiraComponentVersion.getComponent();
if (component != null) {
if (StringUtils.isNotBlank(component.getComponentVersionFormat().getLineVersionFormat())) {
return component.getComponentVersionFormat().getLineVersionFormat();
public String getLineVersionFormat(JiraComponent jiraComponent) {
if (jiraComponent != null) {
if (StringUtils.isNotBlank(jiraComponent.getComponentVersionFormat().getLineVersionFormat())) {
return jiraComponent.getComponentVersionFormat().getLineVersionFormat();
} else {
return component.getComponentVersionFormat().getMajorVersionFormat();
return jiraComponent.getComponentVersionFormat().getMajorVersionFormat();
}
} else {
return null;
}
return null;
}

private boolean matchesVersionFormat(JiraComponentVersion jiraComponentVersion, String version, String versionFormat, boolean strict) {
private boolean matchesVersionFormat(JiraComponent jiraComponent, String version, String versionFormat, boolean strict) {
if (StringUtils.isBlank(versionFormat)) {
return false;
}
if (!strict) {
return versionFormatter.matchesNonStrictFormat(versionFormat, version);
} else {
JiraComponent component = jiraComponentVersion.getComponent();
if (isCustomComponent(jiraComponentVersion)) {
ComponentInfo componentInfo = component.getComponentInfo();
if (isCustomComponent(jiraComponent)) {
ComponentInfo componentInfo = jiraComponent.getComponentInfo();

return versionFormatter.matchesFormat(componentInfo.getVersionFormat(),
versionFormat, componentInfo.getVersionPrefix(), version);
Expand All @@ -162,9 +177,9 @@ private boolean matchesVersionFormat(JiraComponentVersion jiraComponentVersion,
}
}

public boolean isCustomComponent(JiraComponentVersion jiraComponentVersion) {
return jiraComponentVersion.getComponent().getComponentInfo() != null &&
StringUtils.isNotBlank(jiraComponentVersion.getComponent().getComponentInfo().getVersionPrefix());
public boolean isCustomComponent(JiraComponent jiraComponent) {
return jiraComponent.getComponentInfo() != null &&
StringUtils.isNotBlank(jiraComponent.getComponentInfo().getVersionPrefix());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.octopusden.releng.versions.KotlinVersionFormatter;
import org.octopusden.releng.versions.VersionFormatter;
import org.apache.commons.lang3.Validate;
import org.octopusden.releng.versions.VersionNames;

import java.io.IOException;
import java.text.MessageFormat;
Expand All @@ -20,6 +21,12 @@

public class JiraComponentVersionSerializer {

private final VersionNames versionNames;

public JiraComponentVersionSerializer(VersionNames versionNames) {
this.versionNames = versionNames;
}

public String serialize(JiraComponentVersion jiraComponentVersion) throws JsonProcessingException {
return serialize(jiraComponentVersion, false);
}
Expand All @@ -39,7 +46,7 @@ private ObjectMapper getObjectMapper(boolean usePrettyOutput) {
}

SimpleModule module = new SimpleModule();
module.addDeserializer(JiraComponentVersion.class, new JiraComponentVersionDeserializer());
module.addDeserializer(JiraComponentVersion.class, new JiraComponentVersionDeserializer(versionNames));
objectMapper.registerModule(module);

return objectMapper;
Expand Down Expand Up @@ -104,7 +111,7 @@ private JiraComponentVersion deserializeFromRequestString(String component) {

ComponentVersionFormat versionFormat = ComponentVersionFormat.create(majorVersionFormat, releaseVersionFormat);

VersionFormatter versionFormatter = new KotlinVersionFormatter();
VersionFormatter versionFormatter = new KotlinVersionFormatter(versionNames);
if (!versionFormatter.matchesFormat(versionFormat.getReleaseVersionFormat(), releaseVersion)) {
throw new IllegalArgumentException(String.format("In module %s unable to parse version %s. Should be in format %s", projectKey, releaseVersion,
releaseVersionFormat));
Expand All @@ -117,7 +124,11 @@ private JiraComponentVersion deserializeFromRequestString(String component) {
}

JiraComponent jiraComponent = new JiraComponent(projectKey, "", versionFormat, null, false);
return new JiraComponentVersion(ComponentVersion.create(componentName, releaseVersion), jiraComponent);
JiraComponentVersionFormatter jiraComponentVersionFormatter = new JiraComponentVersionFormatter(versionNames);
return JiraComponentVersion.builder(jiraComponentVersionFormatter)
.componentVersion(ComponentVersion.create(componentName, releaseVersion))
.component(jiraComponent)
.build();
}

boolean isValidJSON(final String json) {
Expand Down
Loading

0 comments on commit 258cdf5

Please sign in to comment.