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
4feee3bf
Commit
4feee3bf
authored
8 years ago
by
Sarath Subramanian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ATLAS-1751: Implement REST endpoint to support update of classification attribute
parent
2615b308
master
No related merge requests found
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
247 additions
and
5 deletions
+247
-5
EntityAuditEvent.java
client/src/main/java/org/apache/atlas/EntityAuditEvent.java
+2
-2
Enums.js
dashboardv2/public/js/utils/Enums.js
+1
-0
TestUtilsV2.java
intg/src/test/java/org/apache/atlas/TestUtilsV2.java
+7
-1
EntityNotification.java
.../apache/atlas/notification/entity/EntityNotification.java
+2
-1
EntityAuditListener.java
...rg/apache/atlas/repository/audit/EntityAuditListener.java
+15
-0
AtlasEntityStore.java
...apache/atlas/repository/store/graph/AtlasEntityStore.java
+5
-0
AtlasEntityChangeNotifier.java
.../repository/store/graph/v1/AtlasEntityChangeNotifier.java
+20
-0
AtlasEntityStoreV1.java
...e/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
+63
-1
EntityGraphMapper.java
...he/atlas/repository/store/graph/v1/EntityGraphMapper.java
+29
-0
DefaultMetadataServiceTest.java
.../org/apache/atlas/service/DefaultMetadataServiceTest.java
+5
-0
EntityChangeListener.java
.../java/org/apache/atlas/listener/EntityChangeListener.java
+10
-0
NotificationEntityChangeListener.java
.../atlas/notification/NotificationEntityChangeListener.java
+5
-0
EntityREST.java
...p/src/main/java/org/apache/atlas/web/rest/EntityREST.java
+27
-0
TestEntityREST.java
...st/java/org/apache/atlas/web/adapters/TestEntityREST.java
+56
-0
No files found.
client/src/main/java/org/apache/atlas/EntityAuditEvent.java
View file @
4feee3bf
...
...
@@ -28,8 +28,8 @@ import java.util.Objects;
*/
public
class
EntityAuditEvent
{
public
enum
EntityAuditAction
{
ENTITY_CREATE
,
ENTITY_UPDATE
,
ENTITY_DELETE
,
TAG_ADD
,
TAG_DELETE
,
ENTITY_IMPORT_CREATE
,
ENTITY_IMPORT_UPDATE
,
ENTITY_IMPORT_DELETE
ENTITY_CREATE
,
ENTITY_UPDATE
,
ENTITY_DELETE
,
TAG_ADD
,
TAG_DELETE
,
TAG_UPDATE
,
ENTITY_IMPORT_CREATE
,
ENTITY_IMPORT_UPDATE
,
ENTITY_IMPORT_DELETE
,
}
private
String
entityId
;
...
...
This diff is collapsed.
Click to expand it.
dashboardv2/public/js/utils/Enums.js
View file @
4feee3bf
...
...
@@ -27,6 +27,7 @@ define(['require'], function(require) {
ENTITY_DELETE
:
"Entity Deleted"
,
TAG_ADD
:
"Tag Added"
,
TAG_DELETE
:
"Tag Deleted"
,
TAG_UPDATE
:
"Tag Updated"
,
ENTITY_IMPORT_CREATE
:
"Entity Created by import"
,
ENTITY_IMPORT_UPDATE
:
"Entity Updated by import"
,
ENTITY_IMPORT_DELETE
:
"Entity Deleted by import"
...
...
This diff is collapsed.
Click to expand it.
intg/src/test/java/org/apache/atlas/TestUtilsV2.java
View file @
4feee3bf
...
...
@@ -516,6 +516,7 @@ public final class TestUtilsV2 {
public
static
final
String
TABLE_NAME
=
"bar"
;
public
static
final
String
CLASSIFICATION
=
"classification"
;
public
static
final
String
PII
=
"PII"
;
public
static
final
String
PHI
=
"PHI"
;
public
static
final
String
SUPER_TYPE_NAME
=
"Base"
;
public
static
final
String
STORAGE_DESC_TYPE
=
"hive_storagedesc"
;
public
static
final
String
PARTITION_STRUCT_TYPE
=
"partition_struct_type"
;
...
...
@@ -787,9 +788,14 @@ public final class TestUtilsV2 {
AtlasTypeUtil
.
createTraitTypeDef
(
"fetl"
+
CLASSIFICATION
,
"fetl"
+
CLASSIFICATION
+
_description
,
ImmutableSet
.
of
(
CLASSIFICATION
),
AtlasTypeUtil
.
createRequiredAttrDef
(
"tag"
,
"string"
));
AtlasClassificationDef
phiTypeDefinition
=
AtlasTypeUtil
.
createTraitTypeDef
(
PHI
,
PHI
+
_description
,
ImmutableSet
.<
String
>
of
(),
AtlasTypeUtil
.
createRequiredAttrDef
(
"stringAttr"
,
"string"
),
AtlasTypeUtil
.
createRequiredAttrDef
(
"booleanAttr"
,
"boolean"
),
AtlasTypeUtil
.
createRequiredAttrDef
(
"integerAttr"
,
"int"
));
return
AtlasTypeUtil
.
getTypesDef
(
ImmutableList
.
of
(
enumTypeDefinition
),
ImmutableList
.
of
(
structTypeDefinition
,
partitionDefinition
),
ImmutableList
.
of
(
classificationTypeDefinition
,
fetlClassificationTypeDefinition
,
piiTypeDefinition
),
ImmutableList
.
of
(
classificationTypeDefinition
,
fetlClassificationTypeDefinition
,
piiTypeDefinition
,
phiTypeDefinition
),
ImmutableList
.
of
(
superTypeDefinition
,
databaseTypeDefinition
,
columnsDefinition
,
tableTypeDefinition
,
storageDescClsDef
,
partClsDef
,
processClsType
));
}
...
...
This diff is collapsed.
Click to expand it.
notification/src/main/java/org/apache/atlas/notification/entity/EntityNotification.java
View file @
4feee3bf
...
...
@@ -35,7 +35,8 @@ public interface EntityNotification {
ENTITY_UPDATE
,
ENTITY_DELETE
,
TRAIT_ADD
,
TRAIT_DELETE
TRAIT_DELETE
,
TRAIT_UPDATE
}
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java
View file @
4feee3bf
...
...
@@ -100,6 +100,18 @@ public class EntityAuditListener implements EntityChangeListener {
}
@Override
public
void
onTraitsUpdated
(
ITypedReferenceableInstance
entity
,
Collection
<?
extends
IStruct
>
traits
)
throws
AtlasException
{
if
(
traits
!=
null
)
{
for
(
IStruct
trait
:
traits
)
{
EntityAuditEvent
event
=
createEvent
(
entity
,
EntityAuditAction
.
TAG_UPDATE
,
"Updated trait: "
+
InstanceSerialization
.
toJson
(
trait
,
true
));
auditRepository
.
putEvents
(
event
);
}
}
}
@Override
public
void
onEntitiesDeleted
(
Collection
<
ITypedReferenceableInstance
>
entities
,
boolean
isImport
)
throws
AtlasException
{
List
<
EntityAuditEvent
>
events
=
new
ArrayList
<>();
for
(
ITypedReferenceableInstance
entity
:
entities
)
{
...
...
@@ -279,6 +291,9 @@ public class EntityAuditListener implements EntityChangeListener {
case
TAG_DELETE:
ret
=
"Deleted trait: "
;
break
;
case
TAG_UPDATE:
ret
=
"Updated trait: "
;
break
;
case
ENTITY_IMPORT_CREATE:
ret
=
"Created by import: "
;
break
;
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasEntityStore.java
View file @
4feee3bf
...
...
@@ -127,6 +127,11 @@ public interface AtlasEntityStore {
*/
void
addClassifications
(
String
guid
,
List
<
AtlasClassification
>
classification
)
throws
AtlasBaseException
;
/**
* Update classification(s)
*/
void
updateClassifications
(
String
guid
,
List
<
AtlasClassification
>
classifications
)
throws
AtlasBaseException
;
@GraphTransaction
void
addClassification
(
List
<
String
>
guids
,
AtlasClassification
classification
)
throws
AtlasBaseException
;
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
View file @
4feee3bf
...
...
@@ -125,6 +125,26 @@ public class AtlasEntityChangeNotifier {
}
}
public
void
onClassificationUpdatedToEntity
(
String
entityId
,
List
<
AtlasClassification
>
classifications
)
throws
AtlasBaseException
{
// Since the classification attributes are updated in the graph, we need to recursively remap the entityText
doFullTextMapping
(
entityId
);
ITypedReferenceableInstance
entity
=
toITypedReferenceable
(
entityId
);
List
<
ITypedStruct
>
traits
=
toITypedStructs
(
classifications
);
if
(
entity
==
null
||
CollectionUtils
.
isEmpty
(
traits
))
{
return
;
}
for
(
EntityChangeListener
listener
:
entityChangeListeners
)
{
try
{
listener
.
onTraitsUpdated
(
entity
,
traits
);
}
catch
(
AtlasException
e
)
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
NOTIFICATION_FAILED
,
e
);
}
}
}
private
void
notifyListeners
(
List
<
AtlasEntityHeader
>
entityHeaders
,
EntityOperation
operation
,
boolean
isImport
)
throws
AtlasBaseException
{
if
(
CollectionUtils
.
isEmpty
(
entityHeaders
))
{
return
;
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
View file @
4feee3bf
...
...
@@ -441,6 +441,51 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
@Override
@GraphTransaction
public
void
updateClassifications
(
String
guid
,
List
<
AtlasClassification
>
newClassifications
)
throws
AtlasBaseException
{
if
(
LOG
.
isDebugEnabled
())
{
LOG
.
debug
(
"Updating classifications={} for entity={}"
,
newClassifications
,
guid
);
}
if
(
StringUtils
.
isEmpty
(
guid
))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
INVALID_PARAMETERS
,
"Guid not specified"
);
}
if
(
CollectionUtils
.
isEmpty
(
newClassifications
))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
INVALID_PARAMETERS
,
"classifications(s) not specified"
);
}
EntityGraphMapper
graphMapper
=
new
EntityGraphMapper
(
deleteHandler
,
typeRegistry
);
List
<
AtlasClassification
>
updatedClassifications
=
new
ArrayList
<>();
for
(
AtlasClassification
newClassification
:
newClassifications
)
{
String
classificationName
=
newClassification
.
getTypeName
();
AtlasClassification
oldClassification
=
getClassification
(
guid
,
classificationName
);
if
(
oldClassification
==
null
)
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
CLASSIFICATION_NOT_FOUND
,
classificationName
);
}
validateAndNormalizeForUpdate
(
newClassification
);
Map
<
String
,
Object
>
newAttrs
=
newClassification
.
getAttributes
();
if
(
MapUtils
.
isNotEmpty
(
newAttrs
))
{
for
(
String
attrName
:
newAttrs
.
keySet
())
{
oldClassification
.
setAttribute
(
attrName
,
newAttrs
.
get
(
attrName
));
}
}
graphMapper
.
updateClassification
(
new
EntityMutationContext
(),
guid
,
oldClassification
);
updatedClassifications
.
add
(
oldClassification
);
}
// notify listeners on update to classifications
entityChangeNotifier
.
onClassificationUpdatedToEntity
(
guid
,
updatedClassifications
);
}
@Override
@GraphTransaction
public
void
addClassification
(
final
List
<
String
>
guids
,
final
AtlasClassification
classification
)
throws
AtlasBaseException
{
if
(
CollectionUtils
.
isEmpty
(
guids
))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
INVALID_PARAMETERS
,
"Guid(s) not specified"
);
...
...
@@ -514,7 +559,6 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
return
graphRetriever
.
getClassification
(
guid
,
classificationName
);
}
private
EntityMutationContext
preCreateOrUpdate
(
EntityStream
entityStream
,
EntityGraphMapper
entityGraphMapper
,
boolean
isPartialUpdate
)
throws
AtlasBaseException
{
EntityGraphDiscovery
graphDiscoverer
=
new
AtlasEntityGraphDiscoveryV1
(
typeRegistry
,
entityStream
);
EntityGraphDiscoveryContext
discoveryContext
=
graphDiscoverer
.
discoverEntities
();
...
...
@@ -607,6 +651,24 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
type
.
getNormalizedValue
(
classification
);
}
private
void
validateAndNormalizeForUpdate
(
AtlasClassification
classification
)
throws
AtlasBaseException
{
AtlasClassificationType
type
=
typeRegistry
.
getClassificationTypeByName
(
classification
.
getTypeName
());
if
(
type
==
null
)
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
CLASSIFICATION_NOT_FOUND
,
classification
.
getTypeName
());
}
List
<
String
>
messages
=
new
ArrayList
<>();
type
.
validateValueForUpdate
(
classification
,
classification
.
getTypeName
(),
messages
);
if
(!
messages
.
isEmpty
())
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
INVALID_PARAMETERS
,
messages
);
}
type
.
getNormalizedValueForUpdate
(
classification
);
}
/**
* Validate if classification is not already associated with the entities
* @param guid unique entity id
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphMapper.java
View file @
4feee3bf
...
...
@@ -941,6 +941,35 @@ public class EntityGraphMapper {
}
}
public
void
updateClassification
(
final
EntityMutationContext
context
,
String
guid
,
AtlasClassification
classification
)
throws
AtlasBaseException
{
AtlasVertex
instanceVertex
=
AtlasGraphUtilsV1
.
findByGuid
(
guid
);
if
(
instanceVertex
==
null
)
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
INSTANCE_GUID_NOT_FOUND
,
guid
);
}
String
entityTypeName
=
AtlasGraphUtilsV1
.
getTypeName
(
instanceVertex
);
final
AtlasEntityType
entityType
=
typeRegistry
.
getEntityTypeByName
(
entityTypeName
);
if
(
LOG
.
isDebugEnabled
())
{
LOG
.
debug
(
"Updating classification {} for entity {}"
,
classification
,
guid
);
}
// get the classification vertex from entity
String
relationshipLabel
=
GraphHelper
.
getTraitLabel
(
entityTypeName
,
classification
.
getTypeName
());
AtlasEdge
classificationEdge
=
graphHelper
.
getEdgeForLabel
(
instanceVertex
,
relationshipLabel
);
AtlasVertex
classificationVertex
=
classificationEdge
.
getInVertex
();
if
(
LOG
.
isDebugEnabled
())
{
LOG
.
debug
(
"updating vertex {} for trait {}"
,
string
(
classificationVertex
),
classification
.
getTypeName
());
}
mapClassification
(
EntityOperation
.
UPDATE
,
context
,
classification
,
entityType
,
instanceVertex
,
classificationVertex
);
}
private
AtlasEdge
mapClassification
(
EntityOperation
operation
,
final
EntityMutationContext
context
,
AtlasClassification
classification
,
AtlasEntityType
entityType
,
AtlasVertex
parentInstanceVertex
,
AtlasVertex
traitInstanceVertex
)
throws
AtlasBaseException
{
...
...
This diff is collapsed.
Click to expand it.
repository/src/test/java/org/apache/atlas/service/DefaultMetadataServiceTest.java
View file @
4feee3bf
...
...
@@ -1268,6 +1268,11 @@ public class DefaultMetadataServiceTest {
}
@Override
public
void
onTraitsUpdated
(
ITypedReferenceableInstance
entity
,
Collection
<?
extends
IStruct
>
traits
)
throws
AtlasException
{
}
@Override
public
void
onEntitiesDeleted
(
Collection
<
ITypedReferenceableInstance
>
entities
,
boolean
isImport
)
throws
AtlasException
{
deletedEntities
.
clear
();
...
...
This diff is collapsed.
Click to expand it.
server-api/src/main/java/org/apache/atlas/listener/EntityChangeListener.java
View file @
4feee3bf
...
...
@@ -69,6 +69,16 @@ public interface EntityChangeListener {
void
onTraitsDeleted
(
ITypedReferenceableInstance
entity
,
Collection
<
String
>
traitNames
)
throws
AtlasException
;
/**
* This is upon updating a trait from a typed instance.
*
* @param entity the entity
* @param traits trait that needs to be added to entity
*
* @throws AtlasException if the listener notification fails
*/
void
onTraitsUpdated
(
ITypedReferenceableInstance
entity
,
Collection
<?
extends
IStruct
>
traits
)
throws
AtlasException
;
/**
* This is upon deleting entities from the repository.
*
* @param entities the deleted entities
...
...
This diff is collapsed.
Click to expand it.
webapp/src/main/java/org/apache/atlas/notification/NotificationEntityChangeListener.java
View file @
4feee3bf
...
...
@@ -97,6 +97,11 @@ public class NotificationEntityChangeListener implements EntityChangeListener {
}
@Override
public
void
onTraitsUpdated
(
ITypedReferenceableInstance
entity
,
Collection
<?
extends
IStruct
>
traits
)
throws
AtlasException
{
notifyOfEntityEvent
(
Collections
.
singleton
(
entity
),
EntityNotification
.
OperationType
.
TRAIT_UPDATE
);
}
@Override
public
void
onEntitiesDeleted
(
Collection
<
ITypedReferenceableInstance
>
entities
,
boolean
isImport
)
throws
AtlasException
{
notifyOfEntityEvent
(
entities
,
EntityNotification
.
OperationType
.
ENTITY_DELETE
);
}
...
...
This diff is collapsed.
Click to expand it.
webapp/src/main/java/org/apache/atlas/web/rest/EntityREST.java
View file @
4feee3bf
...
...
@@ -353,6 +353,33 @@ public class EntityREST {
}
/**
* Updates classifications to an existing entity represented by a guid.
* @param guid globally unique identifier for the entity
* @return classification for the given entity guid
*/
@PUT
@Path
(
"/guid/{guid}/classifications"
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
void
updateClassification
(
@PathParam
(
"guid"
)
final
String
guid
,
List
<
AtlasClassification
>
classifications
)
throws
AtlasBaseException
{
AtlasPerfTracer
perf
=
null
;
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"EntityREST.updateClassification("
+
guid
+
")"
);
}
if
(
StringUtils
.
isEmpty
(
guid
))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
INSTANCE_GUID_NOT_FOUND
,
guid
);
}
entitiesStore
.
updateClassifications
(
guid
,
classifications
);
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
}
}
/**
* Deletes a given classification from an existing entity represented by a guid.
* @param guid globally unique identifier for the entity
* @param classificationName name of the classifcation
...
...
This diff is collapsed.
Click to expand it.
webapp/src/test/java/org/apache/atlas/web/adapters/TestEntityREST.java
View file @
4feee3bf
...
...
@@ -22,6 +22,7 @@ import org.apache.atlas.RequestContext;
import
org.apache.atlas.RequestContextV1
;
import
org.apache.atlas.TestUtilsV2
;
import
org.apache.atlas.model.instance.AtlasClassification
;
import
org.apache.atlas.model.instance.AtlasClassification.AtlasClassifications
;
import
org.apache.atlas.model.instance.AtlasEntity
;
import
org.apache.atlas.model.instance.AtlasEntity.AtlasEntitiesWithExtInfo
;
import
org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo
;
...
...
@@ -44,6 +45,7 @@ import org.testng.annotations.Test;
import
javax.inject.Inject
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -61,6 +63,8 @@ public class TestEntityREST {
private
AtlasClassification
testClassification
;
private
AtlasClassification
phiClassification
;
@BeforeClass
public
void
setUp
()
throws
Exception
{
AtlasTypesDef
typesDef
=
TestUtilsV2
.
defineHiveTypes
();
...
...
@@ -123,7 +127,59 @@ public class TestEntityREST {
Assert
.
assertNotNull
(
retrievedClassification
);
Assert
.
assertEquals
(
retrievedClassification
,
testClassification
);
}
@Test
(
dependsOnMethods
=
"testGetEntityById"
)
public
void
testAddAndUpdateClassificationWithAttributes
()
throws
Exception
{
phiClassification
=
new
AtlasClassification
(
TestUtilsV2
.
PHI
,
new
HashMap
<
String
,
Object
>()
{{
put
(
"stringAttr"
,
"sample_string"
);
put
(
"booleanAttr"
,
true
);
put
(
"integerAttr"
,
100
);
}});
testClassification
=
new
AtlasClassification
(
TestUtilsV2
.
CLASSIFICATION
,
new
HashMap
<
String
,
Object
>()
{{
put
(
"tag"
,
"tagName"
);
}});
entityREST
.
addClassifications
(
dbEntity
.
getGuid
(),
new
ArrayList
<>(
Arrays
.
asList
(
phiClassification
)));
final
AtlasClassifications
retrievedClassifications
=
entityREST
.
getClassifications
(
dbEntity
.
getGuid
());
Assert
.
assertNotNull
(
retrievedClassifications
);
final
List
<
AtlasClassification
>
retrievedClassificationsList
=
retrievedClassifications
.
getList
();
Assert
.
assertNotNull
(
retrievedClassificationsList
);
final
AtlasClassification
retrievedClassification
=
entityREST
.
getClassification
(
dbEntity
.
getGuid
(),
TestUtilsV2
.
PHI
);
Assert
.
assertNotNull
(
retrievedClassification
);
Assert
.
assertEquals
(
retrievedClassification
,
phiClassification
);
for
(
String
attrName
:
retrievedClassification
.
getAttributes
().
keySet
())
{
Assert
.
assertEquals
(
retrievedClassification
.
getAttribute
(
attrName
),
phiClassification
.
getAttribute
(
attrName
));
}
// update multiple tags attributes
phiClassification
=
new
AtlasClassification
(
TestUtilsV2
.
PHI
,
new
HashMap
<
String
,
Object
>()
{{
put
(
"stringAttr"
,
"sample_string_v2"
);
put
(
"integerAttr"
,
200
);
}});
testClassification
=
new
AtlasClassification
(
TestUtilsV2
.
CLASSIFICATION
,
new
HashMap
<
String
,
Object
>()
{{
put
(
"tag"
,
"tagName_updated"
);
}});
entityREST
.
updateClassification
(
dbEntity
.
getGuid
(),
new
ArrayList
<>(
Arrays
.
asList
(
phiClassification
,
testClassification
)));
AtlasClassification
updatedClassification
=
entityREST
.
getClassification
(
dbEntity
.
getGuid
(),
TestUtilsV2
.
PHI
);
Assert
.
assertNotNull
(
updatedClassification
);
Assert
.
assertEquals
(
updatedClassification
.
getAttribute
(
"stringAttr"
),
"sample_string_v2"
);
Assert
.
assertEquals
(
updatedClassification
.
getAttribute
(
"integerAttr"
),
200
);
Assert
.
assertEquals
(
updatedClassification
.
getAttribute
(
"booleanAttr"
),
true
);
updatedClassification
=
entityREST
.
getClassification
(
dbEntity
.
getGuid
(),
TestUtilsV2
.
CLASSIFICATION
);
Assert
.
assertNotNull
(
updatedClassification
);
Assert
.
assertEquals
(
updatedClassification
.
getAttribute
(
"tag"
),
testClassification
.
getAttribute
(
"tag"
));
entityREST
.
deleteClassification
(
dbEntity
.
getGuid
(),
TestUtilsV2
.
PHI
);
}
@Test
(
dependsOnMethods
=
"testAddAndGetClassification"
)
...
...
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