Validate context against aliases and versioning
This commit is contained in:
parent
433032c6c3
commit
0d583f175f
@ -36,7 +36,7 @@ public class ContextPropertyProbe extends StringValuePropertyProbe {
|
||||
|
||||
int pos = 0;
|
||||
for (String uri : contextUris) {
|
||||
if ((nodeValues.size() < pos + 1) || !nodeValues.get(pos).equals(uri)) {
|
||||
if ((nodeValues.size() < pos + 1) || !contains(uri, nodeValues.get(pos))) {
|
||||
return error("missing required @context uri " + uri + " at position " + (pos + 1), ctx);
|
||||
}
|
||||
pos++;
|
||||
@ -46,5 +46,25 @@ public class ContextPropertyProbe extends StringValuePropertyProbe {
|
||||
return success(ctx);
|
||||
}
|
||||
|
||||
private boolean contains(String uri, String nodeValue) {
|
||||
// check equal case
|
||||
if (nodeValue.equals(uri)) {
|
||||
return true;
|
||||
}
|
||||
// check aliases
|
||||
if (type.getContextAliases().containsKey(uri)) {
|
||||
if (type.getContextAliases().get(uri).stream().anyMatch(alias -> nodeValue.equals(alias))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// check versioning
|
||||
if (type.getContextVersionPatterns().containsKey(uri)) {
|
||||
if (type.getContextVersionPatterns().get(uri).stream().anyMatch(version -> nodeValue.matches(version))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static final String ID = ContextPropertyProbe.class.getSimpleName();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user