You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/06/20 12:58:15 UTC
[2/2] syncope git commit: [SYNCOPE-1321] Re-add + in case it was
escaped from timezone
[SYNCOPE-1321] Re-add + in case it was escaped from timezone
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/30ca1356
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/30ca1356
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/30ca1356
Branch: refs/heads/2_0_X
Commit: 30ca135617f6d4e25eee141fb01a51b2258020f8
Parents: c8ed968
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Jun 20 14:54:28 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Jun 20 14:58:02 2018 +0200
----------------------------------------------------------------------
.../core/persistence/api/search/SearchCondVisitor.java | 10 ++++++++++
.../java/org/apache/syncope/fit/core/SearchITCase.java | 9 +++++++++
2 files changed, 19 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/30ca1356/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
index 29ee195..7d31626 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
@@ -23,6 +23,7 @@ import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
+import java.util.regex.Pattern;
import org.apache.cxf.jaxrs.ext.search.ConditionType;
import org.apache.cxf.jaxrs.ext.search.SearchBean;
import org.apache.cxf.jaxrs.ext.search.SearchCondition;
@@ -50,6 +51,8 @@ import org.apache.syncope.core.persistence.api.dao.search.RelationshipTypeCond;
*/
public class SearchCondVisitor extends AbstractSearchConditionVisitor<SearchBean, SearchCond> {
+ private static final Pattern TIMEZONE = Pattern.compile(".* [0-9]{4}$");
+
private String realm;
private SearchCond searchCond;
@@ -79,6 +82,13 @@ public class SearchCondVisitor extends AbstractSearchConditionVisitor<SearchBean
value = SearchUtils.toSqlWildcardString(
URLDecoder.decode(sc.getStatement().getValue().toString(), StandardCharsets.UTF_8.name()), false).
replaceAll("\\\\_", "_");
+
+ // see SYNCOPE-1321
+ if (TIMEZONE.matcher(value).matches()) {
+ char[] valueAsArray = value.toCharArray();
+ valueAsArray[valueAsArray.length - 5] = '+';
+ value = new String(valueAsArray);
+ }
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException("While decoding " + sc.getStatement().getValue(), e);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/30ca1356/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
index a03abe5..7c3e96a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
@@ -296,6 +296,15 @@ public class SearchITCase extends AbstractITCase {
assertNotNull(users);
assertEquals(1, users.getTotalCount());
assertEquals(1, users.getResult().size());
+
+ // SYNCOPE-1321
+ PagedResult<UserTO> issueSYNCOPE1321 = userService.search(new AnyQuery.Builder().
+ realm(SyncopeConstants.ROOT_REALM).
+ fiql(SyncopeClient.getUserSearchConditionBuilder().
+ is("lastLoginDate").lexicalNotBefore("2016-03-02T15:21:22+0300").
+ and("username").equalTo("bellini").query()).
+ build());
+ assertEquals(users, issueSYNCOPE1321);
}
@Test