diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/Entity.java b/openmetadata-service/src/main/java/org/openmetadata/service/Entity.java index 7507574f6f4..4c2eff4e0bb 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/Entity.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/Entity.java @@ -37,6 +37,7 @@ import org.openmetadata.service.exception.EntityNotFoundException; import org.openmetadata.service.jdbi3.EntityDAO; import org.openmetadata.service.jdbi3.EntityRepository; import org.openmetadata.service.util.EntityUtil; +import org.openmetadata.service.util.EntityUtil.Fields; @Slf4j public final class Entity { @@ -216,6 +217,11 @@ public final class Entity { return !ACTIVITY_FEED_EXCLUDED_ENTITIES.contains(entityType); } + public static Fields getFields(String entityType, String fields) throws IOException { + EntityRepository entityRepository = Entity.getEntityRepository(entityType); + return entityRepository.getFields(fields); + } + public static T getEntity(EntityReference ref, EntityUtil.Fields fields, Include include) throws IOException { return getEntity(ref.getType(), ref.getId(), fields, include); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java index e58d0dec060..c7234b95945 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java @@ -1103,6 +1103,9 @@ public abstract class EntityRepository { } public final Fields getFields(String fields) { + if (fields != null && fields.equals("*")) { + return new Fields(allowedFields, String.join(",", allowedFields)); + } return new Fields(allowedFields, fields); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/GlossaryTermRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/GlossaryTermRepository.java index 7c3a0903a69..893badf11a8 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/GlossaryTermRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/GlossaryTermRepository.java @@ -29,8 +29,10 @@ import java.util.List; import java.util.UUID; import lombok.extern.slf4j.Slf4j; import org.openmetadata.schema.api.data.TermReference; +import org.openmetadata.schema.entity.data.Glossary; import org.openmetadata.schema.entity.data.GlossaryTerm; import org.openmetadata.schema.type.EntityReference; +import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.ProviderType; import org.openmetadata.schema.type.Relationship; import org.openmetadata.schema.type.TagLabel; @@ -38,6 +40,7 @@ import org.openmetadata.schema.type.TagLabel.TagSource; import org.openmetadata.service.Entity; import org.openmetadata.service.exception.CatalogExceptionMessage; import org.openmetadata.service.jdbi3.CollectionDAO.EntityRelationshipRecord; +import org.openmetadata.service.jdbi3.EntityRepository.EntityUpdater; import org.openmetadata.service.resources.glossary.GlossaryTermResource; import org.openmetadata.service.util.EntityUtil; import org.openmetadata.service.util.EntityUtil.Fields; @@ -97,8 +100,14 @@ public class GlossaryTermRepository extends EntityRepository { @Override public void prepare(GlossaryTerm entity) throws IOException { // Validate glossary - EntityReference glossary = Entity.getEntityReference(entity.getGlossary()); - entity.setGlossary(glossary); + Fields glossaryFields = Entity.getFields(Entity.GLOSSARY, "reviewers"); + Glossary glossary = Entity.getEntity(entity.getGlossary(), glossaryFields, Include.NON_DELETED); + entity.setGlossary(glossary.getEntityReference()); + + // If reviewers is not set in the glossary term, then carry it from the glossary + System.out.println("XXX reviewers " + entity.getReviewers()); + System.out.println("XXX glossary reviewers " + glossary.getReviewers()); + entity.setReviewers(entity.getReviewers() == null ? glossary.getReviewers() : entity.getReviewers()); // Validate parent term EntityReference parentTerm = Entity.getEntityReference(entity.getParent()); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java index 2fe9355e03a..47f4a0e7bb3 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java @@ -65,10 +65,7 @@ public abstract class EntityResource reviewers) throws IOException { EntityReference glossaryRef = glossary.getEntityReference(); EntityReference parentRef = parent != null ? parent.getEntityReference() : null; CreateGlossaryTerm createGlossaryTerm = - createRequest(termName, "", "", null).withGlossary(glossaryRef).withParent(parentRef); + createRequest(termName, "", "", null).withGlossary(glossaryRef).withParent(parentRef).withReviewers(reviewers); return createAndCheckEntity(createGlossaryTerm, ADMIN_AUTH_HEADERS); }