You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by bd...@apache.org on 2022/07/28 22:23:10 UTC
[directory-scimple] branch move-client-filter-logic updated: Move FilterBuilder to scim-spec-protocol
This is an automated email from the ASF dual-hosted git repository.
bdemers pushed a commit to branch move-client-filter-logic
in repository https://gitbox.apache.org/repos/asf/directory-scimple.git
The following commit(s) were added to refs/heads/move-client-filter-logic by this push:
new 60e09f9 Move FilterBuilder to scim-spec-protocol
60e09f9 is described below
commit 60e09f99802ff225e3339d127fb91418d5d14fa7
Author: Brian Demers <bd...@apache.org>
AuthorDate: Thu Jul 28 18:23:04 2022 -0400
Move FilterBuilder to scim-spec-protocol
---
scim-spec/scim-spec-protocol/pom.xml | 5 +++
.../filter/ComplexLogicalFilterBuilder.java | 9 ++----
.../scim/spec/protocol/filter}/FilterBuilder.java | 36 +++++++++++++++++-----
.../filter/FilterComparisonFilterBuilder.java | 5 ++-
.../filter/SimpleLogicalFilterBuilder.java | 5 ++-
.../protocol}/filter/FilterBuilderEqualsTest.java | 4 +--
.../protocol}/filter/FilterBuilderGreaterTest.java | 9 +-----
.../filter/FilterBuilderLessThanTest.java | 6 +---
.../filter/FilterBuilderNotEqualsTest.java | 5 +--
.../protocol}/filter/FilterBuilderStringTest.java | 4 +--
.../spec/protocol}/filter/FilterBuilderTest.java | 27 +++++++---------
11 files changed, 56 insertions(+), 59 deletions(-)
diff --git a/scim-spec/scim-spec-protocol/pom.xml b/scim-spec/scim-spec-protocol/pom.xml
index 49e31f3..02cc587 100644
--- a/scim-spec/scim-spec-protocol/pom.xml
+++ b/scim-spec/scim-spec-protocol/pom.xml
@@ -59,6 +59,11 @@
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
diff --git a/scim-client/src/main/java/org/apache/directory/scim/client/rest/ComplexLogicalBuilder.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/ComplexLogicalFilterBuilder.java
similarity index 84%
rename from scim-client/src/main/java/org/apache/directory/scim/client/rest/ComplexLogicalBuilder.java
rename to scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/ComplexLogicalFilterBuilder.java
index 7b8e333..bf015ee 100644
--- a/scim-client/src/main/java/org/apache/directory/scim/client/rest/ComplexLogicalBuilder.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/ComplexLogicalFilterBuilder.java
@@ -1,11 +1,6 @@
-package org.apache.directory.scim.client.rest;
+package org.apache.directory.scim.spec.protocol.filter;
-import org.apache.directory.scim.spec.protocol.filter.AttributeComparisonExpression;
-import org.apache.directory.scim.spec.protocol.filter.FilterExpression;
-import org.apache.directory.scim.spec.protocol.filter.LogicalExpression;
-import org.apache.directory.scim.spec.protocol.filter.LogicalOperator;
-
-abstract class ComplexLogicalBuilder extends SimpleLogicalBuilder {
+abstract class ComplexLogicalFilterBuilder extends SimpleLogicalFilterBuilder {
@Override
public FilterBuilder or(FilterExpression fe1) {
diff --git a/scim-client/src/main/java/org/apache/directory/scim/client/rest/FilterBuilder.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilder.java
similarity index 71%
rename from scim-client/src/main/java/org/apache/directory/scim/client/rest/FilterBuilder.java
rename to scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilder.java
index e25e6f7..6fe338f 100644
--- a/scim-client/src/main/java/org/apache/directory/scim/client/rest/FilterBuilder.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilder.java
@@ -1,7 +1,5 @@
-package org.apache.directory.scim.client.rest;
+package org.apache.directory.scim.spec.protocol.filter;
-import org.apache.directory.scim.spec.protocol.filter.FilterExpression;
-import org.apache.directory.scim.spec.protocol.filter.FilterParseException;
import org.apache.directory.scim.spec.protocol.search.Filter;
import java.time.LocalDate;
@@ -14,13 +12,29 @@ public interface FilterBuilder {
FilterBuilder and(FilterExpression fe1);
- FilterBuilder and(FilterExpression fe1, FilterExpression fe2);
+ default FilterBuilder and(Filter filter) {
+ return and(filter.getExpression());
+ }
+
+ FilterBuilder and(FilterExpression left, FilterExpression right);
+
+ default FilterBuilder and(Filter left, Filter right) {
+ return and(left.getExpression(), right.getExpression());
+ }
FilterBuilder or();
FilterBuilder or(FilterExpression fe1);
- FilterBuilder or(FilterExpression fe1, FilterExpression fe2);
+ default FilterBuilder or(Filter filter) {
+ return or(filter.getExpression());
+ }
+
+ FilterBuilder or(FilterExpression left, FilterExpression right);
+
+ default FilterBuilder or(Filter left, Filter right) {
+ return or(left.getExpression(), right.getExpression());
+ }
FilterBuilder equalTo(String key, String value);
@@ -88,15 +102,23 @@ public interface FilterBuilder {
FilterBuilder contains(String key, String value);
- FilterBuilder not(FilterExpression filter);
+ FilterBuilder not(FilterExpression fe);
+
+ default FilterBuilder not(Filter filter) {
+ return not(filter.getExpression());
+ }
FilterBuilder attributeHas(String attribute, FilterExpression filter) throws FilterParseException;
+ default FilterBuilder attributeHas(String attribute, Filter filter) throws FilterParseException {
+ return attributeHas(attribute, filter.getExpression());
+ }
+
FilterExpression filter();
Filter build();
static FilterBuilder create() {
- return new ComparisonBuilder();
+ return new FilterComparisonFilterBuilder();
}
}
diff --git a/scim-client/src/main/java/org/apache/directory/scim/client/rest/ComparisonBuilder.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/FilterComparisonFilterBuilder.java
similarity index 98%
rename from scim-client/src/main/java/org/apache/directory/scim/client/rest/ComparisonBuilder.java
rename to scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/FilterComparisonFilterBuilder.java
index 8f08bdc..39484cb 100644
--- a/scim-client/src/main/java/org/apache/directory/scim/client/rest/ComparisonBuilder.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/FilterComparisonFilterBuilder.java
@@ -1,13 +1,12 @@
-package org.apache.directory.scim.client.rest;
+package org.apache.directory.scim.spec.protocol.filter;
import org.apache.directory.scim.spec.protocol.attribute.AttributeReference;
-import org.apache.directory.scim.spec.protocol.filter.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
-class ComparisonBuilder extends ComplexLogicalBuilder {
+class FilterComparisonFilterBuilder extends ComplexLogicalFilterBuilder {
@Override
public FilterBuilder equalTo(String key, String value) {
diff --git a/scim-client/src/main/java/org/apache/directory/scim/client/rest/SimpleLogicalBuilder.java b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/SimpleLogicalFilterBuilder.java
similarity index 95%
rename from scim-client/src/main/java/org/apache/directory/scim/client/rest/SimpleLogicalBuilder.java
rename to scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/SimpleLogicalFilterBuilder.java
index 8656089..4f9d2a2 100644
--- a/scim-client/src/main/java/org/apache/directory/scim/client/rest/SimpleLogicalBuilder.java
+++ b/scim-spec/scim-spec-protocol/src/main/java/org/apache/directory/scim/spec/protocol/filter/SimpleLogicalFilterBuilder.java
@@ -1,11 +1,10 @@
-package org.apache.directory.scim.client.rest;
+package org.apache.directory.scim.spec.protocol.filter;
import lombok.extern.slf4j.Slf4j;
-import org.apache.directory.scim.spec.protocol.filter.*;
import org.apache.directory.scim.spec.protocol.search.Filter;
@Slf4j
-abstract class SimpleLogicalBuilder implements FilterBuilder {
+abstract class SimpleLogicalFilterBuilder implements FilterBuilder {
protected FilterExpression filterExpression;
diff --git a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderEqualsTest.java b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderEqualsTest.java
similarity index 96%
rename from scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderEqualsTest.java
rename to scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderEqualsTest.java
index bf1aef6..c354b4e 100644
--- a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderEqualsTest.java
+++ b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderEqualsTest.java
@@ -17,11 +17,9 @@
* under the License.
*/
-package org.apache.directory.scim.client.filter;
+package org.apache.directory.scim.spec.protocol.filter;
import lombok.extern.slf4j.Slf4j;
-import org.apache.directory.scim.client.rest.FilterBuilder;
-import org.apache.directory.scim.spec.protocol.filter.FilterParseException;
import org.apache.directory.scim.spec.protocol.search.Filter;
import org.junit.jupiter.api.Test;
diff --git a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderGreaterTest.java b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderGreaterTest.java
similarity index 95%
rename from scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderGreaterTest.java
rename to scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderGreaterTest.java
index 545c524..d312e9f 100644
--- a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderGreaterTest.java
+++ b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderGreaterTest.java
@@ -17,27 +17,20 @@
* under the License.
*/
-package org.apache.directory.scim.client.filter;
+package org.apache.directory.scim.spec.protocol.filter;
import lombok.extern.slf4j.Slf4j;
-import org.apache.directory.scim.client.rest.FilterBuilder;
-import org.apache.directory.scim.spec.protocol.filter.FilterParseException;
import org.apache.directory.scim.spec.protocol.search.Filter;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
-import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat;
@Slf4j
diff --git a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderLessThanTest.java b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderLessThanTest.java
similarity index 96%
rename from scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderLessThanTest.java
rename to scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderLessThanTest.java
index 20bc3d4..cc9e958 100644
--- a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderLessThanTest.java
+++ b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderLessThanTest.java
@@ -17,18 +17,14 @@
* under the License.
*/
-package org.apache.directory.scim.client.filter;
+package org.apache.directory.scim.spec.protocol.filter;
import lombok.extern.slf4j.Slf4j;
-import org.apache.directory.scim.client.rest.FilterBuilder;
-import org.apache.directory.scim.spec.protocol.filter.FilterParseException;
import org.apache.directory.scim.spec.protocol.search.Filter;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
diff --git a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderNotEqualsTest.java b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderNotEqualsTest.java
similarity index 95%
rename from scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderNotEqualsTest.java
rename to scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderNotEqualsTest.java
index c540130..61e4215 100644
--- a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderNotEqualsTest.java
+++ b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderNotEqualsTest.java
@@ -17,15 +17,12 @@
* under the License.
*/
-package org.apache.directory.scim.client.filter;
+package org.apache.directory.scim.spec.protocol.filter;
import lombok.extern.slf4j.Slf4j;
-import org.apache.directory.scim.client.rest.FilterBuilder;
-import org.apache.directory.scim.spec.protocol.filter.FilterParseException;
import org.apache.directory.scim.spec.protocol.search.Filter;
import org.junit.jupiter.api.Test;
-import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
diff --git a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderStringTest.java b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderStringTest.java
similarity index 91%
rename from scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderStringTest.java
rename to scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderStringTest.java
index 6b6d27d..1f3dc1d 100644
--- a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderStringTest.java
+++ b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderStringTest.java
@@ -17,11 +17,9 @@
* under the License.
*/
-package org.apache.directory.scim.client.filter;
+package org.apache.directory.scim.spec.protocol.filter;
import lombok.extern.slf4j.Slf4j;
-import org.apache.directory.scim.client.rest.FilterBuilder;
-import org.apache.directory.scim.spec.protocol.filter.FilterParseException;
import org.apache.directory.scim.spec.protocol.search.Filter;
import org.junit.jupiter.api.Test;
diff --git a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderTest.java b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderTest.java
similarity index 91%
rename from scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderTest.java
rename to scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderTest.java
index 0dd3eec..95d1d82 100644
--- a/scim-client/src/test/java/org/apache/directory/scim/client/filter/FilterBuilderTest.java
+++ b/scim-spec/scim-spec-protocol/src/test/java/org/apache/directory/scim/spec/protocol/filter/FilterBuilderTest.java
@@ -17,19 +17,14 @@
* under the License.
*/
-package org.apache.directory.scim.client.filter;
+package org.apache.directory.scim.spec.protocol.filter;
import lombok.extern.slf4j.Slf4j;
-import org.apache.directory.scim.client.rest.FilterBuilder;
-import org.apache.directory.scim.spec.protocol.filter.FilterParseException;
import org.apache.directory.scim.spec.protocol.search.Filter;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
-import java.beans.XMLEncoder;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat;
@@ -84,7 +79,7 @@ public class FilterBuilderTest {
.equalTo("name.givenName", "Frodo")
.and()
.equalTo("name.familyName", "Baggins")
- .filter())
+ .build())
.build();
decode(filter.getFilter());
@@ -102,7 +97,7 @@ public class FilterBuilderTest {
.equalTo("name.givenName", "Frodo")
.and()
.equalTo("name.familyName", "Baggins")
- .filter())
+ .build())
.build();
Filter expected = new Filter("name.givenName EQ \"Bilbo\" OR (name.givenName EQ \"Frodo\" AND name.familyName EQ \"Baggins\")");
@@ -126,7 +121,7 @@ public class FilterBuilderTest {
.and()
.equalTo("address.postalCode", "16803");
- Filter filter = FilterBuilder.create().and(b1.filter(), b2.filter()).build();
+ Filter filter = FilterBuilder.create().and(b1.build(), b2.build()).build();
Filter expected = new Filter("((name.givenName EQ \"Bilbo\" OR name.givenName EQ \"Frodo\") AND name.familyName EQ \"Baggins\") AND ((address.streetAddress EQ \"Underhill\" OR address.streetAddress EQ \"Overhill\") AND address.postalCode EQ \"16803\")");
@@ -142,7 +137,7 @@ public class FilterBuilderTest {
.and()
.equalTo("name.familyName", "Baggins");
- Filter filter = FilterBuilder.create().not(b1.filter()).build();
+ Filter filter = FilterBuilder.create().not(b1.build()).build();
Filter expected = new Filter("NOT((name.givenName EQ \"Bilbo\" OR name.givenName EQ \"Frodo\") AND name.familyName EQ \"Baggins\")");
assertThat(filter).isEqualTo(expected);
}
@@ -153,7 +148,7 @@ public class FilterBuilderTest {
FilterBuilder b1 = FilterBuilder.create()
.equalTo("address.type", "work");
FilterBuilder b2 = FilterBuilder.create()
- .attributeHas("address", b1.filter());
+ .attributeHas("address", b1.build());
Filter filter = b2.build();
Filter expected = new Filter("address[type EQ \"work\"]");
@@ -171,9 +166,9 @@ public class FilterBuilderTest {
.and()
.equalTo("name.familyName", "Baggins");
- FilterBuilder b2 = FilterBuilder.create().attributeHas("address", b1.filter());
+ FilterBuilder b2 = FilterBuilder.create().attributeHas("address", b1.build());
- FilterBuilder b3 = FilterBuilder.create().attributeHas("address", b2.filter());
+ FilterBuilder b3 = FilterBuilder.create().attributeHas("address", b2.build());
// TODO: I'm not sure why this test exists in the Client
// This should probably be a parsing test, and maybe the FilterBuilder should be smarter and throw an
@@ -186,9 +181,9 @@ public class FilterBuilderTest {
public void testAttributeContainsDeeplyEmbedded() throws FilterParseException {
FilterBuilder b1 = FilterBuilder.create().equalTo("name.givenName", "Bilbo").or().equalTo("name.givenName", "Frodo").and().equalTo("name.familyName", "Baggins");
- FilterBuilder b2 = FilterBuilder.create().attributeHas("address", b1.filter());
- FilterBuilder b3 = FilterBuilder.create().equalTo("name.giveName", "Gandalf").and(b2.filter());
- FilterBuilder b4 = FilterBuilder.create().attributeHas("address", b3.filter());
+ FilterBuilder b2 = FilterBuilder.create().attributeHas("address", b1.build());
+ FilterBuilder b3 = FilterBuilder.create().equalTo("name.giveName", "Gandalf").and(b2.build());
+ FilterBuilder b4 = FilterBuilder.create().attributeHas("address", b3.build());
String encoded = b4.toString();