Search in sources :

Example 1 with MavenProject

use of org.eclipse.che.plugin.maven.server.core.project.MavenProject in project che by eclipse.

the class MavenProjectManager method update.

public void update(List<IProject> projects, boolean recursive) {
    if (projects.isEmpty()) {
        return;
    }
    mavenNotifier.start();
    UpdateState state = new UpdateState();
    Deque<MavenProject> stack = new LinkedList<>();
    for (IProject project : projects) {
        MavenProject mavenProject = findMavenProject(project);
        if (mavenProject != null) {
            internalUpdate(mavenProject, findParentProject(mavenProject), false, recursive, state, stack);
        } else {
            internalAddMavenProject(project, recursive, state, stack);
        }
    }
    mavenNotifier.stop();
    state.fireUpdate();
}
Also used : MavenProject(org.eclipse.che.plugin.maven.server.core.project.MavenProject) LinkedList(java.util.LinkedList) IProject(org.eclipse.core.resources.IProject)

Example 2 with MavenProject

use of org.eclipse.che.plugin.maven.server.core.project.MavenProject in project che by eclipse.

the class MavenProjectManager method findDependentProjects.

public List<MavenProject> findDependentProjects(List<MavenProject> projects) {
    readLock.lock();
    try {
        List<MavenProject> result = new ArrayList<>();
        Set<MavenKey> mavenKeys = projects.stream().map(MavenProject::getMavenKey).collect(Collectors.toSet());
        Set<String> paths = projects.stream().map(project -> project.getProject().getFullPath().toOSString()).collect(Collectors.toSet());
        for (MavenProject project : projectToMavenProjectMap.values()) {
            boolean isAdd = false;
            for (String path : project.getModulesPath()) {
                if (paths.contains(path)) {
                    isAdd = true;
                    break;
                }
            }
            if (!isAdd) {
                for (MavenArtifact artifact : project.getDependencies()) {
                    if (contains(mavenKeys, artifact.getArtifactId(), artifact.getGroupId(), artifact.getVersion())) {
                        isAdd = true;
                        break;
                    }
                }
            }
            if (isAdd) {
                result.add(project);
            }
        }
        return result;
    } finally {
        readLock.unlock();
    }
}
Also used : MavenServerManager(org.eclipse.che.plugin.maven.server.MavenServerManager) MavenWrapperManager(org.eclipse.che.plugin.maven.server.MavenWrapperManager) Proxy(java.lang.reflect.Proxy) Inject(com.google.inject.Inject) HashMap(java.util.HashMap) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) MavenArtifact(org.eclipse.che.maven.data.MavenArtifact) Deque(java.util.Deque) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) IProject(org.eclipse.core.resources.IProject) IWorkspace(org.eclipse.core.resources.IWorkspace) Map(java.util.Map) LinkedList(java.util.LinkedList) Set(java.util.Set) MavenServerWrapper(org.eclipse.che.plugin.maven.server.MavenServerWrapper) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) MavenProjectModifications(org.eclipse.che.plugin.maven.server.core.project.MavenProjectModifications) Provider(com.google.inject.Provider) MavenKey(org.eclipse.che.maven.data.MavenKey) List(java.util.List) Lock(java.util.concurrent.locks.Lock) MavenProject(org.eclipse.che.plugin.maven.server.core.project.MavenProject) MavenWorkspaceCache(org.eclipse.che.maven.data.MavenWorkspaceCache) Collections(java.util.Collections) Singleton(com.google.inject.Singleton) MavenTerminal(org.eclipse.che.maven.server.MavenTerminal) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) MavenKey(org.eclipse.che.maven.data.MavenKey) MavenProject(org.eclipse.che.plugin.maven.server.core.project.MavenProject) ArrayList(java.util.ArrayList) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) MavenArtifact(org.eclipse.che.maven.data.MavenArtifact)

Example 3 with MavenProject

use of org.eclipse.che.plugin.maven.server.core.project.MavenProject in project che by eclipse.

the class MavenProjectManager method updateChild.

private boolean updateChild(MavenProject parentProject, MavenProject module) {
    MavenProject oldParent = findParentProject(module);
    if (oldParent == parentProject) {
        return false;
    }
    writeLock.lock();
    try {
        if (oldParent == null) {
            rootProjects.remove(module);
        } else {
            removeModule(oldParent, module);
        }
        if (parentProject == null) {
            rootProjects.add(module);
        } else {
            addModule(parentProject, module);
        }
    } finally {
        writeLock.unlock();
    }
    return false;
}
Also used : MavenProject(org.eclipse.che.plugin.maven.server.core.project.MavenProject)

Example 4 with MavenProject

use of org.eclipse.che.plugin.maven.server.core.project.MavenProject in project che by eclipse.

the class MavenServerService method reconcilePom.

@GET
@Path("pom/reconcile")
@ApiOperation(value = "Reconcile pom.xml file")
@ApiResponses({ @ApiResponse(code = 200, message = "OK") })
@Produces("application/json")
public List<Problem> reconcilePom(@ApiParam(value = "The paths to pom.xml file which need to be reconciled") @QueryParam("pompath") String pomPath) {
    VirtualFileEntry entry = null;
    List<Problem> result = new ArrayList<>();
    try {
        entry = cheProjectManager.getProjectsRoot().getChild(pomPath);
        if (entry == null) {
            return result;
        }
        Model.readFrom(entry.getVirtualFile());
        org.eclipse.che.api.vfs.Path path = entry.getPath();
        String pomContent = entry.getVirtualFile().getContentAsString();
        MavenProject mavenProject = mavenProjectManager.findMavenProject(ResourcesPlugin.getWorkspace().getRoot().getProject(path.getParent().toString()));
        if (mavenProject == null) {
            return result;
        }
        List<MavenProjectProblem> problems = mavenProject.getProblems();
        int start = pomContent.indexOf("<project ") + 1;
        int end = start + "<project ".length();
        List<Problem> problemList = problems.stream().map(mavenProjectProblem -> DtoFactory.newDto(Problem.class).withError(true).withSourceStart(start).withSourceEnd(end).withMessage(mavenProjectProblem.getDescription())).collect(Collectors.toList());
        result.addAll(problemList);
    } catch (ServerException | ForbiddenException | IOException e) {
        LOG.error(e.getMessage(), e);
    } catch (XMLTreeException exception) {
        Throwable cause = exception.getCause();
        if (cause != null && cause instanceof SAXParseException) {
            result.add(createProblem(entry, (SAXParseException) cause));
        }
    }
    return result;
}
Also used : MavenWrapperManager(org.eclipse.che.plugin.maven.server.MavenWrapperManager) EclipseWorkspaceProvider(org.eclipse.che.plugin.maven.server.core.EclipseWorkspaceProvider) ResourcesPlugin(org.eclipse.core.resources.ResourcesPlugin) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) ProjectRegistry(org.eclipse.che.api.project.server.ProjectRegistry) Inject(com.google.inject.Inject) VirtualFileEntry(org.eclipse.che.api.project.server.VirtualFileEntry) XMLTreeException(org.eclipse.che.commons.xml.XMLTreeException) MavenProjectProblem(org.eclipse.che.maven.data.MavenProjectProblem) LoggerFactory(org.slf4j.LoggerFactory) Path(javax.ws.rs.Path) ApiParam(io.swagger.annotations.ApiParam) MavenWorkspace(org.eclipse.che.plugin.maven.server.core.MavenWorkspace) ApiResponses(io.swagger.annotations.ApiResponses) ArrayList(java.util.ArrayList) ApiOperation(io.swagger.annotations.ApiOperation) Document(org.eclipse.jface.text.Document) MavenProgressNotifier(org.eclipse.che.plugin.maven.server.core.MavenProgressNotifier) QueryParam(javax.ws.rs.QueryParam) IProject(org.eclipse.core.resources.IProject) IWorkspace(org.eclipse.core.resources.IWorkspace) Model(org.eclipse.che.ide.maven.tools.Model) BadLocationException(org.eclipse.jface.text.BadLocationException) DtoFactory(org.eclipse.che.dto.server.DtoFactory) ClasspathManager(org.eclipse.che.plugin.maven.server.core.classpath.ClasspathManager) Logger(org.slf4j.Logger) POST(javax.ws.rs.POST) TEXT_XML(javax.ws.rs.core.MediaType.TEXT_XML) MavenServerWrapper(org.eclipse.che.plugin.maven.server.MavenServerWrapper) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) NotFoundException(org.eclipse.che.api.core.NotFoundException) SAXParseException(org.xml.sax.SAXParseException) List(java.util.List) ServerException(org.eclipse.che.api.core.ServerException) Response(javax.ws.rs.core.Response) MavenProjectManager(org.eclipse.che.plugin.maven.server.core.MavenProjectManager) ApiResponse(io.swagger.annotations.ApiResponse) ForbiddenException(org.eclipse.che.api.core.ForbiddenException) RegisteredProject(org.eclipse.che.api.project.server.RegisteredProject) Problem(org.eclipse.che.ide.ext.java.shared.dto.Problem) MavenProject(org.eclipse.che.plugin.maven.server.core.project.MavenProject) ProjectManager(org.eclipse.che.api.project.server.ProjectManager) Collections(java.util.Collections) MavenTerminal(org.eclipse.che.maven.server.MavenTerminal) ForbiddenException(org.eclipse.che.api.core.ForbiddenException) ServerException(org.eclipse.che.api.core.ServerException) ArrayList(java.util.ArrayList) VirtualFileEntry(org.eclipse.che.api.project.server.VirtualFileEntry) IOException(java.io.IOException) XMLTreeException(org.eclipse.che.commons.xml.XMLTreeException) MavenProject(org.eclipse.che.plugin.maven.server.core.project.MavenProject) MavenProjectProblem(org.eclipse.che.maven.data.MavenProjectProblem) SAXParseException(org.xml.sax.SAXParseException) MavenProjectProblem(org.eclipse.che.maven.data.MavenProjectProblem) Problem(org.eclipse.che.ide.ext.java.shared.dto.Problem) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 5 with MavenProject

use of org.eclipse.che.plugin.maven.server.core.project.MavenProject in project che by eclipse.

the class WorkspaceTest method testProjectNameShuldUseArtifactIdIfNotDeclared.

@Test
public void testProjectNameShuldUseArtifactIdIfNotDeclared() throws Exception {
    String pom = "<groupId>test</groupId>" + "<artifactId>testArtifact</artifactId>" + "<version>42</version>" + "<dependencies>" + "    <dependency>" + "        <groupId>junit</groupId>" + "        <artifactId>junit</artifactId>" + "        <version>4.12</version>" + "    </dependency>" + "</dependencies>";
    createTestProject("test", pom);
    IProject test = ResourcesPlugin.getWorkspace().getRoot().getProject("test");
    mavenWorkspace.update(Collections.singletonList(test));
    mavenWorkspace.waitForUpdate();
    MavenProject mavenProject = mavenProjectManager.findMavenProject(test);
    String name = mavenProject.getName();
    assertThat(name).isNotNull().isNotEmpty().isEqualTo("testArtifact");
}
Also used : MavenProject(org.eclipse.che.plugin.maven.server.core.project.MavenProject) IProject(org.eclipse.core.resources.IProject) Test(org.testng.annotations.Test) MavenServerManagerTest(org.eclipse.che.plugin.maven.server.rmi.MavenServerManagerTest)

Aggregations

MavenProject (org.eclipse.che.plugin.maven.server.core.project.MavenProject)24 IProject (org.eclipse.core.resources.IProject)16 Test (org.testng.annotations.Test)13 MavenServerManagerTest (org.eclipse.che.plugin.maven.server.rmi.MavenServerManagerTest)9 MavenKey (org.eclipse.che.maven.data.MavenKey)7 List (java.util.List)6 Collections (java.util.Collections)5 HashSet (java.util.HashSet)5 Set (java.util.Set)5 Inject (com.google.inject.Inject)4 Provider (com.google.inject.Provider)4 Singleton (com.google.inject.Singleton)4 ArrayList (java.util.ArrayList)4 LinkedList (java.util.LinkedList)4 Collectors (java.util.stream.Collectors)4 Path (org.eclipse.core.runtime.Path)4 Map (java.util.Map)3 ProjectRegistry (org.eclipse.che.api.project.server.ProjectRegistry)3 MavenArtifact (org.eclipse.che.maven.data.MavenArtifact)3 MavenTerminal (org.eclipse.che.maven.server.MavenTerminal)3