package net.unit8.waitt.feature.dashboard; import org.w3c.dom.Document; import org.w3c.dom.Node; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathFactory; import java.io.File; import java.io.FileInputStream; import java.util.logging.Logger; /** * @author kawasima */ public class AdminConfig { private static final Logger LOG = Logger.getLogger(AdminConfig.class.getName()); private boolean adminAvailable = false; private int adminPort = 1192; public void read() { File pomFile = new File("pom.xml"); if (pomFile.exists()) { try { DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = documentBuilder.parse(new FileInputStream(pomFile)); XPathFactory factory = XPathFactory.newInstance(); XPath xpath = factory.newXPath(); String location = "//features/feature/artifactId[text() = 'waitt-admin']"; Node waittAdmin = (Node) xpath.evaluate(location, doc, XPathConstants.NODE); if (waittAdmin != null) { adminAvailable = true; Node adminPortNode = (Node) xpath.evaluate("//configuration/admin.port", waittAdmin.getParentNode(), XPathConstants.NODE); if (adminPortNode != null) { String portStr = adminPortNode.getTextContent().trim(); adminPort = Integer.parseInt(portStr); } } } catch(Exception e) { LOG.info("read pom failure. Disabled an admin feature."); } } } public int getAdminPort() { return adminPort; } public boolean isAdminAvailable() { return adminAvailable; } }