Package com.google.jstestdriver.idea.execution.tree

Source Code of com.google.jstestdriver.idea.execution.tree.BrowserErrorNode

package com.google.jstestdriver.idea.execution.tree;

import com.google.jstestdriver.idea.execution.tc.TC;
import com.google.jstestdriver.idea.execution.tc.TCAttribute;
import com.google.jstestdriver.idea.execution.tc.TCMessage;
import com.google.jstestdriver.idea.util.EscapeUtils;
import com.google.jstestdriver.idea.util.JsErrorMessage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.io.File;
import java.util.Arrays;
import java.util.List;

/**
* @author Sergey Simonchik
*/
public class BrowserErrorNode extends AbstractNodeWithParent<BrowserErrorNode> {

  private final JsErrorMessage myErrorMessage;

  private BrowserErrorNode(@NotNull BrowserNode parent, @Nullable JsErrorMessage errorMessage) {
    super(errorMessage != null ? errorMessage.getErrorName() : "Error", parent);
    myErrorMessage = errorMessage;
  }

  @NotNull
  @Override
  public BrowserNode getParent() {
    return (BrowserNode) super.getParent();
  }

  @Override
  public String getProtocolId() {
    return "browserError";
  }

  @Override
  public String getLocationPath() {
    if (myErrorMessage == null) {
      return null;
    }
    Integer columnNumber = myErrorMessage.getColumnNumber();
    List<String> components = Arrays.asList(
      myErrorMessage.getFileWithError().getAbsolutePath(),
      String.valueOf(myErrorMessage.getLineNumber()),
      columnNumber != null ? columnNumber.toString() : ""
    );
    return EscapeUtils.join(components, ':');
  }

  @NotNull
  @Override
  public TCMessage createStartedMessage() {
    TCMessage message = TC.newBrowserErrorStartedMessage(this);
    ConfigNode configNode = getParent().getParent();
    String basePath = configNode.getAbsoluteBasePath();
    if (basePath != null) {
      message.addAttribute(TCAttribute.NODE_TYPE, "browserError");
      message.addAttribute(TCAttribute.NODE_ARGS, basePath);
    }
    return message;
  }

  @NotNull
  public static BrowserErrorNode newBrowserErrorNode(@NotNull BrowserNode parent,
                                                     @Nullable String pathToJsFileWithError,
                                                     @Nullable String errorMessage) {
    ConfigNode configNode = parent.getParent();
    String basePath = configNode.getAbsoluteBasePath();
    final JsErrorMessage parsedErrorMessage;
    if (basePath != null && errorMessage != null) {
      parsedErrorMessage = JsErrorMessage.parseFromText(errorMessage, new File(basePath));
    } else {
      parsedErrorMessage = null;
    }
    JsErrorMessage result = null;
    if (pathToJsFileWithError == null) {
      result = parsedErrorMessage;
    } else {
      File file = new File(pathToJsFileWithError);
      if (file.isAbsolute() && file.isFile()) {
        if (parsedErrorMessage != null && parsedErrorMessage.getFileWithError().equals(file)) {
          result = parsedErrorMessage;
        } else {
          result = new JsErrorMessage(file, 1, null, false, null, -1, -1);
        }
      }
    }
    return new BrowserErrorNode(parent, result);
  }

}
TOP

Related Classes of com.google.jstestdriver.idea.execution.tree.BrowserErrorNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.