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

ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/3_0_X by this push:
     new 6af89e6648 Fixing Elasticsearch and OpenSearch ILIKE / IEQ for values 
with underscore
6af89e6648 is described below

commit 6af89e6648086510aad9c47868f3103dc03e8d2f
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Tue Mar 5 15:27:42 2024 +0100

    Fixing Elasticsearch and OpenSearch ILIKE / IEQ for values with underscore
---
 core/provisioning-java/pom.xml                                     | 7 -------
 .../core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java        | 5 +++--
 .../syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java   | 5 +++--
 3 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/core/provisioning-java/pom.xml b/core/provisioning-java/pom.xml
index 6de3aff54b..b7a69859a2 100644
--- a/core/provisioning-java/pom.xml
+++ b/core/provisioning-java/pom.xml
@@ -202,13 +202,6 @@ under the License.
         <directory>src/test/resources</directory>
         <filtering>true</filtering>
       </testResource>
-      <testResource>
-        <directory>${basedir}/../persistence-jpa/src/main/resources</directory>
-        <includes>
-          <include>persistence.properties</include>
-        </includes>
-        <filtering>true</filtering>
-      </testResource>
       <testResource>
         <directory>${basedir}/../persistence-jpa/src/test/resources</directory>
         <filtering>true</filtering>
diff --git 
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
 
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
index cf2eb94bca..13d63e007e 100644
--- 
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
+++ 
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
@@ -540,7 +540,7 @@ public class ElasticsearchAnySearchDAO extends 
AbstractAnySearchDAO {
 
             case ILIKE:
                 StringBuilder output = new StringBuilder();
-                for (char c : 
cond.getExpression().toLowerCase().toCharArray()) {
+                for (char c : 
cond.getExpression().toLowerCase().replace("\\_", "_").toCharArray()) {
                     if (c == '%') {
                         output.append(".*");
                     } else if (Character.isLetter(c)) {
@@ -558,7 +558,8 @@ public class ElasticsearchAnySearchDAO extends 
AbstractAnySearchDAO {
 
             case LIKE:
                 query = new Query.Builder().wildcard(QueryBuilders.wildcard().
-                        
field(schema.getKey()).value(cond.getExpression().replace('%', 
'*')).build()).build();
+                        
field(schema.getKey()).value(cond.getExpression().replace('%', 
'*').replace("\\_", "_")).
+                        build()).build();
                 break;
 
             case IEQ:
diff --git 
a/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java
 
b/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java
index 7f59e8428f..f24cba1abd 100644
--- 
a/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java
+++ 
b/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java
@@ -540,7 +540,7 @@ public class OpenSearchAnySearchDAO extends 
AbstractAnySearchDAO {
 
             case ILIKE:
                 StringBuilder output = new StringBuilder();
-                for (char c : 
cond.getExpression().toLowerCase().toCharArray()) {
+                for (char c : 
cond.getExpression().toLowerCase().replace("\\_", "_").toCharArray()) {
                     if (c == '%') {
                         output.append(".*");
                     } else if (Character.isLetter(c)) {
@@ -558,7 +558,8 @@ public class OpenSearchAnySearchDAO extends 
AbstractAnySearchDAO {
 
             case LIKE:
                 query = new Query.Builder().wildcard(QueryBuilders.wildcard().
-                        
field(schema.getKey()).value(cond.getExpression().replace('%', 
'*')).build()).build();
+                        
field(schema.getKey()).value(cond.getExpression().replace('%', 
'*').replace("\\_", "_")).
+                        build()).build();
                 break;
 
             case IEQ:

Reply via email to