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;
}
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);
}
}
}
}
}
}
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;
}
Aggregations