Search in sources :

Example 1 with CtUsedService

use of spoon.reflect.declaration.CtUsedService in project spoon by INRIA.

the class JDTTreeBuilderHelper method createModule.

/**
 * Creates an entire object CtModule from a module declaration.
 * @return a CtModule
 */
CtModule createModule(ModuleDeclaration moduleDeclaration) {
    CtModule module = jdtTreeBuilder.getFactory().Module().getOrCreate(new String(moduleDeclaration.moduleName));
    module.setIsOpenModule(moduleDeclaration.isOpen());
    jdtTreeBuilder.getContextBuilder().enter(module, moduleDeclaration);
    if (moduleDeclaration.requires != null && moduleDeclaration.requires.length > 0) {
        List<CtModuleRequirement> moduleRequirements = new ArrayList<>();
        for (RequiresStatement requiresStatement : moduleDeclaration.requires) {
            moduleRequirements.add(this.createModuleRequirement(requiresStatement));
        }
        module.setRequiredModules(moduleRequirements);
    }
    if (moduleDeclaration.exports != null && moduleDeclaration.exports.length > 0) {
        List<CtPackageExport> moduleExports = new ArrayList<>();
        for (ExportsStatement exportsStatement : moduleDeclaration.exports) {
            moduleExports.add(this.createModuleExport(exportsStatement));
        }
        module.setExportedPackages(moduleExports);
    }
    if (moduleDeclaration.opens != null && moduleDeclaration.opens.length > 0) {
        List<CtPackageExport> moduleOpens = new ArrayList<>();
        for (OpensStatement opensStatement : moduleDeclaration.opens) {
            moduleOpens.add(this.createModuleExport(opensStatement));
        }
        module.setOpenedPackages(moduleOpens);
    }
    if (moduleDeclaration.uses != null && moduleDeclaration.uses.length > 0) {
        List<CtUsedService> consumedServices = new ArrayList<>();
        for (UsesStatement consumedService : moduleDeclaration.uses) {
            consumedServices.add(this.createUsedService(consumedService));
        }
        module.setUsedServices(consumedServices);
    }
    if (moduleDeclaration.services != null && moduleDeclaration.services.length > 0) {
        List<CtProvidedService> moduleProvidedServices = new ArrayList<>();
        for (ProvidesStatement providesStatement : moduleDeclaration.services) {
            moduleProvidedServices.add(this.createModuleProvidedService(providesStatement));
        }
        module.setProvidedServices(moduleProvidedServices);
    }
    module.setPosition(this.jdtTreeBuilder.getPositionBuilder().buildPosition(moduleDeclaration.declarationSourceStart, moduleDeclaration.declarationSourceEnd));
    return module;
}
Also used : OpensStatement(org.eclipse.jdt.internal.compiler.ast.OpensStatement) CtProvidedService(spoon.reflect.declaration.CtProvidedService) RequiresStatement(org.eclipse.jdt.internal.compiler.ast.RequiresStatement) ArrayList(java.util.ArrayList) CtModuleRequirement(spoon.reflect.declaration.CtModuleRequirement) CtModule(spoon.reflect.declaration.CtModule) CtUsedService(spoon.reflect.declaration.CtUsedService) ProvidesStatement(org.eclipse.jdt.internal.compiler.ast.ProvidesStatement) CtPackageExport(spoon.reflect.declaration.CtPackageExport) UsesStatement(org.eclipse.jdt.internal.compiler.ast.UsesStatement) ExportsStatement(org.eclipse.jdt.internal.compiler.ast.ExportsStatement)

Example 2 with CtUsedService

use of spoon.reflect.declaration.CtUsedService in project spoon by INRIA.

the class JDTTreeBuilderHelper method createUsedService.

CtUsedService createUsedService(UsesStatement usesStatement) {
    CtTypeReference typeReference = this.jdtTreeBuilder.references.getTypeReference(usesStatement.serviceInterface);
    CtUsedService usedService = this.jdtTreeBuilder.getFactory().Module().createUsedService(typeReference);
    usedService.setPosition(this.jdtTreeBuilder.getPositionBuilder().buildPosition(usesStatement.sourceStart, usesStatement.sourceEnd));
    return usedService;
}
Also used : CtTypeReference(spoon.reflect.reference.CtTypeReference) CtUsedService(spoon.reflect.declaration.CtUsedService)

Example 3 with CtUsedService

use of spoon.reflect.declaration.CtUsedService in project spoon by INRIA.

the class DefaultCoreFactory method createUsedService.

@Override
public CtUsedService createUsedService() {
    CtUsedService ctUsedService = new CtUsedServiceImpl();
    ctUsedService.setFactory(getMainFactory());
    return ctUsedService;
}
Also used : CtUsedServiceImpl(spoon.support.reflect.declaration.CtUsedServiceImpl) CtUsedService(spoon.reflect.declaration.CtUsedService)

Example 4 with CtUsedService

use of spoon.reflect.declaration.CtUsedService in project spoon by INRIA.

the class TestModule method testDirectiveOrders.

@Test
public void testDirectiveOrders() {
    // contract: module directive should be ordered the same way as in the original file
    final Launcher launcher = new Launcher();
    launcher.getEnvironment().setNoClasspath(true);
    launcher.getEnvironment().setComplianceLevel(9);
    launcher.addInputResource(MODULE_RESOURCES_PATH + "/module_with_comments/module-info.java");
    launcher.buildModel();
    assertEquals(2, launcher.getModel().getAllModules().size());
    CtModule module = launcher.getFactory().Module().getModule("module_with_comments");
    assertNotNull(module);
    List<CtModuleDirective> moduleDirectives = module.getModuleDirectives();
    assertEquals(3, moduleDirectives.size());
    assertTrue(moduleDirectives.get(0) instanceof CtModuleRequirement);
    assertTrue(moduleDirectives.get(1) instanceof CtProvidedService);
    assertTrue(moduleDirectives.get(2) instanceof CtUsedService);
}
Also used : CtProvidedService(spoon.reflect.declaration.CtProvidedService) Launcher(spoon.Launcher) CtModuleRequirement(spoon.reflect.declaration.CtModuleRequirement) CtModule(spoon.reflect.declaration.CtModule) CtModuleDirective(spoon.reflect.declaration.CtModuleDirective) CtUsedService(spoon.reflect.declaration.CtUsedService) Test(org.junit.Test)

Example 5 with CtUsedService

use of spoon.reflect.declaration.CtUsedService in project spoon by INRIA.

the class CtModuleImpl method setUsedServices.

@Override
public <T extends CtModule> T setUsedServices(List<CtUsedService> consumedServices) {
    if (consumedServices == null || consumedServices.isEmpty()) {
        return (T) this;
    }
    List<CtUsedService> usedServices = getUsedServices();
    getFactory().getEnvironment().getModelChangeListener().onListDelete(this, CtRole.SERVICE_TYPE, this.moduleDirectives, new ArrayList<>(usedServices));
    this.moduleDirectives.removeAll(usedServices);
    for (CtUsedService consumedService : consumedServices) {
        this.addModuleDirective(consumedService);
    }
    return (T) this;
}
Also used : CtUsedService(spoon.reflect.declaration.CtUsedService)

Aggregations

CtUsedService (spoon.reflect.declaration.CtUsedService)7 CtModule (spoon.reflect.declaration.CtModule)4 CtModuleRequirement (spoon.reflect.declaration.CtModuleRequirement)4 CtProvidedService (spoon.reflect.declaration.CtProvidedService)4 Test (org.junit.Test)3 Launcher (spoon.Launcher)3 CtPackageExport (spoon.reflect.declaration.CtPackageExport)2 ArrayList (java.util.ArrayList)1 ExportsStatement (org.eclipse.jdt.internal.compiler.ast.ExportsStatement)1 OpensStatement (org.eclipse.jdt.internal.compiler.ast.OpensStatement)1 ProvidesStatement (org.eclipse.jdt.internal.compiler.ast.ProvidesStatement)1 RequiresStatement (org.eclipse.jdt.internal.compiler.ast.RequiresStatement)1 UsesStatement (org.eclipse.jdt.internal.compiler.ast.UsesStatement)1 CtComment (spoon.reflect.code.CtComment)1 CtModuleDirective (spoon.reflect.declaration.CtModuleDirective)1 CtModuleReference (spoon.reflect.reference.CtModuleReference)1 CtTypeReference (spoon.reflect.reference.CtTypeReference)1 CtUsedServiceImpl (spoon.support.reflect.declaration.CtUsedServiceImpl)1