Repository: atlas Updated Branches: refs/heads/master 413aa88e6 -> 08ac11c09
ATLAS-2346: fix V1 REST API to include AttributeDefinition.dataTypeName field in type details Project: http://git-wip-us.apache.org/repos/asf/atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/08ac11c0 Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/08ac11c0 Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/08ac11c0 Branch: refs/heads/master Commit: 08ac11c091f62ab7e006a0b4491959ebb2949df7 Parents: 413aa88 Author: Madhan Neethiraj <mad...@apache.org> Authored: Fri Jan 5 17:34:06 2018 -0800 Committer: Madhan Neethiraj <mad...@apache.org> Committed: Fri Jan 5 23:03:45 2018 -0800 ---------------------------------------------------------------------- .../v1/model/typedef/AttributeDefinition.java | 1 - .../converters/TypeConverterUtil.java | 2 +- .../store/graph/v1/AtlasStructDefStoreV1.java | 40 ++++++++++++++++++-- 3 files changed, 38 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/atlas/blob/08ac11c0/intg/src/main/java/org/apache/atlas/v1/model/typedef/AttributeDefinition.java ---------------------------------------------------------------------- diff --git a/intg/src/main/java/org/apache/atlas/v1/model/typedef/AttributeDefinition.java b/intg/src/main/java/org/apache/atlas/v1/model/typedef/AttributeDefinition.java index 53a008a..b54c22b 100644 --- a/intg/src/main/java/org/apache/atlas/v1/model/typedef/AttributeDefinition.java +++ b/intg/src/main/java/org/apache/atlas/v1/model/typedef/AttributeDefinition.java @@ -33,7 +33,6 @@ import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ @JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) -@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) @JsonIgnoreProperties(ignoreUnknown=true) @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) http://git-wip-us.apache.org/repos/asf/atlas/blob/08ac11c0/repository/src/main/java/org/apache/atlas/repository/converters/TypeConverterUtil.java ---------------------------------------------------------------------- diff --git a/repository/src/main/java/org/apache/atlas/repository/converters/TypeConverterUtil.java b/repository/src/main/java/org/apache/atlas/repository/converters/TypeConverterUtil.java index 33f092e..1e06321 100644 --- a/repository/src/main/java/org/apache/atlas/repository/converters/TypeConverterUtil.java +++ b/repository/src/main/java/org/apache/atlas/repository/converters/TypeConverterUtil.java @@ -360,7 +360,7 @@ public final class TypeConverterUtil { for (AtlasAttributeDef attrDef : attrDefs) { AtlasAttribute attribute = structType.getAttribute(attrDef.getName()); - AttributeDefinition oldAttrDef = AtlasStructDefStoreV1.toAttributeDefintion(attribute); + AttributeDefinition oldAttrDef = AtlasStructDefStoreV1.toAttributeDefinition(attribute); ret.add(new AttributeDefinition(oldAttrDef.getName(), oldAttrDef.getDataTypeName(), new Multiplicity(oldAttrDef.getMultiplicity()), oldAttrDef.getIsComposite(), oldAttrDef.getIsUnique(), oldAttrDef.getIsIndexable(), oldAttrDef.getReverseAttributeName())); } http://git-wip-us.apache.org/repos/asf/atlas/blob/08ac11c0/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java ---------------------------------------------------------------------- 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 f1d9031..83a6d1d 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 @@ -33,6 +33,7 @@ import org.apache.atlas.type.AtlasType; import org.apache.atlas.type.AtlasTypeRegistry; import org.apache.atlas.type.AtlasTypeUtil; import org.apache.atlas.typesystem.types.DataTypes.TypeCategory; +import org.apache.atlas.v1.model.typedef.Multiplicity; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -544,10 +545,43 @@ public class AtlasStructDefStoreV1 extends AtlasAbstractDefStoreV1<AtlasStructDe return ret; } - public static AttributeDefinition toAttributeDefintion(AtlasAttribute attribute) { - String jsonString = toJsonFromAttribute(attribute); + public static Multiplicity getMultiplicity(AtlasAttributeDef attributeDef) { + final int lower; + final int upper; + final boolean isUnique = AtlasAttributeDef.Cardinality.SET.equals(attributeDef.getCardinality()); - AttributeDefinition ret = AtlasType.fromV1Json(jsonString, AttributeDefinition.class); + if (attributeDef.getCardinality() == AtlasAttributeDef.Cardinality.SINGLE) { + lower = attributeDef.getIsOptional() ? 0 : 1; + upper = 1; + } else { + if(attributeDef.getIsOptional()) { + lower = 0; + } else { + lower = attributeDef.getValuesMinCount() < 1 ? 1 : attributeDef.getValuesMinCount(); + } + + upper = attributeDef.getValuesMaxCount() < 2 ? Integer.MAX_VALUE : attributeDef.getValuesMaxCount(); + } + + Multiplicity ret = new Multiplicity(lower, upper, isUnique); + + return ret; + } + + public static AttributeDefinition toAttributeDefinition(AtlasAttribute attribute) { + final AtlasAttributeDef attrDef = attribute.getAttributeDef(); + + AttributeDefinition ret = new AttributeDefinition(); + + ret.setName(attrDef.getName()); + ret.setDataTypeName(attrDef.getTypeName()); + ret.setMultiplicity(getMultiplicity(attrDef)); + ret.setIsComposite(attribute.isOwnedRef()); + ret.setIsUnique(attrDef.getIsUnique()); + ret.setIsIndexable(attrDef.getIsIndexable()); + ret.setReverseAttributeName(attribute.getInverseRefAttributeName()); + ret.setDescription(attrDef.getDescription()); + ret.setDefaultValue(attrDef.getDefaultValue()); return ret; }