Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,9 @@ private String createUrl(final String apiCall, final List<NameValuePair> queryPa
final String queryStr = Optional.ofNullable(queryParams)
.filter(params -> !params.isEmpty())
.map(params -> params.stream()
.map(pair -> String.format("%s=%s", pair.getName(), pair.getValue()))
.map(pair -> pair.getValue() != null
? String.format("%s=%s", pair.getName(), pair.getValue())
: pair.getName())
.collect(Collectors.joining("&")))
.map("?"::concat)
.orElse("");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,12 +171,16 @@ public class DeliveryParameterBuilder {
static final String LIMIT = "limit";
static final String INCLUDE_TOTAL_COUNT = "includeTotalCount";

static final String NOT_EQUALS = "[neq]";
static final String EMPTY = "[empty]";
static final String NOT_EMPTY = "[nempty]";
static final String LESS_THAN = "[lt]";
static final String LESS_THAN_OR_EQUALS = "[lte]";
static final String GREATER_THAN = "[gt]";
static final String GREATER_THAN_OR_EQUALS = "[gte]";
static final String RANGE = "[range]";
static final String IN = "[in]";
static final String NOT_IN = "[nin]";
static final String CONTAINS = "[contains]";
static final String ANY = "[any]";
static final String ALL = "[all]";
Expand Down Expand Up @@ -211,6 +215,52 @@ public DeliveryParameterBuilder filterEquals(String attribute, String value) {
return this;
}

/**
* Attribute value is not the same as the specified value.
*
* @param attribute The attribute.
* @param value The value.
* @return This DeliveryParameterBuilder with the added operator.
* @see <a href="https://docs.kontent.ai/reference/delivery-api#tag/Filtering-content/filtering-operators">
* More in Filtering operators.</a>
*/
public DeliveryParameterBuilder filterNotEquals(String attribute, String value) {
if (attribute != null) {
nameValuePairs.add(new NameValuePair(String.format("%s%s", attribute, NOT_EQUALS), value));
}
return this;
}

/**
* Attribute value is empty.
*
* @param attribute The attribute.
* @return This DeliveryParameterBuilder with the added operator.
* @see <a href="https://docs.kontent.ai/reference/delivery-api#tag/Filtering-content/filtering-operators">
* More in Filtering operators.</a>
*/
public DeliveryParameterBuilder filterEmpty(String attribute) {
if (attribute != null) {
nameValuePairs.add(new NameValuePair(String.format("%s%s", attribute, EMPTY), null));
}
return this;
}

/**
* Attribute value is not empty.
*
* @param attribute The attribute.
* @return This DeliveryParameterBuilder with the added operator.
* @see <a href="https://docs.kontent.ai/reference/delivery-api#tag/Filtering-content/filtering-operators">
* More in Filtering operators.</a>
*/
public DeliveryParameterBuilder filterNotEmpty(String attribute) {
if (attribute != null) {
nameValuePairs.add(new NameValuePair(String.format("%s%s", attribute, NOT_EMPTY), null));
}
return this;
}

/**
* Attribute value is less than the specified value.
*
Expand Down Expand Up @@ -333,6 +383,35 @@ public DeliveryParameterBuilder filterIn(String attribute, Collection<String> va
return filterIn(attribute, values.toArray(new String[0]));
}

/**
* Attribute value is not in the specified list of values.
*
* @param attribute The attribute.
* @param values The values.
* @return This DeliveryParameterBuilder with the added operator.
* @see <a href="https://docs.kontent.ai/reference/delivery-api#tag/Filtering-content/filtering-operators">
* More in Filtering operators.</a>
*/
public DeliveryParameterBuilder filterNotIn(String attribute, String... values) {
if (attribute != null) {
nameValuePairs.add(new NameValuePair(String.format("%s%s", attribute, NOT_IN), String.join(",", values)));
}
return this;
}

/**
* Attribute value is not in the specified list of values.
*
* @param attribute The attribute.
* @param values The values.
* @return This DeliveryParameterBuilder with the added operator.
* @see <a href="https://docs.kontent.ai/reference/delivery-api#tag/Filtering-content/filtering-operators">
* More in Filtering operators.</a>
*/
public DeliveryParameterBuilder filterNotIn(String attribute, Collection<String> values) {
return filterNotIn(attribute, values.toArray(new String[0]));
}

/**
* Attribute with an array of values contains the specified value.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,49 @@ public void testEqualsNullAttr() {
Assert.assertEquals(0, params.size());
}

@Test
public void testNotEqualsNullAttr() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterNotEquals(null, null).build();
Assert.assertEquals(0, params.size());
}

@Test
public void testNotEquals() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterNotEquals("foo", "bar").build();
Assert.assertEquals(1, params.size());
Assert.assertEquals("foo[neq]", params.get(0).getName());
Assert.assertEquals("bar", params.get(0).getValue());
}

@Test
public void testEmptyNullAttr() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterEmpty(null).build();
Assert.assertEquals(0, params.size());
}

@Test
public void testEmpty() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterEmpty("foo").build();
Assert.assertEquals(1, params.size());
Assert.assertEquals("foo[empty]", params.get(0).getName());
Assert.assertEquals(null, params.get(0).getValue());
}

@Test
public void testNotEmptyNullAttr() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterNotEmpty(null).build();
Assert.assertEquals(0, params.size());
}

@Test
public void testNotEmpty() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterNotEmpty("foo").build();
Assert.assertEquals(1, params.size());
Assert.assertEquals("foo[nempty]", params.get(0).getName());
Assert.assertEquals(null, params.get(0).getValue());
}


@Test
public void testLessThan() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterLessThan("foo", "bar").build();
Expand Down Expand Up @@ -136,6 +179,25 @@ public void testInCollection() {
Assert.assertEquals("bar,foobar", params.get(0).getValue());
}

@Test
public void testNotIn() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterNotIn("foo", "bar", "foobar").build();
Assert.assertEquals(1, params.size());
Assert.assertEquals("foo[nin]", params.get(0).getName());
Assert.assertEquals("bar,foobar", params.get(0).getValue());
}

@Test
public void testNotInCollection() {
List<String> values = new ArrayList<>();
values.add("bar");
values.add("foobar");
List<NameValuePair> params = DeliveryParameterBuilder.params().filterNotIn("foo", values).build();
Assert.assertEquals(1, params.size());
Assert.assertEquals("foo[nin]", params.get(0).getName());
Assert.assertEquals("bar,foobar", params.get(0).getValue());
}

@Test
public void testInNullAttr() {
List<NameValuePair> params = DeliveryParameterBuilder.params().filterIn(null, null, null).build();
Expand Down