mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-16 20:40:38 +00:00
parent
7b3e459eb3
commit
ee973e561b
@ -23,6 +23,7 @@ import static org.openmetadata.catalog.util.EntityUtil.entityReferenceMatch;
|
||||
import static org.openmetadata.catalog.util.EntityUtil.nextMajorVersion;
|
||||
import static org.openmetadata.catalog.util.EntityUtil.nextVersion;
|
||||
import static org.openmetadata.catalog.util.EntityUtil.objectMatch;
|
||||
import static org.openmetadata.catalog.util.EntityUtil.tagLabelMatch;
|
||||
import static org.openmetadata.common.utils.CommonUtil.listOrEmpty;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
@ -566,11 +567,17 @@ public abstract class EntityRepository<T> {
|
||||
return tagLabels;
|
||||
}
|
||||
|
||||
List<TagLabel> updatedTagLabels = new ArrayList<>(tagLabels);
|
||||
List<TagLabel> updatedTagLabels = new ArrayList<>();
|
||||
for (TagLabel tagLabel : tagLabels) {
|
||||
TagLabel existingTag =
|
||||
updatedTagLabels.stream().filter(c -> tagLabelMatch.test(c, tagLabel)).findAny().orElse(null);
|
||||
if (existingTag != null) {
|
||||
continue; // tag label is already seen. Don't add duplicate tags.
|
||||
}
|
||||
|
||||
updatedTagLabels.add(tagLabel);
|
||||
if (tagLabel.getSource() != Source.TAG) {
|
||||
// Related tags are not supported for Glossary yet
|
||||
continue;
|
||||
continue; // Related tags are not supported for Glossary yet
|
||||
}
|
||||
String json = daoCollection.tagDAO().findTag(tagLabel.getTagFQN());
|
||||
if (json == null) {
|
||||
@ -997,7 +1004,7 @@ public abstract class EntityRepository<T> {
|
||||
|
||||
List<TagLabel> addedTags = new ArrayList<>();
|
||||
List<TagLabel> deletedTags = new ArrayList<>();
|
||||
recordListChange(fieldName, origTags, updatedTags, addedTags, deletedTags, EntityUtil.tagLabelMatch);
|
||||
recordListChange(fieldName, origTags, updatedTags, addedTags, deletedTags, tagLabelMatch);
|
||||
updatedTags.sort(compareTagLabel);
|
||||
applyTags(updatedTags, fqn);
|
||||
}
|
||||
|
@ -1208,8 +1208,12 @@ public abstract class EntityResourceTest<T, K> extends CatalogApplicationTest {
|
||||
if (supportsTags) {
|
||||
entityInterface.setTags(new ArrayList<>());
|
||||
entityInterface.getTags().add(USER_ADDRESS_TAG_LABEL);
|
||||
entityInterface.getTags().add(USER_ADDRESS_TAG_LABEL); // Add duplicated tags and make sure only one tag is added
|
||||
entityInterface.getTags().add(GLOSSARY2_TERM1_LABEL);
|
||||
change.getFieldsAdded().add(new FieldChange().withName("tags").withNewValue(entityInterface.getTags()));
|
||||
entityInterface.getTags().add(GLOSSARY2_TERM1_LABEL); // Add duplicated tags and make sure only one tag is added
|
||||
change
|
||||
.getFieldsAdded()
|
||||
.add(new FieldChange().withName("tags").withNewValue(List.of(USER_ADDRESS_TAG_LABEL, GLOSSARY2_TERM1_LABEL)));
|
||||
}
|
||||
change
|
||||
.getFieldsAdded()
|
||||
|
@ -570,6 +570,7 @@ public class TableResourceTest extends EntityResourceTest<Table, CreateTable> {
|
||||
//
|
||||
List<TagLabel> tags = new ArrayList<>();
|
||||
tags.add(USER_ADDRESS_TAG_LABEL);
|
||||
tags.add(USER_ADDRESS_TAG_LABEL); // Duplicated tags should be handled
|
||||
List<Column> columns = new ArrayList<>();
|
||||
columns.add(getColumn("c1", BIGINT, null).withTags(tags));
|
||||
|
||||
@ -588,6 +589,7 @@ public class TableResourceTest extends EntityResourceTest<Table, CreateTable> {
|
||||
// Ensure description and previous tag is carried forward during update
|
||||
//
|
||||
tags.add(GLOSSARY1_TERM1_LABEL);
|
||||
tags.add(GLOSSARY1_TERM1_LABEL); // Duplicated tags should be handled
|
||||
List<Column> updatedColumns = new ArrayList<>();
|
||||
updatedColumns.add(getColumn("c1", BIGINT, null).withTags(tags));
|
||||
ChangeDescription change = getChangeDescription(table.getVersion());
|
||||
|
Loading…
x
Reference in New Issue
Block a user