Repository: incubator-atlas Updated Branches: refs/heads/master 856ee6b5d -> 4f9cba4b0
ATLAS-754 InstanceSerialization does not serialize Reference in the values array of Reference. (harishjp via sumasai) Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/4f9cba4b Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/4f9cba4b Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/4f9cba4b Branch: refs/heads/master Commit: 4f9cba4b031fe25d394f61d4a43283dadc0856f9 Parents: 856ee6b Author: Suma Shivaprasad <[email protected]> Authored: Mon May 9 16:07:38 2016 -0700 Committer: Suma Shivaprasad <[email protected]> Committed: Mon May 9 16:07:38 2016 -0700 ---------------------------------------------------------------------- release-log.txt | 1 + .../typesystem/json/InstanceSerialization.scala | 7 +- .../json/InstanceSerializationTest.scala | 154 ++++++++++--------- 3 files changed, 82 insertions(+), 80 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/4f9cba4b/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 152314c..1dcabed 100644 --- a/release-log.txt +++ b/release-log.txt @@ -20,6 +20,7 @@ ATLAS-409 Atlas will not import avro tables with schema read from a file (dosset ATLAS-379 Create sqoop and falcon metadata addons (venkatnrangan,bvellanki,sowmyaramesh via shwethags) ALL CHANGES: +ATLAS-754 InstanceSerialization does not serialize Reference in the values array of Reference.(harishjp via sumasai) ATLAS-626 Hive temporary table metadata is captured in atlas (sumasai) ATLAS-747 Hive CTAS entity registration fails because userName is null (shwethags) ATLAS-759 HiveHookIT.testAlterTableChangeColumn is consistently failing on master (yhemanth) http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/4f9cba4b/typesystem/src/main/scala/org/apache/atlas/typesystem/json/InstanceSerialization.scala ---------------------------------------------------------------------- diff --git a/typesystem/src/main/scala/org/apache/atlas/typesystem/json/InstanceSerialization.scala b/typesystem/src/main/scala/org/apache/atlas/typesystem/json/InstanceSerialization.scala index eae3063..73b3526 100755 --- a/typesystem/src/main/scala/org/apache/atlas/typesystem/json/InstanceSerialization.scala +++ b/typesystem/src/main/scala/org/apache/atlas/typesystem/json/InstanceSerialization.scala @@ -104,7 +104,7 @@ object InstanceSerialization { refClass <- idClass typNm <- typeName i <- id - s <- Some (state) + s <- Some(state) v <- version } yield _Id(i, v, typNm, s) } @@ -219,7 +219,6 @@ object InstanceSerialization { * A Map is an Reference if: * - it has the correct [[format.typeHintFieldName]] * - it has a 'typeName' - * - it has an _Id * - it has a 'values' attribute * - it has 'traitNames' attribute * - it has 'traits' attribute @@ -229,11 +228,11 @@ object InstanceSerialization { for { refClass <- referenceClass typNm <- typeName - i <- idObject + i <- Some(idObject) values <- valuesMap traitNms <- traitNames ts <- traits - } yield _Reference(Some(i), typNm, values, traitNms.toList, ts) + } yield _Reference(i, typNm, values, traitNms.toList, ts) } /** http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/4f9cba4b/typesystem/src/test/scala/org/apache/atlas/typesystem/json/InstanceSerializationTest.scala ---------------------------------------------------------------------- diff --git a/typesystem/src/test/scala/org/apache/atlas/typesystem/json/InstanceSerializationTest.scala b/typesystem/src/test/scala/org/apache/atlas/typesystem/json/InstanceSerializationTest.scala index f837b6c..9e656a5 100644 --- a/typesystem/src/test/scala/org/apache/atlas/typesystem/json/InstanceSerializationTest.scala +++ b/typesystem/src/test/scala/org/apache/atlas/typesystem/json/InstanceSerializationTest.scala @@ -53,79 +53,82 @@ class InstanceSerializationTest { } @Test def testReferenceArrayWithNoState { - - val staticJson = """{ - "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Reference", - "id": { - "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Id", - "version": 0, - "typeName": "LoadProcess" - }, - "typeName": "LoadProcess", - "values": { - "inputTables": [{ - "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Id", - "id": "bacfa996-e88e-4d7e-9630-68c9829b10b4", - "version": 0, - "typeName": "Table" - }, { - "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Id", - "id": "6da06805-3f56-446f-8831-672a65ac2199", - "version": 0, - "typeName": "Table" - } - - ], - "outputTable": { - "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Id", - "id": "d5c3d6d0-aa10-44c1-b05d-ed9400d2a5ac", - "version": 0, - "typeName": "Table" - }, - "name": "loadSalesDaily" - }, - "traitNames": [ - "ETL" - ], - "traits": { - "ETL": { - "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Struct", - "typeName": "ETL", - "values": { - - } - } + val staticJson = s"""{ + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Reference", + "id": { + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Id", + "version": 0, + "typeName": "LoadProcess" + }, + "typeName": "LoadProcess", + "values": { + "inputTables": [{ + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Id", + "id": "bacfa996-e88e-4d7e-9630-68c9829b10b4", + "version": 0, + "typeName": "Table" + }, { + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Id", + "id": "6da06805-3f56-446f-8831-672a65ac2199", + "version": 0, + "typeName": "Table" + }, { + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Reference", + "typeName": "$typeName", + "values": {} + "traitNames": [] + "traits": {} + } + ], + "outputTable": { + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Id", + "id": "d5c3d6d0-aa10-44c1-b05d-ed9400d2a5ac", + "version": 0, + "typeName": "Table" + }, + "name": "loadSalesDaily" + }, + "traitNames": [ + "ETL" + ], + "traits": { + "ETL": { + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Struct", + "typeName": "ETL", + "values": { + } + } } - } - """; - - val entity: Referenceable = InstanceSerialization.fromJsonReferenceable(staticJson, true) - val outputTable = entity.getValuesMap.get("outputTable") - val inputTables : java.util.List[_] = entity.getValuesMap().get("inputTables").asInstanceOf[java.util.List[_]] - - assertTrue(outputTable.isInstanceOf[Id]); - import scala.collection.JavaConversions._ - for(inputTable <- inputTables) { - assertTrue(inputTable.isInstanceOf[Id]); } + """; + + val entity: Referenceable = InstanceSerialization.fromJsonReferenceable(staticJson, true) + val outputTable = entity.getValuesMap.get("outputTable") + val inputTables : java.util.List[_] = entity.getValuesMap().get("inputTables").asInstanceOf[java.util.List[_]] + + assertTrue(entity.getId.isInstanceOf[Id]); + assertTrue(outputTable.isInstanceOf[Id]); + import scala.collection.JavaConversions._ + assertTrue(inputTables(0).isInstanceOf[Id]); + assertTrue(inputTables(1).isInstanceOf[Id]); + assertTrue(inputTables(2).isInstanceOf[Referenceable]); } - + @Test def testMissingStateInId: Unit = { val entity: Referenceable = new Referenceable(typeName) - val json: String = InstanceSerialization.toJson(entity, true) - val staticJson: String = "{\n" + - " \"jsonClass\":\"org.apache.atlas.typesystem.json.InstanceSerialization$_Reference\",\n" + - " \"id\":{\n" + - " \"jsonClass\":\"org.apache.atlas.typesystem.json.InstanceSerialization$_Id\",\n" + - " \"id\":\"" + entity.getId.id + "\",\n" + - " \"version\":0,\n" + - " \"typeName\":\"" + entity.getTypeName + "\",\n" + - " },\n" + - " \"typeName\":\"" + entity.getTypeName + "\",\n" + - " \"values\":{}\n" + - " \"traitNames\":[]\n" + - " \"traits\":{}\n" + - "}" + val staticJson: String = s"""{ + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Reference", + "id": { + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Id", + "id": "${entity.getId.id}", + "version":0, + "typeName": "${entity.getTypeName}", + }, + "typeName": "${entity.getTypeName}", + "values": {} + "traitNames": [] + "traits": {} + }""" val entity2: Referenceable = InstanceSerialization.fromJsonReferenceable(staticJson, true) assertNotNull(entity2) assertNotNull(entity2.getId) @@ -140,14 +143,13 @@ class InstanceSerializationTest { @Test def testMissingId: Unit = { val entity: Referenceable = new Referenceable(typeName) - val json: String = InstanceSerialization.toJson(entity, true) - val staticJson: String = "{\n" + - " \"jsonClass\":\"org.apache.atlas.typesystem.json.InstanceSerialization$_Reference\",\n" + - " \"typeName\":\"" + entity.getTypeName + "\",\n" + - " \"values\":{}\n" + - " \"traitNames\":[],\n" + - " \"traits\":{}\n" + - "}" + val staticJson: String = s"""{ + "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$$_Reference", + "typeName": "${entity.getTypeName}", + "values": {} + "traitNames": [] + "traits": {} + }""" val entity2: Referenceable = InstanceSerialization.fromJsonReferenceable(staticJson, true) assertNotNull(entity2) assertNotNull(entity2.getId)
