Search in sources :

Example 1 with Folder

use of org.eclipse.n4js.tests.codegen.Folder in project n4js by eclipse.

the class TestWorkspaceManager method createSimpleProject.

private Project createSimpleProject(String projectName, Map<String, ? extends CharSequence> modulesContents, Multimap<String, String> dependencies, ProjectKind projectKind) {
    if (projectName.equals(N4JS_RUNTIME) && (modulesContents == null || modulesContents.isEmpty())) {
        return N4JS_RUNTIME_FAKE;
    }
    ProjectType prjType = projectName.equals(N4JS_RUNTIME) ? ProjectType.RUNTIME_ENVIRONMENT : projectType;
    Project project = new Project(projectName, VENDOR, VENDOR_NAME, prjType);
    CharSequence customSourceFolderName = modulesContents.get(CFG_SOURCE_FOLDER);
    Folder sourceFolder = project.createSourceFolder(customSourceFolderName != null ? customSourceFolderName.toString() : DEFAULT_SOURCE_FOLDER);
    for (String moduleName : modulesContents.keySet()) {
        String contents = modulesContents.get(moduleName).toString();
        if (moduleName.equals(CFG_DEPENDENCIES)) {
            String[] allDeps = contents.split(",");
            for (String dependency : allDeps) {
                String dependencyTrimmed = dependency.trim();
                dependencies.put(projectName, dependencyTrimmed);
                project.addProjectDependency(dependencyTrimmed);
            }
        } else if (moduleName.equals(CFG_MAIN_MODULE)) {
            project.setMainModule(contents);
        } else if (moduleName.equals(CFG_SOURCE_FOLDER)) {
        // ignore (already processed above)
        } else if (moduleName.equals(N4JSGlobals.PACKAGE_JSON)) {
            project.setProjectDescriptionContent(contents);
        } else if (moduleName.startsWith(CFG_NODE_MODULES)) {
            int length = CFG_NODE_MODULES.length();
            int endIdx = moduleName.indexOf(NAME_DIVIDER, length);
            String nmName = moduleName.substring(length, endIdx < 0 ? moduleName.length() : endIdx);
            if (moduleName.equals(CFG_NODE_MODULES + N4JS_RUNTIME)) {
                project.addNodeModuleProject(N4JS_RUNTIME_FAKE);
                project.addProjectDependency(N4JS_RUNTIME_FAKE.getName());
            } else if (moduleName.indexOf(CFG_SRC, length) > 0) {
                int indexOfSrc = moduleName.indexOf(CFG_SRC);
                String nmModuleName = moduleName.substring(indexOfSrc + CFG_SRC.length());
                Project nmProject = project.getNodeModuleProject(nmName);
                if (nmProject == null) {
                    nmProject = new Project(nmName, VENDOR, VENDOR + "_name", prjType);
                    nmProject.createSourceFolder(DEFAULT_SOURCE_FOLDER);
                    project.addNodeModuleProject(nmProject);
                    project.addProjectDependency(nmProject.getName());
                }
                Folder nmSourceFolder = nmProject.getSourceFolders().iterator().next();
                createAndAddModule(contents, nmModuleName, nmSourceFolder);
            } else if (moduleName.indexOf(CFG_DEPENDENCIES, length) > 0) {
                Project nmProject = project.getNodeModuleProject(nmName);
                String[] allDeps = contents.split(",");
                for (String dependency : allDeps) {
                    String dependencyTrimmed = dependency.trim();
                    dependencies.put(nmName, dependencyTrimmed);
                    nmProject.addProjectDependency(dependencyTrimmed);
                }
            } else if (moduleName.indexOf(CFG_NODE_MODULES, length) > 0) {
                Project nmProject = project.getNodeModuleProject(nmName);
                int startIdx = moduleName.indexOf(CFG_NODE_MODULES, length) + CFG_NODE_MODULES.length();
                String nmnmName = moduleName.substring(startIdx);
                Project nmnmProject = new Project(nmnmName, VENDOR, VENDOR + "_name", prjType);
                nmnmProject.createSourceFolder(DEFAULT_SOURCE_FOLDER);
                nmProject.addNodeModuleProject(nmnmProject);
                nmProject.addProjectDependency(nmnmProject.getName());
            } else {
                throw new IllegalArgumentException("Unknown specifier: " + moduleName);
            }
        } else {
            if (moduleName.startsWith("#")) {
                throw new IllegalArgumentException("unknown reserved string: " + moduleName);
            }
            Folder moduleSpecificSourceFolder = sourceFolder;
            if (moduleName.startsWith("/")) {
                // use first segment as source folder
                int endOfFirstSegment = moduleName.indexOf("/", 1);
                String sourceFolderName = moduleName.subSequence(1, endOfFirstSegment).toString();
                moduleName = moduleName.substring(endOfFirstSegment + 1);
                moduleSpecificSourceFolder = project.createSourceFolder(sourceFolderName);
            }
            createAndAddModule(contents, moduleName, moduleSpecificSourceFolder);
        }
    }
    // apply default values
    if (N4JSGlobals.PROJECT_TYPES_REQUIRING_N4JS_RUNTIME.contains(project.getType())) {
        // add dependency to n4js-runtime (if not already present)
        project.addProjectDependency(N4JS_RUNTIME);
        // add fake n4js-runtime to node_modules folder (if not already present)
        if (projectKind == ProjectKind.TopLevel) {
            if (project.getNodeModuleProject(N4JS_RUNTIME) == null) {
                project.addNodeModuleProject(N4JS_RUNTIME_FAKE);
            }
        }
    }
    return project;
}
Also used : Project(org.eclipse.n4js.tests.codegen.Project) YarnWorkspaceProject(org.eclipse.n4js.tests.codegen.YarnWorkspaceProject) ProjectType(org.eclipse.n4js.packagejson.projectDescription.ProjectType) Folder(org.eclipse.n4js.tests.codegen.Folder)

Example 2 with Folder

use of org.eclipse.n4js.tests.codegen.Folder in project n4js by eclipse.

the class XtSetupParser method applyInlinedFileContents.

private static void applyInlinedFileContents(XtWorkspace workspace, Map<String, String> files) {
    if (workspace == null) {
        // nothing to do in this case
        return;
    }
    for (Project prj : workspace.getAllProjects()) {
        for (Folder srcFolder : prj.getSourceFolders()) {
            Iterable<OtherFile> allFiles = Iterables.concat(srcFolder.getModules(), srcFolder.getOtherFiles());
            for (OtherFile file : allFiles) {
                String mName = file.getNameWithExtension();
                if (file.getContents() == null) {
                    if (files.containsKey(mName)) {
                        String contents = files.get(mName);
                        file.setContents(contents);
                    } else {
                        throw new IllegalStateException(ERROR + "File not found: " + mName);
                    }
                }
            }
        }
    }
}
Also used : Project(org.eclipse.n4js.tests.codegen.Project) YarnWorkspaceProject(org.eclipse.n4js.tests.codegen.YarnWorkspaceProject) Folder(org.eclipse.n4js.tests.codegen.Folder) OtherFile(org.eclipse.n4js.tests.codegen.OtherFile)

Example 3 with Folder

use of org.eclipse.n4js.tests.codegen.Folder in project n4js by eclipse.

the class XtFileDataParser method createDefaultWorkspace.

static XtWorkspace createDefaultWorkspace(String fileName, String xtFileContent, XtSetupParseResult setupParseResult) {
    String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
    String moduleName = fileName.substring(0, fileName.length() - 1 - extension.length());
    Module xtFileModule = new Module(moduleName, extension);
    xtFileModule.setContents(xtFileContent);
    Folder srcFolder = new Folder(DEFAULT_SOURCE_FOLDER);
    srcFolder.addModule(xtFileModule);
    Project project = new Project(DEFAULT_PROJECT_NAME, VENDOR, VENDOR_NAME);
    project.addSourceFolder(srcFolder);
    project.setGenerateDts(setupParseResult.generateDts);
    for (String otherSrcFileName : setupParseResult.files.keySet()) {
        String otherExt = URIUtils.fileExtension(URIUtils.toFileUri(otherSrcFileName));
        String otherContent = setupParseResult.files.get(otherSrcFileName);
        String otherModuleName = otherSrcFileName.substring(0, otherSrcFileName.length() - otherExt.length() - 1);
        Module otherModule = new Module(otherModuleName, otherExt);
        otherModule.setContents(otherContent);
        srcFolder.addModule(otherModule);
    }
    XtWorkspace workspace = new XtWorkspace();
    workspace.addProject(project);
    workspace.moduleNameOfXtFile = fileName;
    return workspace;
}
Also used : Project(org.eclipse.n4js.tests.codegen.Project) XtWorkspace(org.eclipse.n4js.ide.tests.helper.server.xt.XtSetupParser.XtWorkspace) Module(org.eclipse.n4js.tests.codegen.Module) Folder(org.eclipse.n4js.tests.codegen.Folder)

Aggregations

Folder (org.eclipse.n4js.tests.codegen.Folder)3 Project (org.eclipse.n4js.tests.codegen.Project)3 YarnWorkspaceProject (org.eclipse.n4js.tests.codegen.YarnWorkspaceProject)2 XtWorkspace (org.eclipse.n4js.ide.tests.helper.server.xt.XtSetupParser.XtWorkspace)1 ProjectType (org.eclipse.n4js.packagejson.projectDescription.ProjectType)1 Module (org.eclipse.n4js.tests.codegen.Module)1 OtherFile (org.eclipse.n4js.tests.codegen.OtherFile)1