@Override
  public void validate(
      final Processor<FullData, FullData> processor,
      final ProcessingReport report,
      final MessageBundle bundle,
      final FullData data)
      throws ProcessingException {
    final SchemaTree tree = data.getSchema();
    final JsonPointer schemaPointer = tree.getPointer();
    final JsonNode schemas = tree.getNode().get(keyword);
    final int size = schemas.size();
    final ObjectNode fullReport = FACTORY.objectNode();

    int nrSuccess = 0;
    ListProcessingReport subReport;
    JsonPointer ptr;
    FullData newData;

    for (int index = 0; index < size; index++) {
      subReport = new ListProcessingReport(report.getLogLevel(), LogLevel.FATAL);
      ptr = schemaPointer.append(JsonPointer.of(keyword, index));
      newData = data.withSchema(tree.setPointer(ptr));
      processor.process(subReport, newData);
      fullReport.put(ptr.toString(), subReport.asJson());
      if (subReport.isSuccess()) nrSuccess++;
    }

    if (nrSuccess == 0)
      report.error(
          newMsg(data, bundle, "err.common.schema.noMatch")
              .putArgument("nrSchemas", size)
              .put("reports", fullReport));
  }
Beispiel #2
0
 private static void ensureEmailUnique(Resource user, ProcessingReport aReport) {
   String aEmail = user.get("mbox_sha1sum").toString();
   if ((!mBaseRepository
       .getResourcesByContent("Person", "mbox_sha1sum", aEmail, true)
       .isEmpty())) {
     ProcessingMessage message = new ProcessingMessage();
     message.setMessage("This e-mail address is already registered");
     ObjectNode instance = new ObjectNode(JsonNodeFactory.instance);
     instance.put("pointer", "/mbox_sha1sum");
     message.put("instance", instance);
     try {
       aReport.error(message);
     } catch (ProcessingException e) {
       e.printStackTrace();
     }
   }
 }