From 371d1000657dd57f6a79e1eab5298008baeca2bf Mon Sep 17 00:00:00 2001 From: Zafar Khaja Date: Thu, 23 Jan 2014 18:49:27 +0400 Subject: [PATCH] Implement fluent interface for Version.Builder --- .../java/com/github/zafarkhaja/semver/Version.java | 12 +++++++++--- .../com/github/zafarkhaja/semver/VersionTest.java | 11 +++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/github/zafarkhaja/semver/Version.java b/src/main/java/com/github/zafarkhaja/semver/Version.java index 6cd3477..9d9a3a2 100644 --- a/src/main/java/com/github/zafarkhaja/semver/Version.java +++ b/src/main/java/com/github/zafarkhaja/semver/Version.java @@ -106,27 +106,33 @@ public class Version implements Comparable { * Sets the normal version. * * @param normal the string representation of the normal version + * @return this builder instance */ - public void setNormalVersion(String normal) { + public Builder setNormalVersion(String normal) { this.normal = normal; + return this; } /** * Sets the pre-release version. * * @param preRelease the string representation of the pre-release version + * @return this builder instance */ - public void setPreReleaseVersion(String preRelease) { + public Builder setPreReleaseVersion(String preRelease) { this.preRelease = preRelease; + return this; } /** * Sets the build metadata. * * @param build the string representation of the build metadata + * @return this builder instance */ - public void setBuildMetadata(String build) { + public Builder setBuildMetadata(String build) { this.build = build; + return this; } /** diff --git a/src/test/java/com/github/zafarkhaja/semver/VersionTest.java b/src/test/java/com/github/zafarkhaja/semver/VersionTest.java index edae560..979b251 100644 --- a/src/test/java/com/github/zafarkhaja/semver/VersionTest.java +++ b/src/test/java/com/github/zafarkhaja/semver/VersionTest.java @@ -429,6 +429,17 @@ public class VersionTest { builder.setBuildMetadata("build"); assertEquals(Version.valueOf("1.0.0-alpha+build"), builder.build()); } + + @Test + public void shouldImplementFluentInterface() { + Version.Builder builder = new Version.Builder(); + Version version = builder + .setNormalVersion("1.0.0") + .setPreReleaseVersion("alpha") + .setBuildMetadata("build") + .build(); + assertEquals(Version.valueOf("1.0.0-alpha+build"), version); + } } public static class BuildAwareOrderTest {