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);

Reply via email to