ATLAS-1657 Taxonomy term disassociation with assets fail
diff --git a/catalog/src/main/java/org/apache/atlas/catalog/DefaultTypeSystem.java b/catalog/src/main/java/org/apache/atlas/catalog/DefaultTypeSystem.java
index ea967f9..eabd272 100644
--- a/catalog/src/main/java/org/apache/atlas/catalog/DefaultTypeSystem.java
+++ b/catalog/src/main/java/org/apache/atlas/catalog/DefaultTypeSystem.java
@@ -20,33 +20,35 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import org.apache.atlas.AtlasErrorCode;
import org.apache.atlas.AtlasException;
import org.apache.atlas.catalog.definition.ResourceDefinition;
import org.apache.atlas.catalog.exception.CatalogRuntimeException;
import org.apache.atlas.catalog.exception.ResourceAlreadyExistsException;
import org.apache.atlas.catalog.exception.ResourceNotFoundException;
import org.apache.atlas.classification.InterfaceAudience;
+import org.apache.atlas.exception.AtlasBaseException;
+import org.apache.atlas.model.typedef.AtlasClassificationDef;
+import org.apache.atlas.model.typedef.AtlasEntityDef;
+import org.apache.atlas.model.typedef.AtlasEnumDef;
+import org.apache.atlas.model.typedef.AtlasStructDef;
+import org.apache.atlas.model.typedef.AtlasTypesDef;
+import org.apache.atlas.repository.converters.TypeConverterUtil;
import org.apache.atlas.services.MetadataService;
+import org.apache.atlas.store.AtlasTypeDefStore;
+import org.apache.atlas.type.AtlasTypeUtil;
import org.apache.atlas.typesystem.ITypedReferenceableInstance;
import org.apache.atlas.typesystem.Referenceable;
import org.apache.atlas.typesystem.Struct;
-import org.apache.atlas.typesystem.TypesDef;
import org.apache.atlas.typesystem.exception.EntityExistsException;
import org.apache.atlas.typesystem.exception.EntityNotFoundException;
import org.apache.atlas.typesystem.exception.TraitNotFoundException;
-import org.apache.atlas.typesystem.exception.TypeExistsException;
-import org.apache.atlas.typesystem.exception.TypeNotFoundException;
-import org.apache.atlas.typesystem.json.TypesSerialization;
import org.apache.atlas.typesystem.types.AttributeDefinition;
import org.apache.atlas.typesystem.types.ClassType;
-import org.apache.atlas.typesystem.types.DataTypes;
-import org.apache.atlas.typesystem.types.EnumTypeDefinition;
import org.apache.atlas.typesystem.types.HierarchicalType;
-import org.apache.atlas.typesystem.types.HierarchicalTypeDefinition;
-import org.apache.atlas.typesystem.types.StructTypeDefinition;
import org.apache.atlas.typesystem.types.TraitType;
-import org.apache.atlas.typesystem.types.utils.TypesUtil;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -58,36 +60,43 @@
public class DefaultTypeSystem implements AtlasTypeSystem {
private final MetadataService metadataService;
+ private final AtlasTypeDefStore typeDefStore;
+
/**
* Constructor.
*
* @param metadataService atlas metadata service
*/
- public DefaultTypeSystem(MetadataService metadataService) throws AtlasException {
+ public DefaultTypeSystem(MetadataService metadataService, AtlasTypeDefStore typeDefStore) throws AtlasBaseException {
this.metadataService = metadataService;
+ this.typeDefStore = typeDefStore;
//Create namespace
createSuperTypes();
}
@InterfaceAudience.Private
- private void createSuperTypes() throws AtlasException {
- HierarchicalTypeDefinition<TraitType> termType = TypesUtil
- .createTraitTypeDef(TaxonomyResourceProvider.TAXONOMY_TERM_TYPE, ImmutableSet.<String>of(),
- TypesUtil.createOptionalAttrDef(TaxonomyResourceProvider.NAMESPACE_ATTRIBUTE_NAME,
- DataTypes.STRING_TYPE));
+ private void createSuperTypes() throws AtlasBaseException {
- createTraitType(termType);
+ AtlasClassificationDef termClassification = AtlasTypeUtil.createTraitTypeDef(TaxonomyResourceProvider.TAXONOMY_TERM_TYPE, TaxonomyResourceProvider.TAXONOMY_TERM_TYPE,
+ ImmutableSet.<String>of(), AtlasTypeUtil.createOptionalAttrDef(TaxonomyResourceProvider.NAMESPACE_ATTRIBUTE_NAME, "string"));
+
+ createTraitType(termClassification);
}
- private void createTraitType(HierarchicalTypeDefinition<TraitType> type) throws AtlasException {
+ private void createTraitType(AtlasClassificationDef classificationDef) throws AtlasBaseException {
try {
- metadataService.getTypeDefinition(type.typeName);
- } catch(TypeNotFoundException tne) {
+ typeDefStore.getClassificationDefByName(classificationDef.getName());
+ } catch (AtlasBaseException tne) {
//Type not found . Create
- TypesDef typesDef = TypesUtil.getTypesDef(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(),
- ImmutableList.of(type),
- ImmutableList.<HierarchicalTypeDefinition<ClassType>>of());
- metadataService.createType(TypesSerialization.toJson(typesDef));
+ if (tne.getAtlasErrorCode() == AtlasErrorCode.TYPE_NAME_NOT_FOUND) {
+ AtlasTypesDef typesDef = new AtlasTypesDef(ImmutableList.<AtlasEnumDef>of(), ImmutableList.<AtlasStructDef>of(),
+ ImmutableList.of(classificationDef),
+ ImmutableList.<AtlasEntityDef>of());
+
+ typeDefStore.createTypesDef(typesDef);
+ } else {
+ throw tne;
+ }
}
}
@@ -194,24 +203,37 @@
String name,
String description,
boolean isTrait)
- throws ResourceAlreadyExistsException {
+ throws ResourceAlreadyExistsException {
try {
- HierarchicalTypeDefinition<T> definition = null;
+ List<AtlasStructDef.AtlasAttributeDef> attrDefs = new ArrayList<>();
+ for (AttributeDefinition attrDefinition : attributes) {
+ attrDefs.add(TypeConverterUtil.toAtlasAttributeDef(attrDefinition));
+ }
if ( isTrait) {
- definition = new HierarchicalTypeDefinition<>(type, name, description,
- ImmutableSet.of(TaxonomyResourceProvider.TAXONOMY_TERM_TYPE), attributes.toArray(new AttributeDefinition[attributes.size()]));
+ AtlasClassificationDef classificationDef = new AtlasClassificationDef(name, description, "1.0", attrDefs, ImmutableSet.of(TaxonomyResourceProvider.TAXONOMY_TERM_TYPE));
+ AtlasTypesDef typesDef = new AtlasTypesDef(ImmutableList.<AtlasEnumDef>of(), ImmutableList.<AtlasStructDef>of(),
+ ImmutableList.of(classificationDef),
+ ImmutableList.<AtlasEntityDef>of());
+
+ typeDefStore.createTypesDef(typesDef);
+
} else {
- definition = new HierarchicalTypeDefinition<>(type, name, description,
- ImmutableSet.<String>of(), attributes.toArray(new AttributeDefinition[attributes.size()]));
+ AtlasEntityDef entityDef = new AtlasEntityDef(name, description, "1.0", attrDefs);
+ AtlasTypesDef typesDef = new AtlasTypesDef(ImmutableList.<AtlasEnumDef>of(), ImmutableList.<AtlasStructDef>of(),
+ ImmutableList.<AtlasClassificationDef>of(),
+ ImmutableList.of(entityDef));
+
+ typeDefStore.createTypesDef(typesDef);
}
- metadataService.createType(TypesSerialization.toJson(definition, isTrait));
- } catch (TypeExistsException e) {
- throw new ResourceAlreadyExistsException(String.format("Type '%s' already exists", name));
- } catch (AtlasException e) {
- throw new CatalogRuntimeException(String.format(
+ } catch (AtlasBaseException e) {
+ if ( e.getAtlasErrorCode() == AtlasErrorCode.TYPE_ALREADY_EXISTS) {
+ throw new ResourceAlreadyExistsException(String.format("Type '%s' already exists", name));
+ } else {
+ throw new CatalogRuntimeException(String.format(
"Unable to create type '%s' in type system: %s", name, e), e);
+ }
}
}
}
diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasTypeUtil.java b/intg/src/main/java/org/apache/atlas/type/AtlasTypeUtil.java
index 6d3a9f5..eca1abf 100644
--- a/intg/src/main/java/org/apache/atlas/type/AtlasTypeUtil.java
+++ b/intg/src/main/java/org/apache/atlas/type/AtlasTypeUtil.java
@@ -121,10 +121,11 @@
}
public static void validateType(AtlasBaseTypeDef typeDef) throws AtlasBaseException {
- String typeName = typeDef.getName();
+ boolean isValidName = (typeDef instanceof AtlasClassificationDef) ? isValidTraitTypeName(typeDef.getName())
+ : isValidTypeName(typeDef.getName());
- if (!isValidTypeName(typeName)) {
- throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_INVALID_FORMAT, typeName, typeDef.getCategory().name());
+ if (!isValidName) {
+ throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_INVALID_FORMAT, typeDef.getName(), typeDef.getCategory().name());
}
}
diff --git a/webapp/src/main/java/org/apache/atlas/util/RestUtils.java b/repository/src/main/java/org/apache/atlas/repository/converters/TypeConverterUtil.java
similarity index 94%
rename from webapp/src/main/java/org/apache/atlas/util/RestUtils.java
rename to repository/src/main/java/org/apache/atlas/repository/converters/TypeConverterUtil.java
index 6ce1bba..7902100 100644
--- a/webapp/src/main/java/org/apache/atlas/util/RestUtils.java
+++ b/repository/src/main/java/org/apache/atlas/repository/converters/TypeConverterUtil.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.atlas.util;
+package org.apache.atlas.repository.converters;
import static org.apache.atlas.AtlasErrorCode.INVALID_TYPE_DEFINITION;
import static org.apache.atlas.model.typedef.AtlasStructDef.AtlasConstraintDef.CONSTRAINT_TYPE_OWNED_REF;
@@ -30,7 +30,6 @@
import java.util.Set;
import org.apache.atlas.exception.AtlasBaseException;
-import org.apache.atlas.model.TypeCategory;
import org.apache.atlas.model.typedef.AtlasClassificationDef;
import org.apache.atlas.model.typedef.AtlasEntityDef;
import org.apache.atlas.model.typedef.AtlasEnumDef;
@@ -63,36 +62,28 @@
import org.apache.atlas.typesystem.types.utils.TypesUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
-import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
-
-import static org.apache.atlas.AtlasErrorCode.INVALID_TYPE_DEFINITION;
-import static org.apache.atlas.type.AtlasTypeUtil.isArrayType;
-public final class RestUtils {
- private RestUtils() {}
- private static final Logger LOG = LoggerFactory.getLogger(RestUtils.class);
+public final class TypeConverterUtil {
+ private TypeConverterUtil() {}
+ private static final Logger LOG = LoggerFactory.getLogger(TypeConverterUtil.class);
public static TypesDef toTypesDef(AtlasType type, AtlasTypeRegistry typeRegistry) throws AtlasBaseException {
final TypesDef ret;
if (type instanceof AtlasEnumType) {
- ret = RestUtils.enumToTypesDef((AtlasEnumType)type);
+ ret = TypeConverterUtil.enumToTypesDef((AtlasEnumType) type);
} else if (type instanceof AtlasEntityType) {
- ret = RestUtils.entityToTypesDef((AtlasEntityType)type, typeRegistry);
+ ret = TypeConverterUtil.entityToTypesDef((AtlasEntityType) type, typeRegistry);
} else if (type instanceof AtlasClassificationType) {
- ret = RestUtils.classificationToTypesDef((AtlasClassificationType)type, typeRegistry);
+ ret = TypeConverterUtil.classificationToTypesDef((AtlasClassificationType) type, typeRegistry);
} else if (type instanceof AtlasStructType) {
- ret = RestUtils.structToTypesDef((AtlasStructType)type, typeRegistry);
+ ret = TypeConverterUtil.structToTypesDef((AtlasStructType) type, typeRegistry);
} else {
ret = new TypesDef();
}
@@ -356,7 +347,7 @@
return ret.toArray(new EnumValue[ret.size()]);
}
- private static AtlasAttributeDef toAtlasAttributeDef(final AttributeDefinition attrDefinition) {
+ public static AtlasAttributeDef toAtlasAttributeDef(final AttributeDefinition attrDefinition) {
AtlasAttributeDef ret = new AtlasAttributeDef();
ret.setName(attrDefinition.name);
diff --git a/webapp/src/main/java/org/apache/atlas/web/resources/EntityService.java b/webapp/src/main/java/org/apache/atlas/web/resources/EntityService.java
index e3c9e1b..32c2cb8 100644
--- a/webapp/src/main/java/org/apache/atlas/web/resources/EntityService.java
+++ b/webapp/src/main/java/org/apache/atlas/web/resources/EntityService.java
@@ -27,7 +27,9 @@
import org.apache.atlas.catalog.InstanceRequest;
import org.apache.atlas.catalog.Result;
import org.apache.atlas.catalog.exception.CatalogException;
+import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.services.MetadataService;
+import org.apache.atlas.store.AtlasTypeDefStore;
import org.apache.atlas.utils.AtlasPerfTracer;
import org.apache.atlas.web.util.Servlets;
import org.slf4j.Logger;
@@ -63,8 +65,8 @@
private final EntityTagResourceProvider entityTagResourceProvider;
@Inject
- public EntityService(MetadataService metadataService) throws AtlasException {
- DefaultTypeSystem typeSystem = new DefaultTypeSystem(metadataService);
+ public EntityService(MetadataService metadataService, AtlasTypeDefStore typeDefStore) throws AtlasBaseException {
+ DefaultTypeSystem typeSystem = new DefaultTypeSystem(metadataService, typeDefStore);
entityResourceProvider = new EntityResourceProvider(typeSystem);
entityTagResourceProvider = new EntityTagResourceProvider(typeSystem);
}
diff --git a/webapp/src/main/java/org/apache/atlas/web/resources/TaxonomyService.java b/webapp/src/main/java/org/apache/atlas/web/resources/TaxonomyService.java
index 13b0250..b13810f 100644
--- a/webapp/src/main/java/org/apache/atlas/web/resources/TaxonomyService.java
+++ b/webapp/src/main/java/org/apache/atlas/web/resources/TaxonomyService.java
@@ -22,7 +22,9 @@
import org.apache.atlas.catalog.*;
import org.apache.atlas.catalog.exception.CatalogException;
import org.apache.atlas.catalog.exception.InvalidPayloadException;
+import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.services.MetadataService;
+import org.apache.atlas.store.AtlasTypeDefStore;
import org.apache.atlas.utils.AtlasPerfTracer;
import org.apache.atlas.web.util.Servlets;
import org.slf4j.Logger;
@@ -58,8 +60,8 @@
private ResourceProvider termResourceProvider;
@Inject
- public void setMetadataService(MetadataService metadataService) throws AtlasException {
- DefaultTypeSystem typeSystem = new DefaultTypeSystem(metadataService);
+ public void setMetadataService(MetadataService metadataService, AtlasTypeDefStore typeDefStore) throws AtlasBaseException {
+ DefaultTypeSystem typeSystem = new DefaultTypeSystem(metadataService, typeDefStore);
taxonomyResourceProvider = createTaxonomyResourceProvider(typeSystem);
termResourceProvider = createTermResourceProvider(typeSystem);
}
diff --git a/webapp/src/main/java/org/apache/atlas/web/resources/TypesResource.java b/webapp/src/main/java/org/apache/atlas/web/resources/TypesResource.java
index 2c385c9..424ca58 100755
--- a/webapp/src/main/java/org/apache/atlas/web/resources/TypesResource.java
+++ b/webapp/src/main/java/org/apache/atlas/web/resources/TypesResource.java
@@ -26,7 +26,7 @@
import org.apache.atlas.type.AtlasTypeRegistry;
import org.apache.atlas.typesystem.TypesDef;
import org.apache.atlas.typesystem.json.TypesSerialization;
-import org.apache.atlas.util.RestUtils;
+import org.apache.atlas.repository.converters.TypeConverterUtil;
import org.apache.atlas.utils.AtlasPerfTracer;
import org.apache.atlas.web.rest.TypesREST;
import org.apache.atlas.web.util.Servlets;
@@ -105,9 +105,9 @@
LOG.debug("Creating type with definition {} ", typeDefinition);
}
- AtlasTypesDef createTypesDef = RestUtils.toAtlasTypesDef(typeDefinition, typeRegistry);
+ AtlasTypesDef createTypesDef = TypeConverterUtil.toAtlasTypesDef(typeDefinition, typeRegistry);
AtlasTypesDef createdTypesDef = typesRest.createAtlasTypeDefs(createTypesDef);
- List<String> typeNames = RestUtils.getTypeNames(createdTypesDef);
+ List<String> typeNames = TypeConverterUtil.getTypeNames(createdTypesDef);
for (int i = 0; i < typeNames.size(); i++) {
final String name = typeNames.get(i);
@@ -173,9 +173,9 @@
LOG.debug("Updating type with definition {} ", typeDefinition);
}
- AtlasTypesDef updateTypesDef = RestUtils.toAtlasTypesDef(typeDefinition, typeRegistry);
+ AtlasTypesDef updateTypesDef = TypeConverterUtil.toAtlasTypesDef(typeDefinition, typeRegistry);
AtlasTypesDef updatedTypesDef = typesRest.updateAtlasTypeDefs(updateTypesDef);
- List<String> typeNames = RestUtils.getTypeNames(updatedTypesDef);
+ List<String> typeNames = TypeConverterUtil.getTypeNames(updatedTypesDef);
for (int i = 0; i < typeNames.size(); i++) {
final String name = typeNames.get(i);
@@ -231,7 +231,7 @@
JSONObject response = new JSONObject();
try {
- TypesDef typesDef = RestUtils.toTypesDef(typeRegistry.getType(typeName), typeRegistry);;
+ TypesDef typesDef = TypeConverterUtil.toTypesDef(typeRegistry.getType(typeName), typeRegistry);;
String typeDefinition = TypesSerialization.toJson(typesDef);
response.put(AtlasClient.TYPENAME, typeName);
@@ -290,7 +290,7 @@
TypesREST typesRest = resourceContext.getResource(TypesREST.class);
JSONObject response = new JSONObject();
try {
- List<String> result = RestUtils.getTypeNames(typesRest.getTypeDefHeaders(request));
+ List<String> result = TypeConverterUtil.getTypeNames(typesRest.getTypeDefHeaders(request));
response.put(AtlasClient.RESULTS, new JSONArray(result));
response.put(AtlasClient.COUNT, result.size());
diff --git a/webapp/src/test/java/org/apache/atlas/util/RestUtilsTest.java b/webapp/src/test/java/org/apache/atlas/util/RestUtilsTest.java
index 0cb112a..87259df 100644
--- a/webapp/src/test/java/org/apache/atlas/util/RestUtilsTest.java
+++ b/webapp/src/test/java/org/apache/atlas/util/RestUtilsTest.java
@@ -28,12 +28,12 @@
import java.util.Map;
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;
import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef;
import org.apache.atlas.model.typedef.AtlasTypesDef;
import org.apache.atlas.repository.Constants;
+import org.apache.atlas.repository.converters.TypeConverterUtil;
import org.apache.atlas.repository.graphdb.AtlasVertex;
import org.apache.atlas.repository.store.graph.v1.AtlasGraphUtilsV1;
import org.apache.atlas.repository.store.graph.v1.AtlasStructDefStoreV1;
@@ -178,7 +178,7 @@
for (int i = 0; i < toConvert.size(); i++) {
AtlasEntityDef entityDef = toConvert.get(i);
AtlasEntityType entity = reg.getEntityTypeByName(entityDef.getName());
- HierarchicalTypeDefinition<ClassType> converted = RestUtils.toTypesDef(entity, reg)
+ HierarchicalTypeDefinition<ClassType> converted = TypeConverterUtil.toTypesDef(entity, reg)
.classTypesAsJavaList().get(0);
result.add(converted);
}
@@ -205,7 +205,7 @@
String json = TypesSerialization.toJson(toConvert);
AtlasTypeRegistry emptyRegistry = new AtlasTypeRegistry();
- AtlasTypesDef converted = RestUtils.toAtlasTypesDef(json, emptyRegistry);
+ AtlasTypesDef converted = TypeConverterUtil.toAtlasTypesDef(json, emptyRegistry);
List<AtlasEntityDef> convertedEntityDefs = converted.getEntityDefs();
return convertedEntityDefs;
}
diff --git a/webapp/src/test/java/org/apache/atlas/web/resources/TaxonomyServiceTest.java b/webapp/src/test/java/org/apache/atlas/web/resources/TaxonomyServiceTest.java
index cba78f3..54a9b9a 100644
--- a/webapp/src/test/java/org/apache/atlas/web/resources/TaxonomyServiceTest.java
+++ b/webapp/src/test/java/org/apache/atlas/web/resources/TaxonomyServiceTest.java
@@ -48,7 +48,9 @@
import org.apache.atlas.catalog.Result;
import org.apache.atlas.catalog.TaxonomyResourceProvider;
import org.apache.atlas.catalog.TermPath;
+import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.services.MetadataService;
+import org.apache.atlas.store.AtlasTypeDefStore;
import org.easymock.Capture;
import org.testng.annotations.Test;
@@ -60,6 +62,7 @@
public void testGetTaxonomy() throws Exception {
String taxonomyName = "testTaxonomy";
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -78,7 +81,7 @@
replay(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, serializer);
Response response = service.getTaxonomy(null, uriInfo, taxonomyName);
Request request = requestCapture.getValue();
@@ -89,12 +92,13 @@
assertEquals(response.getStatus(), 200);
assertEquals(response.getEntity(), "Taxonomy Get Response");
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider, serializer);
}
@Test
public void testGetTaxonomies() throws Exception {
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -117,7 +121,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, serializer);
Response response = service.getTaxonomies(null, uriInfo);
Request request = requestCapture.getValue();
@@ -127,12 +131,13 @@
assertEquals(response.getStatus(), 200);
assertEquals(response.getEntity(), "Taxonomy Get Response");
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider, serializer);
}
@Test
public void testCreateTaxonomy() throws Exception {
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -148,7 +153,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, null);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, null);
Response response = service.createTaxonomy(body, null, uriInfo, "testTaxonomy");
Request request = requestCapture.getValue();
@@ -162,12 +167,13 @@
assertEquals(createResults.href, "http://localhost:21000/api/atlas/v1/taxonomies/testTaxonomy");
assertEquals(createResults.status, 201);
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider);
}
@Test
public void testDeleteTaxonomy() throws Exception {
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -182,7 +188,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, null);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, null);
Response response = service.deleteTaxonomy(null, uriInfo, "testTaxonomy");
Request request = requestCapture.getValue();
@@ -195,7 +201,7 @@
assertEquals(createResults.href, "http://localhost:21000/api/atlas/v1/taxonomies/testTaxonomy");
assertEquals(createResults.status, 200);
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider);
}
@Test
@@ -203,6 +209,7 @@
String taxonomyName = "testTaxonomy";
String termName = "testTaxonomy.termName";
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -221,7 +228,7 @@
replay(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, serializer);
Response response = service.getTaxonomyTerm(null, uriInfo, taxonomyName, termName);
Request request = requestCapture.getValue();
@@ -233,12 +240,13 @@
assertEquals(response.getStatus(), 200);
assertEquals(response.getEntity(), "Taxonomy Term Get Response");
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider, serializer);
}
@Test
public void testGetTaxonomyTerms() throws Exception {
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -261,7 +269,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, serializer);
Response response = service.getTaxonomyTerms(null, uriInfo, "testTaxonomy");
Request request = requestCapture.getValue();
@@ -273,12 +281,13 @@
assertEquals(response.getStatus(), 200);
assertEquals(response.getEntity(), "Taxonomy Term Get Response");
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider, serializer);
}
@Test
public void testGetSubTerms_instance() throws Exception {
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -308,7 +317,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, serializer);
Response response = service.getSubTerms(null, uriInfo, "testTaxonomy", "testTerm", "/terms/testTerm2");
Request request = requestCapture.getValue();
@@ -320,13 +329,14 @@
assertEquals(response.getStatus(), 200);
assertEquals(response.getEntity(), "Taxonomy Term Get Response");
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider, serializer,
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider, serializer,
segment1, segment2, segment3);
}
@Test
public void testGetSubTerms_collection() throws Exception {
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -358,7 +368,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, serializer);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, serializer);
Response response = service.getSubTerms(null, uriInfo, "testTaxonomy", "testTerm", "/terms/testTerm2/terms");
Request request = requestCapture.getValue();
@@ -370,7 +380,7 @@
assertEquals(response.getStatus(), 200);
assertEquals(response.getEntity(), "Taxonomy Term Get Response");
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider, serializer,
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider, serializer,
segment1, segment2, segment3);
}
@@ -379,6 +389,7 @@
String taxonomyName = "testTaxonomy";
String termName = "testTerm";
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -394,7 +405,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, null);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, null);
Response response = service.createTerm(body, null, uriInfo, taxonomyName, termName);
Request request = requestCapture.getValue();
@@ -409,7 +420,7 @@
assertEquals(createResults.href, "http://localhost:21000/api/atlas/v1/taxonomies/testTaxonomy/terms/testTerm");
assertEquals(createResults.status, 201);
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider);
}
@Test
@@ -417,6 +428,7 @@
String taxonomyName = "testTaxonomy";
String termName = "testTerm";
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -432,7 +444,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, null);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, null);
Response response = service.createSubTerm(body, null, uriInfo, taxonomyName, termName, "/terms/testTerm2");
Request request = requestCapture.getValue();
@@ -447,12 +459,13 @@
assertEquals(createResults.href, "http://localhost:21000/api/atlas/v1/taxonomies/testTaxonomy/terms/testTerm/terms/testTerm2");
assertEquals(createResults.status, 201);
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider);
}
@Test
public void testDeleteTerm() throws Exception {
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -467,7 +480,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, null);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, null);
Response response = service.deleteTerm(null, uriInfo, "testTaxonomy", "testTerm");
Request request = requestCapture.getValue();
@@ -481,12 +494,13 @@
assertEquals(createResults.href, "http://localhost:21000/api/atlas/v1/taxonomies/testTaxonomy/terms/testTerm");
assertEquals(createResults.status, 200);
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider);
}
@Test
public void testDeleteSubTerm() throws Exception {
MetadataService metadataService = createStrictMock(MetadataService.class);
+ AtlasTypeDefStore typeDefStore = createStrictMock(AtlasTypeDefStore.class);
ResourceProvider taxonomyResourceProvider = createStrictMock(ResourceProvider.class);
ResourceProvider termResourceProvider = createStrictMock(ResourceProvider.class);
UriInfo uriInfo = createNiceMock(UriInfo.class);
@@ -501,7 +515,7 @@
// instantiate service and invoke method being tested
TestTaxonomyService service = new TestTaxonomyService(
- metadataService, taxonomyResourceProvider, termResourceProvider, null);
+ metadataService, typeDefStore, taxonomyResourceProvider, termResourceProvider, null);
Response response = service.deleteSubTerm(null, uriInfo, "testTaxonomy", "testTerm", "terms/testTerm2");
Request request = requestCapture.getValue();
@@ -515,7 +529,7 @@
assertEquals(createResults.href, "http://localhost:21000/api/atlas/v1/taxonomies/testTaxonomy/terms/testTerm/terms/testTerm2");
assertEquals(createResults.status, 200);
- verify(uriInfo, metadataService, taxonomyResourceProvider, termResourceProvider);
+ verify(uriInfo, taxonomyResourceProvider, termResourceProvider);
}
private static class TestTaxonomyService extends TaxonomyService {
@@ -525,14 +539,15 @@
private boolean transactionInitialized = false;
public TestTaxonomyService(MetadataService metadataService,
+ AtlasTypeDefStore typeDefStore,
ResourceProvider taxonomyProvider,
ResourceProvider termResourceProvider,
- JsonSerializer serializer) throws AtlasException {
+ JsonSerializer serializer) throws AtlasBaseException {
testTaxonomyResourceProvider = taxonomyProvider;
testTermResourceProvider = termResourceProvider;
testSerializer = serializer;
- setMetadataService(metadataService);
+ setMetadataService(metadataService, typeDefStore);
}
@Override