[New] Allow to set if type is allowed in QueryParser

This commit is contained in:
Robert von Burg 2017-08-18 11:48:09 +02:00
parent 07ab2fa971
commit 3f28d9aa9f
4 changed files with 41 additions and 40 deletions

View File

@ -189,13 +189,13 @@ public abstract class QueryParser extends CompositeParser {
actions();
}
public static ResourceQuery<Resource> parseToResourceQuery(String queryString, boolean withPrefix,
boolean withAny) {
return parseToResourceQuery(new MapOfSets<>(), withPrefix, queryString, withAny);
public static ResourceQuery<Resource> parseToResourceQuery(String queryString, boolean withPrefix, boolean withAny,
boolean allowType) {
return parseToResourceQuery(new MapOfSets<>(), withPrefix, queryString, withAny, allowType);
}
public static ResourceQuery<Resource> parseToResourceQuery(MapOfSets<String, String> bagParamSet,
boolean withPrefix, String queryString, boolean withAny) {
boolean withPrefix, String queryString, boolean withAny, boolean allowType) {
QueryParser parser = new QueryParser(new ResourceQuery<>()) {
@Override
public MapOfSets<String, String> getBagParamSet() {
@ -209,7 +209,7 @@ public abstract class QueryParser extends CompositeParser {
@Override
public boolean allowType() {
return true;
return allowType;
}
};
Result result = parser.parse(queryString);
@ -222,12 +222,13 @@ public abstract class QueryParser extends CompositeParser {
return query;
}
public static OrderQuery<Order> parseToOrderQuery(String queryString, boolean withPrefix, boolean withAny) {
return parseToOrderQuery(new MapOfSets<>(), withPrefix, queryString, withAny);
public static OrderQuery<Order> parseToOrderQuery(String queryString, boolean withPrefix, boolean withAny,
boolean allowType) {
return parseToOrderQuery(new MapOfSets<>(), withPrefix, queryString, withAny, allowType);
}
public static OrderQuery<Order> parseToOrderQuery(MapOfSets<String, String> bagParamSet, boolean withPrefix,
String queryString, boolean withAny) {
String queryString, boolean withAny, boolean allowType) {
QueryParser parser = new QueryParser(new OrderQuery<>()) {
@Override
public MapOfSets<String, String> getBagParamSet() {
@ -241,7 +242,7 @@ public abstract class QueryParser extends CompositeParser {
@Override
public boolean allowType() {
return true;
return allowType;
}
};
Result result = parser.parse(queryString);
@ -254,13 +255,13 @@ public abstract class QueryParser extends CompositeParser {
return query;
}
public static ActivityQuery<Activity> parseToActivityQuery(String queryString, boolean withPrefix,
boolean withAny) {
return parseToActivityQuery(new MapOfSets<>(), withPrefix, queryString, withAny);
public static ActivityQuery<Activity> parseToActivityQuery(String queryString, boolean withPrefix, boolean withAny,
boolean allowType) {
return parseToActivityQuery(new MapOfSets<>(), withPrefix, queryString, withAny, allowType);
}
public static ActivityQuery<Activity> parseToActivityQuery(MapOfSets<String, String> bagParamSet,
boolean withPrefix, String queryString, boolean withAny) {
boolean withPrefix, String queryString, boolean withAny, boolean allowType) {
QueryParser parser = new QueryParser(new ActivityQuery<>()) {
@Override
public MapOfSets<String, String> getBagParamSet() {
@ -274,7 +275,7 @@ public abstract class QueryParser extends CompositeParser {
@Override
public boolean allowType() {
return true;
return allowType;
}
};
Result result = parser.parse(queryString);

View File

@ -388,7 +388,7 @@ public class Inspector {
List<Resource> resources = new ArrayList<>();
// parse the query string
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery(queryData.getQuery(), true, true);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery(queryData.getQuery(), true, true, false);
// set navigation to requested type
query.setNavigation(new StrolchTypeNavigation(type));
@ -438,7 +438,7 @@ public class Inspector {
List<Order> orders = new ArrayList<>();
// parse the query string
OrderQuery<Order> query = QueryParser.parseToOrderQuery(queryData.getQuery(), true, true);
OrderQuery<Order> query = QueryParser.parseToOrderQuery(queryData.getQuery(), true, true, false);
query.setNavigation(new StrolchTypeNavigation(type));
// query the data
@ -472,7 +472,7 @@ public class Inspector {
List<Activity> activities = new ArrayList<>();
// parse the query string
ActivityQuery<Activity> query = QueryParser.parseToActivityQuery(queryData.getQuery(), true, true);
ActivityQuery<Activity> query = QueryParser.parseToActivityQuery(queryData.getQuery(), true, true, false);
query.setNavigation(new StrolchTypeNavigation(type));
// query the data
@ -944,7 +944,7 @@ public class Inspector {
RemoveOrderService svc = new RemoveOrderService();
LocatorArgument arg = svc.getArgumentInstance();
arg.locator = Resource.locatorFor(type, id);
arg.locator = Order.locatorFor(type, id);
arg.realm = realm;
ServiceResult result = RestfulStrolchComponent.getInstance().getServiceHandler().doService(cert, svc, arg);
@ -961,7 +961,7 @@ public class Inspector {
RemoveActivityService svc = new RemoveActivityService();
LocatorArgument arg = svc.getArgumentInstance();
arg.locator = Resource.locatorFor(type, id);
arg.locator = Activity.locatorFor(type, id);
arg.realm = realm;
ServiceResult result = RestfulStrolchComponent.getInstance().getServiceHandler().doService(cert, svc, arg);

View File

@ -60,7 +60,7 @@ public class ModelQuery {
List<Resource> resources = new ArrayList<>();
// parse the query string
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery(queryData.getQuery(), true, true);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery(queryData.getQuery(), true, true, true);
// query the data
long dataSetSize = 0L;
@ -115,7 +115,7 @@ public class ModelQuery {
List<Order> orders = new ArrayList<>();
// parse the query string
OrderQuery<Order> query = QueryParser.parseToOrderQuery(queryData.getQuery(), true, true);
OrderQuery<Order> query = QueryParser.parseToOrderQuery(queryData.getQuery(), true, true, true);
// query the data
long dataSetSize = 0L;
@ -171,7 +171,7 @@ public class ModelQuery {
List<Activity> activities = new ArrayList<>();
// parse the query string
ActivityQuery<Activity> query = QueryParser.parseToActivityQuery(queryData.getQuery(), true, true);
ActivityQuery<Activity> query = QueryParser.parseToActivityQuery(queryData.getQuery(), true, true, true);
// query the data
long dataSetSize = 0L;

View File

@ -23,56 +23,56 @@ public class QueryParserTest {
@Test
public void shouldIgnoreGibberish() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("sdf dfg3 !sdf", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("sdf dfg3 !sdf", true, false, true);
assertFalse(query.hasNavigation());
assertFalse(query.hasSelection());
}
@Test
public void shouldParseEmpty1() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("", false, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("", false, false, true);
assertFalse(query.hasNavigation());
assertFalse(query.hasSelection());
}
@Test
public void shouldParseEmpty2() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("", true, false, true);
assertFalse(query.hasNavigation());
assertFalse(query.hasSelection());
}
@Test
public void shouldParseEmptyId() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("id:", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("id:", true, false, true);
assertFalse(query.hasNavigation());
assertFalse(query.hasSelection());
}
@Test
public void shouldParseEmptyName() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("name:", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("name:", true, false, true);
assertFalse(query.hasNavigation());
assertFalse(query.hasSelection());
}
@Test
public void shouldParseEmptyType() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("type:", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("type:", true, false, true);
assertFalse(query.hasNavigation());
assertFalse(query.hasSelection());
}
@Test
public void shouldParseEmptyIdNameType() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("id: name: type:", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("id: name: type:", true, false, true);
assertFalse(query.hasNavigation());
assertFalse(query.hasSelection());
}
@Test
public void shouldParseId() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("id:asd", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("id:asd", true, false, true);
OrSelection or = (OrSelection) query.getSelection();
List<Selection> selections = or.getSelections();
assertEquals(1, selections.size());
@ -86,7 +86,7 @@ public class QueryParserTest {
@Test
public void shouldParseIds() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("id:asd id:bbb", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("id:asd id:bbb", true, false, true);
OrSelection or = (OrSelection) query.getSelection();
List<Selection> selections = or.getSelections();
assertEquals(1, selections.size());
@ -101,7 +101,7 @@ public class QueryParserTest {
@Test
public void shouldParseName() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("name:asd", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("name:asd", true, false, true);
OrSelection or = (OrSelection) query.getSelection();
List<Selection> selections = or.getSelections();
assertEquals(1, selections.size());
@ -112,7 +112,7 @@ public class QueryParserTest {
@Test
public void shouldParseNames() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("name:asd name:bbb", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("name:asd name:bbb", true, false, true);
OrSelection or = (OrSelection) query.getSelection();
List<Selection> selections = or.getSelections();
assertEquals(2, selections.size());
@ -126,7 +126,7 @@ public class QueryParserTest {
@Test
public void shouldParseType() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("type:asd", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("type:asd", true, false, true);
assertFalse(query.hasSelection());
assertTrue(query.hasNavigation());
StrolchTypeNavigation navigation = (StrolchTypeNavigation) query.getNavigation();
@ -135,7 +135,7 @@ public class QueryParserTest {
@Test
public void shouldReplaceMultipleType() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("type:asd type:fff", true, false);
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery("type:asd type:fff", true, false, true);
assertFalse(query.hasSelection());
assertTrue(query.hasNavigation());
StrolchTypeNavigation navigation = (StrolchTypeNavigation) query.getNavigation();
@ -145,7 +145,7 @@ public class QueryParserTest {
@Test
public void shouldParseIdNameType() {
ResourceQuery<Resource> query = QueryParser
.parseToResourceQuery("id:foo name:bar type:asd date:1970-01-01T01:00:00.000+01:00", true, false);
.parseToResourceQuery("id:foo name:bar type:asd date:1970-01-01T01:00:00.000+01:00", true, false, true);
OrSelection or = (OrSelection) query.getSelection();
List<Selection> selections = or.getSelections();
assertEquals(2, selections.size());
@ -157,7 +157,7 @@ public class QueryParserTest {
@Test
public void shouldParseWithWhitespace() {
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery(" id:foo name:bar type:asd \t ", true,
false);
false, true);
OrSelection or = (OrSelection) query.getSelection();
List<Selection> selections = or.getSelections();
assertEquals(2, selections.size());
@ -173,7 +173,7 @@ public class QueryParserTest {
maps.addElement("parameters", "date");
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery(maps, true,
"type:asd id:asd email:bla@dsfdfg.ch date:1970-01-01T01:00:00.000+01:00", false);
"type:asd id:asd email:bla@dsfdfg.ch date:1970-01-01T01:00:00.000+01:00", false, true);
assertTrue(query.hasNavigation());
OrSelection or = (OrSelection) query.getSelection();
List<Selection> selections = or.getSelections();
@ -200,7 +200,7 @@ public class QueryParserTest {
maps.addElement("parameters", "date");
ResourceQuery<Resource> query = QueryParser.parseToResourceQuery(maps, false,
"asd bla@dsfdfg.ch 1970-01-01T01:00:00.000+01:00", false);
"asd bla@dsfdfg.ch 1970-01-01T01:00:00.000+01:00", false, true);
assertFalse(query.hasNavigation());
OrSelection or = (OrSelection) query.getSelection();
List<Selection> selections = or.getSelections();