/*
   * Deploy and undeploy quickstart on running server
   */
  protected void deployUndeployQuickstart(Quickstart qstart, String serverName) {
    new ConsoleView().clearConsole();
    ProjectExplorer explorer = new ProjectExplorer();

    findDeployableProjects(qstart, explorer);

    ServersView serversView = new ServersView();
    serversView.open();
    String fullServerName = getServerFullName(serversView.getServers(), serverName);
    Server server = serversView.getServer(fullServerName);

    for (String deployableProjectName : qstart.getDeployableProjectNames()) {
      try {
        // deploy
        deployProject(deployableProjectName, explorer);
        // check deploy status
        checkDeployedProject(qstart, fullServerName);
        // undeploy
        unDeployModule(
            qstart.getName().equals("template") ? "QUICKSTART_NAME" : qstart.getName(), server);
      } catch (CoreLayerException ex) {
        new DefaultShell("Server Error");
        new OkButton().click();
      }
    }
  }
  /**
   * Checks whether is project deployed properly.
   *
   * @param projectName
   * @param serverNameLabel
   */
  public void checkDeployedProject(Quickstart qstart, String serverNameLabel) {
    if (!qstart.getName().contains("ejb-timer")
        && !qstart.getName().contains("cluster-ha-singleton")) {
      new WaitWhile(new JobIsRunning());
      new WaitUntil(new ConsoleHasNoChange(TimePeriod.LONG), TimePeriod.VERY_LONG);
    }
    JBossServerView serversView = new JBossServerView();
    serversView.open();
    String moduleName = qstart.getName().equals("template") ? "QUICKSTART_NAME" : qstart.getName();
    JBossServerModule module =
        (JBossServerModule)
            serversView
                .getServer(serverNameLabel)
                .getModule(new RegexMatcher(".*" + moduleName + ".*")); // cannot
    // be
    // used
    // projectName
    // -
    // issues
    // with
    // parent
    // projects
    if (new ContextMenu("Show In", "Web Browser").isEnabled()) {
      module.openWebPage();

      final BrowserEditor browser = new BrowserEditor(new RegexMatcher(".*"));
      try {
        new WaitUntil(new BrowserIsnotEmpty(browser));
      } catch (WaitTimeoutExpiredException e) {
        // try to refresh browser and wait one more time.
        browser.refreshPage();
        new WaitUntil(new BrowserIsnotEmpty(browser));
      }

      // Now the browser should not be empty. Let's check for error
      // messages
      // (strings like "404")
      checkBrowserForErrorPage(browser);
      assertNotEquals("", browser.getText());
      new DefaultEditor().close();
    }
    checkConsoleForException();
    checkServerViewForStatus(moduleName, serverNameLabel);
  }
 private void importTestUtilsIfNeeded(Quickstart qstart) {
   for (String error : ExamplesOperator.getInstance().getAllErrors()) {
     if (error.contains("Missing artifact org.javaee7:test-utils")) {
       Quickstart testUtils =
           new Quickstart(
               "test-utils",
               qstart.getPath().getAbsolutePath().replace(qstart.getName(), "test-utils"));
       importQuickstart(testUtils);
       break;
     }
     if (error.contains("Missing artifact org.javaee7:util")) {
       Quickstart testUtils =
           new Quickstart(
               "util", qstart.getPath().getAbsolutePath().replace(qstart.getName(), "test-utils"));
       importQuickstart(testUtils);
       break;
     }
   }
 }
 private void findDeployableProjects(Quickstart qstart, ProjectExplorer explorer) {
   explorer.activate();
   for (Project project : explorer.getProjects()) {
     explorer.getProject(project.getName()).select();
     try {
       if (new ContextMenu("Run As", "1 Run on Server").isEnabled()) {
         qstart.addDeployableProjectName(project.getName());
       }
       new WizardDialog().finish();
     } catch (CoreLayerException ex) {
       continue; // non deployable project
     }
   }
 }
 protected void importQuickstart(Quickstart quickstart) throws NoProjectException {
   ExtendedMavenImportWizard mavenImportWizard = new ExtendedMavenImportWizard();
   mavenImportWizard.open();
   MavenImportWizardFirstPage wizPage = new MavenImportWizardFirstPage();
   try {
     wizPage.setRootDirectory(quickstart.getPath().getAbsolutePath());
   } catch (WaitTimeoutExpiredException e) {
     cleanupShells();
     throw new NoProjectException();
   }
   try {
     mavenImportWizard.finish();
   } catch (MavenImportWizardException e) {
     for (String error : e.getErrors()) {
       reporter.addError(quickstart, error);
     }
   }
 }