diff --git a/src/main/java/org/jenkinsci/plugins/repoclient/client/MavenRepositoryClient.java b/src/main/java/org/jenkinsci/plugins/repoclient/client/MavenRepositoryClient.java index 242a330..7599832 100644 --- a/src/main/java/org/jenkinsci/plugins/repoclient/client/MavenRepositoryClient.java +++ b/src/main/java/org/jenkinsci/plugins/repoclient/client/MavenRepositoryClient.java @@ -35,7 +35,7 @@ public class MavenRepositoryClient { private static final String FILES_TO_IGNORE = "^maven-metadata.*$|^archetype-catalog.*$"; private static final String NONE = ""; private static final Pattern PATTERN = Pattern.compile( - "href=[\n\r ]*\"([^\"]*)\"", Pattern.CASE_INSENSITIVE); + "]*href=[\n\r ]*\"([^\"]*)\"", Pattern.CASE_INSENSITIVE); private static final Logger logger = Logger .getLogger(RepositoryClientParameterDefinition.class); @@ -306,10 +306,11 @@ private static void parseHtml(String responseBody, List matches) { // extract the version only if (match.toLowerCase().startsWith("http")) { int idx = match.lastIndexOf('/'); - match = match.substring(0, idx); + match = match.substring(idx + 1); } if (!"..".equals(match) - && !match.toLowerCase().startsWith("http")) { + && !match.toLowerCase().startsWith("http") + && !match.matches(FILES_TO_IGNORE)) { matches.add(match); } } diff --git a/src/main/java/org/jenkinsci/plugins/repoclient/client/Version.java b/src/main/java/org/jenkinsci/plugins/repoclient/client/Version.java index 658c807..65b5a0c 100644 --- a/src/main/java/org/jenkinsci/plugins/repoclient/client/Version.java +++ b/src/main/java/org/jenkinsci/plugins/repoclient/client/Version.java @@ -269,7 +269,7 @@ public int compareTo(Version ver) { } } if (result == 0) { - result = Collator.getInstance().compare(qualifier, + result = Collator.getInstance().compare(getQualifier(), ver.getQualifier()); } return result; diff --git a/src/test/java/org/jenkinsci/plugins/repoclient/client/VersionTest.java b/src/test/java/org/jenkinsci/plugins/repoclient/client/VersionTest.java index 4d9082b..cd1c1ec 100644 --- a/src/test/java/org/jenkinsci/plugins/repoclient/client/VersionTest.java +++ b/src/test/java/org/jenkinsci/plugins/repoclient/client/VersionTest.java @@ -166,6 +166,22 @@ public void testCompareBugfix() { assertTrue(v1.compareTo(v2) == -1); } + @Test + public void testCompareNullPointer() { + Version v1 = new Version("1.2.3.4.foo"); + Version v2 = new Version("1.2.3.4"); + assertEquals(1, v1.compareTo(v2)); + assertEquals(-1, v2.compareTo(v1)); + assertEquals(0, v2.compareTo(v2)); + assertEquals(0, v1.compareTo(v1)); + } + + @Test + public void testCompareNullPointer2() { + Version v1 = new Version("1"); + assertEquals(0, v1.compareTo(v1)); + } + @Test public void testCompareMinor() { Version v1 = new Version("1.0.0.0.yyy.xxx.qualifier"); @@ -207,6 +223,18 @@ public void testEqual() { assertEquals("Versions are not equal", v, v); } + @Test + public void testEqual2() { + Version v = new Version("1.2.3.4.yyy.xxx"); + assertEquals("Versions are not equal", v, v); + } + + @Test + public void testEqual3() { + Version v = new Version("1.2.3"); + assertEquals("Versions are not equal", v, v); + } + @Test public void testNotEqual() { Version v1 = new Version("1.2.3.4.yyy.xxx.qualifier");