diff --git a/metacat-common-server/src/main/java/com/netflix/metacat/common/server/usermetadata/MetadataInterceptor.java b/metacat-common-server/src/main/java/com/netflix/metacat/common/server/usermetadata/MetadataInterceptor.java index a10733b62..61da1cc81 100644 --- a/metacat-common-server/src/main/java/com/netflix/metacat/common/server/usermetadata/MetadataInterceptor.java +++ b/metacat-common-server/src/main/java/com/netflix/metacat/common/server/usermetadata/MetadataInterceptor.java @@ -33,7 +33,7 @@ public interface MetadataInterceptor { /** - * apply business rules before retrieving back. These rules may change or overriding existing + * Apply business rules before retrieving back. These rules may change or override existing * business metadata. * * @param userMetadataService user metadata service @@ -47,14 +47,25 @@ default void onRead(final UserMetadataService userMetadataService, } /** - * Valide ObjectNode before storing it. + * Validate ObjectNode before storing it. * @param userMetadataService user metadata service - * @param name qualified name - * @param objectNode input metadata object node + * @param name qualified name + * @param objectNode input metadata object node * @throws InvalidMetadataException business validation exception */ default void onWrite(final UserMetadataService userMetadataService, final QualifiedName name, final ObjectNode objectNode) throws InvalidMetadataException { } + + /** + * Validate ObjectNode before deleting it. + * @param userMetadataService user metadata service + * @param name qualified name + * @throws InvalidMetadataException business validation exception + */ + default void onDelete(final UserMetadataService userMetadataService, + final QualifiedName name) + throws InvalidMetadataException { + } } diff --git a/metacat-metadata-mysql/src/main/java/com/netflix/metacat/metadata/mysql/MysqlUserMetadataService.java b/metacat-metadata-mysql/src/main/java/com/netflix/metacat/metadata/mysql/MysqlUserMetadataService.java index f1205af9d..c7477c1c4 100644 --- a/metacat-metadata-mysql/src/main/java/com/netflix/metacat/metadata/mysql/MysqlUserMetadataService.java +++ b/metacat-metadata-mysql/src/main/java/com/netflix/metacat/metadata/mysql/MysqlUserMetadataService.java @@ -242,6 +242,9 @@ private void _deleteDefinitionMetadata( @Nullable final List names ) { if (names != null && !names.isEmpty()) { + for (QualifiedName name : names) { + this.metadataInterceptor.onDelete(this, name); + } final SqlParameterValue[] aNames = names.stream().filter(name -> !name.isPartitionDefinition()) .map(n -> new SqlParameterValue(Types.VARCHAR, n)) .toArray(SqlParameterValue[]::new); @@ -599,7 +602,7 @@ public void saveDefinitionMetadata( name.toString()); } else { - //apply interceptor to change the object node + // apply interceptor to change the object node if (metadata.isPresent()) { this.metadataInterceptor.onWrite(this, name, metadata.get()); }