use of org.eclipse.che.api.project.server.type.ProjectTypeDef in project che by eclipse.
the class ProjectServiceTest method testCreateProject.
@Test
public void testCreateProject() throws Exception {
final String projectName = "new_project";
final String projectType = "testCreateProject";
phRegistry.register(createProjectHandlerFor(projectName, projectType));
Map<String, List<String>> headers = new HashMap<>();
headers.put("Content-Type", singletonList(APPLICATION_JSON));
ProjectTypeDef pt = new ProjectTypeDef("testCreateProject", "my project type", true, false) {
{
addConstantDefinition("new_project_attribute", "attr description", "to be or not to be");
}
};
ptRegistry.registerProjectType(pt);
Map<String, List<String>> attributeValues = new LinkedHashMap<>();
attributeValues.put("new_project_attribute", singletonList("to be or not to be"));
final ProjectConfigDto newProjectConfig = DtoFactory.getInstance().createDto(ProjectConfigDto.class).withPath("/new_project").withName(projectName).withDescription("new project").withType(projectType).withAttributes(attributeValues).withSource(DtoFactory.getInstance().createDto(SourceStorageDto.class));
projects.add(newProjectConfig);
ContainerResponse response = launcher.service(POST, "http://localhost:8080/api/project", "http://localhost:8080/api", headers, DtoFactory.getInstance().toJson(newProjectConfig).getBytes(Charset.defaultCharset()), null);
assertEquals(response.getStatus(), 200, "Error: " + response.getEntity());
ProjectConfigDto result = (ProjectConfigDto) response.getEntity();
assertNotNull(result);
assertEquals(result.getName(), projectName);
assertEquals(result.getPath(), "/new_project");
assertEquals(result.getDescription(), newProjectConfig.getDescription());
assertEquals(result.getType(), newProjectConfig.getType());
assertEquals(result.getType(), projectType);
Map<String, List<String>> attributes = result.getAttributes();
assertNotNull(attributes);
assertEquals(attributes.size(), 1);
assertEquals(attributes.get("new_project_attribute"), singletonList("to be or not to be"));
validateProjectLinks(result);
RegisteredProject project = pm.getProject("new_project");
assertNotNull(project);
//ProjectConfig config = project.getConfig();
assertEquals(project.getDescription(), newProjectConfig.getDescription());
assertEquals(project.getProjectType().getId(), newProjectConfig.getType());
String attributeVal = project.getAttributeEntries().get("new_project_attribute").getString();
assertNotNull(attributeVal);
assertEquals(attributeVal, "to be or not to be");
assertNotNull(project.getBaseFolder().getChild("a"));
assertNotNull(project.getBaseFolder().getChild("b"));
assertNotNull(project.getBaseFolder().getChild("test.txt"));
}
use of org.eclipse.che.api.project.server.type.ProjectTypeDef in project che by eclipse.
the class ProjectManager method estimateProject.
/**
* Estimates if the folder can be treated as a project of particular type
*
* @param path to the folder
* @param projectTypeId project type to estimate
*
* @return resolution object
* @throws ServerException
* @throws NotFoundException
*/
public ProjectTypeResolution estimateProject(String path, String projectTypeId) throws ServerException, NotFoundException {
final ProjectTypeDef projectType = projectTypeRegistry.getProjectType(projectTypeId);
if (projectType == null) {
throw new NotFoundException("Project Type to estimate needed.");
}
final FolderEntry baseFolder = asFolder(path);
if (baseFolder == null) {
throw new NotFoundException("Folder not found: " + path);
}
return projectType.resolveSources(baseFolder);
}
use of org.eclipse.che.api.project.server.type.ProjectTypeDef in project che by eclipse.
the class ProjectServiceTest method testEstimateProject.
@Test
public void testEstimateProject() throws Exception {
VirtualFile root = pm.getProjectsRoot().getVirtualFile();
//getVirtualFileSystemRegistry().getProvider("my_ws").getMountPoint(false).getRoot();
root.createFolder("testEstimateProjectGood").createFolder("check");
root.createFolder("testEstimateProjectBad");
String errMessage = "File /check not found";
final ValueProviderFactory vpf1 = projectFolder -> new ReadonlyValueProvider() {
@Override
public List<String> getValues(String attributeName) throws ValueStorageException {
VirtualFileEntry file;
try {
file = projectFolder.getChild("check");
} catch (ServerException e) {
throw new ValueStorageException(e.getMessage());
}
if (file == null) {
throw new ValueStorageException(errMessage);
}
return (List<String>) singletonList("checked");
}
};
ProjectTypeDef pt = new ProjectTypeDef("testEstimateProjectPT", "my testEstimateProject type", true, false) {
{
addVariableDefinition("calculated_attribute", "attr description", true, vpf1);
addVariableDefinition("my_property_1", "attr description", true);
addVariableDefinition("my_property_2", "attr description", false);
}
};
ptRegistry.registerProjectType(pt);
ContainerResponse response = launcher.service(GET, format("http://localhost:8080/api/project/estimate/%s?type=%s", "testEstimateProjectGood", "testEstimateProjectPT"), "http://localhost:8080/api", null, null, null);
assertEquals(response.getStatus(), 200, "Error: " + response.getEntity());
//noinspection unchecked
SourceEstimation result = (SourceEstimation) response.getEntity();
assertTrue(result.isMatched());
assertEquals(result.getAttributes().size(), 1);
assertEquals(result.getAttributes().get("calculated_attribute").get(0), "checked");
// if project not matched
response = launcher.service(GET, format("http://localhost:8080/api/project/estimate/%s?type=%s", "testEstimateProjectBad", "testEstimateProjectPT"), "http://localhost:8080/api", null, null, null);
assertEquals(response.getStatus(), 200, "Error: " + response.getEntity());
//noinspection unchecked
result = (SourceEstimation) response.getEntity();
assertFalse(result.isMatched());
assertEquals(result.getAttributes().size(), 0);
}
use of org.eclipse.che.api.project.server.type.ProjectTypeDef in project che by eclipse.
the class ProjectServiceTest method setUp.
@BeforeMethod
public void setUp() throws Exception {
WorkspaceProjectsSyncer workspaceHolder = new WsAgentTestBase.TestWorkspaceHolder();
File root = new File(FS_PATH);
if (root.exists()) {
IoUtil.deleteRecursive(root);
}
root.mkdir();
File indexDir = new File(INDEX_PATH);
if (indexDir.exists()) {
IoUtil.deleteRecursive(indexDir);
}
indexDir.mkdir();
Set<PathMatcher> filters = new HashSet<>();
filters.add(path -> {
for (java.nio.file.Path pathElement : path) {
if (pathElement == null || EXCLUDE_SEARCH_PATH.equals(pathElement.toString())) {
return true;
}
}
return false;
});
FSLuceneSearcherProvider sProvider = new FSLuceneSearcherProvider(indexDir, filters);
vfsProvider = new LocalVirtualFileSystemProvider(root, sProvider);
final EventService eventService = new EventService();
// PTs for test
ProjectTypeDef chuck = new ProjectTypeDef("chuck_project_type", "chuck_project_type", true, false) {
{
addConstantDefinition("x", "attr description", new AttributeValue(Arrays.asList("a", "b")));
}
};
Set<ProjectTypeDef> projectTypes = new HashSet<>();
final LocalProjectType myProjectType = new LocalProjectType("my_project_type", "my project type");
projectTypes.add(myProjectType);
projectTypes.add(new LocalProjectType("module_type", "module type"));
projectTypes.add(chuck);
ptRegistry = new ProjectTypeRegistry(projectTypes);
phRegistry = new ProjectHandlerRegistry(new HashSet<>());
importerRegistry = new ProjectImporterRegistry(Collections.<ProjectImporter>emptySet());
projectServiceLinksInjector = new ProjectServiceLinksInjector();
projectRegistry = new ProjectRegistry(workspaceHolder, vfsProvider, ptRegistry, phRegistry, eventService);
projectRegistry.initProjects();
FileWatcherNotificationHandler fileWatcherNotificationHandler = new DefaultFileWatcherNotificationHandler(vfsProvider);
FileTreeWatcher fileTreeWatcher = new FileTreeWatcher(root, new HashSet<>(), fileWatcherNotificationHandler);
pm = new ProjectManager(vfsProvider, ptRegistry, projectRegistry, phRegistry, importerRegistry, fileWatcherNotificationHandler, fileTreeWatcher, workspaceHolder, fileWatcherManager);
pm.initWatcher();
HttpJsonRequest httpJsonRequest = mock(HttpJsonRequest.class, new SelfReturningAnswer());
//List<ProjectConfigDto> modules = new ArrayList<>();
projects = new ArrayList<>();
addMockedProjectConfigDto(myProjectType, "my_project");
when(httpJsonRequestFactory.fromLink(any())).thenReturn(httpJsonRequest);
when(httpJsonRequest.request()).thenReturn(httpJsonResponse);
when(httpJsonResponse.asDto(WorkspaceDto.class)).thenReturn(usersWorkspaceMock);
when(usersWorkspaceMock.getConfig()).thenReturn(workspaceConfigMock);
when(workspaceConfigMock.getProjects()).thenReturn(projects);
// verify(httpJsonRequestFactory).fromLink(eq(DtoFactory.newDto(Link.class)
// .withHref(apiEndpoint + "/workspace/" + workspace + "/project")
// .withMethod(PUT)));
DependencySupplierImpl dependencies = new DependencySupplierImpl();
dependencies.addInstance(ProjectTypeRegistry.class, ptRegistry);
dependencies.addInstance(UserDao.class, userDao);
dependencies.addInstance(ProjectManager.class, pm);
dependencies.addInstance(ProjectImporterRegistry.class, importerRegistry);
dependencies.addInstance(ProjectHandlerRegistry.class, phRegistry);
dependencies.addInstance(EventService.class, eventService);
dependencies.addInstance(ProjectServiceLinksInjector.class, projectServiceLinksInjector);
ResourceBinder resources = new ResourceBinderImpl();
ProviderBinder providers = ProviderBinder.getInstance();
EverrestProcessor processor = new EverrestProcessor(new EverrestConfiguration(), dependencies, new RequestHandlerImpl(new RequestDispatcher(resources), providers), null);
launcher = new ResourceLauncher(processor);
processor.addApplication(new Application() {
@Override
public Set<Class<?>> getClasses() {
return java.util.Collections.<Class<?>>singleton(ProjectService.class);
}
@Override
public Set<Object> getSingletons() {
return new HashSet<>(Arrays.asList(new ApiExceptionMapper()));
}
});
ApplicationContext.setCurrent(anApplicationContext().withProviders(providers).build());
env = org.eclipse.che.commons.env.EnvironmentContext.getCurrent();
}
use of org.eclipse.che.api.project.server.type.ProjectTypeDef in project che by eclipse.
the class ProjectTypesTest method testGetMixinsShouldReturnProjectTypeConstraintException.
//@Test(expectedExceptions = ProjectTypeConstraintException.class)
public void testGetMixinsShouldReturnProjectTypeConstraintException() throws Exception {
String otherPrimaryId = generate("projectType-", 3);
Set<ProjectTypeDef> pts = new HashSet<>();
pts.add(new PrimaryType());
pts.add(new PrimaryType(otherPrimaryId, generate("projectType-", 5)));
pts.add(new PersistedMixin());
ProjectTypeRegistry reg = new ProjectTypeRegistry(pts);
List<RegisteredProject.Problem> problems = new ArrayList<>();
new ProjectTypes(generate("projectPath-", 5), PrimaryType.PRIMARY_ID, Arrays.asList(PersistedMixin.PERSISTED_MIXIN_ID, otherPrimaryId), reg, problems);
assertEquals(problems.size(), 1);
assertEquals(problems.get(0).code, 12);
}
Aggregations