• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

devonfw / IDEasy / 11060995883

26 Sep 2024 10:09PM UTC coverage: 66.053% (-0.05%) from 66.107%
11060995883

Pull #652

github

web-flow
Merge 3cdc5b3b2 into ad80f56d2
Pull Request #652: #593: #651: #564: #439: fixed bugs, refactored tool dependencies

2312 of 3848 branches covered (60.08%)

Branch coverage included in aggregate %.

6078 of 8854 relevant lines covered (68.65%)

3.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

74.51
cli/src/main/java/com/devonfw/tools/ide/tool/tomcat/Tomcat.java
1
package com.devonfw.tools.ide.tool.tomcat;
2

3
import java.io.IOException;
4
import java.nio.file.Files;
5
import java.nio.file.Path;
6
import java.util.Set;
7
import javax.xml.parsers.DocumentBuilder;
8
import javax.xml.parsers.DocumentBuilderFactory;
9
import javax.xml.parsers.ParserConfigurationException;
10

11
import org.w3c.dom.Document;
12
import org.w3c.dom.Element;
13
import org.w3c.dom.NodeList;
14
import org.xml.sax.SAXException;
15

16
import com.devonfw.tools.ide.common.Tag;
17
import com.devonfw.tools.ide.context.IdeContext;
18
import com.devonfw.tools.ide.process.EnvironmentContext;
19
import com.devonfw.tools.ide.process.ProcessErrorHandling;
20
import com.devonfw.tools.ide.process.ProcessMode;
21
import com.devonfw.tools.ide.process.ProcessResult;
22
import com.devonfw.tools.ide.tool.LocalToolCommandlet;
23
import com.devonfw.tools.ide.tool.ToolCommandlet;
24
import com.devonfw.tools.ide.tool.ToolInstallation;
25
import com.devonfw.tools.ide.version.GenericVersionRange;
26

27
/**
28
 * {@link ToolCommandlet} for <a href="https://tomcat.apache.org/">tomcat</a>.
29
 */
30
public class Tomcat extends LocalToolCommandlet {
31

32
  /**
33
   * The constructor.
34
   *
35
   * @param context the {@link IdeContext}.
36
   */
37
  public Tomcat(IdeContext context) {
38

39
    super(context, "tomcat", Set.of(Tag.JAVA));
6✔
40
  }
1✔
41

42
  @Override
43
  public ProcessResult runTool(ProcessMode processMode, GenericVersionRange toolVersion, ProcessErrorHandling errorHandling, String... args) {
44

45
    if (args.length == 0) {
3!
46
      args = new String[] { "start" };
7✔
47
    }
48
    ProcessResult processResult = super.runTool(processMode, toolVersion, errorHandling, args);
7✔
49
    if (processResult.isSuccessful() && (args[0].equals("start") || args[0].equals("run"))) {
9!
50
      printTomcatPort();
2✔
51
    }
52
    return processResult;
2✔
53
  }
54

55
  @Override
56
  protected void setEnvironment(EnvironmentContext environmentContext, ToolInstallation toolInstallation, boolean extraInstallation) {
57

58
    super.setEnvironment(environmentContext, toolInstallation, extraInstallation);
5✔
59
    environmentContext.withEnvVar("CATALINA_HOME", toolInstallation.linkDir().toString());
7✔
60
  }
1✔
61

62
  @Override
63
  public String getBinaryName() {
64

65
    return "catalina.sh";
2✔
66
  }
67

68
  private void printTomcatPort() {
69

70
    String portNumber = findTomcatPort();
3✔
71
    if (!portNumber.isEmpty()) {
3!
72
      this.context.info("Tomcat is running at localhost on HTTP port {}:", portNumber);
10✔
73
      this.context.info("http://localhost:{}", portNumber);
10✔
74
    }
75
  }
1✔
76

77
  private String findTomcatPort() {
78

79
    String portNumber = "";
2✔
80
    Path tomcatPropertiesPath = getToolPath().resolve("conf/server.xml");
5✔
81
    if (Files.exists(tomcatPropertiesPath)) {
5!
82
      try {
83
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2✔
84
        DocumentBuilder builder = factory.newDocumentBuilder();
3✔
85
        Document document = builder.parse(tomcatPropertiesPath.toFile());
5✔
86
        NodeList connectorNodes = document.getElementsByTagName("Connector");
4✔
87
        if (connectorNodes.getLength() > 0) {
3!
88
          Element ConnectorElement = (Element) connectorNodes.item(0);
5✔
89
          portNumber = ConnectorElement.getAttribute("port");
4✔
90
        } else {
1✔
91
          this.context.warning("Port element not found in server.xml");
×
92
        }
93
      } catch (ParserConfigurationException | IOException | SAXException e) {
×
94
        this.context.error(e);
×
95
      }
1✔
96
    }
97
    if (portNumber.isEmpty()) {
3!
98
      this.context.warning("Could not find HTTP port in {}", tomcatPropertiesPath);
×
99
    }
100
    return portNumber;
2✔
101
  }
102

103
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc