protected List getRootHandlers()

in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/pmd/PmdXmlReportParser.java [26:60]


  protected List<XmlHandler> getRootHandlers() {
    return new ORHandler(elementsPath(new Handler() {
      public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
        return reader.visitChildren(elementsPath(new Handler() {
          public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
            final String file = reader.getAttribute("name");

            return reader.visitChildren(elementsPath(new Handler() {
              public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
                final String rule = reader.getAttribute("rule");
                final String ruleset = reader.getAttribute("ruleset");
                // 'beginline' and 'priority' MUST be evaluated here (before visitText)
                // because reader may be changed later (when reading text, underlying buffer could be changed)
                final int beginline = getInt(reader.getAttribute("beginline"));
                final int priority = getInt(reader.getAttribute("priority"));

                myCallback.reportInspectionType(new InspectionTypeResult(rule, rule, ruleset, ruleset));

                return reader.visitText(new TextHandler() {
                  public void setText(@NotNull final String text) {
                    myCallback.reportInspection(new InspectionResult(file, rule, text.trim(), beginline, priority));
                  }
                });
              }
            }, "violation"));
          }
        }, "file"));
      }
    }, "pmd")) {
      @Override
      protected void finished(final boolean matched) {
        if (!matched) myCallback.error("Unexpected report format: \"pmd\" root element missing. Please check PMD sources for the supported XML Schema");
      }
    }.asList();
  }