This is an automated email from the ASF dual-hosted git repository.
sarath pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/master by this push:
new e6de42b ATLAS-3695 [Business Metadata] Special characters are being
allowed in Attribute Name
e6de42b is described below
commit e6de42b7a3da6ebc6326813108d2b0cbcacac0f1
Author: Mandar Ambawane <[email protected]>
AuthorDate: Thu Apr 16 22:47:42 2020 +0530
ATLAS-3695 [Business Metadata] Special characters are being allowed in
Attribute Name
Signed-off-by: Sarath Subramanian <[email protected]>
---
intg/src/main/java/org/apache/atlas/AtlasErrorCode.java | 5 +++--
.../store/graph/v2/AtlasBusinessMetadataDefStoreV2.java | 14 ++++++++++++++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
b/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
index 16947ec..a14e43a 100644
--- a/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
+++ b/intg/src/main/java/org/apache/atlas/AtlasErrorCode.java
@@ -167,8 +167,9 @@ public enum AtlasErrorCode {
INVALID_BUSINESS_METADATA_NAME_FOR_ENTITY_TYPE(400, "ATLAS-400-00-095",
"Invalid business-metadata: {0} specified for entity, applicable
business-metadata: {1}"),
BUSINESS_METADATA_ATTRIBUTE_DOES_NOT_EXIST(400, "ATLAS-400-00-096",
"Business-metadata attribute does not exist in entity: {0}"),
BUSINESS_METADATA_ATTRIBUTE_ALREADY_EXISTS(400, "ATLAS-400-00-097",
"Business-metadata attribute already exists in entity: {0}"),
- INVALID_FILE_TYPE(400, "ATLAS-400-00-98", "The provided file type {0} is
not supported."),
- INVALID_BUSINESS_ATTRIBUTES_IMPORT_DATA(400, "ATLAS-400-00-99","The
uploaded file was not processed due to following errors : {0}"),
+ INVALID_FILE_TYPE(400, "ATLAS-400-00-098", "The provided file type {0} is
not supported."),
+ INVALID_BUSINESS_ATTRIBUTES_IMPORT_DATA(400, "ATLAS-400-00-099","The
uploaded file was not processed due to following errors : {0}"),
+ ATTRIBUTE_NAME_INVALID_CHARS(400, "ATLAS-400-00-09A", "{0}: invalid name.
Attribute names must begin with a letter followed by a sequence of letters,
numbers, or '_' characters"),
UNAUTHORIZED_ACCESS(403, "ATLAS-403-00-001", "{0} is not authorized to
perform {1}"),
diff --git
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasBusinessMetadataDefStoreV2.java
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasBusinessMetadataDefStoreV2.java
index 5f4136f..6b4fa65 100644
---
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasBusinessMetadataDefStoreV2.java
+++
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasBusinessMetadataDefStoreV2.java
@@ -23,6 +23,7 @@ import org.apache.atlas.authorize.AtlasPrivilege;
import org.apache.atlas.authorize.AtlasTypeAccessRequest;
import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.model.TypeCategory;
+import org.apache.atlas.model.typedef.AtlasBaseTypeDef;
import org.apache.atlas.model.typedef.AtlasBusinessMetadataDef;
import org.apache.atlas.model.typedef.AtlasStructDef;
import org.apache.atlas.repository.Constants;
@@ -85,6 +86,19 @@ public class AtlasBusinessMetadataDefStoreV2 extends
AtlasAbstractDefStoreV2<Atl
}
@Override
+ public void validateType(AtlasBaseTypeDef typeDef) throws
AtlasBaseException {
+ super.validateType(typeDef);
+ AtlasBusinessMetadataDef businessMetadataDef =
(AtlasBusinessMetadataDef) typeDef;
+ if
(CollectionUtils.isNotEmpty(businessMetadataDef.getAttributeDefs())) {
+ for (AtlasStructDef.AtlasAttributeDef attributeDef :
businessMetadataDef.getAttributeDefs()) {
+ if (!isValidName(attributeDef.getName())) {
+ throw new
AtlasBaseException(AtlasErrorCode.ATTRIBUTE_NAME_INVALID_CHARS,
attributeDef.getName());
+ }
+ }
+ }
+ }
+
+ @Override
public AtlasBusinessMetadataDef create(AtlasBusinessMetadataDef
businessMetadataDef, AtlasVertex preCreateResult) throws AtlasBaseException {
if (LOG.isDebugEnabled()) {
LOG.debug("==> AtlasBusinessMetadataDefStoreV2.create({}, {})",
businessMetadataDef, preCreateResult);