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
224eaffe
Commit
224eaffe
authored
8 years ago
by
Madhan Neethiraj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ATLAS-1506: updated AtlasObjectId to support unqiueAttributes to identity the object
parent
2763ff30
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
95 additions
and
25 deletions
+95
-25
AtlasObjectId.java
...n/java/org/apache/atlas/model/instance/AtlasObjectId.java
+34
-4
AtlasBuiltInTypes.java
...rc/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java
+19
-4
TestAtlasObjectIdType.java
...est/java/org/apache/atlas/type/TestAtlasObjectIdType.java
+42
-17
No files found.
intg/src/main/java/org/apache/atlas/model/instance/AtlasObjectId.java
View file @
224eaffe
...
...
@@ -29,6 +29,7 @@ import javax.xml.bind.annotation.XmlSeeAlso;
import
org.apache.atlas.model.PList
;
import
org.apache.atlas.model.SearchFilter.SortType
;
import
org.apache.atlas.model.typedef.AtlasBaseTypeDef
;
import
org.codehaus.jackson.annotate.JsonAutoDetect
;
import
static
org
.
codehaus
.
jackson
.
annotate
.
JsonAutoDetect
.
Visibility
.
PUBLIC_ONLY
;
import
static
org
.
codehaus
.
jackson
.
annotate
.
JsonAutoDetect
.
Visibility
.
NONE
;
...
...
@@ -49,27 +50,39 @@ public class AtlasObjectId implements Serializable {
public
static
final
String
KEY_TYPENAME
=
"typeName"
;
public
static
final
String
KEY_GUID
=
"guid"
;
public
static
final
String
KEY_UNIQUE_ATTRIBUTES
=
"uniqueAttributes"
;
private
String
typeName
;
private
String
guid
;
private
Map
<
String
,
Object
>
uniqueAttributes
;
public
AtlasObjectId
()
{
this
(
null
,
null
);
this
(
null
,
null
,
null
);
}
public
AtlasObjectId
(
String
typeName
)
{
this
(
typeName
,
null
);
this
(
typeName
,
null
,
null
);
}
public
AtlasObjectId
(
String
typeName
,
String
guid
)
{
this
(
typeName
,
guid
,
null
);
}
public
AtlasObjectId
(
String
typeName
,
Map
<
String
,
Object
>
uniqueAttributes
)
{
this
(
typeName
,
null
,
uniqueAttributes
);
}
public
AtlasObjectId
(
String
typeName
,
String
guid
,
Map
<
String
,
Object
>
uniqueAttributes
)
{
setTypeName
(
typeName
);
setGuid
(
guid
);
setUniqueAttributes
(
uniqueAttributes
);
}
public
AtlasObjectId
(
AtlasObjectId
other
)
{
if
(
other
!=
null
)
{
setTypeName
(
other
.
getTypeName
());
setGuid
(
other
.
getGuid
());
setUniqueAttributes
(
other
.
getUniqueAttributes
());
}
}
...
...
@@ -77,6 +90,7 @@ public class AtlasObjectId implements Serializable {
if
(
objIdMap
!=
null
)
{
Object
t
=
objIdMap
.
get
(
KEY_TYPENAME
);
Object
g
=
objIdMap
.
get
(
KEY_GUID
);
Object
u
=
objIdMap
.
get
(
KEY_UNIQUE_ATTRIBUTES
);
if
(
t
!=
null
)
{
setTypeName
(
t
.
toString
());
...
...
@@ -85,6 +99,10 @@ public class AtlasObjectId implements Serializable {
if
(
g
!=
null
)
{
setGuid
(
g
.
toString
());
}
if
(
u
!=
null
&&
u
instanceof
Map
)
{
setUniqueAttributes
((
Map
)
u
);
}
}
}
...
...
@@ -104,6 +122,14 @@ public class AtlasObjectId implements Serializable {
this
.
guid
=
guid
;
}
public
Map
<
String
,
Object
>
getUniqueAttributes
()
{
return
uniqueAttributes
;
}
public
void
setUniqueAttributes
(
Map
<
String
,
Object
>
uniqueAttributes
)
{
this
.
uniqueAttributes
=
uniqueAttributes
;
}
public
StringBuilder
toString
(
StringBuilder
sb
)
{
if
(
sb
==
null
)
{
sb
=
new
StringBuilder
();
...
...
@@ -112,6 +138,9 @@ public class AtlasObjectId implements Serializable {
sb
.
append
(
"AtlasObjectId{"
);
sb
.
append
(
"typeName='"
).
append
(
typeName
).
append
(
'\''
);
sb
.
append
(
", guid='"
).
append
(
guid
).
append
(
'\''
);
sb
.
append
(
", uniqueAttributes={"
);
AtlasBaseTypeDef
.
dumpObjects
(
uniqueAttributes
,
sb
);
sb
.
append
(
'}'
);
sb
.
append
(
'}'
);
return
sb
;
...
...
@@ -123,12 +152,13 @@ public class AtlasObjectId implements Serializable {
if
(
o
==
null
||
getClass
()
!=
o
.
getClass
())
return
false
;
AtlasObjectId
that
=
(
AtlasObjectId
)
o
;
return
Objects
.
equals
(
typeName
,
that
.
typeName
)
&&
Objects
.
equals
(
guid
,
that
.
guid
);
Objects
.
equals
(
guid
,
that
.
guid
)
&&
Objects
.
equals
(
uniqueAttributes
,
that
.
uniqueAttributes
);
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
typeName
,
guid
);
return
Objects
.
hash
(
typeName
,
guid
,
uniqueAttributes
);
}
@Override
...
...
This diff is collapsed.
Click to expand it.
intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java
View file @
224eaffe
...
...
@@ -27,6 +27,7 @@ import java.util.Map;
import
org.apache.atlas.model.TypeCategory
;
import
org.apache.atlas.model.instance.AtlasObjectId
;
import
org.apache.atlas.model.typedef.AtlasBaseTypeDef
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.lang.StringUtils
;
...
...
@@ -526,9 +527,7 @@ public class AtlasBuiltInTypes {
if
(
obj
==
null
||
obj
instanceof
AtlasObjectId
)
{
return
true
;
}
else
if
(
obj
instanceof
Map
)
{
Map
map
=
(
Map
)
obj
;
return
map
.
containsKey
(
AtlasObjectId
.
KEY_TYPENAME
)
&&
map
.
containsKey
(
AtlasObjectId
.
KEY_GUID
);
return
isValidMap
((
Map
)
obj
);
}
return
getNormalizedValue
(
obj
)
!=
null
;
...
...
@@ -542,7 +541,7 @@ public class AtlasBuiltInTypes {
}
else
if
(
obj
instanceof
Map
)
{
Map
map
=
(
Map
)
obj
;
if
(
map
.
containsKey
(
AtlasObjectId
.
KEY_TYPENAME
)
&&
map
.
containsKey
(
AtlasObjectId
.
KEY_GUID
))
{
if
(
isValidMap
(
map
))
{
return
new
AtlasObjectId
(
map
);
}
}
...
...
@@ -550,5 +549,21 @@ public class AtlasBuiltInTypes {
return
null
;
}
private
boolean
isValidMap
(
Map
map
)
{
if
(
map
.
containsKey
(
AtlasObjectId
.
KEY_TYPENAME
))
{
if
(
map
.
containsKey
(
AtlasObjectId
.
KEY_GUID
))
{
return
true
;
}
else
{
Object
uniqueAttributes
=
map
.
get
(
AtlasObjectId
.
KEY_UNIQUE_ATTRIBUTES
);
if
(
uniqueAttributes
instanceof
Map
&&
MapUtils
.
isNotEmpty
((
Map
)
uniqueAttributes
))
{
return
true
;
}
}
}
return
false
;
}
}
}
This diff is collapsed.
Click to expand it.
intg/src/test/java/org/apache/atlas/type/TestAtlasObjectIdType.java
View file @
224eaffe
...
...
@@ -37,27 +37,46 @@ public class TestAtlasObjectIdType {
private
final
Object
[]
invalidValues
;
{
Map
<
String
,
String
>
objectId1
=
new
HashMap
<>();
Map
<
Object
,
Object
>
objectId2
=
new
HashMap
<>();
Map
<
Object
,
Object
>
objectId3
=
new
HashMap
<>();
Map
<
Object
,
Object
>
objectId4
=
new
HashMap
<>();
Map
<
Object
,
Object
>
objectId5
=
new
HashMap
<>();
objectId1
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
objectId1
.
put
(
AtlasObjectId
.
KEY_GUID
,
"guid-1234"
);
objectId2
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
objectId2
.
put
(
AtlasObjectId
.
KEY_GUID
,
1234
);
objectId3
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
// no guid
objectId4
.
put
(
AtlasObjectId
.
KEY_GUID
,
"guid-1234"
);
// no typeName
objectId4
.
put
(
AtlasObjectId
.
KEY_TYPENAME
+
"-invalid"
,
"testType"
);
objectId5
.
put
(
AtlasObjectId
.
KEY_GUID
+
"-invalid"
,
"guid-1234"
);
Map
<
String
,
String
>
validObj1
=
new
HashMap
<>();
Map
<
Object
,
Object
>
validObj2
=
new
HashMap
<>();
Map
<
Object
,
Object
>
validObj3
=
new
HashMap
<>();
Map
<
Object
,
Object
>
invalidObj1
=
new
HashMap
<>();
Map
<
Object
,
Object
>
invalidObj2
=
new
HashMap
<>();
Map
<
Object
,
Object
>
invalidObj3
=
new
HashMap
<>();
Map
<
Object
,
Object
>
invalidObj4
=
new
HashMap
<>();
Map
<
Object
,
Object
>
invalidObj5
=
new
HashMap
<>();
validObj1
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
validObj1
.
put
(
AtlasObjectId
.
KEY_GUID
,
"guid-1234"
);
validObj2
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
validObj2
.
put
(
AtlasObjectId
.
KEY_GUID
,
1234
);
Map
<
String
,
Object
>
uniqAttribs
=
new
HashMap
<
String
,
Object
>();
uniqAttribs
.
put
(
"name"
,
"testTypeInstance-1"
);
validObj3
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
validObj3
.
put
(
AtlasObjectId
.
KEY_UNIQUE_ATTRIBUTES
,
uniqAttribs
);
invalidObj1
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
// no guid
invalidObj2
.
put
(
AtlasObjectId
.
KEY_GUID
,
"guid-1234"
);
// no typeName or uniqueAttribute
invalidObj2
.
put
(
AtlasObjectId
.
KEY_TYPENAME
+
"-invalid"
,
"testType"
);
invalidObj3
.
put
(
AtlasObjectId
.
KEY_GUID
+
"-invalid"
,
"guid-1234"
);
// no guid or typename or uniqueAttribute
invalidObj4
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
// empty uniqueAttribute
invalidObj4
.
put
(
AtlasObjectId
.
KEY_UNIQUE_ATTRIBUTES
,
new
HashMap
<
String
,
Object
>());
invalidObj5
.
put
(
AtlasObjectId
.
KEY_TYPENAME
,
"testType"
);
// non-map uniqueAttribute
invalidObj5
.
put
(
AtlasObjectId
.
KEY_UNIQUE_ATTRIBUTES
,
new
ArrayList
<
String
>());
validValues
=
new
Object
[]
{
null
,
objectId1
,
objectId2
,
new
AtlasObjectId
(),
new
AtlasObjectId
(
"testType"
,
"guid-1234"
),
};
null
,
validObj1
,
validObj2
,
validObj3
,
new
AtlasObjectId
(),
new
AtlasObjectId
(
"testType"
,
"guid-1234"
),
};
invalidValues
=
new
Object
[]
{
objectId3
,
objectId4
,
objectId5
,
Byte
.
valueOf
((
byte
)
1
),
Short
.
valueOf
((
short
)
1
),
Integer
.
valueOf
(
1
),
invalidObj1
,
invalidObj2
,
invalidObj3
,
invalidObj4
,
invalidObj5
,
Byte
.
valueOf
((
byte
)
1
),
Short
.
valueOf
((
short
)
1
),
Integer
.
valueOf
(
1
),
Long
.
valueOf
(
1L
),
Float
.
valueOf
(
1
),
Double
.
valueOf
(
1
),
BigInteger
.
valueOf
(
1
),
BigDecimal
.
valueOf
(
1
),
"1"
,
""
,
"12ab"
,
"abcd"
,
"-12ab"
,
};
...
...
@@ -99,7 +118,13 @@ public class TestAtlasObjectIdType {
}
else
if
(
value
instanceof
Map
)
{
assertEquals
(
normalizedValue
.
getTypeName
(),
((
Map
)
value
).
get
(
AtlasObjectId
.
KEY_TYPENAME
).
toString
(),
"value="
+
value
);
assertEquals
(
normalizedValue
.
getGuid
(),
((
Map
)
value
).
get
(
AtlasObjectId
.
KEY_GUID
).
toString
(),
if
(((
Map
)
value
).
get
(
AtlasObjectId
.
KEY_GUID
)
==
null
)
{
assertEquals
(
normalizedValue
.
getGuid
(),
((
Map
)
value
).
get
(
AtlasObjectId
.
KEY_GUID
),
"value="
+
value
);
}
else
{
assertEquals
(
normalizedValue
.
getGuid
().
toString
(),
((
Map
)
value
).
get
(
AtlasObjectId
.
KEY_GUID
).
toString
(),
"value="
+
value
);
}
assertEquals
(
normalizedValue
.
getUniqueAttributes
(),
((
Map
)
value
).
get
(
AtlasObjectId
.
KEY_UNIQUE_ATTRIBUTES
),
"value="
+
value
);
}
}
...
...
This diff is collapsed.
Click to expand it.
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