Skip to content

Commit 0a21474

Browse files
committed
using correct validation
1 parent 3a06d3a commit 0a21474

File tree

2 files changed

+50
-25
lines changed

2 files changed

+50
-25
lines changed

lightblue-ldap-crud/src/main/java/com/redhat/lightblue/crud/ldap/FilterTranslator.java

Lines changed: 49 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.redhat.lightblue.query.QueryExpression;
1212
import com.redhat.lightblue.query.RegexMatchExpression;
1313
import com.redhat.lightblue.query.UnaryLogicalExpression;
14+
import com.redhat.lightblue.query.Value;
1415
import com.redhat.lightblue.query.ValueComparisonExpression;
1516
import com.unboundid.ldap.sdk.Filter;
1617

@@ -43,35 +44,37 @@ else if (query instanceof ValueComparisonExpression){
4344
filter = translate((ValueComparisonExpression) query);
4445
}
4546
else{
46-
throw new IllegalArgumentException("Unsupported QueryExpression type: " + query.getClass());
47+
throw new UnsupportedOperationException("Unsupported QueryExpression type: " + query.getClass());
4748
}
4849
return filter;
4950
}
5051

5152
private Filter translate(ArrayContainsExpression query){
52-
return null;
53+
String field = query.getArray().toString();
54+
55+
List<Filter> filters = new ArrayList<Filter>();
56+
for(Value value : query.getValues()){
57+
filters.add(Filter.createEqualityFilter(field, value.getValue().toString()));
58+
}
59+
60+
switch(query.getOp()){
61+
case _all:
62+
return Filter.createANDFilter(filters);
63+
case _any:
64+
return Filter.createORFilter(filters);
65+
case _none:
66+
return Filter.createNOTFilter(Filter.createANDFilter(filters));
67+
default:
68+
throw new UnsupportedOperationException("Unsupported operation: " + query.getOp());
69+
}
5370
}
5471

5572
private Filter translate(ArrayMatchExpression query){
56-
return null;
73+
throw new UnsupportedOperationException("Operation not yet supported");
5774
}
5875

5976
private Filter translate(FieldComparisonExpression query){
60-
String field = query.getField().toString();
61-
String rfield = query.getRfield().toString();
62-
63-
switch(query.getOp()){
64-
case _eq:
65-
return Filter.createEqualityFilter(field, rfield);
66-
case _neq:
67-
return Filter.createNOTFilter(Filter.createEqualityFilter(field, rfield));
68-
case _gte:
69-
return Filter.createGreaterOrEqualFilter(field, rfield);
70-
case _lte:
71-
return Filter.createLessOrEqualFilter(field, rfield);
72-
default: //TODO gt, lt
73-
throw new IllegalArgumentException("Unsupported operation: " + query.getOp());
74-
}
77+
throw new UnsupportedOperationException("Operation not yet supported");
7578
}
7679

7780
private Filter translate(NaryLogicalExpression query){
@@ -85,28 +88,50 @@ private Filter translate(NaryLogicalExpression query){
8588
case _or:
8689
return Filter.createORFilter(filters);
8790
default:
88-
throw new IllegalArgumentException("Unsupported operation: " + query.getOp());
91+
throw new UnsupportedOperationException("Unsupported operation: " + query.getOp());
8992
}
9093
}
9194

9295
private Filter translate(NaryRelationalExpression query){
93-
return null;
96+
String field = query.getField().toString();
97+
List<Filter> filters = new ArrayList<Filter>();
98+
for(Value value : query.getValues()){
99+
filters.add(Filter.createEqualityFilter(field, value.getValue().toString()));
100+
}
101+
102+
switch (query.getOp()){
103+
case _in:
104+
return Filter.createORFilter(filters);
105+
case _not_in:
106+
return Filter.createNOTFilter(Filter.createORFilter(filters));
107+
default:
108+
throw new UnsupportedOperationException("Unsupported operation: " + query.getOp());
109+
}
94110
}
95111

96112
private Filter translate(RegexMatchExpression query){
97-
return null;
113+
throw new UnsupportedOperationException("Operation not yet supported");
98114
}
99115

100116
private Filter translate(UnaryLogicalExpression query){
101117
return null;
102118
}
103119

104120
private Filter translate(ValueComparisonExpression query){
121+
String field = query.getField().toString();
122+
String rValue = query.getRvalue().getValue().toString();
123+
105124
switch(query.getOp()){
106125
case _eq:
107-
return Filter.createEqualityFilter(query.getField().toString(), query.getRvalue().toString());
108-
default:
109-
throw new IllegalArgumentException("Unsupported operation: " + query.getOp());
126+
return Filter.createEqualityFilter(field, rValue);
127+
case _neq:
128+
return Filter.createNOTFilter(Filter.createEqualityFilter(field, rValue));
129+
case _gte:
130+
return Filter.createGreaterOrEqualFilter(field, rValue);
131+
case _lte:
132+
return Filter.createLessOrEqualFilter(field, rValue);
133+
default: //TODO gt, lt
134+
throw new UnsupportedOperationException("Unsupported operation: " + query.getOp());
110135
}
111136
}
112137

lightblue-ldap-test/src/main/resources/crud/find/person-find-simple.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"query": {
88
"field": "uid",
99
"op": "$eq",
10-
"rfield": "john.doe"
10+
"rvalue": "john.doe"
1111
},
1212
"range": [
1313
0,

0 commit comments

Comments
 (0)