private Handler getSuiteHandler()

in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/antJUnit/AntJUnitXmlReportParser.java [46:161]


  private Handler getSuiteHandler() {
    return new Handler() {
      @Override
        public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
          final String name = reader.getAttribute("name");
          final String pack = reader.getAttribute("package");

          final String suiteName = (pack == null || name != null && name.startsWith(pack) ? "" : pack + ".") + name;
          myCallback.suiteFound(suiteName);

          return reader.visitChildren(
            elementsPath(new Handler() {
              @Override
              public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
                final String type = reader.getAttribute("type");
                final String message = reader.getAttribute("message");

                return reader.visitText(new TextHandler() {
                  public void setText(@NotNull final String text) {
                    myCallback.suiteFailureFound(suiteName, type, message, text.trim());
                  }
                });
              }
            }, "failure"),
            elementsPath(new Handler() {
              @Override
              public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
                final String type = reader.getAttribute("type");
                final String message = reader.getAttribute("message");

                return reader.visitText(new TextHandler() {
                  public void setText(@NotNull final String text) {
                    myCallback.suiteErrorFound(suiteName, type, message, text.trim());
                  }
                });
              }
            }, "error"),
            elementsPath(new TextHandler() {
              @Override
              public void setText(@NotNull final String text) {
                myCallback.suiteSystemOutFound(suiteName, text.trim());
              }
            }, "system-out"),
            elementsPath(new TextHandler() {
              @Override
              public void setText(@NotNull final String text) {
                myCallback.suiteSystemErrFound(suiteName, text.trim());
              }
            }, "system-err"),
            elementsPath(new Handler() {
              @Override
              public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
                final String name = reader.getAttribute("name");
                final String className = reader.getAttribute("classname");

                final TestData testData = new TestData();

                testData.setName((className == null || name != null && name.startsWith(className) ? "" : className + ".") + name);
                testData.setDuration(myDurationParser.parseTestDuration(reader.getAttribute("time")));
                testData.setExecuted(isExecuted(reader));

                return reader.visitChildren(
                  elementsPath(new Handler() {
                    @Override
                    public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
                      testData.setExecuted(true);
                      return processTestFailure(reader, testData);
                    }
                  }, "failure"),
                  elementsPath(new Handler() {
                    @Override
                    public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
                      return processTestFailure(reader, testData);
                    }
                  }, "error"),
                  elementsPath(new TextHandler() {
                    @Override
                    public void setText(@NotNull final String text) {
                      testData.setStdOut(text.trim());
                    }
                  }, "system-out"),
                  elementsPath(new TextHandler() {
                    public void setText(@NotNull final String text) {
                      testData.setStdErr(text.trim());
                    }
                  }, "system-err"),
                  elementsPath(new Handler() {
                    public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
                      testData.setExecuted(false);
                      return reader.noDeep();
                    }
                  }, "skipped"),
                  elementsPath(new TextHandler() {
                    @Override
                    public void setText(@NotNull final String text) {
                      testData.setDuration(myDurationParser.parseTestDuration(text.trim()));
                    }
                  }, "time")
                ).than(new XmlAction() {
                  @Override
                  public void apply() {
                    myCallback.testFound(testData);
                  }
                });
              }
            }, "testcase"),
            elementsPath(getSuiteHandler(), "testsuite")
          ).than(new XmlAction() {
            @Override
            public void apply() {
              myCallback.suiteFinished(suiteName);
            }
          });
        }
      };
  }