diff --git a/core/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/action/IdeActions.java b/core/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/action/IdeActions.java
index ad70f36ecf8..4ec522f4fb2 100644
--- a/core/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/action/IdeActions.java
+++ b/core/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/action/IdeActions.java
@@ -32,7 +32,6 @@ public interface IdeActions {
String GROUP_RIGHT_TOOLBAR = "rightToolBar";
String GROUP_MAIN_CONTEXT_MENU = "mainContextMenu";
- String GROUP_BUILD_CONTEXT_MENU = "buildGroupContextMenu";
String GROUP_RUN_CONTEXT_MENU = "runGroupContextMenu";
String GROUP_DEBUG_CONTEXT_MENU = "debugGroupContextMenu";
String GROUP_PROJECT_EXPLORER_CONTEXT_MENU = "projectExplorerContextMenu";
diff --git a/core/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/actions/ActionManagerImpl.java b/core/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/actions/ActionManagerImpl.java
index 06c5e67db4a..4618b76c1f3 100644
--- a/core/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/actions/ActionManagerImpl.java
+++ b/core/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/actions/ActionManagerImpl.java
@@ -105,9 +105,6 @@ private void registerDefaultActionGroups() {
DefaultActionGroup mainContextMenuGroup = new DefaultActionGroup(IdeActions.GROUP_MAIN_CONTEXT_MENU, false, this);
registerAction(IdeActions.GROUP_MAIN_CONTEXT_MENU, mainContextMenuGroup);
- DefaultActionGroup buildContextMenuGroup = new DefaultActionGroup(IdeActions.GROUP_BUILD_CONTEXT_MENU, false, this);
- registerAction(IdeActions.GROUP_BUILD_CONTEXT_MENU, buildContextMenuGroup);
-
DefaultActionGroup runContextMenuGroup = new DefaultActionGroup(IdeActions.GROUP_RUN_CONTEXT_MENU, false, this);
registerAction(IdeActions.GROUP_RUN_CONTEXT_MENU, runContextMenuGroup);
mainContextMenuGroup.add(runContextMenuGroup);
diff --git a/core/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/core/StandardComponentInitializer.java b/core/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/core/StandardComponentInitializer.java
index 3ea7df85b8f..c40170ab2f0 100644
--- a/core/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/core/StandardComponentInitializer.java
+++ b/core/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/core/StandardComponentInitializer.java
@@ -61,6 +61,7 @@
import org.eclipse.che.ide.api.action.ActionManager;
import org.eclipse.che.ide.api.action.DefaultActionGroup;
import org.eclipse.che.ide.api.action.IdeActions;
+import org.eclipse.che.ide.api.constraints.Constraints;
import org.eclipse.che.ide.api.editor.EditorRegistry;
import org.eclipse.che.ide.api.editor.texteditor.EditorResources;
import org.eclipse.che.ide.api.filetypes.FileType;
@@ -538,7 +539,7 @@ public void initialize() {
resourceOperation.add(convertFolderToProjectAction);
DefaultActionGroup mainContextMenuGroup = (DefaultActionGroup)actionManager.getAction(IdeActions.GROUP_MAIN_CONTEXT_MENU);
- mainContextMenuGroup.add(newGroup);
+ mainContextMenuGroup.add(newGroup, Constraints.FIRST);
mainContextMenuGroup.addSeparator();
mainContextMenuGroup.add(resourceOperation);
diff --git a/core/ide/che-core-ide-app/src/main/resources/org/eclipse/che/ide/actions/refresh.svg b/core/ide/che-core-ide-app/src/main/resources/org/eclipse/che/ide/actions/refresh.svg
index 1190051e938..1a0665709f9 100644
--- a/core/ide/che-core-ide-app/src/main/resources/org/eclipse/che/ide/actions/refresh.svg
+++ b/core/ide/che-core-ide-app/src/main/resources/org/eclipse/che/ide/actions/refresh.svg
@@ -13,7 +13,7 @@
-->
diff --git a/plugins/plugin-maven/che-plugin-maven-server/pom.xml b/plugins/plugin-maven/che-plugin-maven-server/pom.xml
index 234d9883850..0f12c6bf489 100644
--- a/plugins/plugin-maven/che-plugin-maven-server/pom.xml
+++ b/plugins/plugin-maven/che-plugin-maven-server/pom.xml
@@ -38,6 +38,10 @@
com.google.inject.extensions
guice-multibindings
+
+ io.swagger
+ swagger-annotations
+
javax.annotation
javax.annotation-api
@@ -287,4 +291,4 @@
-
\ No newline at end of file
+
diff --git a/plugins/plugin-maven/che-plugin-maven-server/src/main/java/org/eclipse/che/plugin/maven/server/rest/MavenServerService.java b/plugins/plugin-maven/che-plugin-maven-server/src/main/java/org/eclipse/che/plugin/maven/server/rest/MavenServerService.java
index 64e5c3690c4..e3e6b710d4f 100644
--- a/plugins/plugin-maven/che-plugin-maven-server/src/main/java/org/eclipse/che/plugin/maven/server/rest/MavenServerService.java
+++ b/plugins/plugin-maven/che-plugin-maven-server/src/main/java/org/eclipse/che/plugin/maven/server/rest/MavenServerService.java
@@ -10,6 +10,11 @@
*******************************************************************************/
package org.eclipse.che.plugin.maven.server.rest;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+
import com.google.inject.Inject;
import org.eclipse.che.api.core.ForbiddenException;
@@ -22,15 +27,19 @@
import org.eclipse.che.commons.xml.XMLTreeException;
import org.eclipse.che.dto.server.DtoFactory;
import org.eclipse.che.ide.ext.java.shared.dto.Problem;
+import org.eclipse.che.ide.maven.tools.Model;
+import org.eclipse.che.maven.data.MavenProjectProblem;
+import org.eclipse.che.maven.server.MavenTerminal;
import org.eclipse.che.plugin.maven.server.MavenServerWrapper;
import org.eclipse.che.plugin.maven.server.MavenWrapperManager;
+import org.eclipse.che.plugin.maven.server.core.EclipseWorkspaceProvider;
import org.eclipse.che.plugin.maven.server.core.MavenProgressNotifier;
import org.eclipse.che.plugin.maven.server.core.MavenProjectManager;
+import org.eclipse.che.plugin.maven.server.core.MavenWorkspace;
import org.eclipse.che.plugin.maven.server.core.classpath.ClasspathManager;
import org.eclipse.che.plugin.maven.server.core.project.MavenProject;
-import org.eclipse.che.ide.maven.tools.Model;
-import org.eclipse.che.maven.data.MavenProjectProblem;
-import org.eclipse.che.maven.server.MavenTerminal;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
@@ -39,10 +48,11 @@
import org.xml.sax.SAXParseException;
import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Response;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -60,10 +70,12 @@
public class MavenServerService {
private static final Logger LOG = LoggerFactory.getLogger(MavenServerService.class);
- private final MavenWrapperManager wrapperManager;
- private final ProjectRegistry projectRegistry;
- private final MavenProjectManager mavenProjectManager;
- private final ProjectManager cheProjectManager;
+ private final MavenWrapperManager wrapperManager;
+ private final ProjectRegistry projectRegistry;
+ private final MavenProjectManager mavenProjectManager;
+ private final MavenWorkspace mavenWorkspace;
+ private final EclipseWorkspaceProvider eclipseWorkspaceProvider;
+ private final ProjectManager cheProjectManager;
@Inject
private MavenProgressNotifier notifier;
@@ -81,12 +93,16 @@ public class MavenServerService {
public MavenServerService(MavenWrapperManager wrapperManager,
ProjectRegistry projectRegistry,
ProjectManager projectManager,
- MavenProjectManager mavenProjectManager) {
+ MavenProjectManager mavenProjectManager,
+ MavenWorkspace mavenWorkspace,
+ EclipseWorkspaceProvider eclipseWorkspaceProvider) {
cheProjectManager = projectManager;
this.wrapperManager = wrapperManager;
this.projectRegistry = projectRegistry;
this.mavenProjectManager = mavenProjectManager;
+ this.mavenWorkspace = mavenWorkspace;
+ this.eclipseWorkspaceProvider = eclipseWorkspaceProvider;
}
/**
@@ -124,7 +140,7 @@ public String getEffectivePom(@QueryParam("projectpath") String projectPath) thr
}
return mavenServer.getEffectivePom(pomFile.getVirtualFile().toIoFile(), Collections.emptyList(), Collections.emptyList());
} finally {
- wrapperManager.release(mavenServer);
+ wrapperManager.release(mavenServer);
}
}
@@ -135,6 +151,20 @@ public String downloadSource(@QueryParam("projectpath") String projectPath, @Que
return Boolean.toString(classpathManager.downloadSources(projectPath, fqn));
}
+ @PUT
+ @Path("reimport")
+ @ApiOperation(value = "Reimport maven dependencies")
+ @ApiResponses({@ApiResponse(code = 200, message = "OK"),
+ @ApiResponse(code = 500, message = "Internal Server Error")})
+ public Response reimportDependencies(@ApiParam(value = "The paths to projects which need to be reimported dependencies")
+ @QueryParam("projectPath") List paths) throws ServerException {
+ IWorkspace workspace = eclipseWorkspaceProvider.get();
+ List projectsList =
+ paths.stream().map(projectPath -> workspace.getRoot().getProject(projectPath)).collect(Collectors.toList());
+ mavenWorkspace.update(projectsList);
+ return Response.ok().build();
+ }
+
@GET
@Path("pom/reconsile")
@Produces("application/json")
diff --git a/plugins/plugin-maven/che-plugin-maven-server/src/test/java/org/eclipse/che/plugin/maven/server/PomReconcilerTest.java b/plugins/plugin-maven/che-plugin-maven-server/src/test/java/org/eclipse/che/plugin/maven/server/PomReconcilerTest.java
index 12942b663a4..04408bbd61f 100644
--- a/plugins/plugin-maven/che-plugin-maven-server/src/test/java/org/eclipse/che/plugin/maven/server/PomReconcilerTest.java
+++ b/plugins/plugin-maven/che-plugin-maven-server/src/test/java/org/eclipse/che/plugin/maven/server/PomReconcilerTest.java
@@ -53,7 +53,7 @@ public void print(int level, String message, Throwable throwable) throws RemoteE
@Test
public void testProblemPosition() throws Exception {
- MavenServerService serverService = new MavenServerService(null, projectRegistry, pm, projectManager);
+ MavenServerService serverService = new MavenServerService(null, projectRegistry, pm, projectManager, null, null);
FolderEntry testProject = createTestProject("A", "");
VirtualFileEntry child = testProject.getChild("pom.xml");
String newContent = getPomContent("