You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2017/07/27 22:20:43 UTC
atlas git commit: ATLAS-1879: fixed - classification update removes
some properties
Repository: atlas
Updated Branches:
refs/heads/0.8-incubating 1ad295875 -> b566ea692
ATLAS-1879: fixed - classification update removes some properties
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/b566ea69
Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/b566ea69
Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/b566ea69
Branch: refs/heads/0.8-incubating
Commit: b566ea6925b74f89fd59ca46e14c1eb687240561
Parents: 1ad2958
Author: Peter Gergo Barna <pb...@hortonworks.com>
Authored: Wed Jul 26 18:02:28 2017 +0200
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Thu Jul 27 15:06:29 2017 -0700
----------------------------------------------------------------------
.../store/graph/AtlasTypeDefGraphStore.java | 6 ++
.../store/graph/AtlasTypeDefGraphStoreTest.java | 65 ++++++++++++++++++++
2 files changed, 71 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/atlas/blob/b566ea69/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
index 97a578e..5365b4d 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
@@ -381,6 +381,12 @@ public abstract class AtlasTypeDefGraphStore implements AtlasTypeDefStore, Activ
AtlasTypesDef ret = updateGraphStore(typesDef, ttr);
+ try {
+ ttr.updateTypes(ret);
+ } catch (AtlasBaseException e) { // this shouldn't happen, as the types were already validated
+ LOG.error("failed to update the registry after updating the store", e);
+ }
+
if (LOG.isDebugEnabled()) {
LOG.debug("<== AtlasTypeDefGraphStore.updateTypesDef(enums={}, structs={}, classfications={}, entities={})",
CollectionUtils.size(typesDef.getEnumDefs()),
http://git-wip-us.apache.org/repos/asf/atlas/blob/b566ea69/repository/src/test/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStoreTest.java
----------------------------------------------------------------------
diff --git a/repository/src/test/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStoreTest.java b/repository/src/test/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStoreTest.java
index 7d608b5..34829a1 100644
--- a/repository/src/test/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStoreTest.java
+++ b/repository/src/test/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStoreTest.java
@@ -29,6 +29,7 @@ import org.apache.atlas.model.typedef.AtlasStructDef;
import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef;
import org.apache.atlas.model.typedef.AtlasTypesDef;
import org.apache.atlas.store.AtlasTypeDefStore;
+import org.apache.atlas.type.AtlasType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -38,6 +39,7 @@ import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import static org.testng.Assert.*;
@@ -432,4 +434,67 @@ public class AtlasTypeDefGraphStoreTest {
}
}
+ @Test
+ public void testTypeRegistryIsUpdatedAfterGraphStorage() throws AtlasBaseException {
+ String classificationDef = "{"
+ + "\"name\":\"test_classification_11\","
+ + "\"description\":\"\","
+ + "\"createdBy\":\"admin\","
+ + "\"superTypes\":[],"
+ + "\"attributeDefs\":[{"
+ + "\"name\":\"test_class_11\","
+ + "\"typeName\":\"string\","
+ + "\"isOptional\":true,"
+ + "\"isUnique\":true,"
+ + "\"isIndexable\":true,"
+ + "\"cardinality\":\"SINGLE\","
+ + "\"valuesMinCount\":0,"
+ + "\"valuesMaxCount\":1}]}";
+
+ String jsonStr = "{"
+ + "\"classificationDefs\":[" + classificationDef + "],"
+ + "\"entityDefs\":[],"
+ + "\"enumDefs\":[],"
+ + "\"structDefs\":[]}";
+
+ // create type from json string
+ AtlasTypesDef testTypesDefFromJson = AtlasType.fromJson(jsonStr, AtlasTypesDef.class);
+ AtlasTypesDef createdTypesDef = typeDefStore.createTypesDef(testTypesDefFromJson);
+ // check returned type
+ assertEquals("test_classification_11", createdTypesDef.getClassificationDefs().get(0).getName());
+ assertTrue(createdTypesDef.getClassificationDefs().get(0).getAttributeDefs().get(0).getIsIndexable());
+ // save guid
+ String guid = createdTypesDef.getClassificationDefs().get(0).getGuid();
+ Date createdTime = createdTypesDef.getClassificationDefs().get(0).getCreateTime();
+
+ // get created type and check again
+ AtlasClassificationDef getBackFromCache = typeDefStore.getClassificationDefByName("test_classification_11");
+ assertEquals("test_classification_11", getBackFromCache.getName());
+ assertTrue(getBackFromCache.getAttributeDefs().get(0).getIsIndexable());
+ assertEquals(guid, getBackFromCache.getGuid());
+ assertNotNull(getBackFromCache.getCreatedBy());
+ assertEquals(createdTime, getBackFromCache.getCreateTime());
+
+ // update type, change isIndexable, check the update result
+ testTypesDefFromJson = AtlasType.fromJson(jsonStr, AtlasTypesDef.class);
+ testTypesDefFromJson.getClassificationDefs().get(0).getAttributeDefs().get(0).setIsIndexable(false);
+ AtlasTypesDef updatedTypesDef = typeDefStore.updateTypesDef(testTypesDefFromJson);
+ assertEquals("test_classification_11", updatedTypesDef.getClassificationDefs().get(0).getName());
+ assertFalse(updatedTypesDef.getClassificationDefs().get(0).getAttributeDefs().get(0).getIsIndexable());
+ assertEquals(guid, updatedTypesDef.getClassificationDefs().get(0).getGuid());
+ assertEquals(createdTime, updatedTypesDef.getClassificationDefs().get(0).getCreateTime());
+
+ // get updated type (both by name and guid) and check again
+ getBackFromCache = typeDefStore.getClassificationDefByName("test_classification_11");
+ assertEquals("test_classification_11", getBackFromCache.getName());
+ assertFalse(getBackFromCache.getAttributeDefs().get(0).getIsIndexable());
+ assertEquals(guid, getBackFromCache.getGuid());
+ assertEquals(createdTime, getBackFromCache.getCreateTime());
+ getBackFromCache = typeDefStore.getClassificationDefByGuid(guid);
+ assertEquals("test_classification_11", getBackFromCache.getName());
+ assertFalse(getBackFromCache.getAttributeDefs().get(0).getIsIndexable());
+ assertEquals(guid, getBackFromCache.getGuid());
+ assertEquals(createdTime, getBackFromCache.getCreateTime());
+ }
+
}