You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ni...@apache.org on 2020/04/23 08:34:41 UTC

[atlas] branch branch-2.0 updated (3b8ff17 -> fdb75a4)

This is an automated email from the ASF dual-hosted git repository.

nixon pushed a change to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git.


    from 3b8ff17  ATLAS-3744 : [Beta UI] Long entity type filter load time
     new ed86855  ATLAS-3753 : Classification Search with wildcard in between strings causes issues.
     new fdb75a4  ATLAS-3667 : Option to store Ldap/AD bind password in jceks keystore file #2              (Set MASK_LDAP_PASSWORD constant value to "********" to be sync with other applications.)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/atlas/ApplicationProperties.java    |  2 +-
 .../apache/atlas/discovery/SearchProcessor.java    | 14 +++++---
 .../org/apache/atlas/util/SearchPredicateUtil.java | 41 ++++++++++++++++++++++
 3 files changed, 51 insertions(+), 6 deletions(-)


[atlas] 02/02: ATLAS-3667 : Option to store Ldap/AD bind password in jceks keystore file #2 (Set MASK_LDAP_PASSWORD constant value to "********" to be sync with other applications.)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nixon pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit fdb75a4bc343da6fe0b2ea96144aa3cf64ebca00
Author: chaitali borole <ch...@cloudera.com>
AuthorDate: Wed Apr 22 16:23:18 2020 +0530

    ATLAS-3667 : Option to store Ldap/AD bind password in jceks keystore file #2
                 (Set MASK_LDAP_PASSWORD constant value to "********" to be sync with other applications.)
    
    Signed-off-by: nixonrodrigues <ni...@apache.org>
    (cherry picked from commit 1f871efb128e2e4ff2927f0196617bb278049a70)
---
 intg/src/main/java/org/apache/atlas/ApplicationProperties.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/intg/src/main/java/org/apache/atlas/ApplicationProperties.java b/intg/src/main/java/org/apache/atlas/ApplicationProperties.java
index e40ca88..1f1f377 100644
--- a/intg/src/main/java/org/apache/atlas/ApplicationProperties.java
+++ b/intg/src/main/java/org/apache/atlas/ApplicationProperties.java
@@ -60,7 +60,7 @@ public final class ApplicationProperties extends PropertiesConfiguration {
     public static final String  LDAP_TYPE                       =  "atlas.authentication.method.ldap.type";
     public static final String  LDAP_AD_BIND_PASSWORD           =  "atlas.authentication.method.ldap.ad.bind.password";
     public static final String  LDAP_BIND_PASSWORD              =  "atlas.authentication.method.ldap.bind.password";
-    public static final String  MASK_LDAP_PASSWORD              =  "*****";
+    public static final String  MASK_LDAP_PASSWORD              =  "********";
     public static final String  DEFAULT_GRAPHDB_BACKEND         = GRAPHBD_BACKEND_JANUS;
     public static final boolean DEFAULT_SOLR_WAIT_SEARCHER      = true;
     public static final boolean DEFAULT_INDEX_MAP_NAME          = false;


[atlas] 01/02: ATLAS-3753 : Classification Search with wildcard in between strings causes issues.

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nixon pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit ed86855dccf8a07cc17fc599fd16809f867a7743
Author: Pinal Shah <pi...@freestoneinfotech.com>
AuthorDate: Wed Apr 22 23:29:17 2020 +0530

    ATLAS-3753 : Classification Search with wildcard in between strings causes issues.
    
    Signed-off-by: nixonrodrigues <ni...@apache.org>
    (cherry picked from commit 862ba9baed7af208456e59a42466aa0894cd8a6d)
---
 .../apache/atlas/discovery/SearchProcessor.java    | 14 +++++---
 .../org/apache/atlas/util/SearchPredicateUtil.java | 41 ++++++++++++++++++++++
 2 files changed, 50 insertions(+), 5 deletions(-)

diff --git a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
index 5d7c508..11eb7ca 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
@@ -79,7 +79,6 @@ public abstract class SearchProcessor {
     public static final char    CUSTOM_ATTR_SEPARATOR      = '=';
     public static final String  CUSTOM_ATTR_SEARCH_FORMAT  = "\"\\\"%s\\\":\\\"%s\\\"\"";
     public static final String  CUSTOM_ATTR_SEARCH_FORMAT_GRAPH = "\"%s\":\"%s\"";
-    public static final String  WILDCARD_CHAR                   = "*";
     private static final Map<SearchParameters.Operator, String>                            OPERATOR_MAP           = new HashMap<>();
     private static final Map<SearchParameters.Operator, VertexAttributePredicateGenerator> OPERATOR_PREDICATE_MAP = new HashMap<>();
 
@@ -202,10 +201,11 @@ public abstract class SearchProcessor {
             traitPredicate = PredicateUtils.andPredicate(SearchPredicateUtil.getIsNullOrEmptyPredicateGenerator().generatePredicate(TRAIT_NAMES_PROPERTY_KEY, null, List.class),
                 SearchPredicateUtil.getIsNullOrEmptyPredicateGenerator().generatePredicate(PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, null, List.class));
         } else if (context.isWildCardSearch()) {
-            String wildcardName = context.getClassificationName();
-            wildcardName = wildcardName.replace(WILDCARD_CHAR,"");
-            traitPredicate = PredicateUtils.orPredicate(SearchPredicateUtil.getContainsPredicateGenerator().generatePredicate(CLASSIFICATION_NAMES_KEY, wildcardName, String.class),
-                    SearchPredicateUtil.getContainsPredicateGenerator().generatePredicate(PROPAGATED_CLASSIFICATION_NAMES_KEY, wildcardName, String.class));
+            //For wildcard search __classificationNames which of String type is taken instead of _traitNames which is of Array type
+            //No need to escape, as classification Names only support letters,numbers,space and underscore
+            String regexString = getRegexString("\\|" + context.getClassificationName() + "\\|");
+            traitPredicate = PredicateUtils.orPredicate(SearchPredicateUtil.getRegexPredicateGenerator().generatePredicate(CLASSIFICATION_NAMES_KEY, regexString, String.class),
+                    SearchPredicateUtil.getRegexPredicateGenerator().generatePredicate(PROPAGATED_CLASSIFICATION_NAMES_KEY, regexString, String.class));
         } else {
             traitPredicate = PredicateUtils.orPredicate(SearchPredicateUtil.getContainsAnyPredicateGenerator().generatePredicate(TRAIT_NAMES_PROPERTY_KEY, context.getClassificationTypes(), List.class),
                 SearchPredicateUtil.getContainsAnyPredicateGenerator().generatePredicate(PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, context.getClassificationTypes(), List.class));
@@ -849,6 +849,10 @@ public abstract class SearchProcessor {
         return ".*" + escapeRegExChars(attributeValue) + ".*";
     }
 
+    private static String getRegexString(String value) {
+        return ".*" + value.replace("*", ".*") + ".*";
+    }
+
     private static String getSuffixRegex(String attributeValue) {
         return ".*" + escapeRegExChars(attributeValue);
     }
diff --git a/repository/src/main/java/org/apache/atlas/util/SearchPredicateUtil.java b/repository/src/main/java/org/apache/atlas/util/SearchPredicateUtil.java
index 69770c3..4408cd4 100644
--- a/repository/src/main/java/org/apache/atlas/util/SearchPredicateUtil.java
+++ b/repository/src/main/java/org/apache/atlas/util/SearchPredicateUtil.java
@@ -30,6 +30,8 @@ import org.slf4j.LoggerFactory;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Collection;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
 
 public class SearchPredicateUtil {
     private static final Logger LOG = LoggerFactory.getLogger(SearchPredicateUtil.class);
@@ -420,6 +422,35 @@ public class SearchPredicateUtil {
         return ret;
     }
 
+    public static VertexAttributePredicateGenerator getRegexPredicateGenerator() {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("==> getRegexPredicateGenerator");
+        }
+
+        VertexAttributePredicateGenerator ret = new VertexAttributePredicateGenerator() {
+            @Override
+            public Predicate generatePredicate(final String attrName, final Object attrVal, final Class attrClass) {
+                final Predicate ret;
+
+                if (attrName == null || attrClass == null || attrVal == null) {
+                    ret = ALWAYS_FALSE;
+                } else if (String.class.isAssignableFrom(attrClass)) {
+                    ret = StringPredicate.getRegexPredicate(attrName, attrClass, (String) attrVal);
+                } else {
+                    ret = ALWAYS_FALSE;
+                }
+
+                return ret;
+            }
+        };
+
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("<== getRegexPredicateGenerator");
+        }
+
+        return ret;
+    }
+
     public static VertexAttributePredicateGenerator getLIKEPredicateGenerator() {
         if (LOG.isDebugEnabled()) {
             LOG.debug("==> getLIKEPredicateGenerator");
@@ -1355,6 +1386,16 @@ public class SearchPredicateUtil {
                 }
             };
         }
+
+        static VertexAttributePredicate getRegexPredicate(String attrName, Class attrClass, String value) {
+            return new StringPredicate(attrName, attrClass, value) {
+                protected boolean compareValue(Object vertexAttrVal) {
+                    Pattern pattern = Pattern.compile(value, Pattern.CASE_INSENSITIVE);
+                    Matcher matcher = pattern.matcher((String) vertexAttrVal);
+                    return matcher.matches();
+                }
+            };
+        }
     }
 
     public static Predicate generateIsEntityVertexPredicate(AtlasTypeRegistry typeRegistry) {