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
9bddaeb3
Commit
9bddaeb3
authored
Mar 02, 2017
by
Sarath Subramanian
Committed by
Madhan Neethiraj
Mar 02, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ATLAS-1621: fixed webapp integration tests failures
Signed-off-by:
Madhan Neethiraj
<
madhan@apache.org
>
parent
98990b8d
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
137 additions
and
103 deletions
+137
-103
AtlasClientV2.java
client/src/main/java/org/apache/atlas/AtlasClientV2.java
+3
-2
AtlasEntityStore.java
...apache/atlas/repository/store/graph/AtlasEntityStore.java
+1
-11
AtlasEntityStoreV1.java
...e/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
+16
-22
InverseReferenceUpdateV1Test.java
...pository/store/graph/v1/InverseReferenceUpdateV1Test.java
+9
-8
EntityResource.java
...n/java/org/apache/atlas/web/resources/EntityResource.java
+24
-5
EntityREST.java
...p/src/main/java/org/apache/atlas/web/rest/EntityREST.java
+4
-4
TestEntityREST.java
...st/java/org/apache/atlas/web/adapters/TestEntityREST.java
+2
-2
BaseResourceIT.java
...t/java/org/apache/atlas/web/resources/BaseResourceIT.java
+2
-2
EntityJerseyResourceIT.java
...rg/apache/atlas/web/resources/EntityJerseyResourceIT.java
+6
-5
EntityV2JerseyResourceIT.java
.../apache/atlas/web/resources/EntityV2JerseyResourceIT.java
+70
-42
No files found.
client/src/main/java/org/apache/atlas/AtlasClientV2.java
View file @
9bddaeb3
...
...
@@ -258,10 +258,11 @@ public class AtlasClientV2 extends AtlasBaseClient {
return
callAPI
(
GET_ENTITY_BY_ATTRIBUTE
,
AtlasEntityWithExtInfo
.
class
,
queryParams
,
type
);
}
public
EntityMutationResponse
updateEntityByAttribute
(
String
type
,
Map
<
String
,
String
>
attributes
,
AtlasEntity
entity
)
throws
AtlasServiceException
{
public
EntityMutationResponse
updateEntityByAttribute
(
String
type
,
Map
<
String
,
String
>
attributes
,
AtlasEntityWithExtInfo
entityInfo
)
throws
AtlasServiceException
{
MultivaluedMap
<
String
,
String
>
queryParams
=
attributesToQueryParams
(
attributes
);
return
callAPI
(
UPDATE_ENTITY_BY_ATTRIBUTE
,
EntityMutationResponse
.
class
,
entity
,
queryParams
,
type
);
return
callAPI
(
UPDATE_ENTITY_BY_ATTRIBUTE
,
EntityMutationResponse
.
class
,
entity
Info
,
queryParams
,
type
);
}
public
EntityMutationResponse
deleteEntityByAttribute
(
String
type
,
Map
<
String
,
String
>
attributes
)
throws
AtlasServiceException
{
...
...
repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasEntityStore.java
View file @
9bddaeb3
...
...
@@ -87,17 +87,7 @@ public interface AtlasEntityStore {
*
*/
EntityMutationResponse
updateByUniqueAttributes
(
AtlasEntityType
entityType
,
Map
<
String
,
Object
>
uniqAttributes
,
AtlasEntity
entity
)
throws
AtlasBaseException
;
/**
* Partial update a single entity using its guid.
* @param entityType type of the entity
* @param guid Entity guid
* @return EntityMutationResponse details of the updates performed by this call
* @throws AtlasBaseException
*
*/
EntityMutationResponse
updateByGuid
(
AtlasEntityType
entityType
,
String
guid
,
AtlasEntity
entity
)
throws
AtlasBaseException
;
AtlasEntityWithExtInfo
entity
)
throws
AtlasBaseException
;
/**
* Partial update entities attribute using its guid.
...
...
repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
View file @
9bddaeb3
...
...
@@ -241,39 +241,23 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
@Override
@GraphTransaction
public
EntityMutationResponse
updateByUniqueAttributes
(
AtlasEntityType
entityType
,
Map
<
String
,
Object
>
uniqAttributes
,
AtlasEntity
updatedEntity
)
throws
AtlasBaseException
{
AtlasEntity
WithExtInfo
updatedEntityInfo
)
throws
AtlasBaseException
{
if
(
LOG
.
isDebugEnabled
())
{
LOG
.
debug
(
"==> updateByUniqueAttributes({}, {})"
,
entityType
.
getTypeName
(),
uniqAttributes
);
}
if
(
updatedEntity
==
null
)
{
if
(
updatedEntity
Info
==
null
||
updatedEntityInfo
.
getEntity
()
==
null
)
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
INVALID_PARAMETERS
,
"no entity to update."
);
}
String
guid
=
AtlasGraphUtilsV1
.
getGuidByUniqueAttributes
(
entityType
,
uniqAttributes
);
updatedEntity
.
setGuid
(
guid
);
AtlasEntity
entity
=
updatedEntityInfo
.
getEntity
(
);
return
createOrUpdate
(
new
AtlasEntityStream
(
updatedEntity
),
true
);
}
@Override
@GraphTransaction
public
EntityMutationResponse
updateByGuid
(
AtlasEntityType
entityType
,
String
guid
,
AtlasEntity
updatedEntity
)
throws
AtlasBaseException
{
entity
.
setGuid
(
guid
);
if
(
LOG
.
isDebugEnabled
())
{
LOG
.
debug
(
"==> updateByUniqueAttributes({}, {})"
,
entityType
.
getTypeName
(),
guid
);
}
if
(
updatedEntity
==
null
)
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
INVALID_PARAMETERS
,
"no entity to update."
);
}
updatedEntity
.
setGuid
(
guid
);
return
createOrUpdate
(
new
AtlasEntityStream
(
updatedEntity
),
true
);
return
createOrUpdate
(
new
AtlasEntityStream
(
updatedEntityInfo
),
true
);
}
@Override
...
...
@@ -306,9 +290,19 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
switch
(
attrType
.
getTypeCategory
())
{
case
PRIMITIVE:
case
OBJECT_ID_TYPE:
updateEntity
.
setAttribute
(
attrName
,
attrValue
);
break
;
case
OBJECT_ID_TYPE:
AtlasObjectId
objId
;
if
(
attrValue
instanceof
String
)
{
objId
=
new
AtlasObjectId
((
String
)
attrValue
,
attr
.
getAttributeDef
().
getTypeName
());
}
else
{
objId
=
(
AtlasObjectId
)
attrType
.
getNormalizedValue
(
attrValue
);
}
updateEntity
.
setAttribute
(
attrName
,
objId
);
break
;
default
:
throw
new
AtlasBaseException
(
AtlasErrorCode
.
ATTRIBUTE_UPDATE_NOT_SUPPORTED
,
attrName
,
attrType
.
getTypeName
());
...
...
repository/src/test/java/org/apache/atlas/repository/store/graph/v1/InverseReferenceUpdateV1Test.java
View file @
9bddaeb3
...
...
@@ -36,6 +36,7 @@ import org.apache.atlas.TestUtils;
import
org.apache.atlas.TestUtilsV2
;
import
org.apache.atlas.model.instance.AtlasEntity
;
import
org.apache.atlas.model.instance.AtlasEntity.AtlasEntitiesWithExtInfo
;
import
org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo
;
import
org.apache.atlas.model.instance.AtlasEntityHeader
;
import
org.apache.atlas.model.instance.AtlasObjectId
;
import
org.apache.atlas.model.instance.EntityMutationResponse
;
...
...
@@ -134,7 +135,7 @@ public abstract class InverseReferenceUpdateV1Test {
maxEntityForUpdate
.
setAttribute
(
"manager"
,
juliusId
);
AtlasEntityType
employeeType
=
typeRegistry
.
getEntityTypeByName
(
TestUtilsV2
.
EMPLOYEE_TYPE
);
Map
<
String
,
Object
>
uniqAttributes
=
Collections
.<
String
,
Object
>
singletonMap
(
"name"
,
"Max"
);
EntityMutationResponse
updateResponse
=
entityStore
.
updateByUniqueAttributes
(
employeeType
,
uniqAttributes
,
maxEntityForUpdate
);
EntityMutationResponse
updateResponse
=
entityStore
.
updateByUniqueAttributes
(
employeeType
,
uniqAttributes
,
new
AtlasEntityWithExtInfo
(
maxEntityForUpdate
)
);
List
<
AtlasEntityHeader
>
partialUpdatedEntities
=
updateResponse
.
getPartialUpdatedEntities
();
// 3 entities should have been updated:
// * Max to change the Employee.manager reference
...
...
@@ -178,7 +179,7 @@ public abstract class InverseReferenceUpdateV1Test {
AtlasEntity
bForPartialUpdate
=
new
AtlasEntity
(
"B"
);
bForPartialUpdate
.
setAttribute
(
"manyA"
,
ImmutableList
.
of
(
AtlasTypeUtil
.
getAtlasObjectId
(
a1
),
AtlasTypeUtil
.
getAtlasObjectId
(
a2
)));
init
();
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b
.
getAttribute
(
NAME
)),
bForPartialUpdate
);
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b
.
getAttribute
(
NAME
)),
new
AtlasEntityWithExtInfo
(
bForPartialUpdate
)
);
List
<
AtlasEntityHeader
>
partialUpdatedEntities
=
response
.
getPartialUpdatedEntities
();
// Verify 3 entities were updated:
// * set b.manyA reference to a1 and a2
...
...
@@ -197,7 +198,7 @@ public abstract class InverseReferenceUpdateV1Test {
bForPartialUpdate
.
setAttribute
(
"manyA"
,
ImmutableList
.
of
(
AtlasTypeUtil
.
getAtlasObjectId
(
a3
)));
init
();
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b
.
getAttribute
(
NAME
)),
bForPartialUpdate
);
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b
.
getAttribute
(
NAME
)),
new
AtlasEntityWithExtInfo
(
bForPartialUpdate
)
);
partialUpdatedEntities
=
response
.
getPartialUpdatedEntities
();
// Verify 4 entities were updated:
// * set b.manyA reference to a3
...
...
@@ -235,7 +236,7 @@ public abstract class InverseReferenceUpdateV1Test {
AtlasEntity
bForPartialUpdate
=
new
AtlasEntity
(
"B"
);
bForPartialUpdate
.
setAttribute
(
"a"
,
AtlasTypeUtil
.
getAtlasObjectId
(
a1
));
init
();
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b
.
getAttribute
(
NAME
)),
bForPartialUpdate
);
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b
.
getAttribute
(
NAME
)),
new
AtlasEntityWithExtInfo
(
bForPartialUpdate
)
);
List
<
AtlasEntityHeader
>
partialUpdatedEntities
=
response
.
getPartialUpdatedEntities
();
// Verify 2 entities were updated:
// * set b.a reference to a1
...
...
@@ -250,7 +251,7 @@ public abstract class InverseReferenceUpdateV1Test {
// Update b.a to reference a2.
bForPartialUpdate
.
setAttribute
(
"a"
,
AtlasTypeUtil
.
getAtlasObjectId
(
a2
));
init
();
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b
.
getAttribute
(
NAME
)),
bForPartialUpdate
);
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b
.
getAttribute
(
NAME
)),
new
AtlasEntityWithExtInfo
(
bForPartialUpdate
)
);
partialUpdatedEntities
=
response
.
getPartialUpdatedEntities
();
// Verify 3 entities were updated:
// * set b.a reference to a2
...
...
@@ -294,7 +295,7 @@ public abstract class InverseReferenceUpdateV1Test {
AtlasEntity
b1ForPartialUpdate
=
new
AtlasEntity
(
"B"
);
b1ForPartialUpdate
.
setAttribute
(
"manyToManyA"
,
ImmutableList
.
of
(
AtlasTypeUtil
.
getAtlasObjectId
(
a1
),
AtlasTypeUtil
.
getAtlasObjectId
(
a2
)));
init
();
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b1
.
getAttribute
(
NAME
)),
b1ForPartialUpdate
);
response
=
entityStore
.
updateByUniqueAttributes
(
bType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
b1
.
getAttribute
(
NAME
)),
new
AtlasEntityWithExtInfo
(
b1ForPartialUpdate
)
);
List
<
AtlasEntityHeader
>
partialUpdatedEntities
=
response
.
getPartialUpdatedEntities
();
assertEquals
(
partialUpdatedEntities
.
size
(),
3
);
AtlasEntitiesWithExtInfo
storedEntities
=
entityStore
.
getByIds
(
ImmutableList
.
of
(
a1
.
getGuid
(),
a2
.
getGuid
(),
b1
.
getGuid
()));
...
...
@@ -328,7 +329,7 @@ public abstract class InverseReferenceUpdateV1Test {
AtlasEntity
aForPartialUpdate
=
new
AtlasEntity
(
"A"
);
aForPartialUpdate
.
setAttribute
(
"mapToB"
,
ImmutableMap
.<
String
,
AtlasObjectId
>
of
(
"b1"
,
AtlasTypeUtil
.
getAtlasObjectId
(
b1
),
"b2"
,
AtlasTypeUtil
.
getAtlasObjectId
(
b2
)));
init
();
response
=
entityStore
.
updateByUniqueAttributes
(
aType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
a1
.
getAttribute
(
NAME
)),
aForPartialUpdate
);
response
=
entityStore
.
updateByUniqueAttributes
(
aType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
a1
.
getAttribute
(
NAME
)),
new
AtlasEntityWithExtInfo
(
aForPartialUpdate
)
);
List
<
AtlasEntityHeader
>
partialUpdatedEntities
=
response
.
getPartialUpdatedEntities
();
// Verify 3 entities were updated:
// * set a1.mapToB to "b1"->b1, "b2"->b2
...
...
@@ -352,7 +353,7 @@ public abstract class InverseReferenceUpdateV1Test {
aForPartialUpdate
.
setAttribute
(
"mapToB"
,
ImmutableMap
.<
String
,
AtlasObjectId
>
of
(
"b3"
,
AtlasTypeUtil
.
getAtlasObjectId
(
b3
)));
init
();
response
=
entityStore
.
updateByUniqueAttributes
(
aType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
a1
.
getAttribute
(
NAME
)),
aForPartialUpdate
);
response
=
entityStore
.
updateByUniqueAttributes
(
aType
,
Collections
.<
String
,
Object
>
singletonMap
(
NAME
,
a1
.
getAttribute
(
NAME
)),
new
AtlasEntityWithExtInfo
(
aForPartialUpdate
)
);
partialUpdatedEntities
=
response
.
getPartialUpdatedEntities
();
// Verify 4 entities were updated:
// * set a1.mapToB to "b3"->b3
...
...
webapp/src/main/java/org/apache/atlas/web/resources/EntityResource.java
View file @
9bddaeb3
...
...
@@ -37,6 +37,8 @@ import org.apache.atlas.model.instance.EntityMutationResponse;
import
org.apache.atlas.model.instance.GuidMapping
;
import
org.apache.atlas.repository.converters.AtlasInstanceConverter
;
import
org.apache.atlas.repository.store.graph.AtlasEntityStore
;
import
org.apache.atlas.repository.store.graph.v1.AtlasEntityStream
;
import
org.apache.atlas.repository.store.graph.v1.AtlasGraphUtilsV1
;
import
org.apache.atlas.services.MetadataService
;
import
org.apache.atlas.type.AtlasType
;
import
org.apache.atlas.type.AtlasEntityType
;
...
...
@@ -47,11 +49,13 @@ import org.apache.atlas.typesystem.Referenceable;
import
org.apache.atlas.typesystem.exception.EntityExistsException
;
import
org.apache.atlas.typesystem.exception.EntityNotFoundException
;
import
org.apache.atlas.typesystem.json.InstanceSerialization
;
import
org.apache.atlas.typesystem.persistence.Id
;
import
org.apache.atlas.typesystem.types.ValueConversionException
;
import
org.apache.atlas.utils.AtlasPerfTracer
;
import
org.apache.atlas.utils.ParamChecker
;
import
org.apache.atlas.web.rest.EntityREST
;
import
org.apache.atlas.web.util.Servlets
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.codehaus.jettison.json.JSONArray
;
import
org.codehaus.jettison.json.JSONException
;
...
...
@@ -204,7 +208,7 @@ public class EntityResource {
URI
locationURI
=
null
;
if
(
uriInfo
!=
null
)
{
UriBuilder
ub
=
uriInfo
.
getAbsolutePathBuilder
();
locationURI
=
guids
.
isEmpty
(
)
?
null
:
ub
.
path
(
guids
.
get
(
0
)).
build
();
locationURI
=
CollectionUtils
.
isEmpty
(
guids
)
?
null
:
ub
.
path
(
guids
.
get
(
0
)).
build
();
}
else
{
String
uriPath
=
AtlasClient
.
API
.
GET_ENTITY
.
getPath
();
locationURI
=
guids
.
isEmpty
()
?
null
:
UriBuilder
...
...
@@ -368,9 +372,17 @@ public class EntityResource {
Map
<
String
,
Object
>
attributes
=
new
HashMap
<>();
attributes
.
put
(
attribute
,
value
);
// update referenceable with Id if not specified in payload
Id
updateId
=
updatedEntity
.
getId
();
if
(
updateId
!=
null
&&
!
updateId
.
isAssigned
())
{
String
guid
=
AtlasGraphUtilsV1
.
getGuidByUniqueAttributes
(
getEntityType
(
entityType
),
attributes
);
updatedEntity
.
replaceWithNewId
(
new
Id
(
guid
,
0
,
updatedEntity
.
getTypeName
()));
}
AtlasEntitiesWithExtInfo
entitiesInfo
=
restAdapters
.
toAtlasEntity
(
updatedEntity
);
AtlasEntity
entity
=
entitiesInfo
.
getEntity
(
updatedEntity
.
getId
().
_getId
());
EntityMutationResponse
mutationResponse
=
entitiesStore
.
updateByUniqueAttributes
(
getEntityType
(
entityType
),
attributes
,
entity
);
EntityMutationResponse
mutationResponse
=
entitiesStore
.
createOrUpdate
(
new
AtlasEntityStream
(
entitiesInfo
),
true
);
CreateUpdateEntitiesResult
result
=
restAdapters
.
toCreateUpdateEntitiesResult
(
mutationResponse
);
if
(
LOG
.
isDebugEnabled
())
{
...
...
@@ -459,9 +471,16 @@ public class EntityResource {
}
Referenceable
updatedEntity
=
InstanceSerialization
.
fromJsonReferenceable
(
entityJson
,
true
);
// update referenceable with Id if not specified in payload
Id
updateId
=
updatedEntity
.
getId
();
if
(
updateId
!=
null
&&
!
updateId
.
isAssigned
())
{
updatedEntity
.
replaceWithNewId
(
new
Id
(
guid
,
0
,
updatedEntity
.
getTypeName
()));
}
AtlasEntitiesWithExtInfo
entitiesInfo
=
restAdapters
.
toAtlasEntity
(
updatedEntity
);
AtlasEntity
entity
=
entitiesInfo
.
getEntity
(
updatedEntity
.
getId
().
_getId
());
EntityMutationResponse
mutationResponse
=
entitiesStore
.
updateByGuid
(
getEntityType
(
updatedEntity
.
getTypeName
()),
guid
,
entity
);
EntityMutationResponse
mutationResponse
=
entitiesStore
.
createOrUpdate
(
new
AtlasEntityStream
(
entitiesInfo
),
true
);
CreateUpdateEntitiesResult
result
=
restAdapters
.
toCreateUpdateEntitiesResult
(
mutationResponse
);
if
(
LOG
.
isDebugEnabled
())
{
...
...
webapp/src/main/java/org/apache/atlas/web/rest/EntityREST.java
View file @
9bddaeb3
...
...
@@ -144,15 +144,15 @@ public class EntityREST {
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
@Path
(
"/uniqueAttribute/type/{typeName}"
)
public
EntityMutationResponse
partialUpdate
ByUniqueAttribute
s
(
@PathParam
(
"typeName"
)
String
typeName
,
public
EntityMutationResponse
partialUpdate
EntityByUniqueAttr
s
(
@PathParam
(
"typeName"
)
String
typeName
,
@Context
HttpServletRequest
servletRequest
,
AtlasEntity
entity
)
throws
Exception
{
AtlasEntityWithExtInfo
entityInfo
)
throws
Exception
{
AtlasEntityType
entityType
=
ensureEntityType
(
typeName
);
Map
<
String
,
Object
>
uniqueAttributes
=
getAttributes
(
servletRequest
);
validateUniqueAttribute
(
entityType
,
uniqueAttributes
);
return
entitiesStore
.
updateByUniqueAttributes
(
entityType
,
uniqueAttributes
,
entity
);
return
entitiesStore
.
updateByUniqueAttributes
(
entityType
,
uniqueAttributes
,
entity
Info
);
}
/*******
...
...
@@ -165,7 +165,7 @@ public class EntityREST {
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
@Path
(
"/guid/{guid}"
)
public
EntityMutationResponse
partialUpdateByGuid
(
@PathParam
(
"guid"
)
String
guid
,
public
EntityMutationResponse
partialUpdate
EntityAttr
ByGuid
(
@PathParam
(
"guid"
)
String
guid
,
@QueryParam
(
"name"
)
String
attrName
,
Object
attrValue
)
throws
Exception
{
...
...
webapp/src/test/java/org/apache/atlas/web/adapters/TestEntityREST.java
View file @
9bddaeb3
...
...
@@ -174,7 +174,7 @@ public class TestEntityREST {
dbAttrs
.
putAll
(
dbEntity
.
getAttributes
());
response
=
entityREST
.
partialUpdate
ByUniqueAttributes
(
TestUtilsV2
.
DATABASE_TYPE
,
toHttpServletRequest
(
TestUtilsV2
.
NAME
,
prevDBName
),
dbEntity
);
response
=
entityREST
.
partialUpdate
EntityByUniqueAttrs
(
TestUtilsV2
.
DATABASE_TYPE
,
toHttpServletRequest
(
TestUtilsV2
.
NAME
,
prevDBName
),
new
AtlasEntityWithExtInfo
(
dbEntity
)
);
Assert
.
assertEquals
(
response
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
PARTIAL_UPDATE
).
get
(
0
).
getGuid
(),
dbGuid
);
...
...
@@ -199,7 +199,7 @@ public class TestEntityREST {
dbEntity
.
setAttribute
(
TestUtilsV2
.
NAME
,
updatedDBName
);
response
=
entityREST
.
partialUpdate
ByUniqueAttributes
(
TestUtilsV2
.
DATABASE_TYPE
,
toHttpServletRequest
(
TestUtilsV2
.
NAME
,
prevDBName
),
dbEntity
);
response
=
entityREST
.
partialUpdate
EntityByUniqueAttrs
(
TestUtilsV2
.
DATABASE_TYPE
,
toHttpServletRequest
(
TestUtilsV2
.
NAME
,
prevDBName
),
new
AtlasEntityWithExtInfo
(
dbEntity
)
);
Assert
.
assertEquals
(
response
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
PARTIAL_UPDATE
).
get
(
0
).
getGuid
(),
dbGuid
);
...
...
webapp/src/test/java/org/apache/atlas/web/resources/BaseResourceIT.java
View file @
9bddaeb3
...
...
@@ -551,12 +551,12 @@ public abstract class BaseResourceIT {
tableInstance
.
setAttribute
(
NAME
,
tableName
);
tableInstance
.
setAttribute
(
AtlasClient
.
REFERENCEABLE_ATTRIBUTE_NAME
,
tableName
);
tableInstance
.
setAttribute
(
"db"
,
databaseInstance
);
tableInstance
.
setAttribute
(
"db"
,
AtlasTypeUtil
.
getAtlasObjectId
(
databaseInstance
)
);
tableInstance
.
setAttribute
(
DESCRIPTION
,
"bar table"
);
tableInstance
.
setAttribute
(
"lastAccessTime"
,
"2014-07-11T08:00:00.000Z"
);
tableInstance
.
setAttribute
(
"type"
,
"managed"
);
tableInstance
.
setAttribute
(
"level"
,
2
);
tableInstance
.
setAttribute
(
"tableType"
,
1
);
// enum
tableInstance
.
setAttribute
(
"tableType"
,
"MANAGED"
);
// enum
tableInstance
.
setAttribute
(
"compressed"
,
false
);
AtlasClassification
classification
=
tableInstance
.
getClassifications
().
get
(
0
);
...
...
webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java
View file @
9bddaeb3
...
...
@@ -270,7 +270,6 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
return
notification
!=
null
&&
notification
.
getEntity
().
getId
().
_getId
().
equals
(
dbId
);
}
});
fail
(
"Expected time out exception"
);
}
catch
(
Exception
e
)
{
//expected timeout
}
...
...
@@ -398,7 +397,9 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
}
String
currentTime
=
String
.
valueOf
(
new
DateTime
());
addProperty
(
guid
,
"createTime"
,
currentTime
);
// updating date attribute as string not supported in v2
// addProperty(guid, "createTime", currentTime);
response
=
atlasClientV1
.
callAPIWithBodyAndParams
(
AtlasClient
.
API
.
GET_ENTITY
,
null
,
guid
);
Assert
.
assertNotNull
(
response
);
...
...
@@ -414,7 +415,7 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
Assert
.
fail
();
}
@Test
(
dependsOnMethods
=
"testSubmitEntity"
)
@Test
(
enabled
=
false
)
public
void
testAddNullPropertyValue
()
throws
Exception
{
final
String
guid
=
tableId
.
_getId
();
//add property
...
...
@@ -737,7 +738,7 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
LOG
.
debug
(
"Updating entity= {}"
,
tableUpdated
);
AtlasClient
.
EntityResult
entityResult
=
atlasClientV1
.
updateEntity
(
tableId
.
_getId
(),
tableUpdated
);
assertEquals
(
entityResult
.
getUpdateEntities
().
size
(),
1
);
assertEquals
(
entityResult
.
getUpdateEntities
().
size
(),
2
);
assertEquals
(
entityResult
.
getUpdateEntities
().
get
(
0
),
tableId
.
_getId
());
JSONObject
response
=
atlasClientV1
.
callAPIWithBodyAndParams
(
AtlasClient
.
API
.
GET_ENTITY
,
null
,
tableId
.
_getId
());
...
...
@@ -758,7 +759,7 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
entityResult
=
atlasClientV1
.
updateEntity
(
BaseResourceIT
.
HIVE_TABLE_TYPE_BUILTIN
,
AtlasClient
.
REFERENCEABLE_ATTRIBUTE_NAME
,
(
String
)
tableInstance
.
get
(
QUALIFIED_NAME
),
tableUpdated
);
assertEquals
(
entityResult
.
getUpdateEntities
().
size
(),
2
);
assertEquals
(
entityResult
.
getUpdateEntities
().
get
(
0
),
tableId
.
_getId
());
assertEquals
(
entityResult
.
getUpdateEntities
().
get
(
1
),
tableId
.
_getId
());
response
=
atlasClientV1
.
callAPIWithBodyAndParams
(
AtlasClient
.
API
.
GET_ENTITY
,
null
,
tableId
.
_getId
());
getReferenceable
=
InstanceSerialization
.
fromJsonReferenceable
(
response
.
getString
(
AtlasClient
.
DEFINITION
),
true
);
...
...
webapp/src/test/java/org/apache/atlas/web/resources/EntityV2JerseyResourceIT.java
View file @
9bddaeb3
...
...
@@ -57,7 +57,6 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeClass
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.Guice
;
import
org.testng.annotations.Test
;
...
...
@@ -256,20 +255,33 @@ public class EntityV2JerseyResourceIT extends BaseResourceIT {
assertEquals
(
entityByGuid
.
getAttribute
(
"name"
),
instance
.
getAttribute
(
"name"
));
}
@DataProvider
public
Object
[][]
invalidAttrValues
()
{
return
new
Object
[][]{{
null
},
{
""
}};
}
@Test
(
dataProvider
=
"invalidAttrValues"
)
public
void
testEntityInvalidValue
(
String
value
)
throws
Exception
{
@Test
public
void
testEntityInvalidValue
()
throws
Exception
{
AtlasEntity
databaseInstance
=
new
AtlasEntity
(
DATABASE_TYPE_V2
);
String
dbName
=
randomString
();
String
nullString
=
null
;
String
emptyString
=
""
;
databaseInstance
.
setAttribute
(
"name"
,
dbName
);
databaseInstance
.
setAttribute
(
"description"
,
value
);
databaseInstance
.
setAttribute
(
"description"
,
nullString
);
AtlasEntityHeader
created
=
createEntity
(
databaseInstance
);
// null valid value for required attr - description
assertNull
(
created
);
databaseInstance
.
setAttribute
(
"description"
,
emptyString
);
created
=
createEntity
(
databaseInstance
);
// empty string valid value for required attr
assertNotNull
(
created
);
databaseInstance
.
setGuid
(
created
.
getGuid
());
databaseInstance
.
setAttribute
(
"owner"
,
nullString
);
databaseInstance
.
setAttribute
(
"locationUri"
,
emptyString
);
created
=
updateEntity
(
databaseInstance
);
// null/empty string valid value for optional attr
assertNotNull
(
created
);
}
@Test
...
...
@@ -285,13 +297,14 @@ public class EntityV2JerseyResourceIT extends BaseResourceIT {
@Test
public
void
testSubmitEntityWithBadDateFormat
()
throws
Exception
{
AtlasEntity
hiveDBInstance
=
createHiveDBInstanceV2
(
"db"
+
randomString
());
createEntity
(
hiveDBInstance
);
AtlasEntity
hiveDBEntity
=
createHiveDBInstanceV2
(
"db"
+
randomString
());
AtlasEntityHeader
hiveDBHeader
=
createEntity
(
hiveDBEntity
);
hiveDBEntity
.
setGuid
(
hiveDBHeader
.
getGuid
());
AtlasEntity
tableInstance
=
createHiveTableInstanceV2
(
hiveDB
Instance
,
"table"
+
randomString
());
AtlasEntity
tableInstance
=
createHiveTableInstanceV2
(
hiveDB
Entity
,
"table"
+
randomString
());
//Dates with an invalid format are simply nulled out. This does not produce
//an error. See AtlasBuiltInTypes.AtlasDateType.getNormalizedValue().
tableInstance
.
setAttribute
(
"lastAccessTime"
,
"2014-07-11"
);
tableInstance
.
setAttribute
(
"lastAccessTime"
,
1107201407
);
AtlasEntityHeader
tableEntityHeader
=
createEntity
(
tableInstance
);
assertNotNull
(
tableEntityHeader
);
}
...
...
@@ -318,9 +331,7 @@ public class EntityV2JerseyResourceIT extends BaseResourceIT {
// }
//non-string property, update
String
currentTime
=
String
.
valueOf
(
new
DateTime
());
Object
currentTime
=
new
DateTime
();
addProperty
(
createHiveTable
().
getGuid
(),
"createTime"
,
currentTime
);
entityByGuid
=
getEntityByGuid
(
createHiveTable
().
getGuid
());
...
...
@@ -407,7 +418,7 @@ public class EntityV2JerseyResourceIT extends BaseResourceIT {
Assert
.
assertNotNull
(
entity
.
getUpdateTime
());
}
private
void
addProperty
(
String
guid
,
String
property
,
String
value
)
throws
AtlasServiceException
{
private
void
addProperty
(
String
guid
,
String
property
,
Object
value
)
throws
AtlasServiceException
{
AtlasEntity
entityByGuid
=
getEntityByGuid
(
guid
);
entityByGuid
.
setAttribute
(
property
,
value
);
...
...
@@ -623,42 +634,54 @@ public class EntityV2JerseyResourceIT extends BaseResourceIT {
values
.
put
(
"type"
,
"string"
);
values
.
put
(
"comment"
,
"col1 comment"
);
AtlasEntity
ref
=
new
AtlasEntity
(
BaseResourceIT
.
COLUMN_TYPE_V2
,
values
);
columns
.
add
(
ref
);
AtlasEntity
colEntity
=
new
AtlasEntity
(
BaseResourceIT
.
COLUMN_TYPE_V2
,
values
);
columns
.
add
(
colEntity
);
AtlasEntity
hiveTable
=
createHiveTable
();
AtlasEntity
tableUpdated
=
hiveTable
;
hiveTable
.
setAttribute
(
"columns"
,
AtlasTypeUtil
.
toObjectIds
(
columns
));
LOG
.
debug
(
"Updating entity= "
+
tableUpdated
);
EntityMutationResponse
updateResult
=
atlasClientV2
.
updateEntity
(
new
AtlasEntityWithExtInfo
(
tableUpdated
));
AtlasEntityWithExtInfo
entityInfo
=
new
AtlasEntityWithExtInfo
(
tableUpdated
);
entityInfo
.
addReferredEntity
(
colEntity
);
LOG
.
debug
(
"Full Update entity= "
+
tableUpdated
);
EntityMutationResponse
updateResult
=
atlasClientV2
.
updateEntity
(
entityInfo
);
assertNotNull
(
updateResult
);
assertNotNull
(
updateResult
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
UPDATE
));
assertTrue
(
updateResult
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
UPDATE
).
size
()
>
0
);
String
guid
=
hiveTable
.
getGuid
();
AtlasEntity
entityByGuid
=
getEntityByGuid
(
guid
);
assertNotNull
(
entityByGuid
);
entityByGuid
.
getAttribute
(
"columns"
);
AtlasEntity
entityByGuid
1
=
getEntityByGuid
(
guid
);
assertNotNull
(
entityByGuid
1
);
entityByGuid
1
.
getAttribute
(
"columns"
);
//Update by unique attribute
values
.
put
(
"type"
,
"int"
);
ref
=
new
AtlasEntity
(
BaseResourceIT
.
COLUMN_TYPE_V2
,
values
);
columns
.
set
(
0
,
ref
);
tableUpdated
=
hiveTable
;
colEntity
=
new
AtlasEntity
(
BaseResourceIT
.
COLUMN_TYPE_V2
,
values
);
columns
.
clear
();
columns
.
add
(
colEntity
);
tableUpdated
=
new
AtlasEntity
(
HIVE_TABLE_TYPE_V2
,
"name"
,
entityByGuid1
.
getAttribute
(
"name"
));
tableUpdated
.
setGuid
(
entityByGuid1
.
getGuid
());
tableUpdated
.
setAttribute
(
"columns"
,
AtlasTypeUtil
.
toObjectIds
(
columns
));
LOG
.
debug
(
"Updating entity= "
+
tableUpdated
);
// tableUpdated = hiveTable;
// tableUpdated.setAttribute("columns", AtlasTypeUtil.toObjectIds(columns));
LOG
.
debug
(
"Partial Update entity by unique attributes= "
+
tableUpdated
);
Map
<
String
,
String
>
uniqAttributes
=
new
HashMap
<>();
uniqAttributes
.
put
(
AtlasClient
.
REFERENCEABLE_ATTRIBUTE_NAME
,
(
String
)
hiveTable
.
getAttribute
(
"name"
));
EntityMutationResponse
updateResponse
=
atlasClientV2
.
updateEntityByAttribute
(
BaseResourceIT
.
HIVE_TABLE_TYPE_V2
,
uniqAttributes
,
tableUpdated
);
uniqAttributes
.
put
(
AtlasClient
.
REFERENCEABLE_ATTRIBUTE_NAME
,
(
String
)
hiveTable
.
getAttribute
(
"name"
));
entityInfo
=
new
AtlasEntityWithExtInfo
(
tableUpdated
);
entityInfo
.
addReferredEntity
(
colEntity
);
EntityMutationResponse
updateResponse
=
atlasClientV2
.
updateEntityByAttribute
(
BaseResourceIT
.
HIVE_TABLE_TYPE_V2
,
uniqAttributes
,
entityInfo
);
assertNotNull
(
updateResponse
);
assertNotNull
(
updateResponse
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
UPDATE
));
assertTrue
(
updateResponse
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
UPDATE
).
size
()
>
0
);
assertNotNull
(
updateResponse
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
PARTIAL_
UPDATE
));
assertTrue
(
updateResponse
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
PARTIAL_
UPDATE
).
size
()
>
0
);
entityByGuid
=
getEntityByGuid
(
guid
);
assertNotNull
(
entityByGuid
);
entityByGuid
.
getAttribute
(
"columns"
);
AtlasEntity
entityByGuid2
=
getEntityByGuid
(
guid
);
assertNotNull
(
entityByGuid2
);
}
private
AtlasEntity
getEntityByGuid
(
String
guid
)
throws
AtlasServiceException
{
...
...
@@ -680,13 +703,18 @@ public class EntityV2JerseyResourceIT extends BaseResourceIT {
values2
.
put
(
"type"
,
"string"
);
values2
.
put
(
"comment"
,
"col4 comment"
);
AtlasEntity
ref
1
=
new
AtlasEntity
(
BaseResourceIT
.
COLUMN_TYPE_V2
,
values1
);
AtlasEntity
ref
2
=
new
AtlasEntity
(
BaseResourceIT
.
COLUMN_TYPE_V2
,
values2
);
columns
.
add
(
ref
1
);
columns
.
add
(
ref
2
);
AtlasEntity
colEntity
1
=
new
AtlasEntity
(
BaseResourceIT
.
COLUMN_TYPE_V2
,
values1
);
AtlasEntity
colEntity
2
=
new
AtlasEntity
(
BaseResourceIT
.
COLUMN_TYPE_V2
,
values2
);
columns
.
add
(
colEntity
1
);
columns
.
add
(
colEntity
2
);
AtlasEntity
hiveTable
=
createHiveTable
();
hiveTable
.
setAttribute
(
"columns"
,
AtlasTypeUtil
.
toObjectIds
(
columns
));
EntityMutationResponse
updateEntityResult
=
atlasClientV2
.
updateEntity
(
new
AtlasEntityWithExtInfo
(
hiveTable
));
AtlasEntityWithExtInfo
entityInfo
=
new
AtlasEntityWithExtInfo
(
hiveTable
);
entityInfo
.
addReferredEntity
(
colEntity1
);
entityInfo
.
addReferredEntity
(
colEntity2
);
EntityMutationResponse
updateEntityResult
=
atlasClientV2
.
updateEntity
(
entityInfo
);
assertNotNull
(
updateEntityResult
);
assertNotNull
(
updateEntityResult
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
UPDATE
));
assertNotNull
(
updateEntityResult
.
getEntitiesByOperation
(
EntityMutations
.
EntityOperation
.
CREATE
));
...
...
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