Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
atlas
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dataplatform
atlas
Commits
6a24cad1
Commit
6a24cad1
authored
Nov 03, 2016
by
Madhan Neethiraj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ATLAS-1268: added methods to retrieve attributeDefs in a type and all its superTypes
Signed-off-by:
Madhan Neethiraj
<
madhan@apache.org
>
parent
0c746895
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
179 additions
and
46 deletions
+179
-46
AtlasClassificationType.java
...n/java/org/apache/atlas/type/AtlasClassificationType.java
+38
-22
AtlasEntityType.java
.../src/main/java/org/apache/atlas/type/AtlasEntityType.java
+38
-22
TestAtlasTypeRegistry.java
...est/java/org/apache/atlas/type/TestAtlasTypeRegistry.java
+103
-2
No files found.
intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java
View file @
6a24cad1
...
...
@@ -22,12 +22,14 @@ import org.apache.atlas.AtlasErrorCode;
import
org.apache.atlas.exception.AtlasBaseException
;
import
org.apache.atlas.model.instance.AtlasClassification
;
import
org.apache.atlas.model.typedef.AtlasClassificationDef
;
import
org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -42,8 +44,9 @@ public class AtlasClassificationType extends AtlasStructType {
private
final
AtlasClassificationDef
classificationDef
;
private
List
<
AtlasClassificationType
>
superTypes
=
Collections
.
emptyList
();
private
Set
<
String
>
allSuperTypes
=
Collections
.
emptySet
();
private
List
<
AtlasClassificationType
>
superTypes
=
Collections
.
emptyList
();
private
Set
<
String
>
allSuperTypes
=
Collections
.
emptySet
();
private
Map
<
String
,
AtlasAttributeDef
>
allAttributeDefs
=
Collections
.
emptyMap
();
public
AtlasClassificationType
(
AtlasClassificationDef
classificationDef
)
{
super
(
classificationDef
,
TypeCategory
.
CLASSIFICATION
);
...
...
@@ -64,8 +67,11 @@ public class AtlasClassificationType extends AtlasStructType {
public
void
resolveReferences
(
AtlasTypeRegistry
typeRegistry
)
throws
AtlasBaseException
{
super
.
resolveReferences
(
typeRegistry
);
List
<
AtlasClassificationType
>
s
=
new
ArrayList
<
AtlasClassificationType
>();
Set
<
String
>
allS
=
getAllSuperTypes
(
typeRegistry
);
List
<
AtlasClassificationType
>
s
=
new
ArrayList
<>();
Set
<
String
>
allS
=
new
HashSet
<>();
Map
<
String
,
AtlasAttributeDef
>
allA
=
new
HashMap
<>();
getTypeHierarchyInfo
(
typeRegistry
,
allS
,
allA
);
for
(
String
superTypeName
:
classificationDef
.
getSuperTypes
())
{
AtlasType
superType
=
typeRegistry
.
getType
(
superTypeName
);
...
...
@@ -78,8 +84,9 @@ public class AtlasClassificationType extends AtlasStructType {
}
}
this
.
superTypes
=
Collections
.
unmodifiableList
(
s
);
this
.
allSuperTypes
=
Collections
.
unmodifiableSet
(
allS
);
this
.
superTypes
=
Collections
.
unmodifiableList
(
s
);
this
.
allSuperTypes
=
Collections
.
unmodifiableSet
(
allS
);
this
.
allAttributeDefs
=
Collections
.
unmodifiableMap
(
allA
);
}
public
Set
<
String
>
getSuperTypes
()
{
...
...
@@ -88,6 +95,8 @@ public class AtlasClassificationType extends AtlasStructType {
public
Set
<
String
>
getAllSuperTypes
()
{
return
allSuperTypes
;
}
public
Map
<
String
,
AtlasAttributeDef
>
getAllAttributeDefs
()
{
return
allAttributeDefs
;
}
public
boolean
isSuperTypeOf
(
AtlasClassificationType
classificationType
)
{
return
classificationType
!=
null
?
classificationType
.
getAllSuperTypes
().
contains
(
this
.
getTypeName
())
:
false
;
}
...
...
@@ -185,40 +194,47 @@ public class AtlasClassificationType extends AtlasStructType {
}
}
private
Set
<
String
>
getAllSuperTypes
(
AtlasTypeRegistry
typeRegistry
)
throws
AtlasBaseException
{
Set
<
String
>
superTypes
=
new
HashSet
<>();
List
<
String
>
subTypes
=
new
ArrayList
<>();
collectAllSuperTypes
(
subTypes
,
superTypes
,
typeRegistry
);
private
void
getTypeHierarchyInfo
(
AtlasTypeRegistry
typeRegistry
,
Set
<
String
>
allSuperTypeNames
,
Map
<
String
,
AtlasAttributeDef
>
allAttributeDefs
)
throws
AtlasBaseException
{
List
<
String
>
visitedTypes
=
new
ArrayList
<>();
return
superTypes
;
collectTypeHierarchyInfo
(
typeRegistry
,
allSuperTypeNames
,
allAttributeDefs
,
visitedTypes
)
;
}
/*
* This method should not assume that resolveReferences() has been called on all superTypes.
* this.classificationDef is the only safe member to reference here
*/
private
void
collectAllSuperTypes
(
List
<
String
>
subTypes
,
Set
<
String
>
superTypes
,
AtlasTypeRegistry
typeRegistry
)
throws
AtlasBaseException
{
if
(
subTypes
.
contains
(
classificationDef
.
getName
()))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
CIRCULAR_REFERENCE
,
classificationDef
.
getName
(),
subTypes
.
toString
());
private
void
collectTypeHierarchyInfo
(
AtlasTypeRegistry
typeRegistry
,
Set
<
String
>
allSuperTypeNames
,
Map
<
String
,
AtlasAttributeDef
>
allAttributeDefs
,
List
<
String
>
visitedTypes
)
throws
AtlasBaseException
{
if
(
visitedTypes
.
contains
(
classificationDef
.
getName
()))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
CIRCULAR_REFERENCE
,
classificationDef
.
getName
(),
visitedTypes
.
toString
());
}
if
(
CollectionUtils
.
isNotEmpty
(
classificationDef
.
getSuperTypes
()))
{
superTypes
.
addAll
(
classificationDef
.
getSuperTypes
());
subTypes
.
add
(
classificationDef
.
getName
());
visitedTypes
.
add
(
classificationDef
.
getName
());
for
(
String
superTypeName
:
classificationDef
.
getSuperTypes
())
{
AtlasType
type
=
typeRegistry
.
getType
(
superTypeName
);
if
(
type
instanceof
AtlasClassificationType
)
{
AtlasClassificationType
superType
=
(
AtlasClassificationType
)
type
;
superType
.
collect
AllSuperTypes
(
subTypes
,
superTypes
,
typeRegistry
);
superType
.
collect
TypeHierarchyInfo
(
typeRegistry
,
allSuperTypeNames
,
allAttributeDefs
,
visitedTypes
);
}
}
subTypes
.
remove
(
classificationDef
.
getName
());
visitedTypes
.
remove
(
classificationDef
.
getName
());
allSuperTypeNames
.
addAll
(
classificationDef
.
getSuperTypes
());
}
if
(
CollectionUtils
.
isNotEmpty
(
classificationDef
.
getAttributeDefs
()))
{
for
(
AtlasAttributeDef
attributeDef
:
classificationDef
.
getAttributeDefs
())
{
allAttributeDefs
.
put
(
attributeDef
.
getName
(),
attributeDef
);
}
}
}
}
intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java
View file @
6a24cad1
...
...
@@ -22,18 +22,19 @@ import org.apache.atlas.AtlasErrorCode;
import
org.apache.atlas.exception.AtlasBaseException
;
import
org.apache.atlas.model.instance.AtlasEntity
;
import
org.apache.atlas.model.typedef.AtlasEntityDef
;
import
org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* class that implements behaviour of an entity-type.
*/
...
...
@@ -42,8 +43,9 @@ public class AtlasEntityType extends AtlasStructType {
private
final
AtlasEntityDef
entityDef
;
private
List
<
AtlasEntityType
>
superTypes
=
Collections
.
emptyList
();
private
Set
<
String
>
allSuperTypes
=
Collections
.
emptySet
();
private
List
<
AtlasEntityType
>
superTypes
=
Collections
.
emptyList
();
private
Set
<
String
>
allSuperTypes
=
Collections
.
emptySet
();
private
Map
<
String
,
AtlasAttributeDef
>
allAttributeDefs
=
Collections
.
emptyMap
();
public
AtlasEntityType
(
AtlasEntityDef
entityDef
)
{
super
(
entityDef
,
TypeCategory
.
ENTITY
);
...
...
@@ -63,8 +65,11 @@ public class AtlasEntityType extends AtlasStructType {
public
void
resolveReferences
(
AtlasTypeRegistry
typeRegistry
)
throws
AtlasBaseException
{
super
.
resolveReferences
(
typeRegistry
);
List
<
AtlasEntityType
>
s
=
new
ArrayList
<
AtlasEntityType
>();
Set
<
String
>
allS
=
getAllSuperTypes
(
typeRegistry
);
List
<
AtlasEntityType
>
s
=
new
ArrayList
<>();
Set
<
String
>
allS
=
new
HashSet
<>();
Map
<
String
,
AtlasAttributeDef
>
allA
=
new
HashMap
<>();
getTypeHierarchyInfo
(
typeRegistry
,
allS
,
allA
);
for
(
String
superTypeName
:
entityDef
.
getSuperTypes
())
{
AtlasType
superType
=
typeRegistry
.
getType
(
superTypeName
);
...
...
@@ -77,8 +82,9 @@ public class AtlasEntityType extends AtlasStructType {
}
}
this
.
superTypes
=
Collections
.
unmodifiableList
(
s
);
this
.
allSuperTypes
=
Collections
.
unmodifiableSet
(
allS
);
this
.
superTypes
=
Collections
.
unmodifiableList
(
s
);
this
.
allSuperTypes
=
Collections
.
unmodifiableSet
(
allS
);
this
.
allAttributeDefs
=
Collections
.
unmodifiableMap
(
allA
);
}
public
Set
<
String
>
getSuperTypes
()
{
...
...
@@ -89,6 +95,8 @@ public class AtlasEntityType extends AtlasStructType {
return
allSuperTypes
;
}
public
Map
<
String
,
AtlasAttributeDef
>
getAllAttributeDefs
()
{
return
allAttributeDefs
;
}
public
boolean
isSuperTypeOf
(
AtlasEntityType
entityType
)
{
return
entityType
!=
null
?
entityType
.
getAllSuperTypes
().
contains
(
this
.
getTypeName
())
:
false
;
}
...
...
@@ -186,39 +194,47 @@ public class AtlasEntityType extends AtlasStructType {
}
}
private
Set
<
String
>
getAllSuperTypes
(
AtlasTypeRegistry
typeRegistry
)
throws
AtlasBaseException
{
Set
<
String
>
superTypes
=
new
HashSet
<>();
List
<
String
>
subTypes
=
new
ArrayList
<>();
private
void
getTypeHierarchyInfo
(
AtlasTypeRegistry
typeRegistry
,
Set
<
String
>
allSuperTypeNames
,
Map
<
String
,
AtlasAttributeDef
>
allAttributeDefs
)
throws
AtlasBaseException
{
List
<
String
>
visitedTypes
=
new
ArrayList
<>();
collectAllSuperTypes
(
subTypes
,
superTypes
,
typeRegistry
);
return
superTypes
;
collectTypeHierarchyInfo
(
typeRegistry
,
allSuperTypeNames
,
allAttributeDefs
,
visitedTypes
);
}
/*
* This method should not assume that resolveReferences() has been called on all superTypes.
* this.entityDef is the only safe member to reference here
*/
private
void
collectAllSuperTypes
(
List
<
String
>
subTypes
,
Set
<
String
>
superTypes
,
AtlasTypeRegistry
typeRegistry
)
throws
AtlasBaseException
{
if
(
subTypes
.
contains
(
entityDef
.
getName
()))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
CIRCULAR_REFERENCE
,
entityDef
.
getName
(),
subTypes
.
toString
());
private
void
collectTypeHierarchyInfo
(
AtlasTypeRegistry
typeRegistry
,
Set
<
String
>
allSuperTypeNames
,
Map
<
String
,
AtlasAttributeDef
>
allAttributeDefs
,
List
<
String
>
visitedTypes
)
throws
AtlasBaseException
{
if
(
visitedTypes
.
contains
(
entityDef
.
getName
()))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
CIRCULAR_REFERENCE
,
entityDef
.
getName
(),
visitedTypes
.
toString
());
}
if
(
CollectionUtils
.
isNotEmpty
(
entityDef
.
getSuperTypes
()))
{
superTypes
.
addAll
(
entityDef
.
getSuperTypes
());
subTypes
.
add
(
entityDef
.
getName
());
visitedTypes
.
add
(
entityDef
.
getName
());
for
(
String
superTypeName
:
entityDef
.
getSuperTypes
())
{
AtlasType
type
=
typeRegistry
.
getType
(
superTypeName
);
if
(
type
instanceof
AtlasEntityType
)
{
AtlasEntityType
superType
=
(
AtlasEntityType
)
type
;
superType
.
collect
AllSuperTypes
(
subTypes
,
superTypes
,
typeRegistry
);
superType
.
collect
TypeHierarchyInfo
(
typeRegistry
,
allSuperTypeNames
,
allAttributeDefs
,
visitedTypes
);
}
}
subTypes
.
remove
(
entityDef
.
getName
());
visitedTypes
.
remove
(
entityDef
.
getName
());
allSuperTypeNames
.
addAll
(
entityDef
.
getSuperTypes
());
}
if
(
CollectionUtils
.
isNotEmpty
(
entityDef
.
getAttributeDefs
()))
{
for
(
AtlasAttributeDef
attributeDef
:
entityDef
.
getAttributeDefs
())
{
allAttributeDefs
.
put
(
attributeDef
.
getName
(),
attributeDef
);
}
}
}
}
intg/src/test/java/org/apache/atlas/type/TestAtlasTypeRegistry.java
View file @
6a24cad1
...
...
@@ -19,14 +19,20 @@ package org.apache.atlas.type;
import
org.apache.atlas.exception.AtlasBaseException
;
import
org.apache.atlas.model.typedef.AtlasBaseTypeDef
;
import
org.apache.atlas.model.typedef.AtlasClassificationDef
;
import
org.apache.atlas.model.typedef.AtlasEntityDef
;
import
org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef
;
import
org.apache.atlas.model.typedef.AtlasTypesDef
;
import
org.apache.atlas.type.AtlasTypeRegistry.AtlasTransientTypeRegistry
;
import
org.testng.annotations.Test
;
import
static
org
.
testng
.
Assert
.
assertNotNull
;
import
static
org
.
testng
.
Assert
.
assertNull
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.Map
;
import
java.util.Set
;
import
static
org
.
testng
.
Assert
.*;
public
class
TestAtlasTypeRegistry
{
...
...
@@ -57,6 +63,14 @@ public class TestAtlasTypeRegistry {
classifiL2_3
.
addSuperType
(
classifiL1_2
.
getName
());
classifiL2_4
.
addSuperType
(
classifiL1_2
.
getName
());
classifiL0
.
addAttribute
(
new
AtlasAttributeDef
(
"L0_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
classifiL1_1
.
addAttribute
(
new
AtlasAttributeDef
(
"L1-1_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
classifiL1_2
.
addAttribute
(
new
AtlasAttributeDef
(
"L1-2_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
classifiL2_1
.
addAttribute
(
new
AtlasAttributeDef
(
"L2-1_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
classifiL2_2
.
addAttribute
(
new
AtlasAttributeDef
(
"L2-2_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
classifiL2_3
.
addAttribute
(
new
AtlasAttributeDef
(
"L2-3_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
classifiL2_4
.
addAttribute
(
new
AtlasAttributeDef
(
"L2-4_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
AtlasTypesDef
typesDef
=
new
AtlasTypesDef
();
typesDef
.
getClassificationDefs
().
add
(
classifiL0
);
...
...
@@ -77,6 +91,24 @@ public class TestAtlasTypeRegistry {
failureMsg
=
excp
.
getMessage
();
}
assertNull
(
failureMsg
);
typeRegistry
.
commitTransientTypeRegistry
(
ttr
);
validateSuperTypes
(
typeRegistry
,
"L0"
,
new
HashSet
<
String
>());
validateSuperTypes
(
typeRegistry
,
"L1-1"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0"
)));
validateSuperTypes
(
typeRegistry
,
"L1-2"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0"
)));
validateSuperTypes
(
typeRegistry
,
"L2-1"
,
new
HashSet
<>(
Arrays
.
asList
(
"L1-1"
,
"L0"
)));
validateSuperTypes
(
typeRegistry
,
"L2-2"
,
new
HashSet
<>(
Arrays
.
asList
(
"L1-1"
,
"L0"
)));
validateSuperTypes
(
typeRegistry
,
"L2-3"
,
new
HashSet
<>(
Arrays
.
asList
(
"L1-1"
,
"L0"
,
"L1-2"
)));
validateSuperTypes
(
typeRegistry
,
"L2-4"
,
new
HashSet
<>(
Arrays
.
asList
(
"L1-2"
,
"L0"
)));
validateAttributeNames
(
typeRegistry
,
"L0"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L1-1"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-1_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L1-2"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-2_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L2-1"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-1_a1"
,
"L2-1_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L2-2"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-1_a1"
,
"L2-2_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L2-3"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-1_a1"
,
"L1-2_a1"
,
"L2-3_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L2-4"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-2_a1"
,
"L2-4_a1"
)));
}
@Test
...
...
@@ -176,6 +208,14 @@ public class TestAtlasTypeRegistry {
entL2_3
.
addSuperType
(
entL1_2
.
getName
());
entL2_4
.
addSuperType
(
entL1_2
.
getName
());
entL0
.
addAttribute
(
new
AtlasAttributeDef
(
"L0_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
entL1_1
.
addAttribute
(
new
AtlasAttributeDef
(
"L1-1_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
entL1_2
.
addAttribute
(
new
AtlasAttributeDef
(
"L1-2_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
entL2_1
.
addAttribute
(
new
AtlasAttributeDef
(
"L2-1_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
entL2_2
.
addAttribute
(
new
AtlasAttributeDef
(
"L2-2_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
entL2_3
.
addAttribute
(
new
AtlasAttributeDef
(
"L2-3_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
entL2_4
.
addAttribute
(
new
AtlasAttributeDef
(
"L2-4_a1"
,
AtlasBaseTypeDef
.
ATLAS_TYPE_INT
));
AtlasTypesDef
typesDef
=
new
AtlasTypesDef
();
typesDef
.
getEntityDefs
().
add
(
entL0
);
...
...
@@ -196,6 +236,24 @@ public class TestAtlasTypeRegistry {
failureMsg
=
excp
.
getMessage
();
}
assertNull
(
failureMsg
);
typeRegistry
.
commitTransientTypeRegistry
(
ttr
);
validateSuperTypes
(
typeRegistry
,
"L0"
,
new
HashSet
<
String
>());
validateSuperTypes
(
typeRegistry
,
"L1-1"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0"
)));
validateSuperTypes
(
typeRegistry
,
"L1-2"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0"
)));
validateSuperTypes
(
typeRegistry
,
"L2-1"
,
new
HashSet
<>(
Arrays
.
asList
(
"L1-1"
,
"L0"
)));
validateSuperTypes
(
typeRegistry
,
"L2-2"
,
new
HashSet
<>(
Arrays
.
asList
(
"L1-1"
,
"L0"
)));
validateSuperTypes
(
typeRegistry
,
"L2-3"
,
new
HashSet
<>(
Arrays
.
asList
(
"L1-1"
,
"L0"
,
"L1-2"
)));
validateSuperTypes
(
typeRegistry
,
"L2-4"
,
new
HashSet
<>(
Arrays
.
asList
(
"L1-2"
,
"L0"
)));
validateAttributeNames
(
typeRegistry
,
"L0"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L1-1"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-1_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L1-2"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-2_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L2-1"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-1_a1"
,
"L2-1_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L2-2"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-1_a1"
,
"L2-2_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L2-3"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-1_a1"
,
"L1-2_a1"
,
"L2-3_a1"
)));
validateAttributeNames
(
typeRegistry
,
"L2-4"
,
new
HashSet
<>(
Arrays
.
asList
(
"L0_a1"
,
"L1-2_a1"
,
"L2-4_a1"
)));
}
@Test
...
...
@@ -267,4 +325,47 @@ public class TestAtlasTypeRegistry {
}
assertNotNull
(
failureMsg
,
"expected invalid supertype failure"
);
}
private
void
validateSuperTypes
(
AtlasTypeRegistry
typeRegistry
,
String
typeName
,
Set
<
String
>
expectedSuperTypes
)
{
AtlasType
type
=
null
;
try
{
type
=
typeRegistry
.
getType
(
typeName
);
}
catch
(
AtlasBaseException
excp
)
{
}
Set
<
String
>
superTypes
=
null
;
if
(
type
!=
null
)
{
if
(
type
instanceof
AtlasEntityType
)
{
superTypes
=
((
AtlasEntityType
)
type
).
getAllSuperTypes
();
}
else
if
(
type
instanceof
AtlasClassificationType
)
{
superTypes
=
((
AtlasClassificationType
)
type
).
getAllSuperTypes
();
}
}
assertEquals
(
superTypes
,
expectedSuperTypes
);
}
private
void
validateAttributeNames
(
AtlasTypeRegistry
typeRegistry
,
String
typeName
,
Set
<
String
>
attributeNames
)
{
AtlasType
type
=
null
;
try
{
type
=
typeRegistry
.
getType
(
typeName
);
}
catch
(
AtlasBaseException
excp
)
{
}
Map
<
String
,
AtlasAttributeDef
>
attributeDefs
=
null
;
if
(
type
!=
null
)
{
if
(
type
instanceof
AtlasEntityType
)
{
attributeDefs
=
((
AtlasEntityType
)
type
).
getAllAttributeDefs
();
}
else
if
(
type
instanceof
AtlasClassificationType
)
{
attributeDefs
=
((
AtlasClassificationType
)
type
).
getAllAttributeDefs
();
}
}
assertNotNull
(
attributeDefs
);
assertEquals
(
attributeDefs
.
keySet
(),
attributeNames
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment