From ee5b03cabcf20cbe72094f84d687252b17cf395d Mon Sep 17 00:00:00 2001 From: apoorvnaik <anaik@hortonworks.com> Date: Tue, 8 Nov 2016 14:20:14 -0800 Subject: [PATCH] ATLAS-1278: Added API to get typedef header info Signed-off-by: Madhan Neethiraj <madhan@apache.org> --- intg/src/main/java/org/apache/atlas/model/TypeCategory.java | 22 ++++++++++++++++++++++ intg/src/main/java/org/apache/atlas/model/typedef/AtlasTypeDefHeader.java | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java | 1 + intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java | 1 + intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java | 1 + intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java | 1 + intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java | 1 + intg/src/main/java/org/apache/atlas/type/AtlasMapType.java | 1 + intg/src/main/java/org/apache/atlas/type/AtlasStructType.java | 1 + intg/src/main/java/org/apache/atlas/type/AtlasType.java | 5 +---- intg/src/main/java/org/apache/atlas/type/AtlasTypeUtil.java | 32 +++++++++++++++++++++++++++++++- release-log.txt | 1 + repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasClassificationDefStoreV1.java | 6 +++--- repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityDefStoreV1.java | 6 +++--- repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java | 10 +++++----- webapp/src/main/java/org/apache/atlas/web/rest/TypesREST.java | 18 ++++++++++++++++++ 16 files changed, 222 insertions(+), 16 deletions(-) create mode 100644 intg/src/main/java/org/apache/atlas/model/TypeCategory.java create mode 100644 intg/src/main/java/org/apache/atlas/model/typedef/AtlasTypeDefHeader.java diff --git a/intg/src/main/java/org/apache/atlas/model/TypeCategory.java b/intg/src/main/java/org/apache/atlas/model/TypeCategory.java new file mode 100644 index 0000000..1da432e --- /dev/null +++ b/intg/src/main/java/org/apache/atlas/model/TypeCategory.java @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.atlas.model; + +public enum TypeCategory { + PRIMITIVE, ARRAY, MAP, ENTITY, STRUCT, CLASSIFICATION, OBJECT_ID_TYPE +} diff --git a/intg/src/main/java/org/apache/atlas/model/typedef/AtlasTypeDefHeader.java b/intg/src/main/java/org/apache/atlas/model/typedef/AtlasTypeDefHeader.java new file mode 100644 index 0000000..b31b571 --- /dev/null +++ b/intg/src/main/java/org/apache/atlas/model/typedef/AtlasTypeDefHeader.java @@ -0,0 +1,131 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.atlas.model.typedef; + +import org.apache.atlas.model.TypeCategory; +import org.codehaus.jackson.annotate.JsonAutoDetect; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.NONE; +import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.PUBLIC_ONLY; + +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) +@XmlRootElement +@XmlAccessorType(XmlAccessType.PROPERTY) +public class AtlasTypeDefHeader { + private String guid; + private String name; + private TypeCategory category; + + public AtlasTypeDefHeader(String guid, String name, TypeCategory category) { + this.guid = guid; + this.name = name; + this.category = category; + } + + public AtlasTypeDefHeader() { + this(null, null, null); + } + + public AtlasTypeDefHeader(AtlasTypeDefHeader other) { + super(); + if (other == null) { + setGuid(null); + setName(null); + setCategory(null); + } else { + setGuid(other.getGuid()); + setName(other.getName()); + setCategory(other.getCategory()); + } + } + + public String getGuid() { + return guid; + } + + public void setGuid(String guid) { + this.guid = guid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public TypeCategory getCategory() { + return category; + } + + public void setCategory(TypeCategory category) { + this.category = category; + } + + + @Override + public String toString() { + return toString(new StringBuilder()).toString(); + } + + + @Override + public boolean equals(Object o) { + if (this == o) { return true; } + if (o == null || getClass() != o.getClass()) { return false; } + + AtlasTypeDefHeader that = (AtlasTypeDefHeader) o; + + if (guid != null ? !guid.equals(that.guid) : that.guid != null) { return false; } + if (name != null ? !name.equals(that.name) : that.name != null) { return false; } + if (category != null ? !category.equals(that.category) : that.category != null) { return false; } + + return true; + } + + @Override + public int hashCode() { + int result = guid != null ? guid.hashCode() : 0; + result = 31 * result + (name != null ? name.hashCode() : 0); + result = 31 * result + (category != null ? category.hashCode() : 0); + return result; + } + + public StringBuilder toString(StringBuilder sb) { + if (sb == null) { + sb = new StringBuilder(); + } + + sb.append("AtlasTypeDefHeader{"); + sb.append("guid='").append(guid).append('\''); + sb.append(", name='").append(name).append('\''); + sb.append(", typeCategory='").append(category).append('\''); + sb.append('}'); + + return sb; + } +} diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java b/intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java index e8092a5..156ed43 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasArrayType.java @@ -19,6 +19,7 @@ package org.apache.atlas.type; import org.apache.atlas.exception.AtlasBaseException; +import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.typedef.AtlasBaseTypeDef; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java b/intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java index c7dad29..c135073 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasBuiltInTypes.java @@ -24,6 +24,7 @@ import java.text.ParseException; import java.util.Date; 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.lang.StringUtils; diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java b/intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java index d841977..788617b 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasClassificationType.java @@ -20,6 +20,7 @@ package org.apache.atlas.type; import org.apache.atlas.AtlasErrorCode; import org.apache.atlas.exception.AtlasBaseException; +import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.instance.AtlasClassification; import org.apache.atlas.model.typedef.AtlasClassificationDef; import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef; diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java b/intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java index 7170ee4..ab365f5 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasEntityType.java @@ -20,6 +20,7 @@ package org.apache.atlas.type; import org.apache.atlas.AtlasErrorCode; import org.apache.atlas.exception.AtlasBaseException; +import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.instance.AtlasEntity; import org.apache.atlas.model.typedef.AtlasEntityDef; import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef; diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java b/intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java index e9a2021..224696a 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasEnumType.java @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.Map; import org.apache.atlas.exception.AtlasBaseException; +import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.typedef.AtlasEnumDef; import org.apache.atlas.model.typedef.AtlasEnumDef.AtlasEnumElementDef; diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasMapType.java b/intg/src/main/java/org/apache/atlas/type/AtlasMapType.java index 0ebfa26..60899fd 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasMapType.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasMapType.java @@ -19,6 +19,7 @@ package org.apache.atlas.type; import org.apache.atlas.exception.AtlasBaseException; +import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.typedef.AtlasBaseTypeDef; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java b/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java index c8c2216..82c2e9e 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasStructType.java @@ -19,6 +19,7 @@ package org.apache.atlas.type; import org.apache.atlas.AtlasErrorCode; import org.apache.atlas.exception.AtlasBaseException; +import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.instance.AtlasStruct; import org.apache.atlas.model.typedef.AtlasStructDef; import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef; diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasType.java b/intg/src/main/java/org/apache/atlas/type/AtlasType.java index a507bf4..5b6a289 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasType.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasType.java @@ -21,6 +21,7 @@ package org.apache.atlas.type; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.apache.atlas.exception.AtlasBaseException; +import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.typedef.AtlasBaseTypeDef; import java.util.List; @@ -31,10 +32,6 @@ import java.util.List; */ public abstract class AtlasType { - public enum TypeCategory { - PRIMITIVE, ARRAY, MAP, ENTITY, STRUCT, CLASSIFICATION, OBJECT_ID_TYPE - } - private static final Gson GSON = new GsonBuilder().setDateFormat(AtlasBaseTypeDef.SERIALIZED_DATE_FORMAT_STR).create(); 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 a2f7463..24fd5b9 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasTypeUtil.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasTypeUtil.java @@ -27,16 +27,19 @@ import org.apache.atlas.model.typedef.AtlasEnumDef.AtlasEnumElementDef; import org.apache.atlas.model.typedef.AtlasStructDef; import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef; import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef.Cardinality; +import org.apache.atlas.model.typedef.AtlasTypeDefHeader; import org.apache.atlas.model.typedef.AtlasTypesDef; +import org.apache.atlas.model.TypeCategory; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.Arrays; import static org.apache.atlas.model.typedef.AtlasBaseTypeDef.ATLAS_TYPE_ARRAY_PREFIX; import static org.apache.atlas.model.typedef.AtlasBaseTypeDef.ATLAS_TYPE_ARRAY_SUFFIX; @@ -194,4 +197,31 @@ public class AtlasTypeUtil { List<AtlasEntityDef> classes) { return new AtlasTypesDef(enums, structs, traits, classes); } + + public static List<AtlasTypeDefHeader> toTypeDefHeader(AtlasTypesDef typesDef) { + List<AtlasTypeDefHeader> headerList = new LinkedList<>(); + if (CollectionUtils.isNotEmpty(typesDef.getEnumDefs())) { + for (AtlasEnumDef enumDef : typesDef.getEnumDefs()) { + headerList.add(new AtlasTypeDefHeader(enumDef.getGuid(), enumDef.getName(), TypeCategory.PRIMITIVE)); + } + } + if (CollectionUtils.isNotEmpty(typesDef.getStructDefs())) { + for (AtlasStructDef structDef : typesDef.getStructDefs()) { + headerList.add(new AtlasTypeDefHeader(structDef.getGuid(), structDef.getName(), TypeCategory.STRUCT)); + } + } + if (CollectionUtils.isNotEmpty(typesDef.getClassificationDefs())) { + for (AtlasClassificationDef classificationDef : typesDef.getClassificationDefs()) { + headerList.add(new AtlasTypeDefHeader(classificationDef.getGuid(), classificationDef.getName(), + TypeCategory.CLASSIFICATION)); + } + } + if (CollectionUtils.isNotEmpty(typesDef.getEntityDefs())) { + for (AtlasEntityDef entityDef : typesDef.getEntityDefs()) { + headerList.add(new AtlasTypeDefHeader(entityDef.getGuid(), entityDef.getName(), TypeCategory.ENTITY)); + } + } + + return headerList; + } } \ No newline at end of file diff --git a/release-log.txt b/release-log.txt index ae93c1d..e1409a7 100644 --- a/release-log.txt +++ b/release-log.txt @@ -9,6 +9,7 @@ ATLAS-1060 Add composite indexes for exact match performance improvements for al ATLAS-1127 Modify creation and modification timestamps to Date instead of Long(sumasai) ALL CHANGES: +ATLAS-1278 Added API to get typedef header info ATLAS-1246 Upgrade versions of dependencies (shwethags) ATLAS-1192 Atlas IE support (kevalbhatt) ATLAS-1273 Test testOnChangeRefresh in DefaultMetadataServiceTest is failing (ayubkhan via shwethags) diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasClassificationDefStoreV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasClassificationDefStoreV1.java index 43f93d4..d34757c 100644 --- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasClassificationDefStoreV1.java +++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasClassificationDefStoreV1.java @@ -58,7 +58,7 @@ public class AtlasClassificationDefStoreV1 extends AtlasAbstractDefStoreV1 imple AtlasType type = typeRegistry.getType(classificationDef.getName()); - if (type.getTypeCategory() != AtlasType.TypeCategory.CLASSIFICATION) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.CLASSIFICATION) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, classificationDef.getName(), TypeCategory.TRAIT.name()); } @@ -193,7 +193,7 @@ public class AtlasClassificationDefStoreV1 extends AtlasAbstractDefStoreV1 imple AtlasType type = typeRegistry.getType(classificationDef.getName()); - if (type.getTypeCategory() != AtlasType.TypeCategory.CLASSIFICATION) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.CLASSIFICATION) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, classificationDef.getName(), TypeCategory.TRAIT.name()); } @@ -223,7 +223,7 @@ public class AtlasClassificationDefStoreV1 extends AtlasAbstractDefStoreV1 imple AtlasType type = typeRegistry.getTypeByGuid(guid); - if (type.getTypeCategory() != AtlasType.TypeCategory.CLASSIFICATION) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.CLASSIFICATION) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, classificationDef.getName(), TypeCategory.TRAIT.name()); } diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityDefStoreV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityDefStoreV1.java index 5babae5..c7f6cdf 100644 --- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityDefStoreV1.java +++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityDefStoreV1.java @@ -57,7 +57,7 @@ public class AtlasEntityDefStoreV1 extends AtlasAbstractDefStoreV1 implements At AtlasType type = typeRegistry.getType(entityDef.getName()); - if (type.getTypeCategory() != AtlasType.TypeCategory.ENTITY) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.ENTITY) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, entityDef.getName(), TypeCategory.CLASS.name()); } @@ -191,7 +191,7 @@ public class AtlasEntityDefStoreV1 extends AtlasAbstractDefStoreV1 implements At AtlasType type = typeRegistry.getType(entityDef.getName()); - if (type.getTypeCategory() != AtlasType.TypeCategory.ENTITY) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.ENTITY) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, entityDef.getName(), TypeCategory.CLASS.name()); } @@ -221,7 +221,7 @@ public class AtlasEntityDefStoreV1 extends AtlasAbstractDefStoreV1 implements At AtlasType type = typeRegistry.getTypeByGuid(guid); - if (type.getTypeCategory() != AtlasType.TypeCategory.ENTITY) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.ENTITY) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, entityDef.getName(), TypeCategory.CLASS.name()); } diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java index 6dfe8cf..ee36182 100644 --- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java +++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java @@ -69,7 +69,7 @@ public class AtlasStructDefStoreV1 extends AtlasAbstractDefStoreV1 implements At AtlasType type = typeRegistry.getType(structDef.getName()); - if (type.getTypeCategory() != AtlasType.TypeCategory.STRUCT) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.STRUCT) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, structDef.getName(), TypeCategory.STRUCT.name()); } @@ -202,7 +202,7 @@ public class AtlasStructDefStoreV1 extends AtlasAbstractDefStoreV1 implements At AtlasType type = typeRegistry.getType(structDef.getName()); - if (type.getTypeCategory() != AtlasType.TypeCategory.STRUCT) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.STRUCT) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, structDef.getName(), TypeCategory.STRUCT.name()); } @@ -232,7 +232,7 @@ public class AtlasStructDefStoreV1 extends AtlasAbstractDefStoreV1 implements At AtlasType type = typeRegistry.getTypeByGuid(guid); - if (type.getTypeCategory() != AtlasType.TypeCategory.STRUCT) { + if (type.getTypeCategory() != org.apache.atlas.model.TypeCategory.STRUCT) { throw new AtlasBaseException(AtlasErrorCode.TYPE_MATCH_FAILED, structDef.getName(), TypeCategory.STRUCT.name()); } @@ -494,11 +494,11 @@ public class AtlasStructDefStoreV1 extends AtlasAbstractDefStoreV1 implements At if (isForeignKey) { // check if the referenced entity has foreignKeyRef to this attribute AtlasType attribType = structType.getAttributeType(attributeDef.getName()); - if (attribType.getTypeCategory() == AtlasType.TypeCategory.ARRAY) { + if (attribType.getTypeCategory() == org.apache.atlas.model.TypeCategory.ARRAY) { attribType = ((AtlasArrayType)attribType).getElementType(); } - if (attribType.getTypeCategory() == AtlasType.TypeCategory.ENTITY) { + if (attribType.getTypeCategory() == org.apache.atlas.model.TypeCategory.ENTITY) { reverseAttribName = ((AtlasStructType)attribType).getMappedFromRefAttribute(structType.getTypeName(), attributeDef.getName()); } diff --git a/webapp/src/main/java/org/apache/atlas/web/rest/TypesREST.java b/webapp/src/main/java/org/apache/atlas/web/rest/TypesREST.java index d0cb209..867307f 100644 --- a/webapp/src/main/java/org/apache/atlas/web/rest/TypesREST.java +++ b/webapp/src/main/java/org/apache/atlas/web/rest/TypesREST.java @@ -29,13 +29,16 @@ import org.apache.atlas.model.typedef.AtlasEnumDef; import org.apache.atlas.model.typedef.AtlasEnumDef.AtlasEnumDefs; import org.apache.atlas.model.typedef.AtlasStructDef; import org.apache.atlas.model.typedef.AtlasStructDef.AtlasStructDefs; +import org.apache.atlas.model.typedef.AtlasTypeDefHeader; import org.apache.atlas.model.typedef.AtlasTypesDef; import org.apache.atlas.store.AtlasTypeDefStore; +import org.apache.atlas.type.AtlasTypeUtil; import org.apache.atlas.web.util.Servlets; import org.apache.http.annotation.Experimental; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.List; import java.util.Set; import javax.inject.Singleton; @@ -387,6 +390,21 @@ public class TypesREST { /** Bulk API operations **/ /******************************************************************/ + /** + * Bulk retrieval API for all type definitions returned as a list of minimal information header + * @return List of AtlasTypeDefHeader {@link AtlasTypeDefHeader} + * @throws AtlasBaseException + */ + @GET + @Path("/typedefs/headers") + @Produces(Servlets.JSON_MEDIA_TYPE) + public List<AtlasTypeDefHeader> getTypeDefHeaders() throws AtlasBaseException { + SearchFilter searchFilter = getSearchFilter(); + + AtlasTypesDef searchTypesDef = typeDefStore.searchTypesDef(searchFilter); + + return AtlasTypeUtil.toTypeDefHeader(searchTypesDef); + } /** * Bulk retrieval API for retrieving all type definitions in Atlas -- libgit2 0.27.1