mirror of
https://github.com/apache/olingo-odata4.git
synced 2025-02-06 01:59:12 +00:00
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/olingo-odata4
This commit is contained in:
commit
256468aa29
@ -18,10 +18,54 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.olingo.server.api.uri;
|
package org.apache.olingo.server.api.uri;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.olingo.server.api.uri.queryoption.CountOption;
|
||||||
|
import org.apache.olingo.server.api.uri.queryoption.CustomQueryOption;
|
||||||
|
import org.apache.olingo.server.api.uri.queryoption.FormatOption;
|
||||||
|
import org.apache.olingo.server.api.uri.queryoption.SearchOption;
|
||||||
|
import org.apache.olingo.server.api.uri.queryoption.SkipOption;
|
||||||
|
import org.apache.olingo.server.api.uri.queryoption.SkipTokenOption;
|
||||||
|
import org.apache.olingo.server.api.uri.queryoption.TopOption;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used for URI info kind {@link UriInfoKind#all} to describe URIs like
|
* Used for URI info kind {@link UriInfoKind#all} to describe URIs like
|
||||||
* http://.../serviceroot/$all
|
* http://.../serviceroot/$all
|
||||||
*/
|
*/
|
||||||
public interface UriInfoAll {
|
public interface UriInfoAll {
|
||||||
// No additional methods needed for now.
|
|
||||||
|
/**
|
||||||
|
* @return List of custom query options used in the URI (without alias definitions)
|
||||||
|
*/
|
||||||
|
List<CustomQueryOption> getCustomQueryOptions();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Object containing information of the $format option
|
||||||
|
*/
|
||||||
|
FormatOption getFormatOption();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Object containing information of the $count option
|
||||||
|
*/
|
||||||
|
CountOption getCountOption();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Object containing information of the $search option
|
||||||
|
*/
|
||||||
|
SearchOption getSearchOption();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Object containing information of the $skip option
|
||||||
|
*/
|
||||||
|
SkipOption getSkipOption();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Object containing information of the $skiptoken option
|
||||||
|
*/
|
||||||
|
SkipTokenOption getSkipTokenOption();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Object containing information of the $top option
|
||||||
|
*/
|
||||||
|
TopOption getTopOption();
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ import org.apache.olingo.server.api.uri.queryoption.ExpandOption;
|
|||||||
import org.apache.olingo.server.api.uri.queryoption.FilterOption;
|
import org.apache.olingo.server.api.uri.queryoption.FilterOption;
|
||||||
import org.apache.olingo.server.api.uri.queryoption.FormatOption;
|
import org.apache.olingo.server.api.uri.queryoption.FormatOption;
|
||||||
import org.apache.olingo.server.api.uri.queryoption.OrderByOption;
|
import org.apache.olingo.server.api.uri.queryoption.OrderByOption;
|
||||||
|
import org.apache.olingo.server.api.uri.queryoption.SearchOption;
|
||||||
import org.apache.olingo.server.api.uri.queryoption.SelectOption;
|
import org.apache.olingo.server.api.uri.queryoption.SelectOption;
|
||||||
import org.apache.olingo.server.api.uri.queryoption.SkipOption;
|
import org.apache.olingo.server.api.uri.queryoption.SkipOption;
|
||||||
import org.apache.olingo.server.api.uri.queryoption.SkipTokenOption;
|
import org.apache.olingo.server.api.uri.queryoption.SkipTokenOption;
|
||||||
@ -66,6 +67,11 @@ public interface UriInfoCrossjoin {
|
|||||||
*/
|
*/
|
||||||
OrderByOption getOrderByOption();
|
OrderByOption getOrderByOption();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Object containing information of the $search option
|
||||||
|
*/
|
||||||
|
SearchOption getSearchOption();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Object containing information of the $select option
|
* @return Object containing information of the $select option
|
||||||
*/
|
*/
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.olingo.server.core.uri.parser;
|
package org.apache.olingo.server.core.uri.parser;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
@ -27,12 +29,13 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
|
|||||||
import org.apache.olingo.commons.api.format.ContentType;
|
import org.apache.olingo.commons.api.format.ContentType;
|
||||||
import org.apache.olingo.server.api.OData;
|
import org.apache.olingo.server.api.OData;
|
||||||
import org.apache.olingo.server.api.edmx.EdmxReference;
|
import org.apache.olingo.server.api.edmx.EdmxReference;
|
||||||
|
import org.apache.olingo.server.api.uri.UriInfoAll;
|
||||||
|
import org.apache.olingo.server.api.uri.UriInfoCrossjoin;
|
||||||
import org.apache.olingo.server.api.uri.UriInfoKind;
|
import org.apache.olingo.server.api.uri.UriInfoKind;
|
||||||
import org.apache.olingo.server.api.uri.UriResourceKind;
|
import org.apache.olingo.server.api.uri.UriResourceKind;
|
||||||
import org.apache.olingo.server.api.uri.queryoption.expression.BinaryOperatorKind;
|
import org.apache.olingo.server.api.uri.queryoption.expression.BinaryOperatorKind;
|
||||||
import org.apache.olingo.server.api.uri.queryoption.expression.MethodKind;
|
import org.apache.olingo.server.api.uri.queryoption.expression.MethodKind;
|
||||||
import org.apache.olingo.server.core.uri.parser.UriParserSemanticException.MessageKeys;
|
import org.apache.olingo.server.core.uri.parser.UriParserSemanticException.MessageKeys;
|
||||||
import org.apache.olingo.server.core.uri.parser.UriParserSyntaxException;
|
|
||||||
import org.apache.olingo.server.core.uri.parser.search.SearchParserException;
|
import org.apache.olingo.server.core.uri.parser.search.SearchParserException;
|
||||||
import org.apache.olingo.server.core.uri.testutil.FilterValidator;
|
import org.apache.olingo.server.core.uri.testutil.FilterValidator;
|
||||||
import org.apache.olingo.server.core.uri.testutil.TestUriValidator;
|
import org.apache.olingo.server.core.uri.testutil.TestUriValidator;
|
||||||
@ -57,6 +60,35 @@ public class TestFullResourcePath {
|
|||||||
private final TestUriValidator testUri = new TestUriValidator().setEdm(edm);
|
private final TestUriValidator testUri = new TestUriValidator().setEdm(edm);
|
||||||
private final FilterValidator testFilter = new FilterValidator().setEdm(edm);
|
private final FilterValidator testFilter = new FilterValidator().setEdm(edm);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void allowedSystemQueryOptionsOnAll() throws Exception {
|
||||||
|
UriInfoAll uriInfoAll = testUri.run("$all", "$count=true&$format=json&$search=abc&$skip=5&$top=5&$skiptoken=abc")
|
||||||
|
.getUriInfoRoot().asUriInfoAll();
|
||||||
|
assertNotNull(uriInfoAll.getCountOption());
|
||||||
|
assertNotNull(uriInfoAll.getFormatOption());
|
||||||
|
assertNotNull(uriInfoAll.getSearchOption());
|
||||||
|
assertNotNull(uriInfoAll.getSkipOption());
|
||||||
|
assertNotNull(uriInfoAll.getTopOption());
|
||||||
|
assertNotNull(uriInfoAll.getSkipTokenOption());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void allowedSystemQueryOptionsOnCrossjoin() throws Exception {
|
||||||
|
UriInfoCrossjoin uriInfoCrossjoin =
|
||||||
|
testUri.run("$crossjoin(ESAllPrim,ESTwoPrim)", "$count=true&$expand=ESAllPrim"
|
||||||
|
+ "&$filter=ESAllPrim/PropertyInt16 eq 2&$format=json&$orderby=ESAllPrim/PropertyInt16"
|
||||||
|
+ "&$search=abc&$skip=5&$top=5&$skiptoken=abc").getUriInfoRoot().asUriInfoCrossjoin();
|
||||||
|
assertNotNull(uriInfoCrossjoin.getCountOption());
|
||||||
|
assertNotNull(uriInfoCrossjoin.getExpandOption());
|
||||||
|
assertNotNull(uriInfoCrossjoin.getFilterOption());
|
||||||
|
assertNotNull(uriInfoCrossjoin.getFormatOption());
|
||||||
|
assertNotNull(uriInfoCrossjoin.getOrderByOption());
|
||||||
|
assertNotNull(uriInfoCrossjoin.getSearchOption());
|
||||||
|
assertNotNull(uriInfoCrossjoin.getSkipOption());
|
||||||
|
assertNotNull(uriInfoCrossjoin.getTopOption());
|
||||||
|
assertNotNull(uriInfoCrossjoin.getSkipTokenOption());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void trimQueryOptionsValue() throws Exception {
|
public void trimQueryOptionsValue() throws Exception {
|
||||||
// OLINGO-846 trim query option value
|
// OLINGO-846 trim query option value
|
||||||
|
@ -238,4 +238,8 @@ public class TestUriValidator implements TestValidator {
|
|||||||
assertEquals(fullName, uriInfo.getEntityTypeCast().getFullQualifiedName());
|
assertEquals(fullName, uriInfo.getEntityTypeCast().getFullQualifiedName());
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public UriInfo getUriInfoRoot() {
|
||||||
|
return uriInfo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user