Search in sources :

Example 36 with Pom

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

the class ControllerOperationsImpl method getInstalledControllerMVCResponseTypes.

/**
 * This method gets all implementations of ControllerMVCResponseService
 * interface to be able to locate all installed ControllerMVCResponseService
 *
 * @return Map with responseTypes identifier and the
 *         ControllerMVCResponseService implementation
 */
public Map<String, ControllerMVCResponseService> getInstalledControllerMVCResponseTypes() {
    if (responseTypes.isEmpty()) {
        try {
            ServiceReference<?>[] references = this.context.getAllServiceReferences(ControllerMVCResponseService.class.getName(), null);
            for (ServiceReference<?> ref : references) {
                ControllerMVCResponseService responseTypeService = (ControllerMVCResponseService) this.context.getService(ref);
                boolean isInstalled = false;
                for (Pom module : getProjectOperations().getPoms()) {
                    if (responseTypeService.isInstalledInModule(module.getModuleName())) {
                        isInstalled = true;
                        break;
                    }
                }
                if (isInstalled) {
                    responseTypes.put(responseTypeService.getResponseType(), responseTypeService);
                }
            }
            return responseTypes;
        } catch (InvalidSyntaxException e) {
            LOGGER.warning("Cannot load ControllerMVCResponseService on ControllerOperationsImpl.");
            return null;
        }
    } else {
        return responseTypes;
    }
}
Also used : ControllerMVCResponseService(org.springframework.roo.addon.web.mvc.controller.addon.responses.ControllerMVCResponseService) InvalidSyntaxException(org.osgi.framework.InvalidSyntaxException) ServiceReference(org.osgi.framework.ServiceReference) Pom(org.springframework.roo.project.maven.Pom)

Example 37 with Pom

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

the class ThymeleafMetadataProviderImpl method getJasperReportsMap.

/**
 * Finds `JasperReportsExporter` for providing Metadata with its package.
 * This method is temporal as `JasperReportsExporter` should be moved to
 * other support project.
 */
public Map<String, JavaType> getJasperReportsMap() {
    if (this.jasperReportsExporterMap == null) {
        Map<String, JavaType> jasperReportsExporterMap = new HashMap<String, JavaType>();
        Collection<Pom> modules = getProjectOperations().getPoms();
        for (Pom module : modules) {
            Collection<JavaType> typesForModule = getTypeLocationService().getTypesForModule(module);
            for (JavaType type : typesForModule) {
                if (type.getSimpleTypeName().equals("JasperReportsExporter")) {
                    jasperReportsExporterMap.put("JasperReportsExporter", type);
                } else if (type.getSimpleTypeName().equals("JasperReportsCsvExporter")) {
                    jasperReportsExporterMap.put("JasperReportsCsvExporter", type);
                } else if (type.getSimpleTypeName().equals("JasperReportsPdfExporter")) {
                    jasperReportsExporterMap.put("JasperReportsPdfExporter", type);
                } else if (type.getSimpleTypeName().equals("JasperReportsXlsExporter")) {
                    jasperReportsExporterMap.put("JasperReportsXlsExporter", type);
                } else if (type.getSimpleTypeName().equals("ExportingErrorException")) {
                    // Get ExportingErrorException
                    jasperReportsExporterMap.put("ExportingErrorException", type);
                }
            }
        }
        this.jasperReportsExporterMap = new HashMap<String, JavaType>();
        this.jasperReportsExporterMap.putAll(jasperReportsExporterMap);
    }
    return this.jasperReportsExporterMap;
}
Also used : RooJavaType(org.springframework.roo.model.RooJavaType) JpaJavaType(org.springframework.roo.model.JpaJavaType) JavaType(org.springframework.roo.model.JavaType) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Pom(org.springframework.roo.project.maven.Pom)

Example 38 with Pom

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

the class WebFinderOperationsImpl method checkAndUseApplicationModule.

/**
 * Checks if module provided in package is an application module. If not, find an
 * application module and use it with default package.
 *
 * @param controllerPackage the provided JavaPackage to check
 * @return
 */
private JavaPackage checkAndUseApplicationModule(JavaPackage controllerPackage) {
    if (!typeLocationService.hasModuleFeature(projectOperations.getPomFromModuleName(controllerPackage.getModule()), ModuleFeatureName.APPLICATION)) {
        LOGGER.log(Level.WARNING, "Focused or specified module isn't an application module (containing a class " + "annotated with @SpringBootApplication). Looking for an application module and default package...");
        // Validate that project has at least one application module
        Validate.notEmpty(typeLocationService.getModuleNames(ModuleFeatureName.APPLICATION), "The project must have at least one application module to publish web finders.");
        // Get the first application module
        String moduleName = typeLocationService.getModuleNames(ModuleFeatureName.APPLICATION).iterator().next();
        Pom module = projectOperations.getPomFromModuleName(moduleName);
        controllerPackage = new JavaPackage(typeLocationService.getTopLevelPackageForModule(module).concat(".web"), moduleName);
    }
    return controllerPackage;
}
Also used : JavaPackage(org.springframework.roo.model.JavaPackage) Pom(org.springframework.roo.project.maven.Pom)

Example 39 with Pom

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

the class CacheOperationsImpl method setupCache.

@Override
public void setupCache(CacheProvider provider, String profile) {
    // Add spring-boot-starter-cache dependency
    List<Pom> modules = (List<Pom>) getTypeLocationService().getModules(ModuleFeatureName.APPLICATION);
    if (modules.size() == 0) {
        throw new RuntimeException(String.format("ERROR: Not found a module with %s feature", ModuleFeatureName.APPLICATION));
    }
    // Do the setup for each @SpringBootApplication module
    for (Pom module : modules) {
        addSpringCacheDependency(module);
    }
    // Add @EnableCache annotation to each application file
    Set<ClassOrInterfaceTypeDetails> applicationClasses = getTypeLocationService().findClassesOrInterfaceDetailsWithAnnotation(SpringJavaType.SPRING_BOOT_APPLICATION);
    for (ClassOrInterfaceTypeDetails applicationClass : applicationClasses) {
        if (applicationClass.getAnnotation(SpringJavaType.ENABLE_CACHING) == null) {
            ClassOrInterfaceTypeDetailsBuilder builder = new ClassOrInterfaceTypeDetailsBuilder(applicationClass);
            builder.addAnnotation(new AnnotationMetadataBuilder(SpringJavaType.ENABLE_CACHING));
            getTypeManagementService().createOrUpdateTypeOnDisk(builder.build());
        }
    }
    if (provider != null) {
        // Do setup of cache provider
        if (!provider.isInstalled()) {
            provider.setup(profile);
        }
    }
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) ClassOrInterfaceTypeDetailsBuilder(org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetailsBuilder) ClassOrInterfaceTypeDetails(org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetails) AnnotationMetadataBuilder(org.springframework.roo.classpath.details.annotations.AnnotationMetadataBuilder) Pom(org.springframework.roo.project.maven.Pom)

Example 40 with Pom

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

the class JavaTypeConverter method completeProjectSpecificPaths.

private void completeProjectSpecificPaths(final List<Completion> completions, final String existingData, final String optionContext) {
    if (!projectOperations.isFocusedProjectAvailable()) {
        return;
    }
    final Pom targetModule;
    final String heading;
    final String prefix;
    final String formattedPrefix;
    final String typeName;
    if (existingData.contains(MODULE_PATH_SEPARATOR)) {
        // Looking for a type in another module
        final String targetModuleName = existingData.substring(0, existingData.indexOf(MODULE_PATH_SEPARATOR));
        targetModule = projectOperations.getPomFromModuleName(targetModuleName);
        heading = "";
        prefix = targetModuleName + MODULE_PATH_SEPARATOR;
        formattedPrefix = decorate(targetModuleName + MODULE_PATH_SEPARATOR, FG_CYAN);
        typeName = StringUtils.substringAfterLast(existingData, MODULE_PATH_SEPARATOR);
    } else {
        // Looking for a type in the currently focused module
        targetModule = projectOperations.getFocusedModule();
        heading = targetModule.getModuleName();
        prefix = "";
        formattedPrefix = "";
        typeName = existingData;
    }
    final String topLevelPackage = typeLocationService.getTopLevelPackageForModule(targetModule);
    final String basePackage = resolveTopLevelPackageSymbol(typeName, topLevelPackage);
    addCompletionsForOtherModuleNames(completions, targetModule);
    if (!"pom".equals(targetModule.getPackaging())) {
        addCompletionsForTypesInTargetModule(completions, optionContext, targetModule, heading, prefix, formattedPrefix, topLevelPackage, basePackage);
    }
}
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