Repository: atlas
Updated Branches:
  refs/heads/branch-1.0 0e632a4ed -> 905cdc226


ATLAS-2838: Replace GraphHelper.encodeProperty() with 
AtlasGraphUtilsV2.encodeProperty()

(cherry picked from commit 0ed9f0e25d2b064bb7728b2d8481968ba4375ba2)


Project: http://git-wip-us.apache.org/repos/asf/atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/905cdc22
Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/905cdc22
Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/905cdc22

Branch: refs/heads/branch-1.0
Commit: 905cdc2264f08f5085b40b8c9b9b805484bcb36e
Parents: 0e632a4
Author: Sarath Subramanian <ssubraman...@hortonworks.com>
Authored: Sat Aug 25 12:06:50 2018 -0700
Committer: Sarath Subramanian <ssubraman...@hortonworks.com>
Committed: Sat Aug 25 12:08:03 2018 -0700

----------------------------------------------------------------------
 .../org/apache/atlas/type/AtlasStructType.java  | 11 ++++---
 .../graph/GraphBackedSearchIndexer.java         |  5 +--
 .../atlas/repository/graph/GraphHelper.java     | 31 ++++++------------
 .../store/graph/v2/AtlasGraphUtilsV2.java       |  8 ++---
 .../store/graph/v2/AtlasStructDefStoreV2.java   | 33 +++++++++++++-------
 5 files changed, 43 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/905cdc22/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
----------------------------------------------------------------------
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java 
b/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
index b6b4ccd..0c5c91b 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java
@@ -863,10 +863,13 @@ public class AtlasStructType extends AtlasType {
 
         // Keys copied from 
org.janusgraph.graphdb.types.system.SystemTypeManager.RESERVED_CHARS
         // JanusGraph checks that these chars are not part of any keys hence 
encoding
-        private static String[][] RESERVED_CHAR_ENCODE_MAP = new String[][] {
-                new String[] { "{",  "_o" },
-                new String[] { "}",  "_c" },
-                new String[] { "\"", "_q" },
+        // also including Titan reserved characters to support migrated 
property keys
+        private static String[][] RESERVED_CHAR_ENCODE_MAP = new String[][]{
+                new String[] {"{", "_o"},
+                new String[] {"}", "_c"},
+                new String[] {"\"", "_q"},
+                new String[] {"$", "_d"}, //titan reserved character
+                new String[] {"%", "_p"}, //titan reserved characters
         };
 
         private static final char[] IDX_QRY_OFFENDING_CHARS = { '@', '/', ' ', 
'-' };

http://git-wip-us.apache.org/repos/asf/atlas/blob/905cdc22/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
 
b/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
index cb0cbf3..bae2c3f 100755
--- 
a/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
@@ -42,6 +42,7 @@ import org.apache.atlas.repository.graphdb.AtlasGraph;
 import org.apache.atlas.repository.graphdb.AtlasGraphIndex;
 import org.apache.atlas.repository.graphdb.AtlasGraphManagement;
 import org.apache.atlas.repository.graphdb.AtlasPropertyKey;
+import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2;
 import org.apache.atlas.type.AtlasArrayType;
 import org.apache.atlas.type.AtlasClassificationType;
 import org.apache.atlas.type.AtlasEntityType;
@@ -315,7 +316,7 @@ public class GraphBackedSearchIndexer implements 
SearchIndexer, ActiveStateChang
     }
 
     private void createIndexForAttribute(AtlasGraphManagement management, 
String typeName, AtlasAttributeDef attributeDef) {
-        final String     propertyName   = 
GraphHelper.encodePropertyKey(typeName + "." + attributeDef.getName());
+        final String     propertyName   = 
AtlasGraphUtilsV2.encodePropertyKey(typeName + "." + attributeDef.getName());
         AtlasCardinality cardinality    = 
toAtlasCardinality(attributeDef.getCardinality());
         boolean          isUnique       = attributeDef.getIsUnique();
         boolean          isIndexable    = attributeDef.getIsIndexable();
@@ -729,7 +730,7 @@ public class GraphBackedSearchIndexer implements 
SearchIndexer, ActiveStateChang
     }
 
     private void cleanupIndexForAttribute(AtlasGraphManagement management, 
String typeName, AtlasAttributeDef attributeDef) {
-        final String propertyName = GraphHelper.encodePropertyKey(typeName + 
"." + attributeDef.getName());
+        final String propertyName = 
AtlasGraphUtilsV2.encodePropertyKey(typeName + "." + attributeDef.getName());
         String  attribTypeName    = attributeDef.getTypeName();
         boolean isBuiltInType     = 
AtlasTypeUtil.isBuiltInType(attribTypeName);
         boolean isArrayType       = isArrayType(attribTypeName);

http://git-wip-us.apache.org/repos/asf/atlas/blob/905cdc22/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java 
b/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
index babe267..19069ba 100755
--- 
a/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java
@@ -647,7 +647,7 @@ public final class GraphHelper {
     }
 
     public static <T extends AtlasElement> void setProperty(T element, String 
propertyName, Object value) {
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
 
         String elementStr = null;
 
@@ -688,7 +688,7 @@ public final class GraphHelper {
      * @return
      */
     public static <T> T getSingleValuedProperty(AtlasElement element, String 
propertyName, Class<T> clazz) {
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
 
         if (LOG.isTraceEnabled()) {
             LOG.trace("Reading property {} from {}", actualPropertyName, 
string(element));
@@ -699,7 +699,7 @@ public final class GraphHelper {
 
 
     public static Object getProperty(AtlasVertex<?,?> vertex, String 
propertyName) {
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
 
         if (LOG.isTraceEnabled()) {
             LOG.trace("Reading property {} from {}", actualPropertyName, 
string(vertex));
@@ -714,7 +714,7 @@ public final class GraphHelper {
     }
 
     public static Object getProperty(AtlasEdge<?,?> edge, String propertyName) 
{
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
 
         if (LOG.isTraceEnabled()) {
             LOG.trace("Reading property {} from {}", actualPropertyName, 
string(edge));
@@ -740,7 +740,7 @@ public final class GraphHelper {
      * @param value
      */
     public static void addProperty(AtlasVertex vertex, String propertyName, 
Object value) {
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
 
         if (LOG.isDebugEnabled()) {
             LOG.debug("Adding property {} = \"{}\" to vertex {}", 
actualPropertyName, value, string(vertex));
@@ -1686,7 +1686,7 @@ public final class GraphHelper {
 
     // map elements for primitive types
     public static Map<String, Object> getPrimitiveMap(AtlasVertex 
instanceVertex, String propertyName) {
-        Map<String, Object> ret = 
instanceVertex.getProperty(encodePropertyKey(propertyName), Map.class);
+        Map<String, Object> ret = 
instanceVertex.getProperty(AtlasGraphUtilsV2.encodePropertyKey(propertyName), 
Map.class);
 
         if (ret == null) {
             ret = new HashMap<>();
@@ -1788,17 +1788,6 @@ public final class GraphHelper {
             }});
 
 
-    public static String encodePropertyKey(String key) {
-        if (StringUtils.isBlank(key)) {
-            return key;
-        }
-
-        for (String str : RESERVED_CHARS_ENCODE_MAP.keySet()) {
-            key = key.replace(str, RESERVED_CHARS_ENCODE_MAP.get(str));
-        }
-        return key;
-    }
-
     public static String decodePropertyKey(String key) {
         if (StringUtils.isBlank(key)) {
             return key;
@@ -1840,25 +1829,25 @@ public final class GraphHelper {
 
     public static void setListPropertyFromElementIds(AtlasVertex<?, ?> 
instanceVertex, String propertyName,
             List<AtlasElement> elements) {
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
         instanceVertex.setPropertyFromElementsIds(actualPropertyName, 
elements);
 
     }
 
     public static void setPropertyFromElementId(AtlasVertex<?, ?> 
instanceVertex, String propertyName,
             AtlasElement value) {
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
         instanceVertex.setPropertyFromElementId(actualPropertyName, value);
 
     }
 
     public static void setListProperty(AtlasVertex instanceVertex, String 
propertyName, ArrayList<String> value) {
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
         instanceVertex.setListProperty(actualPropertyName, value);
     }
 
     public static List<String> getListProperty(AtlasVertex instanceVertex, 
String propertyName) {
-        String actualPropertyName = 
GraphHelper.encodePropertyKey(propertyName);
+        String actualPropertyName = 
AtlasGraphUtilsV2.encodePropertyKey(propertyName);
         return instanceVertex.getListProperty(actualPropertyName);
     }
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/905cdc22/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasGraphUtilsV2.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasGraphUtilsV2.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasGraphUtilsV2.java
index ccfd3e5..25770a3 100644
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasGraphUtilsV2.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasGraphUtilsV2.java
@@ -151,15 +151,11 @@ public class AtlasGraphUtilsV2 {
     }
 
     public static String encodePropertyKey(String key) {
-        String ret = AtlasStructType.AtlasAttribute.encodePropertyKey(key);
-
-        return ret;
+        return AtlasAttribute.encodePropertyKey(key);
     }
 
     public static String decodePropertyKey(String key) {
-        String ret = AtlasStructType.AtlasAttribute.decodePropertyKey(key);
-
-        return ret;
+        return AtlasAttribute.decodePropertyKey(key);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/atlas/blob/905cdc22/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasStructDefStoreV2.java
----------------------------------------------------------------------
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasStructDefStoreV2.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasStructDefStoreV2.java
index c34c94e..bcd805e 100644
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasStructDefStoreV2.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasStructDefStoreV2.java
@@ -347,17 +347,23 @@ public class AtlasStructDefStoreV2 extends 
AtlasAbstractDefStoreV2<AtlasStructDe
             if (StringUtils.isEmpty(attributeDef.getName())) {
                 throw new 
AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ATTRIBUTE, 
structDef.getName(), "name");
             }
+
             if (StringUtils.isEmpty(attributeDef.getTypeName())) {
                 throw new 
AtlasBaseException(AtlasErrorCode.MISSING_MANDATORY_ATTRIBUTE, 
structDef.getName(), "typeName");
             }
 
-            String propertyKey = 
AtlasGraphUtilsV2.getTypeDefPropertyKey(structDef, attributeDef.getName());
+            String propertyKey        = 
AtlasGraphUtilsV2.getTypeDefPropertyKey(structDef, attributeDef.getName());
+            String encodedPropertyKey = 
AtlasGraphUtilsV2.encodePropertyKey(propertyKey);
 
-            AtlasGraphUtilsV2.setProperty(vertex, propertyKey, 
toJsonFromAttribute(structType.getAttribute(attributeDef.getName())));
+            vertex.setProperty(encodedPropertyKey, 
toJsonFromAttribute(structType.getAttribute(attributeDef.getName())));
 
             attrNames.add(attributeDef.getName());
         }
-        AtlasGraphUtilsV2.setProperty(vertex, 
AtlasGraphUtilsV2.getTypeDefPropertyKey(structDef), attrNames);
+
+        String typeNamePropertyKey        = 
AtlasGraphUtilsV2.getTypeDefPropertyKey(structDef);
+        String encodedtypeNamePropertyKey = 
AtlasGraphUtilsV2.encodePropertyKey(typeNamePropertyKey);
+
+        vertex.setProperty(encodedtypeNamePropertyKey, attrNames);
     }
 
     public static void updateVertexPreUpdate(AtlasStructDef structDef, 
AtlasStructType structType,
@@ -427,24 +433,27 @@ public class AtlasStructDefStoreV2 extends 
AtlasAbstractDefStoreV2<AtlasStructDe
         }
     }
 
-    public static AtlasStructDef toStructDef(AtlasVertex vertex, 
AtlasStructDef structDef,
-                                             AtlasTypeDefGraphStoreV2 
typeDefStore) throws AtlasBaseException {
-        AtlasStructDef ret = (structDef != null) ? structDef :new 
AtlasStructDef();
+    public static AtlasStructDef toStructDef(AtlasVertex vertex, 
AtlasStructDef structDef, AtlasTypeDefGraphStoreV2 typeDefStore)
+                                             throws AtlasBaseException {
+        AtlasStructDef ret = (structDef != null) ? structDef : new 
AtlasStructDef();
 
         typeDefStore.vertexToTypeDef(vertex, ret);
 
-        List<AtlasAttributeDef> attributeDefs = new ArrayList<>();
-        List<String> attrNames = 
vertex.getProperty(AtlasGraphUtilsV2.getTypeDefPropertyKey(ret), List.class);
+        List<AtlasAttributeDef> attributeDefs          = new ArrayList<>();
+        String                  typePropertyKey        = 
AtlasGraphUtilsV2.getTypeDefPropertyKey(ret);
+        String                  encodedTypePropertyKey = 
AtlasGraphUtilsV2.encodePropertyKey(typePropertyKey);
+        List<String>            attrNames              = 
vertex.getProperty(encodedTypePropertyKey, List.class);
 
         if (CollectionUtils.isNotEmpty(attrNames)) {
             for (String attrName : attrNames) {
-                String propertyKey = 
AtlasGraphUtilsV2.getTypeDefPropertyKey(ret, attrName);
-                String attribJson  = 
vertex.getProperty(GraphHelper.encodePropertyKey(propertyKey), String.class);
+                String attrPropertyKey        = 
AtlasGraphUtilsV2.getTypeDefPropertyKey(ret, attrName);
+                String encodedAttrPropertyKey = 
AtlasGraphUtilsV2.encodePropertyKey(attrPropertyKey);
+                String attrJson               = 
vertex.getProperty(encodedAttrPropertyKey, String.class);
 
-                attributeDefs.add(toAttributeDefFromJson(structDef, 
AtlasType.fromJson(attribJson, Map.class),
-                                  typeDefStore));
+                attributeDefs.add(toAttributeDefFromJson(structDef, 
AtlasType.fromJson(attrJson, Map.class), typeDefStore));
             }
         }
+
         ret.setAttributeDefs(attributeDefs);
 
         return ret;

Reply via email to