Repository: incubator-atlas Updated Branches: refs/heads/master b4a694154 -> 485573fca
ATLAS-1576: fix for NPE while handling unknown attributes Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/485573fc Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/485573fc Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/485573fc Branch: refs/heads/master Commit: 485573fcab1c7cd263289ccc4da40357607dce82 Parents: b4a6941 Author: Madhan Neethiraj <[email protected]> Authored: Tue Feb 21 14:31:45 2017 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Tue Feb 21 14:32:07 2017 -0800 ---------------------------------------------------------------------- .../converters/AtlasStructFormatConverter.java | 28 ++++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/485573fc/repository/src/main/java/org/apache/atlas/repository/converters/AtlasStructFormatConverter.java ---------------------------------------------------------------------- diff --git a/repository/src/main/java/org/apache/atlas/repository/converters/AtlasStructFormatConverter.java b/repository/src/main/java/org/apache/atlas/repository/converters/AtlasStructFormatConverter.java index 90f3e5b..6b6ee01 100644 --- a/repository/src/main/java/org/apache/atlas/repository/converters/AtlasStructFormatConverter.java +++ b/repository/src/main/java/org/apache/atlas/repository/converters/AtlasStructFormatConverter.java @@ -23,6 +23,7 @@ import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.instance.AtlasStruct; import org.apache.atlas.type.AtlasStructType; +import org.apache.atlas.type.AtlasStructType.AtlasAttribute; import org.apache.atlas.type.AtlasType; import org.apache.atlas.type.AtlasTypeRegistry; import org.apache.atlas.typesystem.IStruct; @@ -31,11 +32,8 @@ import org.apache.commons.collections.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Set; public class AtlasStructFormatConverter extends AtlasAbstractFormatConverter { private static final Logger LOG = LoggerFactory.getLogger(AtlasStructFormatConverter.class); @@ -119,22 +117,23 @@ public class AtlasStructFormatConverter extends AtlasAbstractFormatConverter { return ret; } - protected Map<String, Object> fromV2ToV1(AtlasStructType structType, Map attributes, ConverterContext context) throws AtlasBaseException { + protected Map<String, Object> fromV2ToV1(AtlasStructType structType, Map<String, Object> attributes, ConverterContext context) throws AtlasBaseException { Map<String, Object> ret = null; if (MapUtils.isNotEmpty(attributes)) { ret = new HashMap<>(); // Only process the requested/set attributes - for (Object attribKey : attributes.keySet()) { - AtlasStructType.AtlasAttribute attr = structType.getAttribute((String) attribKey); - AtlasType attrType = attr.getAttributeType(); + for (String attrName : attributes.keySet()) { + AtlasAttribute attr = structType.getAttribute(attrName); - if (attrType == null) { - LOG.warn("ignored attribute {}.{}: failed to find AtlasType", structType.getTypeName(), attr.getName()); + if (attr == null) { + LOG.warn("ignored unknown attribute {}.{}", structType.getTypeName(), attrName); continue; } + AtlasType attrType = attr.getAttributeType(); + Object v2Value = attributes.get(attr.getName()); Object v1Value; @@ -155,15 +154,16 @@ public class AtlasStructFormatConverter extends AtlasAbstractFormatConverter { // Only process the requested/set attributes for (Object attribKey : attributes.keySet()) { - AtlasStructType.AtlasAttribute attr = structType.getAttribute((String) attribKey); + String attrName = attribKey.toString(); + AtlasAttribute attr = structType.getAttribute(attrName); - AtlasType attrType = attr.getAttributeType(); - - if (attrType == null) { - LOG.warn("ignored attribute {}.{}: failed to find AtlasType", structType.getTypeName(), attr.getName()); + if (attr == null) { + LOG.warn("ignored unknown attribute {}.{}", structType.getTypeName(), attrName); continue; } + AtlasType attrType = attr.getAttributeType(); + AtlasFormatConverter attrConverter = converterRegistry.getConverter(attrType.getTypeCategory()); Object v1Value = attributes.get(attr.getName()); Object v2Value = attrConverter.fromV1ToV2(v1Value, attrType, context);
