diff --git a/metadata-io/src/main/java/com/linkedin/metadata/entity/EntityService.java b/metadata-io/src/main/java/com/linkedin/metadata/entity/EntityService.java index fca9960d94994d..97e7952f65a772 100644 --- a/metadata-io/src/main/java/com/linkedin/metadata/entity/EntityService.java +++ b/metadata-io/src/main/java/com/linkedin/metadata/entity/EntityService.java @@ -10,6 +10,7 @@ import com.github.fge.jsonpatch.JsonPatch; import com.github.fge.jsonpatch.JsonPatchException; import com.github.fge.jsonpatch.Patch; +import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterators; @@ -24,6 +25,7 @@ import com.linkedin.common.urn.VersionedUrnUtils; import com.linkedin.data.schema.RecordDataSchema; import com.linkedin.data.schema.TyperefDataSchema; +import com.linkedin.data.schema.validation.ValidationResult; import com.linkedin.data.schema.validator.Validator; import com.linkedin.data.template.DataTemplateUtil; import com.linkedin.data.template.RecordTemplate; @@ -563,10 +565,11 @@ private void validateAspect(Urn urn, RecordTemplate aspect) { } private void validateAspect(Urn urn, RecordTemplate aspect, Validator validator) { - RecordTemplateValidator.validate(aspect, validationResult -> { + Consumer resultFunction = validationResult -> { throw new IllegalArgumentException("Invalid format for aspect: " + aspect + " for entity: " + urn + "\n Cause: " - + validationResult.getMessages()); - }, validator); + + validationResult.getMessages()); }; + RecordTemplateValidator.validate(buildKeyAspect(urn), resultFunction, validator); + RecordTemplateValidator.validate(aspect, resultFunction, validator); } /** * Checks whether there is an actual update to the aspect by applying the updateLambda @@ -697,6 +700,7 @@ protected SystemMetadata generateSystemMetadataIfEmpty(@Nullable SystemMetadata return systemMetadata; } + @VisibleForTesting static void validateUrn(@Nonnull final Urn urn) { if (urn.toString().trim().length() != urn.toString().length()) { diff --git a/metadata-io/src/test/java/com/linkedin/metadata/entity/EntityServiceTest.java b/metadata-io/src/test/java/com/linkedin/metadata/entity/EntityServiceTest.java index 117ed92e6f468d..dee6ccb2f9b2e9 100644 --- a/metadata-io/src/test/java/com/linkedin/metadata/entity/EntityServiceTest.java +++ b/metadata-io/src/test/java/com/linkedin/metadata/entity/EntityServiceTest.java @@ -1215,12 +1215,9 @@ public void testValidateUrn() throws Exception { } // Urn purely too long - StringBuilder buildStringTooLong = new StringBuilder(); - for (int i = 0; i < 510; i++) { - buildStringTooLong.append('a'); - } + String stringTooLong = "a".repeat(510); - Urn testUrnTooLong = new Urn("li", "testType", new TupleKey(buildStringTooLong.toString())); + Urn testUrnTooLong = new Urn("li", "testType", new TupleKey(stringTooLong)); try { EntityService.validateUrn(testUrnTooLong); Assert.fail("Should have raised IllegalArgumentException for URN too long"); diff --git a/metadata-service/restli-servlet-impl/src/main/resources/index/usage-event/aws_es_ism_policy.json b/metadata-service/restli-servlet-impl/src/main/resources/index/usage-event/aws_es_ism_policy.json index c1ab584a1ce61d..bc1442d216918a 100644 --- a/metadata-service/restli-servlet-impl/src/main/resources/index/usage-event/aws_es_ism_policy.json +++ b/metadata-service/restli-servlet-impl/src/main/resources/index/usage-event/aws_es_ism_policy.json @@ -56,4 +56,4 @@ "priority": 100 } } -} \ No newline at end of file +}