Skip to content

Commit ed7b189

Browse files
fix: path fetching for home paths Urls (#448)
1 parent 475aca8 commit ed7b189

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

semantic-convention-utils/src/main/java/org/hypertrace/semantic/convention/utils/http/HttpSemanticConventionUtils.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ public static boolean isValidUrl(String url) {
438438
}
439439

440440
public static URL getNormalizedUrl(String url) throws MalformedURLException, URISyntaxException {
441-
String sanitizedUrl = StringUtils.stripStart(url, SLASH);
441+
String sanitizedUrl = removeInitialSlashes(url);
442442
URL absoluteUrl = new URL(new URL(RELATIVE_URL_CONTEXT), sanitizedUrl);
443443
return absoluteUrl.toURI().normalize().toURL();
444444
}
@@ -510,7 +510,7 @@ public static Optional<String> getHttpPath(Event event) {
510510
if (StringUtils.isBlank(pathVal)) {
511511
pathVal = SLASH;
512512
}
513-
return Optional.of(removeTrailingSlash(pathVal));
513+
return Optional.of(removeTrailingSlashes(pathVal));
514514
} catch (MalformedURLException | URISyntaxException e) {
515515
LOGGER.debug(
516516
"On extracting httpPath, received an invalid URL: {}, {}", url.get(), e.getMessage());
@@ -530,7 +530,7 @@ private static Optional<String> getHttpPathFromRawAttributes(Event event) {
530530
if (attributeValueMap.get(path) != null) {
531531
String s = attributeValueMap.get(path).getValue();
532532
if (StringUtils.isNotBlank(s) && s.startsWith(SLASH)) {
533-
return getPathFromUrlObject(s).map(HttpSemanticConventionUtils::removeTrailingSlash);
533+
return getPathFromUrlObject(s).map(HttpSemanticConventionUtils::removeTrailingSlashes);
534534
}
535535
}
536536
}
@@ -897,9 +897,22 @@ static Optional<String> getPathFromUrlObject(String urlPath) {
897897
return Optional.empty();
898898
}
899899

900-
private static String removeTrailingSlash(String s) {
901-
// Ends with "/" and it's not home page path
902-
return s.endsWith(SLASH) && s.length() > 1 ? s.substring(0, s.length() - 1) : s;
900+
private static String removeTrailingSlashes(String url) {
901+
// if it's home page path, then return /
902+
String updatedUrl = StringUtils.stripEnd(url, SLASH);
903+
if (updatedUrl.isEmpty()) {
904+
return SLASH;
905+
}
906+
return updatedUrl;
907+
}
908+
909+
private static String removeInitialSlashes(String url) {
910+
// if it's home page path, then return /
911+
String updatedUrl = StringUtils.stripStart(url, SLASH);
912+
if (updatedUrl.isEmpty()) {
913+
return SLASH;
914+
}
915+
return updatedUrl;
903916
}
904917

905918
@Nullable

semantic-convention-utils/src/test/java/org/hypertrace/semantic/convention/utils/http/HttpSemanticConventionUtilsTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,4 +665,20 @@ public void testGetPrimaryDomain() {
665665

666666
Assertions.assertEquals(HttpSemanticConventionUtils.getPrimaryDomain("10.0.0.0"), "10.0.0.0");
667667
}
668+
669+
@Test
670+
void testGetPathFromUrlObject() {
671+
Optional<String> path =
672+
HttpSemanticConventionUtils.getPathFromUrlObject("http://app.test.com:9191/");
673+
Assertions.assertTrue(path.isPresent());
674+
Assertions.assertEquals("/", path.get());
675+
676+
path = HttpSemanticConventionUtils.getPathFromUrlObject("http://app.test.com:9191//");
677+
Assertions.assertTrue(path.isPresent());
678+
Assertions.assertEquals("/", path.get());
679+
680+
path = HttpSemanticConventionUtils.getPathFromUrlObject("http://app.test.com:9191//abc/def");
681+
Assertions.assertTrue(path.isPresent());
682+
Assertions.assertEquals("/abc/def", path.get());
683+
}
668684
}

0 commit comments

Comments
 (0)