From daa0c94942e9ab17eec228853a6c2b6628085877 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Mon, 11 Jan 2021 17:04:59 +0100 Subject: [PATCH 1/3] Issue #5870 Windows URI case comparison fails Signed-off-by: Jan Bartel --- .../org/eclipse/jetty/annotations/AnnotationConfiguration.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java index d492cb936c08..d17ca3c445d2 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java @@ -704,13 +704,12 @@ public boolean isFromExcludedJar(WebAppContext context, ServletContainerInitiali } //Check if it is excluded by an ordering - URI loadingJarURI = sciResource.getURI(); boolean found = false; Iterator itor = orderedJars.iterator(); while (!found && itor.hasNext()) { Resource r = itor.next(); - found = r.getURI().equals(loadingJarURI); + found = r.equals(sciResource); } if (LOG.isDebugEnabled()) From 799691c373a1833d2bd91609908a7b193e7eaa65 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Mon, 11 Jan 2021 17:17:26 +0100 Subject: [PATCH 2/3] Issue #5870 Add a test for Resource.equals Signed-off-by: Jan Bartel --- .../eclipse/jetty/util/resource/ResourceTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java index b5d496bb01f8..722498cc17f3 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java @@ -34,6 +34,7 @@ import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; +import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -43,6 +44,7 @@ import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.startsWith; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; public class ResourceTest { @@ -297,4 +299,17 @@ public void testGlobPath() throws IOException Resource globResource = Resource.newResource(globReference); assertNotNull(globResource, "Should have produced a Resource"); } + + @Test + @EnabledOnOs({OS.MAC, OS.WINDOWS}) + public void testEquals() throws Exception + { + URI a = new URI("file:///c:/foo/bar"); + URI b = new URI("file:///C:/foo/bar"); + + Resource ra = Resource.newResource(a); + Resource rb = Resource.newResource(b); + + assertTrue(ra.equals(rb)); + } } From 34ffe9fb4d3ebe28e1bc6d57cf64dd31390fb165 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 11 Jan 2021 12:12:38 -0600 Subject: [PATCH 3/3] Issue #5870 - Updating Windows tests + Eliminating OS.MAC (as it doesn't support drive letters) + Adding alt URI syntax version as well --- .../jetty/util/resource/ResourceTest.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java index 722498cc17f3..aafdafbe1d93 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java @@ -43,8 +43,8 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.startsWith; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; public class ResourceTest { @@ -299,17 +299,30 @@ public void testGlobPath() throws IOException Resource globResource = Resource.newResource(globReference); assertNotNull(globResource, "Should have produced a Resource"); } - + + @Test + @EnabledOnOs(OS.WINDOWS) + public void testEqualsWindowsAltUriSyntax() throws Exception + { + URI a = new URI("file:/C:/foo/bar"); + URI b = new URI("file:///C:/foo/bar"); + + Resource ra = Resource.newResource(a); + Resource rb = Resource.newResource(b); + + assertEquals(rb, ra); + } + @Test - @EnabledOnOs({OS.MAC, OS.WINDOWS}) - public void testEquals() throws Exception + @EnabledOnOs(OS.WINDOWS) + public void testEqualsWindowsCaseInsensitiveDrive() throws Exception { URI a = new URI("file:///c:/foo/bar"); URI b = new URI("file:///C:/foo/bar"); Resource ra = Resource.newResource(a); Resource rb = Resource.newResource(b); - - assertTrue(ra.equals(rb)); + + assertEquals(rb, ra); } }