sheetalshah1007 commented on code in PR #478:
URL: https://github.com/apache/atlas/pull/478#discussion_r3189354287


##########
repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java:
##########
@@ -1533,6 +1527,89 @@ private void mapRelationshipAttributes(AtlasEntity 
entity, AtlasEntityType entit
         LOG.debug("<== mapRelationshipAttributes({}, {})", op, 
entity.getTypeName());
     }
 
+    private void mapRelationshipAttribute(AtlasEntityType entityType, String 
attrName, Object attrValue, AtlasVertex vertex, EntityOperation op, 
EntityMutationContext context) throws AtlasBaseException {
+        LOG.debug("==> mapRelationshipAttribute({}, {})", attrName, 
entityType.getTypeName());
+        Set<String> relationshipTypeNames = 
entityType.getAttributeRelationshipTypes(attrName);
+
+        if 
(shouldMapRelationshipAttributeUsingInferredType(relationshipTypeNames, 
attrValue)) {
+            mapRelationshipAttributeUsingInferredType(entityType, attrName, 
attrValue, vertex, op, context);
+            return;
+        }
+
+        if (attrValue instanceof Collection) {
+            Collection<?> relatedObjects = (Collection<?>) attrValue;
+
+            // Group related objects by their appropriate relationship type
+            // e.g., hive_table elements should use hive_table_db 
relationship, delta_table elements should use delta_table_db
+            Map<String, List<Object>> elementsByRelationshipType = 
groupElementsByRelationshipType(
+                    relatedObjects, attrName, relationshipTypeNames);
+
+            for (Map.Entry<String, List<Object>> entry : 
elementsByRelationshipType.entrySet()) {
+                String       relationshipTypeName = entry.getKey();
+                List<Object> filteredElements     = entry.getValue();
+
+                AtlasAttribute attribute = 
entityType.getRelationshipAttribute(attrName, relationshipTypeName);
+
+                if (attribute != null && 
CollectionUtils.isNotEmpty(filteredElements)) {
+                    // Use the same collection type as the original (List or 
Set)
+                    Object filteredValue = 
createCollectionOfSameType(attrValue, filteredElements);
+
+                    LOG.debug("Processing relationship type {} for attribute 
{} with {} elements", relationshipTypeName, attrName, filteredElements.size());
+
+                    mapAttribute(attribute, filteredValue, vertex, op, 
context);
+                }
+            }
+        } else if (attrValue instanceof Map) {
+            LOG.warn("mapRelationshipAttribute: attribute {} on {}: Map-valued 
relationship attribute is not supported; use a list or set of references",
+                    attrName, entityType.getTypeName());
+        }
+
+        LOG.debug("<== mapRelationshipAttribute({}, {})", attrName, 
entityType.getTypeName());
+    }
+
+    private boolean isAttributeWithMultipleRelationshipTypes(Set<String> 
relationshipTypeNames) {
+        return CollectionUtils.isNotEmpty(relationshipTypeNames) && 
relationshipTypeNames.size() > 1;
+    }
+
+    private boolean 
shouldMapRelationshipAttributeUsingInferredType(Set<String> 
relationshipTypeNames, Object attrValue) {
+        return CollectionUtils.isEmpty(relationshipTypeNames)

Review Comment:
   Removed it



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to