From a6355228536124834a6defa69e71c5b0e7b75bbb Mon Sep 17 00:00:00 2001 From: sureshms Date: Sun, 28 Nov 2021 12:02:52 -0800 Subject: [PATCH 1/2] Fixes #1149 Document EntityRepository to help contributors understand how to use it to add new entities --- .../catalog/jdbi3/BotsRepository.java | 2 +- .../catalog/jdbi3/ChartRepository.java | 2 +- .../catalog/jdbi3/DashboardRepository.java | 2 +- .../jdbi3/DashboardServiceRepository.java | 2 +- .../catalog/jdbi3/DatabaseRepository.java | 2 +- .../jdbi3/DatabaseServiceRepository.java | 2 +- .../catalog/jdbi3/DbtModelRepository.java | 2 +- .../catalog/jdbi3/EntityRepository.java | 66 +++++++++++++------ .../catalog/jdbi3/IngestionRepository.java | 2 +- .../catalog/jdbi3/LocationRepository.java | 2 +- .../jdbi3/MessagingServiceRepository.java | 2 +- .../catalog/jdbi3/MetricsRepository.java | 2 +- .../catalog/jdbi3/MlModelRepository.java | 2 +- .../catalog/jdbi3/PipelineRepository.java | 2 +- .../jdbi3/PipelineServiceRepository.java | 2 +- .../catalog/jdbi3/PolicyRepository.java | 2 +- .../catalog/jdbi3/ReportRepository.java | 2 +- .../jdbi3/StorageServiceRepository.java | 2 +- .../catalog/jdbi3/TableRepository.java | 2 +- .../catalog/jdbi3/TeamRepository.java | 2 +- .../catalog/jdbi3/TopicRepository.java | 2 +- .../catalog/jdbi3/UserRepository.java | 2 +- 22 files changed, 66 insertions(+), 42 deletions(-) diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/BotsRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/BotsRepository.java index ed35d228f76..5d17ccfcaa7 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/BotsRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/BotsRepository.java @@ -69,7 +69,7 @@ public class BotsRepository extends EntityRepository{ } @Override - public void addRelationships(Bots entity) throws IOException { } + public void storeRelationships(Bots entity) throws IOException { } public static class BotsEntityInterface implements EntityInterface { private final Bots entity; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepository.java index 320205c6c8f..43e86064e42 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepository.java @@ -96,7 +96,7 @@ public class ChartRepository extends EntityRepository { } @Override - public void addRelationships(Chart chart) throws IOException { + public void storeRelationships(Chart chart) throws IOException { EntityReference service = chart.getService(); dao.relationshipDAO().insert(service.getId().toString(), chart.getId().toString(), service.getType(), Entity.CHART, Relationship.CONTAINS.ordinal()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardRepository.java index 63a718e10fd..67b80f10c90 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardRepository.java @@ -156,7 +156,7 @@ public class DashboardRepository extends EntityRepository { } @Override - public void addRelationships(Dashboard dashboard) throws IOException { + public void storeRelationships(Dashboard dashboard) throws IOException { setService(dashboard, dashboard.getService()); // Add relationship from dashboard to chart diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceRepository.java index 3e1e3824da7..1254915545d 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceRepository.java @@ -101,7 +101,7 @@ public class DashboardServiceRepository extends EntityRepository { } @Override - public void addRelationships(Database database) throws IOException { + public void storeRelationships(Database database) throws IOException { dao.relationshipDAO().insert(database.getService().getId().toString(), database.getId().toString(), database.getService().getType(), Entity.DATABASE, Relationship.CONTAINS.ordinal()); EntityUtil.setOwner(dao.relationshipDAO(), database.getId(), Entity.DATABASE, database.getOwner()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepository.java index 302d0159559..6ba0e801592 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepository.java @@ -91,7 +91,7 @@ public class DatabaseServiceRepository extends EntityRepository } @Override - public void addRelationships(DatabaseService entity) throws IOException { + public void storeRelationships(DatabaseService entity) throws IOException { } @Override diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DbtModelRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DbtModelRepository.java index 3842c2987b5..4388b475785 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DbtModelRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DbtModelRepository.java @@ -171,7 +171,7 @@ public class DbtModelRepository extends EntityRepository { } @Override - public void addRelationships(DbtModel dbtModel) throws IOException { + public void storeRelationships(DbtModel dbtModel) throws IOException { // Add relationship from database to model String databaseId = dbtModel.getDatabase().getId().toString(); dao.relationshipDAO().insert(databaseId, dbtModel.getId().toString(), Entity.DATABASE, Entity.DBTMODEL, 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 a04c078972a..e3f72b0e7c9 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 @@ -24,6 +24,7 @@ import org.openmetadata.catalog.entity.teams.User; import org.openmetadata.catalog.exception.CatalogExceptionMessage; import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.jdbi3.CollectionDAO.EntityVersionPair; +import org.openmetadata.catalog.jdbi3.TableRepository.TableUpdater; import org.openmetadata.catalog.type.ChangeDescription; import org.openmetadata.catalog.type.ChangeEvent; import org.openmetadata.catalog.type.EntityHistory; @@ -61,28 +62,39 @@ import java.util.UUID; import java.util.function.BiPredicate; /** - * This class is used by Entity Resources to perform READ and WRITE operations to the backend database to Create, - * Retrieve, Update, and Delete entities. + * This is the base class used by Entity Resources to perform READ and WRITE operations to the backend database to + * Create, * Retrieve, Update, and Delete entities. * - * An entity has two types of fields - `attributes` and `relationships`. The `attributes` are the core properties of - * the entity, example - entity id, name, fullyQualifiedName, columns for a table, etc. The `relationships` are - * an associated between two entities, example - table belongs to a database, table has a tag, user owns a table, etc. - * All relationships are captured using {@code EntityReference}. + * An entity has two types of fields - `attributes` and `relationships`. + *
    + *
  • The `attributes` are the core properties of the entity, example - entity id, name, fullyQualifiedName, columns + * for a table, etc.
  • + *
  • The `relationships` are an associated between two entities, example - table belongs to a database, + * table has a tag, user owns a table, etc. All relationships are captured using {@code EntityReference}.
  • + *
* * Entities are stored as JSON documents in the database. Each entity is stored in a separate table and is accessed - * through a Data Access Object or DAO that corresponds to each of the entity. All DAO objects for an - * entity are available in {@code daoCollection}. + * through a Data Access Object or DAO that corresponds to each of the entity. For example, + * table_entity is the database table used to store JSON docs corresponding to table entity and + * {@link org.openmetadata.catalog.jdbi3.CollectionDAO.TableDAO} is used as the DAO object to access the table_entity + * table. All DAO objects for an entity are available in {@code daoCollection}. * + *

* Relationships between entity is stored in a separate table that captures the edge - fromEntity, toEntity, and - * the relationship name. + * the relationship name entity_relationship table and are supported by + * {@link org.openmetadata.catalog.jdbi3.CollectionDAO.EntityRelationshipDAO} DAO object. * - * JSON document of an entity stores only required attributes of an entity. Some attributes such as href - * are not stored and are created on the fly. + * JSON document of an entity stores only required attributes of an entity. Some attributes such as + * href are not stored and are created on the fly. + * + *

* * Json document of an entity does not store relationships. As an example, JSON document for table entity * does not store the relationship database which is of type EntityReference. This is always retrieved - * from the the relationship edges when required to ensure, the data stored is consistent and information in - * responses is not stale. + * from the the relationship table when required to ensure, the data stored is efficiently and consistently, and + * relationship information does not become stale. + *

+ * */ public abstract class EntityRepository { public static final Logger LOG = LoggerFactory.getLogger(EntityRepository.class); @@ -150,6 +162,8 @@ public abstract class EntityRepository { * entity and does not include attributes such as href. The relationship fields of an entity is never stored * in the JSON document. It is always reconstructed based on relationship edges from the backend database. * + *

+ * * As an example, when table entity is stored, the attributes such as href and the relationships such * as owner, database, and tags are set to null. These attributes are restored back after the * JSON document is stored to be sent as response. @@ -162,14 +176,14 @@ public abstract class EntityRepository { * This method is called to store all the relationships of an entity. It is expected that all relationships are * already validated and completely setup before this method is called and no validation of relationships is required. * - * @see TableRepository#addRelationships(Table) for an example implementation + * @see TableRepository#storeRelationships(Table) for an example implementation */ - public abstract void addRelationships(T entity) throws IOException; + public abstract void storeRelationships(T entity) throws IOException; /** * PATCH operations can't overwrite certain fields, such as entity ID, fullyQualifiedNames etc. Instead of throwing * an error, we take lenient approach of ignoring the user error and restore those attributes based on what is - * already stored as original entity. + * already stored in the original entity. */ public abstract void restorePatchAttributes(T original, T updated) throws IOException, ParseException; @@ -376,7 +390,7 @@ public abstract class EntityRepository { private T createNewEntity(T entity) throws IOException { storeEntity(entity, false); - addRelationships(entity); + storeRelationships(entity); return entity; } @@ -393,8 +407,15 @@ public abstract class EntityRepository { } /** - * Class that performs PUT and PATCH update operation. Override {@code entitySpecificUpdate()} to add - * additional entity specific fields to be updated. + * Class that performs PUT and PATCH update operation. It takes an updated entity and original entity. + * Performs comparison between then and updates the stored entity and also updates all the relationships. This class + * also tracks the changes between original and updated to version the entity and produce change events. + * + *

+ * + * Common entity attributes such as description, displayName, owner, tags are handled by this class. + * Override {@code entitySpecificUpdate()} to add additional entity specific fields to be updated. + * @see TableUpdater#entitySpecificUpdate() for example. */ public class EntityUpdater { protected final EntityInterface original; @@ -409,6 +430,9 @@ public abstract class EntityRepository { this.patchOperation = patchOperation; } + /** + * Compare original and updated entities and perform updates. Update the entity version and track changes. + */ public final void update() throws IOException, ParseException { updated.setId(original.getId()); updateDescription(); @@ -418,7 +442,7 @@ public abstract class EntityRepository { entitySpecificUpdate(); // Store the updated entity - store(); + storeUpdate(); } public void entitySpecificUpdate() throws IOException { @@ -564,7 +588,7 @@ public abstract class EntityRepository { } } - public final void store() throws IOException, ParseException { + public final void storeUpdate() throws IOException, ParseException { if (updateVersion(original.getVersion())) { // Store the old version String extensionName = EntityUtil.getVersionExtension(entityName, original.getVersion()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/IngestionRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/IngestionRepository.java index 37bf4daf9ea..274535c4496 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/IngestionRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/IngestionRepository.java @@ -129,7 +129,7 @@ public class IngestionRepository extends EntityRepository { } @Override - public void addRelationships(Ingestion ingestion) throws IOException { + public void storeRelationships(Ingestion ingestion) throws IOException { EntityReference service = ingestion.getService(); dao.relationshipDAO().insert(service.getId().toString(), ingestion.getId().toString(), service.getType(), Entity.INGESTION, Relationship.CONTAINS.ordinal()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/LocationRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/LocationRepository.java index a61527a7351..64965c23f9d 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/LocationRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/LocationRepository.java @@ -177,7 +177,7 @@ public class LocationRepository extends EntityRepository { } @Override - public void addRelationships(Location location) throws IOException { + public void storeRelationships(Location location) throws IOException { // Add location owner relationship EntityUtil.setOwner(dao.relationshipDAO(), location.getId(), Entity.LOCATION, location.getOwner()); dao.relationshipDAO().insert(location.getService().getId().toString(), location.getId().toString(), diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceRepository.java index 91b93e9472d..32c4e0def77 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceRepository.java @@ -89,7 +89,7 @@ public class MessagingServiceRepository extends EntityRepository { } @Override - public void addRelationships(Metrics metrics) throws IOException { + public void storeRelationships(Metrics metrics) throws IOException { dao.relationshipDAO().insert(metrics.getService().getId().toString(), metrics.getId().toString(), metrics.getService().getType(), Entity.METRICS, Relationship.CONTAINS.ordinal()); setOwner(metrics, metrics.getOwner()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MlModelRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MlModelRepository.java index 42f79ad5012..0d8ac7156c6 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MlModelRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MlModelRepository.java @@ -160,7 +160,7 @@ public class MlModelRepository extends EntityRepository { } @Override - public void addRelationships(MlModel mlModel) throws IOException { + public void storeRelationships(MlModel mlModel) throws IOException { EntityUtil.setOwner(dao.relationshipDAO(), mlModel.getId(), Entity.MLMODEL, mlModel.getOwner()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineRepository.java index c7dac0ba3e6..00b61c8f5b4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineRepository.java @@ -143,7 +143,7 @@ public class PipelineRepository extends EntityRepository { } @Override - public void addRelationships(Pipeline pipeline) throws IOException { + public void storeRelationships(Pipeline pipeline) throws IOException { EntityReference service = pipeline.getService(); dao.relationshipDAO().insert(service.getId().toString(), pipeline.getId().toString(), service.getType(), Entity.PIPELINE, Relationship.CONTAINS.ordinal()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceRepository.java index 080a9ec107b..3e1d47841c4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceRepository.java @@ -89,7 +89,7 @@ public class PipelineServiceRepository extends EntityRepository } @Override - public void addRelationships(PipelineService entity) throws IOException { + public void storeRelationships(PipelineService entity) throws IOException { } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PolicyRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PolicyRepository.java index bc3209a8e5e..1ee3cdbb367 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PolicyRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PolicyRepository.java @@ -122,7 +122,7 @@ public class PolicyRepository extends EntityRepository { } @Override - public void addRelationships(Policy policy) throws IOException { + public void storeRelationships(Policy policy) throws IOException { // Add policy owner relationship setOwner(policy, policy.getOwner()); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportRepository.java index 9c8c439004c..21fd5342b7e 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportRepository.java @@ -76,7 +76,7 @@ public class ReportRepository extends EntityRepository { } @Override - public void addRelationships(Report entity) throws IOException { + public void storeRelationships(Report entity) throws IOException { // TODO } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/StorageServiceRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/StorageServiceRepository.java index 1d2a8f318ac..dfa8a8c74b4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/StorageServiceRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/StorageServiceRepository.java @@ -84,7 +84,7 @@ public class StorageServiceRepository extends EntityRepository { } @Override - public void addRelationships(StorageService entity) throws IOException { + public void storeRelationships(StorageService entity) throws IOException { } public static class StorageServiceEntityInterface implements EntityInterface { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableRepository.java index 8803806ed0b..bcc78981e0f 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableRepository.java @@ -304,7 +304,7 @@ public class TableRepository extends EntityRepository { } @Override - public void addRelationships(Table table) throws IOException { + public void storeRelationships(Table table) throws IOException { // Add relationship from database to table String databaseId = table.getDatabase().getId().toString(); dao.relationshipDAO().insert(databaseId, table.getId().toString(), Entity.DATABASE, Entity.TABLE, diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamRepository.java index 9595e216b8a..365a940a524 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamRepository.java @@ -130,7 +130,7 @@ public class TeamRepository extends EntityRepository { } @Override - public void addRelationships(Team team) throws IOException { + public void storeRelationships(Team team) throws IOException { for (EntityReference user : Optional.ofNullable(team.getUsers()).orElse(Collections.emptyList())) { dao.relationshipDAO().insert(team.getId().toString(), user.getId().toString(), "team", "user", Relationship.CONTAINS.ordinal()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepository.java index 8f04ed8a5b2..286bc708463 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepository.java @@ -101,7 +101,7 @@ public class TopicRepository extends EntityRepository { } @Override - public void addRelationships(Topic topic) throws IOException { + public void storeRelationships(Topic topic) throws IOException { setService(topic, topic.getService()); setOwner(topic, topic.getOwner()); applyTags(topic); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserRepository.java index 00548429315..5a348d5f774 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserRepository.java @@ -90,7 +90,7 @@ public class UserRepository extends EntityRepository { } @Override - public void addRelationships(User user) throws IOException { + public void storeRelationships(User user) throws IOException { assignTeams(user, user.getTeams()); } From 1786c3b90b7ff9ac0a4f618b98e21173f0f0a26b Mon Sep 17 00:00:00 2001 From: sureshms Date: Sun, 28 Nov 2021 14:59:58 -0800 Subject: [PATCH 2/2] Fixes #1447 Fix TableResourceTest.get_tableListWithDifferentFields_200_OK test failure --- .../openmetadata/catalog/jdbi3/TableRepository.java | 12 ++++-------- .../org/openmetadata/catalog/util/EntityUtil.java | 7 +------ .../catalog/resources/EntityResourceTest.java | 1 - .../resources/databases/TableResourceTest.java | 11 ++++++----- 4 files changed, 11 insertions(+), 20 deletions(-) diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableRepository.java index bcc78981e0f..8467c514c5f 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TableRepository.java @@ -349,7 +349,6 @@ public class TableRepository extends EntityRepository
{ // Add column level tags by adding tag to column relationship for (Column column : columns) { EntityUtil.applyTags(dao.tagDAO(), column.getTags(), column.getFullyQualifiedName()); - column.setTags(getTags(column.getFullyQualifiedName())); // Update tag list to handle derived tags if (column.getChildren() != null) { applyTags(column.getChildren()); } @@ -359,7 +358,6 @@ public class TableRepository extends EntityRepository
{ private void applyTags(Table table) throws IOException { // Add table level tags by adding tag to table relationship EntityUtil.applyTags(dao.tagDAO(), table.getTags(), table.getFullyQualifiedName()); - table.setTags(getTags(table.getFullyQualifiedName())); // Update tag to handle additional derived tags applyTags(table.getColumns()); } @@ -741,7 +739,7 @@ public class TableRepository extends EntityRepository
{ // Delete tags related to deleted columns deletedColumns.forEach(deleted -> EntityUtil.removeTags(dao.tagDAO(), deleted.getFullyQualifiedName())); - // Add tags related to deleted columns + // Add tags related to newly added columns for (Column added : addedColumns) { EntityUtil.applyTags(dao.tagDAO(), added.getTags(), added.getFullyQualifiedName()); } @@ -755,8 +753,8 @@ public class TableRepository extends EntityRepository
{ } updateColumnDescription(stored, updated); - updateTags(stored.getFullyQualifiedName(), fieldName + "." + updated.getName() + ".tags", stored.getTags(), - updated.getTags()); + updateTags(stored.getFullyQualifiedName(), fieldName + "." + updated.getName() + ".tags", + stored.getTags(), updated.getTags()); updateColumnConstraint(stored, updated); if (updated.getChildren() != null && stored.getChildren() != null) { @@ -765,9 +763,7 @@ public class TableRepository extends EntityRepository
{ } } - if (!deletedColumns.isEmpty()) { - majorVersionChange = true; - } + majorVersionChange = !deletedColumns.isEmpty(); } private void updateColumnDescription(Column origColumn, Column updatedColumn) throws JsonProcessingException { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java index a431ced2591..4716f26355a 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java @@ -91,8 +91,7 @@ public final class EntityUtil { public static BiPredicate taskMatch = (task1, task2) -> task1.getName().equals(task2.getName()); - public static BiPredicate stringMatch = (string1, string2) -> - string1.equals(string2); + public static BiPredicate stringMatch = String::equals; public static BiPredicate columnMatch = (column1, column2) -> column1.getName().equals(column2.getName()) && @@ -285,10 +284,6 @@ public final class EntityUtil { // Apply tagLabel to targetFQN that identifies an entity or field tagDAO.applyTag(tagLabel.getTagFQN(), targetFQN, tagLabel.getLabelType().ordinal(), tagLabel.getState().ordinal()); - - // Apply derived tags - List derivedTags = getDerivedTags(tagDAO, tagLabel, tag); - applyTags(tagDAO, derivedTags, targetFQN); } } 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 a462fa407e1..75d6aa06f6c 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 @@ -646,7 +646,6 @@ public abstract class EntityResourceTest extends CatalogApplicationTest { protected final T createAndCheckEntity(Object create, Map authHeaders) throws IOException { // Validate an entity that is created has all the information set in create request String updatedBy = TestUtils.getPrincipal(authHeaders); - // aqui si que tenim HREF T entity = createEntity(create, authHeaders); EntityInterface entityInterface = getEntityInterface(entity); diff --git a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/databases/TableResourceTest.java b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/databases/TableResourceTest.java index 46f67cc2403..ac6dcb4d019 100644 --- a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/databases/TableResourceTest.java +++ b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/databases/TableResourceTest.java @@ -119,11 +119,7 @@ public class TableResourceTest extends EntityResourceTest
{ private static final Logger LOG = LoggerFactory.getLogger(TableResourceTest.class); public static Database DATABASE; - public static final List COLUMNS = Arrays.asList( - getColumn("c1", BIGINT, USER_ADDRESS_TAG_LABEL), - getColumn("c2", ColumnDataType.VARCHAR, USER_ADDRESS_TAG_LABEL).withDataLength(10), - getColumn("c3", BIGINT, USER_BANK_ACCOUNT_TAG_LABEL)); - + public static List COLUMNS; public TableResourceTest() { super(Entity.TABLE, Table.class, TableList.class, "tables", TableResource.FIELDS, @@ -135,6 +131,11 @@ public class TableResourceTest extends EntityResourceTest
{ EntityResourceTest.setup(test); CreateDatabase create = DatabaseResourceTest.create(test).withService(SNOWFLAKE_REFERENCE); DATABASE = createAndCheckDatabase(create, adminAuthHeaders()); + + COLUMNS = Arrays.asList( + getColumn("c1", BIGINT, USER_ADDRESS_TAG_LABEL), + getColumn("c2", ColumnDataType.VARCHAR, USER_ADDRESS_TAG_LABEL).withDataLength(10), + getColumn("c3", BIGINT, USER_BANK_ACCOUNT_TAG_LABEL)); } public static Table createTable(TestInfo test, int i) throws IOException {