Skip to content

Commit d2d88bb

Browse files
authored
fix: properly validate that aspects can only be of type record (#144)
* properly validate that aspects can only be of type record * add more tests to validation util * remove union test * change name of method
1 parent 41bd6b9 commit d2d88bb

File tree

12 files changed

+76
-9
lines changed

12 files changed

+76
-9
lines changed
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
namespace com.linkedin.metadata.dummy
22

3-
import com.linkedin.common.Urn
4-
53
/**
64
* Not to be used
75
*/
8-
typeref DummyAspect = union[Urn]
6+
typeref DummyAspect = union[DummyRecord]
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace com.linkedin.metadata.dummy
2+
3+
/**
4+
* Not to be used
5+
*/
6+
record DummyRecord {
7+
8+
value: string
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
namespace com.linkedin.testing
2+
3+
typeref PizzaArrayAspect = union[
4+
array[long]
5+
]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
namespace com.linkedin.testing
2+
3+
typeref PizzaEnumAspect = union[
4+
PizzaSize
5+
]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
namespace com.linkedin.testing
2+
3+
typeref PizzaMapAspect = union[
4+
map[string, boolean]
5+
]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
namespace com.linkedin.testing
2+
3+
typeref PizzaStringAspect = union[
4+
string
5+
]

validators/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ dependencies {
1212
annotationProcessor externalDependency.lombok
1313

1414
testCompile externalDependency.guava
15+
testCompile project(':testing:test-models')
1516
}

validators/src/main/java/com/linkedin/metadata/validator/AspectValidator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ private AspectValidator() {
2828
*/
2929
public static void validateAspectUnionSchema(@Nonnull UnionDataSchema schema, @Nonnull String aspectClassName) {
3030

31-
if (!ValidationUtils.isUnionWithOnlyComplexMembers(schema)) {
31+
if (!ValidationUtils.isUnionWithOnlyRecordMembers(schema)) {
3232
ValidationUtils.invalidSchema("Aspect '%s' must be a union containing only record type members", aspectClassName);
3333
}
3434
}
@@ -47,7 +47,7 @@ public static void validateAspectUnionSchema(@Nonnull Class<? extends UnionTempl
4747

4848
private static boolean isValidMetadataField(RecordDataSchema.Field field) {
4949
return field.getName().equals("metadata") && !field.getOptional()
50-
&& field.getType().getType() == DataSchema.Type.UNION && ValidationUtils.isUnionWithOnlyComplexMembers(
50+
&& field.getType().getType() == DataSchema.Type.UNION && ValidationUtils.isUnionWithOnlyRecordMembers(
5151
(UnionDataSchema) field.getType());
5252
}
5353
}

validators/src/main/java/com/linkedin/metadata/validator/EntityValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public static void validateEntityUnionSchema(@Nonnull Class<? extends UnionTempl
8989
*/
9090
public static void validateEntityUnionSchema(@Nonnull UnionDataSchema schema, @Nonnull String entityClassName) {
9191

92-
if (!ValidationUtils.isUnionWithOnlyComplexMembers(schema)) {
92+
if (!ValidationUtils.isUnionWithOnlyRecordMembers(schema)) {
9393
ValidationUtils.invalidSchema("Entity '%s' must be a union containing only record type members", entityClassName);
9494
}
9595
}

validators/src/main/java/com/linkedin/metadata/validator/RelationshipValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public static void validateRelationshipUnionSchema(@Nonnull Class<? extends Unio
9494
*/
9595
public static void validateRelationshipUnionSchema(@Nonnull UnionDataSchema schema, @Nonnull String relationshipClassName) {
9696

97-
if (!ValidationUtils.isUnionWithOnlyComplexMembers(schema)) {
97+
if (!ValidationUtils.isUnionWithOnlyRecordMembers(schema)) {
9898
ValidationUtils.invalidSchema("Relationship '%s' must be a union containing only record type members", relationshipClassName);
9999
}
100100
}

0 commit comments

Comments
 (0)