diff options
3 files changed, 28 insertions, 3 deletions
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaVersion.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaVersion.java index d4e770bbe..1b1f77488 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaVersion.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaVersion.java @@ -34,13 +34,25 @@ public class BugzillaVersion implements Comparable<BugzillaVersion>, Serializabl private final int minor; - private final int micro; + private int micro; + + private final boolean rc; public BugzillaVersion(String version) { - String[] segments = version == null ? new String[0] : version.split("\\."); //$NON-NLS-1$ + String[] segments; + if (version == null) { + segments = new String[0]; + rc = false; + } else { + rc = version.contains("RC"); //$NON-NLS-1$ + segments = rc ? version.split("(\\.|([R][C]))") : version.split("\\."); //$NON-NLS-1$ + } major = segments.length > 0 ? parse(segments[0]) : 0; minor = segments.length > 1 ? parse(segments[1]) : 0; micro = segments.length > 2 ? parse(segments[2]) : 0; + if (rc) { + micro -= 100; + } } private int parse(String segment) { @@ -104,6 +116,8 @@ public class BugzillaVersion implements Comparable<BugzillaVersion>, Serializabl sb.append(".").append(Integer.toString(minor)); //$NON-NLS-1$ if (micro > 0) { sb.append(".").append(Integer.toString(micro)); //$NON-NLS-1$ + } else if (micro < 0) { + sb.append("RC").append(Integer.toString(micro + 100)); //$NON-NLS-1$ } return sb.toString(); } diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java index 58efe0d7a..bd95a5b74 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java @@ -66,7 +66,7 @@ public class RepositoryConfiguration implements Serializable { private final List<BugzillaFlag> flags = new ArrayList<BugzillaFlag>(); - private BugzillaVersion version; + private BugzillaVersion version = BugzillaVersion.MIN_VERSION; public RepositoryConfiguration() { super(); diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaVersionTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaVersionTest.java index c18663afc..675603402 100644 --- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaVersionTest.java +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaVersionTest.java @@ -38,6 +38,17 @@ public class BugzillaVersionTest extends TestCase { assertEquals("3.0.1", version.toString()); } + public void testRCVersions() throws Exception { + BugzillaVersion versionRC1 = new BugzillaVersion("3.2RC1"); + assertEquals("3.2RC1", versionRC1.toString()); + BugzillaVersion versionRC2 = new BugzillaVersion("3.2RC2"); + assertEquals("3.2RC2", versionRC2.toString()); + assertEquals(-1, versionRC1.compareTo(versionRC2)); + assertEquals(1, versionRC2.compareTo(versionRC1)); + assertEquals(-1, versionRC1.compareTo(BugzillaVersion.BUGZILLA_3_2)); + assertEquals(0, versionRC1.compareMajorMinorOnly(BugzillaVersion.BUGZILLA_3_2)); + } + public void testCompareAll() throws Exception { assertEquals(0, BUGZILLA_2_18_1.compareTo(BUGZILLA_2_18_1)); assertEquals(-1, BUGZILLA_2_18_1.compareTo(BUGZILLA_2_18_2)); |