[jsemver] 30/95: Create Version.Builder class
Alexandre Viau
reazem-guest at moszumanska.debian.org
Mon Feb 16 14:58:27 UTC 2015
This is an automated email from the git hooks/post-receive script.
reazem-guest pushed a commit to branch master
in repository jsemver.
commit 5f7593b377bdf4794f15cd8de693826a88f44f09
Author: Zafar Khaja <zafarkhaja at gmail.com>
Date: Sat Mar 30 22:30:25 2013 +0400
Create Version.Builder class
---
.../java/com/github/zafarkhaja/semver/Version.java | 73 ++++++++++++++++------
.../com/github/zafarkhaja/semver/VersionTest.java | 42 ++++++++++++-
2 files changed, 94 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/github/zafarkhaja/semver/Version.java b/src/main/java/com/github/zafarkhaja/semver/Version.java
index b5efed6..01dc052 100644
--- a/src/main/java/com/github/zafarkhaja/semver/Version.java
+++ b/src/main/java/com/github/zafarkhaja/semver/Version.java
@@ -44,19 +44,65 @@ public class Version implements Comparable<Version> {
static {
StringBuilder sb = new StringBuilder();
sb.append("^")
- .append(NormalVersion.FORMAT)
+ .append("(?<normal>")
+ .append(NormalVersion.FORMAT)
+ .append(")")
.append("(?:")
.append(PRE_RELEASE_PREFIX)
- .append(MetadataVersion.FORMAT)
+ .append("(?<preRelease>")
+ .append(MetadataVersion.FORMAT)
+ .append(")")
.append(")?").append("(?:")
.append("\\").append(BUILD_PREFIX)
- .append(MetadataVersion.FORMAT)
+ .append("(?<build>")
+ .append(MetadataVersion.FORMAT)
+ .append(")")
.append(")?")
.append("$");
SEMVER_PATTERN = Pattern.compile(sb.toString());
}
+ public static class Builder {
+
+ private String normal;
+ private String preRelease;
+ private String build;
+
+ public Builder(String normal) {
+ if (normal == null) {
+ throw new NullPointerException(
+ "Normal version MUST NOT be NULL"
+ );
+ }
+ this.normal = normal;
+ }
+
+ public void setPreReleaseVersion(String preRelease) {
+ this.preRelease = preRelease;
+ }
+
+ public void setBuildMetadata(String build) {
+ this.build = build;
+ }
+
+ public Version build() {
+ MetadataVersion preReleaseVersion = null;
+ if (preRelease != null) {
+ preReleaseVersion = new MetadataVersion(preRelease);
+ }
+ MetadataVersion buildMetadata = null;
+ if (build != null) {
+ buildMetadata = new MetadataVersion(build);
+ }
+ return new Version(
+ NormalVersion.valueOf(normal),
+ preReleaseVersion,
+ buildMetadata
+ );
+ }
+ }
+
Version(NormalVersion normal) {
this(normal, null, null);
}
@@ -81,23 +127,10 @@ public class Version implements Comparable<Version> {
throw new IllegalArgumentException("Illegal version format");
}
- NormalVersion normal = new NormalVersion(
- Integer.parseInt(matcher.group(1)),
- Integer.parseInt(matcher.group(2)),
- Integer.parseInt(matcher.group(3))
- );
-
- MetadataVersion preRelease =
- (matcher.group(4) != null) ?
- new MetadataVersion(matcher.group(4)) :
- null;
-
- MetadataVersion build =
- (matcher.group(5) != null) ?
- new MetadataVersion(matcher.group(5)) :
- null;
-
- return new Version(normal, preRelease, build);
+ Builder builder = new Builder(matcher.group("normal"));
+ builder.setPreReleaseVersion(matcher.group("preRelease"));
+ builder.setBuildMetadata(matcher.group("build"));
+ return builder.build();
}
public Version incrementMajorVersion() {
diff --git a/src/test/java/com/github/zafarkhaja/semver/VersionTest.java b/src/test/java/com/github/zafarkhaja/semver/VersionTest.java
index fcf3e6d..57997aa 100644
--- a/src/test/java/com/github/zafarkhaja/semver/VersionTest.java
+++ b/src/test/java/com/github/zafarkhaja/semver/VersionTest.java
@@ -249,7 +249,6 @@ public class VersionTest {
assertEquals("1.0.0-beta.2", v2.toString());
}
-
@Test
public void shouldProvideIncrementBuildMetadataMethod() {
Version v1 = Version.valueOf("1.0.0+build.1");
@@ -364,4 +363,45 @@ public class VersionTest {
assertEquals(value, v.toString());
}
}
+
+ public static class BuilderTest {
+
+ @Test
+ public void shouldThrowNullPointerExceptionIfNormalVersionIsNull() {
+ try {
+ Version.Builder builder = new Version.Builder(null);
+ } catch (NullPointerException e) {
+ return;
+ }
+ fail("Builder was expected to throw NullPointerException");
+ }
+
+ @Test
+ public void shouldBuildVersionFromNormalVersion() {
+ Version.Builder builder = new Version.Builder("1.0.0");
+ assertEquals(Version.valueOf("1.0.0"), builder.build());
+ }
+
+ @Test
+ public void shouldBuildVersionWithPreReleaseVersion() {
+ Version.Builder builder = new Version.Builder("1.0.0");
+ builder.setPreReleaseVersion("alpha");
+ assertEquals(Version.valueOf("1.0.0-alpha"), builder.build());
+ }
+
+ @Test
+ public void shouldBuildVersionWithBuildMetadata() {
+ Version.Builder builder = new Version.Builder("1.0.0");
+ builder.setBuildMetadata("build");
+ assertEquals(Version.valueOf("1.0.0+build"), builder.build());
+ }
+
+ @Test
+ public void shouldBuildVersionWithPreReleaseVersionAndBuildMetadata() {
+ Version.Builder builder = new Version.Builder("1.0.0");
+ builder.setPreReleaseVersion("alpha");
+ builder.setBuildMetadata("build");
+ assertEquals(Version.valueOf("1.0.0-alpha+build"), builder.build());
+ }
+ }
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jsemver.git
More information about the pkg-java-commits
mailing list