Example usage for org.apache.maven.project MavenProject getFile

List of usage examples for org.apache.maven.project MavenProject getFile

Introduction

In this page you can find the example usage for org.apache.maven.project MavenProject getFile.

Prototype

public File getFile() 

Source Link

Usage

From source file:org.jboss.maven.plugins.qstools.checkers.SameVersionChecker.java

License:Apache License

@Override
public Map<String, List<Violation>> check(MavenProject project, MavenSession mavenSession,
        List<MavenProject> reactorProjects, Log log) throws QSToolsException {
    try {/*from  w  w  w . java2s  . com*/
        Document doc = PositionalXMLReader.readXML(new FileInputStream(project.getFile()));
        Node versionNode = (Node) getxPath().evaluate("/project/version", doc, XPathConstants.NODE);
        if (versionNode == null) {
            rootVersion = project.getVersion();
        } else {
            rootVersion = versionNode.getTextContent();
        }
    } catch (Exception e) {
        throw new QSToolsException(e);
    }
    return super.check(project, mavenSession, reactorProjects, log);
}

From source file:org.jboss.maven.plugins.qstools.checkers.SameVersionChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    Node versionNode = (Node) getxPath().evaluate("/project/version", doc, XPathConstants.NODE);
    if (versionNode != null && !versionNode.getTextContent().equals(rootVersion)) {
        int lineNumber = XMLUtil.getLineNumberFromNode(versionNode);
        String msg = "This project uses a version [%s] different from the root version [%s]";
        addViolation(project.getFile(), results, lineNumber,
                String.format(msg, versionNode.getTextContent(), rootVersion));
    }//from  w w  w  .  j  a  v a 2 s  .co m
}

From source file:org.jboss.maven.plugins.qstools.common.ArtifactIdNameUtil.java

License:Apache License

public List<PomInformation> findAllIncorrectArtifactIdNames(List<MavenProject> reactorProjects, Rules rules)
        throws Exception {

    List<PomInformation> incorrectNames = new ArrayList<PomInformation>();

    try {/*  w  w w. j a  v  a 2  s.  c om*/
        File rootDirOfQuickstarts = getRootDirOfQuickstarts(reactorProjects.get(0));
        String artifactIdPrefix = rules.getArtifactIdPrefix();

        for (MavenProject subProject : reactorProjects) {

            Document doc = PositionalXMLReader.readXML(new FileInputStream(subProject.getFile()));

            String expectedArtifactId = createArtifactId(artifactIdPrefix, rootDirOfQuickstarts,
                    subProject.getBasedir());
            Node actualArtifactId = ((Node) xPath.evaluate("/project/artifactId", doc, XPathConstants.NODE));

            if (!expectedArtifactId.equals(actualArtifactId.getTextContent())) {

                int lineNumber = getLineNumberFromNode(actualArtifactId);
                incorrectNames.add(new PomInformation(subProject, lineNumber, expectedArtifactId,
                        actualArtifactId.getTextContent()));
            }

        }
        return incorrectNames;
    } catch (Exception e) {
        throw new QSToolsException(e);
    }
}

From source file:org.jboss.maven.plugins.qstools.common.UnusedPropertiesUtil.java

License:Apache License

public List<PomInformation> findUnusedProperties(List<MavenProject> reactorProjects, Rules rules)
        throws Exception {

    List<PomInformation> unusedPropertyInfo = new ArrayList<PomInformation>();
    Map<String, List<PomInformation>> declaredProperties = new HashMap<String, List<PomInformation>>();

    for (MavenProject mavenProject : reactorProjects) {
        Document doc = PositionalXMLReader.readXML(new FileInputStream(mavenProject.getFile()));
        NodeList propertiesNodes = (NodeList) xPath.evaluate("/project/properties/*", doc,
                XPathConstants.NODESET);
        NodeList allNodes = (NodeList) xPath.evaluate("//*", doc, XPathConstants.NODESET);
        // find all declared properties
        for (int x = 0; x < propertiesNodes.getLength(); x++) {
            Node property = propertiesNodes.item(x);
            String propertyName = property.getNodeName();
            int lineNumber = (Integer) property.getUserData(PositionalXMLReader.BEGIN_LINE_NUMBER_KEY_NAME);
            PomInformation pi = new PomInformation(mavenProject, lineNumber, property.getNodeName());
            if (declaredProperties.get(propertyName) == null) {
                declaredProperties.put(propertyName, new ArrayList<PomInformation>());
            }//w w  w . ja  v  a2 s.  c o m
            declaredProperties.get(propertyName).add(pi);
        }
        // find all uses for properties expression
        Pattern p = Pattern.compile("\\$\\{\\w+(.\\w+)*(-\\w+)*\\}");
        for (int x = 0; x < allNodes.getLength(); x++) {
            Node node = allNodes.item(x);
            String nodeContent = node.getTextContent();
            if (p.matcher(nodeContent).matches()) {
                String usedProperty = node.getTextContent().replaceAll("[${}]", "");
                usedProperties.add(usedProperty);
            }
        }
    }
    // search if all declared properties have been used
    for (String declared : declaredProperties.keySet()) {
        if (!declared.startsWith("project") && // Escape project configuration
                !rules.getIgnoredUnusedProperties().contains(declared) && // Escape ignored properties
                !usedProperties.contains(declared)) {

            unusedPropertyInfo.addAll(declaredProperties.get(declared));
        }
    }
    return unusedPropertyInfo;
}

From source file:org.jboss.maven.plugins.qstools.fixers.ArtifactIdNameFixer.java

License:Apache License

@Override
public void fix(MavenProject project, MavenSession mavenSession, List<MavenProject> reactorProjects, Log log)
        throws QSToolsException {

    try {/*from   ww  w.jav  a 2 s.  c  o m*/
        Rules rules = configurationProvider.getQuickstartsRules(project.getGroupId());
        List<ArtifactIdNameUtil.PomInformation> pomsWithInvalidArtifactIds = artifactIdNameUtil
                .findAllIncorrectArtifactIdNames(reactorProjects, rules);

        // Update each incorrect artifactId
        for (ArtifactIdNameUtil.PomInformation pi : pomsWithInvalidArtifactIds) {
            Document doc = PositionalXMLReader.readXML(new FileInputStream(pi.getProject().getFile()));
            Node artifactIdNode = (Node) xPath.evaluate("/project/artifactId", doc, XPathConstants.NODE);
            artifactIdNode.setTextContent(pi.getExpectedArtifactId());
            XMLUtil.writeXML(doc, pi.getProject().getFile());
        }

        // Update all the parents, to use the changed artifactId
        for (MavenProject subProject : reactorProjects) {
            Document doc = PositionalXMLReader.readXML(new FileInputStream(subProject.getFile()));
            Node parentArtifactIdNode = (Node) xPath.evaluate("/project/parent/artifactId", doc,
                    XPathConstants.NODE);
            if (parentArtifactIdNode != null && subProject.getParentFile() != null) {
                Document parentDoc = PositionalXMLReader
                        .readXML(new FileInputStream(subProject.getParentFile()));
                Node artifactIdNode = (Node) xPath.evaluate("/project/artifactId", parentDoc,
                        XPathConstants.NODE);

                if (!parentArtifactIdNode.getTextContent().equals(artifactIdNode.getTextContent())) {
                    parentArtifactIdNode.setTextContent(artifactIdNode.getTextContent());
                }
            }

            // Update each incorrect artifactId dependency
            for (ArtifactIdNameUtil.PomInformation pi : pomsWithInvalidArtifactIds) {
                // It can have more than one occurrence on the same file
                NodeList artfactIdNodes = (NodeList) xPath.evaluate(
                        "//artifactId[text()='" + pi.getActualArtifactId() + "']", doc, XPathConstants.NODESET);
                for (int x = 0; x < artfactIdNodes.getLength(); x++) {
                    Node artfactIdNode = artfactIdNodes.item(x);
                    if (artfactIdNode != null) {
                        artfactIdNode.setTextContent(pi.getExpectedArtifactId());
                    }

                }
            }
            XMLUtil.writeXML(doc, subProject.getFile());
        }
    } catch (Exception e) {
        throw new QSToolsException(e);
    }
}

From source file:org.jboss.maven.plugins.qstools.fixers.FinalNameFixer.java

License:Apache License

@Override
public void fixProject(MavenProject project, Document doc) throws Exception {

    String packaging = project.getPackaging();
    String expectedFinalName = getConfigurationProvider().getQuickstartsRules(project.getGroupId())
            .getFinalNamePatterns().get(packaging);

    Node finalNameNode = (Node) getxPath().evaluate("//finalName", doc, XPathConstants.NODE);
    String declaredFinalName = finalNameNode == null ? project.getBuild().getFinalName()
            : finalNameNode.getTextContent();

    if (expectedFinalName != null && !expectedFinalName.equals(declaredFinalName)) {

        Node buildNode = (Node) getxPath().evaluate("/project/build", doc, XPathConstants.NODE);
        if (buildNode == null) {
            buildNode = doc.createElement("build");
            Node projectNode = (Node) getxPath().evaluate("/project", doc, XPathConstants.NODE);
            projectNode.appendChild(doc.createTextNode("    "));
            projectNode.appendChild(buildNode);
        }/*w  ww.j  a  v a  2  s. c  o m*/

        finalNameNode = (Node) getxPath().evaluate("/project/build/finalName", doc, XPathConstants.NODE);
        if (finalNameNode == null) {
            finalNameNode = doc.createElement("finalName");
            buildNode.insertBefore(finalNameNode, buildNode.getFirstChild());
        }

        finalNameNode.setTextContent(expectedFinalName);
    }

    XMLUtil.writeXML(doc, project.getFile());
}

From source file:org.jboss.maven.plugins.qstools.fixers.LicenseFixer.java

License:Apache License

@Override
public void fixProject(MavenProject project, Document doc) throws Exception {
    Node licenseURL = (Node) getxPath().evaluate("/project/licenses/license/url", doc, XPathConstants.NODE);
    if (licenseURL == null || !licenseURL.getTextContent().contains("apache")) {
        Node licensesElement = (Node) getxPath().evaluate("/project/licenses", doc, XPathConstants.NODE);
        // Create <licenses/> if it doesn't exists
        if (licensesElement == null) {
            licensesElement = doc.createElement("licenses");
            Element projectElement = (Element) getxPath().evaluate("/project", doc, XPathConstants.NODE);
            projectElement.appendChild(doc.createTextNode("\n\n    "));
            projectElement.appendChild(licensesElement);
        }//from w  ww. j a v a2s .c  o m
        Element license = doc.createElement("license");

        Element name = doc.createElement("name");
        name.setTextContent("Apache License, Version 2.0");

        Element distribution = doc.createElement("distribution");
        distribution.setTextContent("repo");

        Element url = doc.createElement("url");
        url.setTextContent("http://www.apache.org/licenses/LICENSE-2.0.html");

        license.appendChild(name);
        license.appendChild(distribution);
        license.appendChild(url);

        licensesElement.appendChild(doc.createTextNode("\n        ")); // LF + 8 spaces
        licensesElement.appendChild(license);
    }
    XMLUtil.writeXML(doc, project.getFile());
}

From source file:org.jboss.maven.plugins.qstools.fixers.MavenCompilerFixer.java

License:Apache License

@Override
public void fixProject(MavenProject project, Document doc) throws Exception {

    String compilerSource = getConfigurationProvider().getQuickstartsRules(project.getGroupId())
            .getExpectedCompilerSource();

    ensurePropertiesElementExists(doc);//from  ww  w. j a v  a 2  s  . c  om
    ensurePropertySet(doc, "maven.compiler.target", compilerSource);
    ensurePropertySet(doc, "maven.compiler.source", compilerSource);

    Node compilerNode = (Node) getxPath().evaluate("//plugin[artifactId='maven-compiler-plugin']", doc,
            XPathConstants.NODE);
    Node compilerConfigNode = (Node) getxPath()
            .evaluate("//plugin[artifactId='maven-compiler-plugin']/./configuration", doc, XPathConstants.NODE);

    if (compilerNode != null && compilerConfigNode == null) {
        XMLUtil.removePreviousWhiteSpace(compilerNode);
        compilerNode.getParentNode().removeChild(compilerNode);
    } else if (compilerConfigNode != null) {
        removeConfigIfPresent(compilerConfigNode, "target");
        removeConfigIfPresent(compilerConfigNode, "source");
    }

    // Get comment over the element
    Node commentNode = null;
    if (compilerNode != null && compilerNode.getPreviousSibling() != null
            && compilerNode.getPreviousSibling() != null
            && compilerNode.getPreviousSibling().getPreviousSibling().getNodeType() == Node.COMMENT_NODE) {
        commentNode = compilerNode.getPreviousSibling().getPreviousSibling();
    }

    // Remove compiler plugin if it doesn't have any configuration
    if (compilerConfigNode != null && !XMLUtil.hasChildElements(compilerConfigNode)) {
        // If the element had a comment, remove it too.
        if (commentNode != null) {
            XMLUtil.removePreviousWhiteSpace(commentNode);
            commentNode.getParentNode().removeChild(commentNode);
        }
        XMLUtil.removePreviousWhiteSpace(compilerNode);
        compilerNode.getParentNode().removeChild(compilerNode);
    }

    XMLUtil.writeXML(doc, project.getFile());
}

From source file:org.jboss.maven.plugins.qstools.fixers.PomElementOrderFixer.java

License:Apache License

@Override
public void fixProject(MavenProject project, Document doc) throws Exception {
    List<String> pomElementsOrder = getConfigurationProvider().getQuickstartsRules(project.getGroupId())
            .getPomOrder();//from w  w w  .j  a  v  a2 s. c om
    Map<String, Node> elementsFound = pomOrderUtil.getElementsOrder(project, doc, pomElementsOrder);
    List<String> elementsList = new ArrayList<String>(elementsFound.keySet());

    for (String element : elementsList) {
        Node commentNode = null;
        Node elementNode = (Node) getxPath().evaluate("/project/" + element, doc, XPathConstants.NODE);
        // Get comment over the element
        if (elementNode.getPreviousSibling() != null
                && elementNode.getPreviousSibling().getNodeType() == Node.COMMENT_NODE) {
            commentNode = elementNode.getPreviousSibling();
        }
        for (String anotherElement : elementsList) {
            if (elementsList.indexOf(element) < elementsList.indexOf(anotherElement)) {

                Node anotherElementNode = (Node) getxPath().evaluate("/project/" + anotherElement, doc,
                        XPathConstants.NODE);
                XMLUtil.removePreviousWhiteSpace(anotherElementNode);
                anotherElementNode.getParentNode().insertBefore(elementNode, anotherElementNode);

                // If the element had a comment, move it too.
                if (commentNode != null) {
                    XMLUtil.removePreviousWhiteSpace(commentNode);
                    elementNode.getParentNode().insertBefore(commentNode, elementNode);
                }
            }
        }
    }
    XMLUtil.writeXML(doc, project.getFile());
    doc = PositionalXMLReader.readXML(new FileInputStream(project.getFile()));
    for (String element : elementsList) {
        Node commentNode = null;
        Node elementNode = (Node) getxPath().evaluate("/project/" + element, doc, XPathConstants.NODE);
        if (elementNode.getChildNodes().getLength() > 1) {
            commentNode = null;
            // Get comment over the element
            if (elementNode.getPreviousSibling() != null
                    && elementNode.getPreviousSibling().getPreviousSibling() != null && elementNode
                            .getPreviousSibling().getPreviousSibling().getNodeType() == Node.COMMENT_NODE) {
                commentNode = elementNode.getPreviousSibling().getPreviousSibling();
                XMLUtil.removePreviousWhiteSpace(commentNode);
                elementNode.getParentNode().insertBefore(doc.createTextNode("\n\n    "), commentNode);
            } else {
                XMLUtil.removePreviousWhiteSpace(elementNode);
                elementNode.getParentNode().insertBefore(doc.createTextNode("\n\n    "), elementNode);
            }
        }
    }
    XMLUtil.writeXML(doc, project.getFile());
}

From source file:org.jboss.maven.plugins.qstools.fixers.PomNameFixer.java

License:Apache License

@Override
public void fixProject(MavenProject project, Document doc) throws Exception {
    Rules rules = getConfigurationProvider().getQuickstartsRules(project.getGroupId());
    String pattern = pomNameUtil.getExpectedPattern(project, rules);
    if (!pattern.equals(project.getName())) {
        Node nameNode = (Node) getxPath().evaluate("/project/name", doc, XPathConstants.NODE);
        if (nameNode == null) {
            nameNode = doc.createElement("name");
            Node projectNode = (Node) getxPath().evaluate("/project", doc, XPathConstants.NODE);
            projectNode.appendChild(doc.createTextNode("    "));
            projectNode.appendChild(nameNode);
        }/*  w ww.  j a va 2 s  .c o  m*/
        nameNode.setTextContent(pattern);
        XMLUtil.writeXML(doc, project.getFile());
    }

}