diff --git a/api/src/main/java/marquez/service/models/NodeId.java b/api/src/main/java/marquez/service/models/NodeId.java index 6d4b80880d..1617289486 100644 --- a/api/src/main/java/marquez/service/models/NodeId.java +++ b/api/src/main/java/marquez/service/models/NodeId.java @@ -222,7 +222,7 @@ private String[] parts(int expectedParts, String expectedType) { return parts; } else { // try to avoid matching colons in URIs- e.g., scheme://authority and host:port patterns - Pattern p = Pattern.compile("(?:" + ID_DELIM + "(?!//|\\d+))"); + Pattern p = Pattern.compile("(?:" + ID_DELIM + "(?!//|\\d+(?:/|$)))"); Matcher matcher = p.matcher(value); String[] returnParts = new String[expectedParts]; diff --git a/api/src/test/java/marquez/service/models/NodeIdTest.java b/api/src/test/java/marquez/service/models/NodeIdTest.java index bdfc2f8415..b8a18b181e 100644 --- a/api/src/test/java/marquez/service/models/NodeIdTest.java +++ b/api/src/test/java/marquez/service/models/NodeIdTest.java @@ -71,6 +71,7 @@ public void testJobWithVersion(String namespace, String job) { value = { "my-namespace$my-dataset", "gs://bucket$/path/to/data", + "s3://mybucket$3d801.temp/table", "postgresql://hostname:5432/database$my_table", "my-namespace$my_struct" }, @@ -95,6 +96,8 @@ public void testDataset(String namespace, String dataset) { value = { "my-namespace$my-dataset#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "gs://bucket$/path/to/data#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", + "s3://mybucket$3d801.temp/table#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", + "s3://mybucket$/3d801.temp/table#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "postgresql://hostname:5432/database$my_table#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "my-namespace$my_struct#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" }, diff --git a/clients/java/src/main/java/marquez/client/models/NodeId.java b/clients/java/src/main/java/marquez/client/models/NodeId.java index 83574ab2ca..a1596d8b04 100644 --- a/clients/java/src/main/java/marquez/client/models/NodeId.java +++ b/clients/java/src/main/java/marquez/client/models/NodeId.java @@ -150,7 +150,7 @@ private String[] parts(int expectedParts, String expectedType) { return parts; } else { // try to avoid matching colons in URIs- e.g., scheme://authority and host:port patterns - Pattern p = Pattern.compile("(?:" + ID_DELIM + "(?!//|\\d+))"); + Pattern p = Pattern.compile("(?:" + ID_DELIM + "(?!//|\\d+(?:/|$)))"); Matcher matcher = p.matcher(value); String[] returnParts = new String[expectedParts]; diff --git a/clients/java/src/test/java/marquez/client/models/NodeIdTest.java b/clients/java/src/test/java/marquez/client/models/NodeIdTest.java index c186c414cd..f0a34c23ad 100644 --- a/clients/java/src/test/java/marquez/client/models/NodeIdTest.java +++ b/clients/java/src/test/java/marquez/client/models/NodeIdTest.java @@ -21,6 +21,7 @@ public class NodeIdTest { value = { "my-namespace$my-dataset", "gs://bucket$/path/to/data", + "s3://mybucket$3d801.temp/table", "postgresql://hostname:5432/database$my_table", "my-namespace$my_struct" }, @@ -38,7 +39,9 @@ public void testDataset(String namespace, String dataset) { value = { "my-namespace$my-dataset$colA", "gs://bucket$/path/to/data$colA", - "gs://bucket$/path/to/data$col_A" + "gs://bucket$/path/to/data$col_A", + "s3://mybucket$3d801.temp/table$colA", + "s3://mybucket$3d801.temp/table$col_A" }, delimiter = '$') public void testDatasetField(String namespace, String dataset, String field) { @@ -90,6 +93,8 @@ public void testJobWithVersion(String namespace, String job) { value = { "my-namespace$my-dataset#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "gs://bucket$/path/to/data#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", + "s3://mybucket$3d801.temp/table#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", + "s3://mybucket$/3d801.temp/table#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "postgresql://hostname:5432/database$my_table#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "my-namespace$my_struct#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" }, @@ -113,7 +118,9 @@ public void testDatasetWithVersion(String namespace, String dataset) { value = { "my-namespace$my-dataset$colA#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "gs://bucket$/path/to/data$colA#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", - "gs://bucket$/path/to/data$col_A#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + "gs://bucket$/path/to/data$col_A#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", + "s3://mybucket$3d801.temp/table$colA#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", + "s3://mybucket$/3d801.temp/table$col_A#aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" }, delimiter = '$') public void testDatasetFieldWithVersion(