diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/Entity.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/Entity.java index 77523088ef7..08a25f73820 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/Entity.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/Entity.java @@ -273,6 +273,12 @@ public final class Entity { return new ArrayList<>(Arrays.asList(propertyOrder.value())); } + public static List getAllowedFields(Class clz) { + String entityType = getEntityTypeFromClass(clz); + EntityRepository repository = getEntityRepository(entityType); + return repository.getAllowedFields(); + } + /** Class for getting validated entity list from a queryParam with list of entities. */ public static class EntityList { private EntityList() {} diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/EntityRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/EntityRepository.java index 5df0a3e0c36..7f7a944d86c 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/EntityRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/EntityRepository.java @@ -906,6 +906,10 @@ public abstract class EntityRepository { return new Fields(allowedFields, fields); } + public final List getAllowedFields() { + return allowedFields; + } + enum Operation { PUT, PATCH, diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/EntityResource.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/EntityResource.java index e9e96d685fb..1d858ca5a1e 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/EntityResource.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/EntityResource.java @@ -36,7 +36,7 @@ public abstract class EntityResource> { public EntityResource(Class entityClass, K repository, Authorizer authorizer) { this.entityClass = entityClass; - allowedFields = Entity.getEntityFields(entityClass); + allowedFields = Entity.getAllowedFields(entityClass); supportsOwner = allowedFields.contains(FIELD_OWNER); this.dao = repository; this.authorizer = authorizer; diff --git a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/EntityResourceTest.java b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/EntityResourceTest.java index ccd19c4ad68..bdd1acfc032 100644 --- a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/EntityResourceTest.java +++ b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/EntityResourceTest.java @@ -224,12 +224,11 @@ public abstract class EntityResourceTest extends CatalogApplicationTest { this.entityListClass = entityListClass; this.collectionName = collectionName; this.allFields = fields; - + ENTITY_RESOURCE_TEST_MAP.put(entityType, this); List allowedFields = Entity.getEntityFields(entityClass); this.supportsFollowers = allowedFields.contains(FIELD_FOLLOWERS); this.supportsOwner = allowedFields.contains(FIELD_OWNER); this.supportsTags = allowedFields.contains(FIELD_TAGS); - ENTITY_RESOURCE_TEST_MAP.put(entityType, this); } @BeforeAll @@ -340,7 +339,7 @@ public abstract class EntityResourceTest extends CatalogApplicationTest { T entity = createEntity(createRequest(test, 0), ADMIN_AUTH_HEADERS); EntityInterface entityInterface = getEntityInterface(entity); - String allFields = String.join(",", Entity.getEntityFields(entityClass)); + String allFields = String.join(",", Entity.getAllowedFields(entityClass)); // GET an entity by ID with all the field names of an entity should be successful getEntity(entityInterface.getId(), allFields, ADMIN_AUTH_HEADERS); diff --git a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/teams/UserResourceTest.java b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/teams/UserResourceTest.java index d93eb60676a..94183c2b18a 100644 --- a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/teams/UserResourceTest.java +++ b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/teams/UserResourceTest.java @@ -111,7 +111,6 @@ public class UserResourceTest extends EntityResourceTest { public UserResourceTest() { super(Entity.USER, User.class, UserList.class, "users", UserResource.FIELDS); this.supportsAuthorizedMetadataOperations = false; - this.supportsFieldsQueryParam = false; } public void setupUsers(TestInfo test) throws HttpResponseException {