|
19 | 19 | package org.apache.atlas.repository.store.graph.v2;
|
20 | 20 |
|
21 | 21 | import org.apache.atlas.exception.AtlasBaseException;
|
| 22 | +import org.apache.atlas.model.TypeCategory; |
22 | 23 | import org.apache.atlas.model.instance.AtlasClassification;
|
23 | 24 | import org.apache.atlas.model.instance.AtlasEntity;
|
24 | 25 | import org.apache.atlas.repository.graphdb.AtlasVertex;
|
|
28 | 29 | import org.apache.atlas.utils.AtlasEntityUtil;
|
29 | 30 | import org.apache.commons.collections.MapUtils;
|
30 | 31 |
|
| 32 | +import java.util.ArrayList; |
31 | 33 | import java.util.List;
|
32 | 34 | import java.util.Map;
|
33 | 35 | import java.util.Objects;
|
@@ -81,7 +83,28 @@ private AtlasEntityDiffResult getDiffResult(AtlasEntity updatedEntity, AtlasEnti
|
81 | 83 | continue;
|
82 | 84 | }
|
83 | 85 |
|
84 |
| - Object newVal = entry.getValue(); |
| 86 | + TypeCategory category = attribute.getAttributeType().getTypeCategory(); |
| 87 | + boolean isDefaultValueNotNull = !attribute.getAttributeDef().getIsDefaultValueNull(); |
| 88 | + Object newVal; |
| 89 | + |
| 90 | + if (entry.getValue() == null && isDefaultValueNotNull) { |
| 91 | + switch (category) { |
| 92 | + case PRIMITIVE: |
| 93 | + newVal = attribute.getAttributeType().createDefaultValue(); |
| 94 | + break; |
| 95 | + case ARRAY: |
| 96 | + newVal = new ArrayList<>(); |
| 97 | + break; |
| 98 | + case MAP: |
| 99 | + newVal = MapUtils.EMPTY_MAP; |
| 100 | + break; |
| 101 | + default: |
| 102 | + newVal = entry.getValue(); |
| 103 | + } |
| 104 | + } else { |
| 105 | + newVal = entry.getValue(); |
| 106 | + } |
| 107 | + |
85 | 108 | Object currVal = (storedEntity != null) ? storedEntity.getAttribute(attrName) : entityRetriever.getEntityAttribute(storedVertex, attribute);
|
86 | 109 |
|
87 | 110 | if (!attribute.getAttributeType().areEqualValues(currVal, newVal, guidRefMap)) {
|
|
0 commit comments