protected List getRootHandlers()

in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/pmdCpd/PmdCpdXmlReportParser.java [29:75]


  protected List<XmlHandler> getRootHandlers() {
    return new ORHandler(elementsPath(
      new Handler() {
        public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
          myCallback.startDuplicates();

          return reader.visitChildren(
            elementsPath(new Handler() {
              public XmlReturn processElement(@NotNull XmlElementInfo reader) {
                final DuplicationResult duplicationResult
                  = new DuplicationResult(getInt(reader.getAttribute("lines")), getInt(reader.getAttribute("tokens")));

                return reader.visitChildren(
                  elementsPath(new TextHandler() {
                    public void setText(@NotNull String s) {
                      duplicationResult.setHash(s.trim().hashCode());
                    }
                  }, "codefragment"),

                  elementsPath(new Handler() {
                    public XmlReturn processElement(@NotNull XmlElementInfo reader) {
                      duplicationResult.addFragment(new DuplicatingFragment(getRelativePath(reader.getAttribute("path")), getInt(reader.getAttribute("line"))));
                      return reader.noDeep();
                    }
                  }, "file")
                ).than(new XmlAction() {
                  public void apply() {
                    duplicationResult.setFragmentHashes();
                    myCallback.reportDuplicate(duplicationResult);
                  }
                });
              }
            }, "duplication")
          ).than(new XmlAction() {
            public void apply() {
              myCallback.finishDuplicates();
            }
          });
        }
      },
      "pmd-cpd")) {
      @Override
      protected void finished(final boolean matched) {
        if (!matched) myCallback.error("Unexpected report format: root \"pmd-cpd\" element not present. Please check PMD CPD sources for the supported XML Schema");
      }
    }.asList();
  }