Search in sources :

Example 16 with Pom

use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.

the class AbstractProjectOperations method addFilter.

public void addFilter(final String moduleName, final Filter filter) {
    Validate.isTrue(isProjectAvailable(moduleName), "Filter modification prohibited at this time");
    Validate.notNull(filter, "Filter required");
    final Pom pom = getPomFromModuleName(moduleName);
    Validate.notNull(pom, "The pom is not available, so filter addition cannot be performed");
    if (filter == null || pom.isFilterRegistered(filter)) {
        return;
    }
    final Document document = XmlUtils.readXml(fileManager.getInputStream(pom.getPath()));
    final Element root = document.getDocumentElement();
    final String descriptionOfChange;
    final Element buildElement = XmlUtils.findFirstElement("/project/build", root);
    final Element existingFilter = XmlUtils.findFirstElement("filters/filter['" + filter.getValue() + "']", buildElement);
    if (existingFilter == null) {
        // No such filter; add it
        final Element filtersElement = DomUtils.createChildIfNotExists("filters", buildElement, document);
        filtersElement.appendChild(XmlUtils.createTextElement(document, "filter", filter.getValue()));
        descriptionOfChange = highlight(ADDED + " filter") + " '" + filter.getValue() + "'";
    } else {
        existingFilter.setTextContent(filter.getValue());
        descriptionOfChange = highlight(UPDATED + " filter") + " '" + filter.getValue() + "'";
    }
    fileManager.createOrUpdateTextFileIfRequired(pom.getPath(), XmlUtils.nodeToString(document), descriptionOfChange, false);
}
Also used : Element(org.w3c.dom.Element) Document(org.w3c.dom.Document) Pom(org.springframework.roo.project.maven.Pom)

Example 17 with Pom

use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.

the class AbstractProjectOperations method removeRepository.

private void removeRepository(final String moduleName, final Repository repository, final String path) {
    Validate.isTrue(isProjectAvailable(moduleName), "Repository modification prohibited at this time");
    Validate.notNull(repository, "Repository required");
    final Pom pom = getPomFromModuleName(moduleName);
    Validate.notNull(pom, "The pom is not available, so repository removal cannot be performed");
    if ("pluginRepository".equals(path)) {
        if (!pom.isPluginRepositoryRegistered(repository)) {
            return;
        }
    } else {
        if (!pom.isRepositoryRegistered(repository)) {
            return;
        }
    }
    final Document document = XmlUtils.readXml(fileManager.getInputStream(pom.getPath()));
    final Element root = document.getDocumentElement();
    String descriptionOfChange = "";
    for (final Element candidate : XmlUtils.findElements(path, root)) {
        if (repository.equals(new Repository(candidate))) {
            candidate.getParentNode().removeChild(candidate);
            descriptionOfChange = highlight(REMOVED + " repository") + " " + repository.getUrl();
        // We stay in the loop just in case it was in the POM more than
        // once
        }
    }
    fileManager.createOrUpdateTextFileIfRequired(pom.getPath(), XmlUtils.nodeToString(document), descriptionOfChange, false);
}
Also used : Element(org.w3c.dom.Element) Document(org.w3c.dom.Document) Pom(org.springframework.roo.project.maven.Pom)

Example 18 with Pom

use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.

the class AbstractProjectOperations method updateProjectType.

public void updateProjectType(final String moduleName, final ProjectType projectType) {
    Validate.notNull(projectType, "Project type required");
    final Pom pom = getPomFromModuleName(moduleName);
    Validate.notNull(pom, "The pom is not available, so the project type cannot be changed");
    final Document document = XmlUtils.readXml(fileManager.getInputStream(pom.getPath()));
    final Element packaging = DomUtils.createChildIfNotExists("packaging", document.getDocumentElement(), document);
    if (packaging.getTextContent().equals(projectType.getType())) {
        return;
    }
    packaging.setTextContent(projectType.getType());
    final String descriptionOfChange = highlight(UPDATED + " project type") + " to " + projectType.getType();
    fileManager.createOrUpdateTextFileIfRequired(pom.getPath(), XmlUtils.nodeToString(document), descriptionOfChange, false);
}
Also used : Element(org.w3c.dom.Element) Document(org.w3c.dom.Document) Pom(org.springframework.roo.project.maven.Pom)

Example 19 with Pom

use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.

the class MavenPathResolvingStrategy method getPath.

private File getPath(final LogicalPath logicalPath) {
    final Pom pom = pomManagementService.getPomFromModuleName(logicalPath.getModule());
    final File moduleRoot = getModuleRoot(logicalPath.getModule(), pom);
    final String pathRelativeToPom = logicalPath.getPathRelativeToPom(pom);
    return new File(moduleRoot, pathRelativeToPom);
}
Also used : File(java.io.File) Pom(org.springframework.roo.project.maven.Pom)

Example 20 with Pom

use of org.springframework.roo.project.maven.Pom in project spring-roo by spring-projects.

the class MavenProjectMetadataProvider method get.

public MetadataItem get(final String metadataId) {
    Validate.isTrue(ProjectMetadata.isValid(metadataId), "Unexpected metadata request '%s' for this provider", metadataId);
    // Just rebuild on demand. We always do this as we expect
    // MetadataService to cache on our behalf
    final Pom pom = pomManagementService.getPomFromModuleName(ProjectMetadata.getModuleName(metadataId));
    // Read the file, if it is available
    if (pom == null || !fileManager.exists(pom.getPath())) {
        return null;
    }
    return new ProjectMetadata(pom);
}
Also used : Pom(org.springframework.roo.project.maven.Pom)

Aggregations

Pom (org.springframework.roo.project.maven.Pom)86 Element (org.w3c.dom.Element)19 JavaType (org.springframework.roo.model.JavaType)16 Document (org.w3c.dom.Document)16 Test (org.junit.Test)14 ArrayList (java.util.ArrayList)10 ClassOrInterfaceTypeDetails (org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetails)9 ClassOrInterfaceTypeDetailsBuilder (org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetailsBuilder)9 AnnotationMetadataBuilder (org.springframework.roo.classpath.details.annotations.AnnotationMetadataBuilder)9 Dependency (org.springframework.roo.project.Dependency)9 RooJavaType (org.springframework.roo.model.RooJavaType)7 InvalidSyntaxException (org.osgi.framework.InvalidSyntaxException)5 ServiceReference (org.osgi.framework.ServiceReference)5 ControllerMVCResponseService (org.springframework.roo.addon.web.mvc.controller.addon.responses.ControllerMVCResponseService)5 JavaPackage (org.springframework.roo.model.JavaPackage)5 List (java.util.List)4 Plugin (org.springframework.roo.project.Plugin)4 Completion (org.springframework.roo.shell.Completion)4 HashMap (java.util.HashMap)3 DataOnDemandCreatorProvider (org.springframework.roo.addon.test.providers.DataOnDemandCreatorProvider)3