Add JsonSchemasProbe class for validating JSON schema and its aliases
This commit is contained in:
parent
ec4bc4fb41
commit
3e3d26c987
@ -0,0 +1,62 @@
|
|||||||
|
package org.oneedtech.inspect.vc.probe;
|
||||||
|
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
|
import org.oneedtech.inspect.core.probe.Outcome;
|
||||||
|
import org.oneedtech.inspect.core.probe.Probe;
|
||||||
|
import org.oneedtech.inspect.core.probe.RunContext;
|
||||||
|
import org.oneedtech.inspect.core.probe.json.JsonSchemaProbe;
|
||||||
|
import org.oneedtech.inspect.core.report.ReportItem;
|
||||||
|
import org.oneedtech.inspect.core.report.ReportItems;
|
||||||
|
import org.oneedtech.inspect.schema.SchemaKey;
|
||||||
|
import org.oneedtech.inspect.vc.VerifiableCredential;
|
||||||
|
|
||||||
|
public class JsonSchemasProbe extends Probe<VerifiableCredential> {
|
||||||
|
private SchemaKey key;
|
||||||
|
|
||||||
|
public JsonSchemasProbe(SchemaKey key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportItems run(VerifiableCredential cred, RunContext ctx) throws Exception {
|
||||||
|
|
||||||
|
// main run
|
||||||
|
JsonSchemaProbe jsonSchemaProbe = new JsonSchemaProbe(key);
|
||||||
|
ReportItems report = jsonSchemaProbe.run(cred.getJson(), ctx);
|
||||||
|
|
||||||
|
if (report.asBoolean()) {
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
|
// aliases run
|
||||||
|
if (key.getAliases().isPresent()) {
|
||||||
|
for (SchemaKey alias : key.getAliases().get()) {
|
||||||
|
jsonSchemaProbe = new JsonSchemaProbe(alias);
|
||||||
|
ReportItems newReport = jsonSchemaProbe.run(cred.getJson(), ctx);
|
||||||
|
|
||||||
|
if (newReport.asBoolean()) {
|
||||||
|
// return old errors as warnings
|
||||||
|
return new ReportItems(
|
||||||
|
StreamSupport.stream(report.spliterator(), false)
|
||||||
|
.map(
|
||||||
|
item ->
|
||||||
|
new ReportItem.Builder(this)
|
||||||
|
.msg(
|
||||||
|
"JSON-LD schema validation succeed. However, Plain JSON schema"
|
||||||
|
+ " validation failed, so it could have an impact when working with"
|
||||||
|
+ " plain JSON platforms. Error:"
|
||||||
|
+ item.getMessage())
|
||||||
|
.loc(item.getLocation())
|
||||||
|
.outcome(Outcome.WARNING)
|
||||||
|
.build())
|
||||||
|
.collect(Collectors.toUnmodifiableList()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user