diff --git a/agents/exec/pom.xml b/agents/exec/pom.xml
index 472b1cf705..e21bc27c76 100644
--- a/agents/exec/pom.xml
+++ b/agents/exec/pom.xml
@@ -20,16 +20,6 @@
exec-agent
Agent :: Exec
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/exec/src/main/java/org/eclipse/che/api/installer/ExecInstaller.java b/agents/exec/src/main/java/org/eclipse/che/api/installer/ExecInstaller.java
deleted file mode 100644
index 3df8c00a9b..0000000000
--- a/agents/exec/src/main/java/org/eclipse/che/api/installer/ExecInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Exec installer.
- *
- * @author Anatolii Bazko
- * @see Installer
- */
-@Singleton
-public class ExecInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.exec.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.exec.script.sh";
-
- @Inject
- public ExecInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/exec/src/main/resources/org.eclipse.che.exec.json b/agents/exec/src/main/resources/installers/1.0.0/org.eclipse.che.exec.json
similarity index 94%
rename from agents/exec/src/main/resources/org.eclipse.che.exec.json
rename to agents/exec/src/main/resources/installers/1.0.0/org.eclipse.che.exec.json
index 7f0f113b8c..26373e4495 100644
--- a/agents/exec/src/main/resources/org.eclipse.che.exec.json
+++ b/agents/exec/src/main/resources/installers/1.0.0/org.eclipse.che.exec.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.exec",
+ "version": "1.0.0",
"name": "Exec",
"description": "Agent for command execution",
"dependencies": [],
diff --git a/agents/exec/src/main/resources/org.eclipse.che.exec.script.sh b/agents/exec/src/main/resources/installers/1.0.0/org.eclipse.che.exec.script.sh
similarity index 100%
rename from agents/exec/src/main/resources/org.eclipse.che.exec.script.sh
rename to agents/exec/src/main/resources/installers/1.0.0/org.eclipse.che.exec.script.sh
diff --git a/agents/git-credentials/pom.xml b/agents/git-credentials/pom.xml
index 6b1522b198..f077b17c90 100644
--- a/agents/git-credentials/pom.xml
+++ b/agents/git-credentials/pom.xml
@@ -20,14 +20,4 @@
git-credentials-agent
Git Credentials Agent
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/git-credentials/src/main/java/org/eclipse/che/api/installer/GitCredentialsInstaller.java b/agents/git-credentials/src/main/java/org/eclipse/che/api/installer/GitCredentialsInstaller.java
deleted file mode 100644
index 97eec05363..0000000000
--- a/agents/git-credentials/src/main/java/org/eclipse/che/api/installer/GitCredentialsInstaller.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Git credentials installer. Creates sh script that retrieves SSH keys from user preferences for
- * console Git SSH operations. Injects Git username and email from user preferences to console Git
- * preferences.
- *
- * @author Igor Vinokur
- * @see Installer
- */
-@Singleton
-public class GitCredentialsInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.git.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.git.script.sh";
-
- @Inject
- public GitCredentialsInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/git-credentials/src/main/resources/org.eclipse.che.git.json b/agents/git-credentials/src/main/resources/installers/1.0.0/org.eclipse.che.git.json
similarity index 89%
rename from agents/git-credentials/src/main/resources/org.eclipse.che.git.json
rename to agents/git-credentials/src/main/resources/installers/1.0.0/org.eclipse.che.git.json
index 979492e237..fd3cbc4947 100644
--- a/agents/git-credentials/src/main/resources/org.eclipse.che.git.json
+++ b/agents/git-credentials/src/main/resources/installers/1.0.0/org.eclipse.che.git.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.git-credentials",
+ "version": "1.0.0",
"name": "Git credentials",
"description": "Agent fetches SSH keys, Git username and email from CHE user preferences, and injects to console Git"
}
diff --git a/agents/git-credentials/src/main/resources/org.eclipse.che.git.script.sh b/agents/git-credentials/src/main/resources/installers/1.0.0/org.eclipse.che.git.script.sh
similarity index 100%
rename from agents/git-credentials/src/main/resources/org.eclipse.che.git.script.sh
rename to agents/git-credentials/src/main/resources/installers/1.0.0/org.eclipse.che.git.script.sh
diff --git a/agents/ls-csharp/pom.xml b/agents/ls-csharp/pom.xml
index d3508bf721..81e32ec5c1 100644
--- a/agents/ls-csharp/pom.xml
+++ b/agents/ls-csharp/pom.xml
@@ -20,14 +20,4 @@
ls-csharp-agent
Language Server C# Agent
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/ls-csharp/src/main/java/org/eclipse/che/api/installer/LSCSharpInstaller.java b/agents/ls-csharp/src/main/java/org/eclipse/che/api/installer/LSCSharpInstaller.java
deleted file mode 100644
index 4ef6506843..0000000000
--- a/agents/ls-csharp/src/main/java/org/eclipse/che/api/installer/LSCSharpInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Language server C# installer.
- *
- * @author Anatolii Bazko
- * @see Installer
- */
-@Singleton
-public class LSCSharpInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.ls.csharp.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.ls.csharp.script.sh";
-
- @Inject
- public LSCSharpInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/ls-csharp/src/main/resources/org.eclipse.che.ls.csharp.json b/agents/ls-csharp/src/main/resources/installers/1.0.1/org.eclipse.che.ls.csharp.json
similarity index 87%
rename from agents/ls-csharp/src/main/resources/org.eclipse.che.ls.csharp.json
rename to agents/ls-csharp/src/main/resources/installers/1.0.1/org.eclipse.che.ls.csharp.json
index 51424a71ae..5dc363a6e3 100644
--- a/agents/ls-csharp/src/main/resources/org.eclipse.che.ls.csharp.json
+++ b/agents/ls-csharp/src/main/resources/installers/1.0.1/org.eclipse.che.ls.csharp.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.ls.csharp",
+ "version": "1.0.1",
"name": "C# language server",
"description": "C# intellisense",
"dependencies": [],
diff --git a/agents/ls-csharp/src/main/resources/org.eclipse.che.ls.csharp.script.sh b/agents/ls-csharp/src/main/resources/installers/1.0.1/org.eclipse.che.ls.csharp.script.sh
similarity index 99%
rename from agents/ls-csharp/src/main/resources/org.eclipse.che.ls.csharp.script.sh
rename to agents/ls-csharp/src/main/resources/installers/1.0.1/org.eclipse.che.ls.csharp.script.sh
index e682094603..ea9d92f177 100644
--- a/agents/ls-csharp/src/main/resources/org.eclipse.che.ls.csharp.script.sh
+++ b/agents/ls-csharp/src/main/resources/installers/1.0.1/org.eclipse.che.ls.csharp.script.sh
@@ -26,7 +26,7 @@ unset PACKAGES
command -v tar >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" tar"; }
command -v curl >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" curl"; }
-AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.csharp.binaries
+AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.csharp.binaries/1.0.1
CHE_DIR=$HOME/che
LS_DIR=${CHE_DIR}/ls-csharp
LS_LAUNCHER=${LS_DIR}/launch.sh
diff --git a/agents/ls-json/pom.xml b/agents/ls-json/pom.xml
index 4c0a17078f..a95ec4027d 100644
--- a/agents/ls-json/pom.xml
+++ b/agents/ls-json/pom.xml
@@ -20,14 +20,4 @@
ls-json-agent
Language Server Json Agent
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/ls-json/src/main/java/org/eclipse/che/api/installer/LSJsonInstaller.java b/agents/ls-json/src/main/java/org/eclipse/che/api/installer/LSJsonInstaller.java
deleted file mode 100644
index 5087db56ff..0000000000
--- a/agents/ls-json/src/main/java/org/eclipse/che/api/installer/LSJsonInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Language server Json installer.
- *
- * @author Anatolii Bazko
- * @see Installer
- */
-@Singleton
-public class LSJsonInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.ls.json.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.ls.json.script.sh";
-
- @Inject
- public LSJsonInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/ls-json/src/main/resources/org.eclipse.che.ls.json.json b/agents/ls-json/src/main/resources/installers/1.0.1/org.eclipse.che.ls.json.json
similarity index 87%
rename from agents/ls-json/src/main/resources/org.eclipse.che.ls.json.json
rename to agents/ls-json/src/main/resources/installers/1.0.1/org.eclipse.che.ls.json.json
index d7ac19bb13..13a7c7ba20 100644
--- a/agents/ls-json/src/main/resources/org.eclipse.che.ls.json.json
+++ b/agents/ls-json/src/main/resources/installers/1.0.1/org.eclipse.che.ls.json.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.ls.json",
+ "version": "1.0.1",
"name": "JSON language server",
"description": "JSON intellisense",
"dependencies": [],
diff --git a/agents/ls-json/src/main/resources/org.eclipse.che.ls.json.script.sh b/agents/ls-json/src/main/resources/installers/1.0.1/org.eclipse.che.ls.json.script.sh
similarity index 99%
rename from agents/ls-json/src/main/resources/org.eclipse.che.ls.json.script.sh
rename to agents/ls-json/src/main/resources/installers/1.0.1/org.eclipse.che.ls.json.script.sh
index 010a216562..242dc8006d 100644
--- a/agents/ls-json/src/main/resources/org.eclipse.che.ls.json.script.sh
+++ b/agents/ls-json/src/main/resources/installers/1.0.1/org.eclipse.che.ls.json.script.sh
@@ -26,7 +26,7 @@ unset PACKAGES
command -v tar >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" tar"; }
command -v curl >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" curl"; }
-AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.json.binaries
+AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.json.binaries/1.0.1
CHE_DIR=$HOME/che
LS_DIR=${CHE_DIR}/ls-json
LS_LAUNCHER=${LS_DIR}/launch.sh
diff --git a/agents/ls-php/pom.xml b/agents/ls-php/pom.xml
index 0bf1b0609c..89067deef1 100644
--- a/agents/ls-php/pom.xml
+++ b/agents/ls-php/pom.xml
@@ -20,14 +20,4 @@
ls-php-agent
Language Server PHP Agent
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/ls-php/src/main/java/org/eclipse/che/api/installer/LSPhpInstaller.java b/agents/ls-php/src/main/java/org/eclipse/che/api/installer/LSPhpInstaller.java
deleted file mode 100644
index a5d770935c..0000000000
--- a/agents/ls-php/src/main/java/org/eclipse/che/api/installer/LSPhpInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Language server Php installer.
- *
- * @author Anatolii Bazko
- * @see Installer
- */
-@Singleton
-public class LSPhpInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.ls.php.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.ls.php.script.sh";
-
- @Inject
- public LSPhpInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/ls-php/src/main/resources/org.eclipse.che.ls.php.json b/agents/ls-php/src/main/resources/installers/2.0.1/org.eclipse.che.ls.php.json
similarity index 87%
rename from agents/ls-php/src/main/resources/org.eclipse.che.ls.php.json
rename to agents/ls-php/src/main/resources/installers/2.0.1/org.eclipse.che.ls.php.json
index 0ddc6e1ba3..33cf66a34f 100644
--- a/agents/ls-php/src/main/resources/org.eclipse.che.ls.php.json
+++ b/agents/ls-php/src/main/resources/installers/2.0.1/org.eclipse.che.ls.php.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.ls.php",
+ "version": "2.0.1",
"name": "PHP language server",
"description": "PHP intellisense",
"dependencies": [],
diff --git a/agents/ls-php/src/main/resources/org.eclipse.che.ls.php.script.sh b/agents/ls-php/src/main/resources/installers/2.0.1/org.eclipse.che.ls.php.script.sh
similarity index 98%
rename from agents/ls-php/src/main/resources/org.eclipse.che.ls.php.script.sh
rename to agents/ls-php/src/main/resources/installers/2.0.1/org.eclipse.che.ls.php.script.sh
index 7e6e2848a1..9f3b66b769 100644
--- a/agents/ls-php/src/main/resources/org.eclipse.che.ls.php.script.sh
+++ b/agents/ls-php/src/main/resources/installers/2.0.1/org.eclipse.che.ls.php.script.sh
@@ -26,7 +26,7 @@ unset PACKAGES
command -v tar >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" tar"; }
command -v curl >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" curl"; }
-AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.php.binaries
+AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.php.binaries/2.0.1
CHE_DIR=$HOME/che
LS_DIR=${CHE_DIR}/ls-php
LS_LAUNCHER=${LS_DIR}/launch.sh
diff --git a/agents/ls-python/pom.xml b/agents/ls-python/pom.xml
index 59ec7c348b..27e1402c65 100644
--- a/agents/ls-python/pom.xml
+++ b/agents/ls-python/pom.xml
@@ -20,14 +20,4 @@
ls-python-agent
Language Server python Agent
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/ls-python/src/main/java/org/eclipse/che/api/installer/LSPythonInstaller.java b/agents/ls-python/src/main/java/org/eclipse/che/api/installer/LSPythonInstaller.java
deleted file mode 100644
index 4a5aa4e480..0000000000
--- a/agents/ls-python/src/main/java/org/eclipse/che/api/installer/LSPythonInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Language server python installer.
- *
- * @author Anatolii Bazko
- * @see Installer
- */
-@Singleton
-public class LSPythonInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.ls.python.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.ls.python.script.sh";
-
- @Inject
- public LSPythonInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/ls-python/src/main/resources/org.eclipse.che.ls.python.json b/agents/ls-python/src/main/resources/installers/1.0.3/org.eclipse.che.ls.python.json
similarity index 87%
rename from agents/ls-python/src/main/resources/org.eclipse.che.ls.python.json
rename to agents/ls-python/src/main/resources/installers/1.0.3/org.eclipse.che.ls.python.json
index 6cccbfe47e..b624488a03 100644
--- a/agents/ls-python/src/main/resources/org.eclipse.che.ls.python.json
+++ b/agents/ls-python/src/main/resources/installers/1.0.3/org.eclipse.che.ls.python.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.ls.python",
+ "version": "1.0.3",
"name": "Python language server",
"description": "Python intellisense",
"dependencies": [],
diff --git a/agents/ls-python/src/main/resources/org.eclipse.che.ls.python.script.sh b/agents/ls-python/src/main/resources/installers/1.0.3/org.eclipse.che.ls.python.script.sh
similarity index 99%
rename from agents/ls-python/src/main/resources/org.eclipse.che.ls.python.script.sh
rename to agents/ls-python/src/main/resources/installers/1.0.3/org.eclipse.che.ls.python.script.sh
index 1146d151e7..9b17f4717d 100644
--- a/agents/ls-python/src/main/resources/org.eclipse.che.ls.python.script.sh
+++ b/agents/ls-python/src/main/resources/installers/1.0.3/org.eclipse.che.ls.python.script.sh
@@ -29,7 +29,7 @@ command -v curl >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" curl"; }
command -v python3.5 >/dev/null 2>&1 || { PYTHON_DEPS=${PYTHON_DEPS}" python3.5"; }
command -v pip3 >/dev/null 2>&1 || { PYTHON_DEPS=${PYTHON_DEPS}" pip3"; }
-AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.python.binaries
+AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.python.binaries/1.0.3
CHE_DIR=$HOME/che
LS_DIR=${CHE_DIR}/ls-python
LS_LAUNCHER=${LS_DIR}/launch.sh
diff --git a/agents/ls-typescript/pom.xml b/agents/ls-typescript/pom.xml
index fd454001c3..844feda61a 100644
--- a/agents/ls-typescript/pom.xml
+++ b/agents/ls-typescript/pom.xml
@@ -20,14 +20,4 @@
ls-typescript-agent
Language Server typescript Agent
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/ls-typescript/src/main/java/org/eclipse/che/api/installer/LSTypeScriptInstaller.java b/agents/ls-typescript/src/main/java/org/eclipse/che/api/installer/LSTypeScriptInstaller.java
deleted file mode 100644
index f2b8f9784c..0000000000
--- a/agents/ls-typescript/src/main/java/org/eclipse/che/api/installer/LSTypeScriptInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Language server typescript installer.
- *
- * @author Anatolii Bazko
- * @see Installer
- */
-@Singleton
-public class LSTypeScriptInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.ls.typescript.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.ls.typescript.script.sh";
-
- @Inject
- public LSTypeScriptInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/ls-typescript/src/main/resources/org.eclipse.che.ls.typescript.json b/agents/ls-typescript/src/main/resources/installers/1.0.1/org.eclipse.che.ls.typescript.json
similarity index 88%
rename from agents/ls-typescript/src/main/resources/org.eclipse.che.ls.typescript.json
rename to agents/ls-typescript/src/main/resources/installers/1.0.1/org.eclipse.che.ls.typescript.json
index 312ee6790d..132c0eb402 100644
--- a/agents/ls-typescript/src/main/resources/org.eclipse.che.ls.typescript.json
+++ b/agents/ls-typescript/src/main/resources/installers/1.0.1/org.eclipse.che.ls.typescript.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.ls.js-ts",
+ "version": "1.0.1",
"name": "TypeScript language server",
"description": "TypeScript intellisense",
"dependencies": [],
diff --git a/agents/ls-typescript/src/main/resources/org.eclipse.che.ls.typescript.script.sh b/agents/ls-typescript/src/main/resources/installers/1.0.1/org.eclipse.che.ls.typescript.script.sh
similarity index 98%
rename from agents/ls-typescript/src/main/resources/org.eclipse.che.ls.typescript.script.sh
rename to agents/ls-typescript/src/main/resources/installers/1.0.1/org.eclipse.che.ls.typescript.script.sh
index 53273a1baf..335a64b60d 100644
--- a/agents/ls-typescript/src/main/resources/org.eclipse.che.ls.typescript.script.sh
+++ b/agents/ls-typescript/src/main/resources/installers/1.0.1/org.eclipse.che.ls.typescript.script.sh
@@ -26,7 +26,7 @@ unset PACKAGES
command -v tar >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" tar"; }
command -v curl >/dev/null 2>&1 || { PACKAGES=${PACKAGES}" curl"; }
-AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.typescript.binaries
+AGENT_BINARIES_URI=https://codenvy.com/update/repository/public/download/org.eclipse.che.ls.typescript.binaries/1.0.1
CHE_DIR=$HOME/che
LS_DIR=${CHE_DIR}/ls-typescript
LS_LAUNCHER=${LS_DIR}/launch.sh
diff --git a/agents/ssh/pom.xml b/agents/ssh/pom.xml
index e235e23468..bdd4440b63 100644
--- a/agents/ssh/pom.xml
+++ b/agents/ssh/pom.xml
@@ -20,14 +20,4 @@
ssh-agent
SSH Agent
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/ssh/src/main/java/org/eclipse/che/api/installer/SshInstaller.java b/agents/ssh/src/main/java/org/eclipse/che/api/installer/SshInstaller.java
deleted file mode 100644
index 774e148d35..0000000000
--- a/agents/ssh/src/main/java/org/eclipse/che/api/installer/SshInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Ssh installer.
- *
- * @author Anatolii Bazko
- * @see Installer
- */
-@Singleton
-public class SshInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.ssh.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.ssh.script.sh";
-
- @Inject
- public SshInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/ssh/src/main/resources/org.eclipse.che.ssh.json b/agents/ssh/src/main/resources/installers/1.0.0/org.eclipse.che.ssh.json
similarity index 91%
rename from agents/ssh/src/main/resources/org.eclipse.che.ssh.json
rename to agents/ssh/src/main/resources/installers/1.0.0/org.eclipse.che.ssh.json
index c89f230a8f..1a0327aa03 100644
--- a/agents/ssh/src/main/resources/org.eclipse.che.ssh.json
+++ b/agents/ssh/src/main/resources/installers/1.0.0/org.eclipse.che.ssh.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.ssh",
+ "version": "1.0.0",
"name": "SSH",
"description": "SSH server, key-pair generation",
"dependencies": [],
diff --git a/agents/ssh/src/main/resources/org.eclipse.che.ssh.script.sh b/agents/ssh/src/main/resources/installers/1.0.0/org.eclipse.che.ssh.script.sh
similarity index 100%
rename from agents/ssh/src/main/resources/org.eclipse.che.ssh.script.sh
rename to agents/ssh/src/main/resources/installers/1.0.0/org.eclipse.che.ssh.script.sh
diff --git a/agents/terminal/pom.xml b/agents/terminal/pom.xml
index 021e0cb697..8b37632935 100644
--- a/agents/terminal/pom.xml
+++ b/agents/terminal/pom.xml
@@ -20,16 +20,6 @@
terminal-agent
Agent :: Terminal
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/terminal/src/main/java/org/eclipse/che/api/installer/TerminalInstaller.java b/agents/terminal/src/main/java/org/eclipse/che/api/installer/TerminalInstaller.java
deleted file mode 100644
index 89bdf89886..0000000000
--- a/agents/terminal/src/main/java/org/eclipse/che/api/installer/TerminalInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Terminal installer.
- *
- * @author Garagatyi Alexander
- * @see Installer
- */
-@Singleton
-public class TerminalInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.terminal.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.terminal.script.sh";
-
- @Inject
- public TerminalInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/terminal/src/main/resources/org.eclipse.che.terminal.json b/agents/terminal/src/main/resources/installers/1.0.0/org.eclipse.che.terminal.json
similarity index 92%
rename from agents/terminal/src/main/resources/org.eclipse.che.terminal.json
rename to agents/terminal/src/main/resources/installers/1.0.0/org.eclipse.che.terminal.json
index 63474ad15f..120f212ee9 100644
--- a/agents/terminal/src/main/resources/org.eclipse.che.terminal.json
+++ b/agents/terminal/src/main/resources/installers/1.0.0/org.eclipse.che.terminal.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.terminal",
+ "version": "1.0.0",
"name": "Terminal",
"description": "Embedded web terminal",
"dependencies": [],
diff --git a/agents/terminal/src/main/resources/org.eclipse.che.terminal.script.sh b/agents/terminal/src/main/resources/installers/1.0.0/org.eclipse.che.terminal.script.sh
similarity index 100%
rename from agents/terminal/src/main/resources/org.eclipse.che.terminal.script.sh
rename to agents/terminal/src/main/resources/installers/1.0.0/org.eclipse.che.terminal.script.sh
diff --git a/agents/unison/pom.xml b/agents/unison/pom.xml
index e81d68aa74..a39ba9c71c 100644
--- a/agents/unison/pom.xml
+++ b/agents/unison/pom.xml
@@ -20,14 +20,4 @@
unison-agent
Unison Agent
-
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-
-
diff --git a/agents/unison/src/main/java/org/eclipse/che/api/installer/UnisonInstaller.java b/agents/unison/src/main/java/org/eclipse/che/api/installer/UnisonInstaller.java
deleted file mode 100644
index 5091715bda..0000000000
--- a/agents/unison/src/main/java/org/eclipse/che/api/installer/UnisonInstaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012-2017 Red Hat, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.installer;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import org.eclipse.che.api.installer.server.model.impl.BasicInstaller;
-import org.eclipse.che.api.installer.shared.model.Installer;
-
-/**
- * Unison installer.
- *
- * @author Anatolii Bazko
- * @see Installer
- */
-@Singleton
-public class UnisonInstaller extends BasicInstaller {
- private static final String AGENT_DESCRIPTOR = "org.eclipse.che.unison.json";
- private static final String AGENT_SCRIPT = "org.eclipse.che.unison.script.sh";
-
- @Inject
- public UnisonInstaller() throws IOException {
- super(AGENT_DESCRIPTOR, AGENT_SCRIPT);
- }
-}
diff --git a/agents/unison/src/main/resources/org.eclipse.che.unison.json b/agents/unison/src/main/resources/installers/1.0.0/org.eclipse.che.unison.json
similarity index 86%
rename from agents/unison/src/main/resources/org.eclipse.che.unison.json
rename to agents/unison/src/main/resources/installers/1.0.0/org.eclipse.che.unison.json
index 074b3f8cab..acf56f471a 100644
--- a/agents/unison/src/main/resources/org.eclipse.che.unison.json
+++ b/agents/unison/src/main/resources/installers/1.0.0/org.eclipse.che.unison.json
@@ -1,5 +1,6 @@
{
"id": "org.eclipse.che.unison",
+ "version": "1.0.0",
"name": "File sync",
"description": "Unison File Synchronizer",
"dependencies": [],
diff --git a/agents/unison/src/main/resources/org.eclipse.che.unison.script.sh b/agents/unison/src/main/resources/installers/1.0.0/org.eclipse.che.unison.script.sh
similarity index 100%
rename from agents/unison/src/main/resources/org.eclipse.che.unison.script.sh
rename to agents/unison/src/main/resources/installers/1.0.0/org.eclipse.che.unison.script.sh
diff --git a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java
index 82c8ef803a..f9a89d6641 100644
--- a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java
+++ b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java
@@ -14,9 +14,11 @@ import static com.google.inject.matcher.Matchers.subclassesOf;
import static org.eclipse.che.inject.Matchers.names;
import com.google.inject.AbstractModule;
+import com.google.inject.TypeLiteral;
import com.google.inject.multibindings.MapBinder;
import com.google.inject.multibindings.Multibinder;
import com.google.inject.name.Names;
+import java.util.Set;
import javax.sql.DataSource;
import org.eclipse.che.api.core.rest.CheJsonProvider;
import org.eclipse.che.api.core.rest.MessageBodyAdapter;
@@ -25,18 +27,8 @@ import org.eclipse.che.api.factory.server.FactoryAcceptValidator;
import org.eclipse.che.api.factory.server.FactoryCreateValidator;
import org.eclipse.che.api.factory.server.FactoryEditValidator;
import org.eclipse.che.api.factory.server.FactoryParametersResolver;
-import org.eclipse.che.api.installer.ExecInstaller;
-import org.eclipse.che.api.installer.GitCredentialsInstaller;
-import org.eclipse.che.api.installer.LSCSharpInstaller;
-import org.eclipse.che.api.installer.LSJsonInstaller;
-import org.eclipse.che.api.installer.LSPhpInstaller;
-import org.eclipse.che.api.installer.LSPythonInstaller;
-import org.eclipse.che.api.installer.LSTypeScriptInstaller;
-import org.eclipse.che.api.installer.SshInstaller;
-import org.eclipse.che.api.installer.TerminalInstaller;
-import org.eclipse.che.api.installer.UnisonInstaller;
-import org.eclipse.che.api.installer.WsInstaller;
import org.eclipse.che.api.installer.server.InstallerModule;
+import org.eclipse.che.api.installer.server.impl.InstallersProvider;
import org.eclipse.che.api.installer.shared.model.Installer;
import org.eclipse.che.api.recipe.JpaRecipeDao;
import org.eclipse.che.api.recipe.RecipeDao;
@@ -162,18 +154,7 @@ public class WsMasterModule extends AbstractModule {
// installers
install(new InstallerModule());
- Multibinder installers = Multibinder.newSetBinder(binder(), Installer.class);
- installers.addBinding().to(SshInstaller.class);
- installers.addBinding().to(UnisonInstaller.class);
- installers.addBinding().to(ExecInstaller.class);
- installers.addBinding().to(TerminalInstaller.class);
- installers.addBinding().to(WsInstaller.class);
- installers.addBinding().to(LSPhpInstaller.class);
- installers.addBinding().to(LSPythonInstaller.class);
- installers.addBinding().to(LSJsonInstaller.class);
- installers.addBinding().to(LSCSharpInstaller.class);
- installers.addBinding().to(LSTypeScriptInstaller.class);
- installers.addBinding().to(GitCredentialsInstaller.class);
+ binder().bind(new TypeLiteral>() {}).toProvider(InstallersProvider.class);
bind(org.eclipse.che.api.deploy.WsMasterAnalyticsAddresser.class);
diff --git a/core/commons/che-core-commons-lang/src/main/java/org/eclipse/che/commons/lang/IoUtil.java b/core/commons/che-core-commons-lang/src/main/java/org/eclipse/che/commons/lang/IoUtil.java
index 6f0871e93b..bc06b49e99 100644
--- a/core/commons/che-core-commons-lang/src/main/java/org/eclipse/che/commons/lang/IoUtil.java
+++ b/core/commons/che-core-commons-lang/src/main/java/org/eclipse/che/commons/lang/IoUtil.java
@@ -21,24 +21,31 @@ import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
+import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.nio.channels.FileChannel;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystemAlreadyExistsException;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitOption;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
+import java.nio.file.Paths;
+import java.nio.file.ProviderNotFoundException;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.EnumSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
+import java.util.function.Consumer;
import javax.ws.rs.HttpMethod;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -134,6 +141,34 @@ public class IoUtil {
return is;
}
+ /**
+ * Lists all children resources.
+ *
+ * @param parent the root path represented in {@link URI} format
+ * @param consumer consumer for children resources
+ * @throws java.io.IOException if any i/o error occur
+ * @throws ProviderNotFoundException if a provider supporting the URI scheme is not installed
+ */
+ public static void listResources(URI parent, Consumer consumer) throws IOException {
+ FileSystem fileSystem = null;
+ try {
+ if (!"file".equals(parent.getScheme())) {
+ try {
+ fileSystem = FileSystems.newFileSystem(parent, Collections.emptyMap());
+ } catch (FileSystemAlreadyExistsException ignore) {
+ }
+ }
+
+ Path root = Paths.get(parent);
+ Files.list(root).forEach(consumer);
+ } finally {
+ // close FS only if only it has been initialized here
+ if (fileSystem != null) {
+ fileSystem.close();
+ }
+ }
+ }
+
/** Remove directory and all its sub-resources with specified path */
public static boolean removeDirectory(String pathToDir) {
return deleteRecursive(new File(pathToDir));
diff --git a/core/commons/che-core-commons-lang/src/test/java/org/eclipse/che/commons/lang/IoUtilTest.java b/core/commons/che-core-commons-lang/src/test/java/org/eclipse/che/commons/lang/IoUtilTest.java
new file mode 100644
index 0000000000..cd4e6469ba
--- /dev/null
+++ b/core/commons/che-core-commons-lang/src/test/java/org/eclipse/che/commons/lang/IoUtilTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2012-2017 Red Hat, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ */
+package org.eclipse.che.commons.lang;
+
+import static org.testng.Assert.assertTrue;
+
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import org.testng.annotations.Test;
+
+/** @author Anatolii Bazko */
+public class IoUtilTest {
+ @Test
+ public void shouldListFileResources() throws Exception {
+ List resources = new ArrayList<>();
+ IoUtil.listResources(
+ getClass().getResource("/").toURI(), path -> resources.add(path.getFileName().toString()));
+
+ assertTrue(resources.contains("logback-test.xml"));
+ assertTrue(resources.contains("findbugs-exclude.xml"));
+ }
+
+ @Test
+ public void shouldListChildrenResourcesInJar() throws Exception {
+ URL testJar = Thread.currentThread().getContextClassLoader().getResource("che/che.jar");
+ URI codenvyDir = URI.create("jar:" + testJar + "!/codenvy");
+
+ List resources = new ArrayList<>();
+ IoUtil.listResources(codenvyDir, path -> resources.add(path.getFileName().toString()));
+
+ assertTrue(resources.contains("a.json"));
+ assertTrue(resources.contains("b.json"));
+ }
+
+ @Test
+ public void shouldListParentResourcesInJar() throws Exception {
+ URL testJar = Thread.currentThread().getContextClassLoader().getResource("che/che.jar");
+ URI codenvyDir = URI.create("jar:" + testJar + "!/");
+
+ List resources = new ArrayList<>();
+ IoUtil.listResources(codenvyDir, path -> resources.add(path.getFileName().toString()));
+
+ assertTrue(resources.contains("codenvy/"));
+ }
+}
diff --git a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/DockerRuntimeContext.java b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/DockerRuntimeContext.java
index 6a3560d8c2..60a5a66053 100644
--- a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/DockerRuntimeContext.java
+++ b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/DockerRuntimeContext.java
@@ -25,10 +25,10 @@ import org.eclipse.che.api.core.ValidationException;
import org.eclipse.che.api.core.model.workspace.config.Environment;
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
import org.eclipse.che.api.installer.server.InstallerRegistry;
+import org.eclipse.che.api.workspace.server.Utils;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
import org.eclipse.che.api.workspace.server.spi.InternalInfrastructureException;
import org.eclipse.che.api.workspace.server.spi.RuntimeContext;
-import org.eclipse.che.api.workspace.shared.Utils;
import org.eclipse.che.plugin.docker.client.json.ContainerListEntry;
import org.eclipse.che.workspace.infrastructure.docker.container.DockerContainers;
import org.eclipse.che.workspace.infrastructure.docker.model.DockerEnvironment;
diff --git a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/environment/EnvironmentValidator.java b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/environment/EnvironmentValidator.java
index 26bf2d03b0..3230d68da6 100644
--- a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/environment/EnvironmentValidator.java
+++ b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/environment/EnvironmentValidator.java
@@ -25,6 +25,7 @@ import org.eclipse.che.api.core.ValidationException;
import org.eclipse.che.api.core.model.workspace.config.Environment;
import org.eclipse.che.api.core.model.workspace.config.MachineConfig;
import org.eclipse.che.api.core.model.workspace.config.ServerConfig;
+import org.eclipse.che.api.installer.server.impl.InstallerFqn;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
import org.eclipse.che.commons.annotation.Nullable;
import org.eclipse.che.workspace.infrastructure.docker.model.DockerContainerConfig;
@@ -94,8 +95,8 @@ public class EnvironmentValidator {
.stream()
.filter(
entry ->
- entry.getValue().getInstallers() != null
- && entry.getValue().getInstallers().contains("org.eclipse.che.ws-agent"))
+ InstallerFqn.idInKeyList(
+ "org.eclipse.che.ws-agent", entry.getValue().getInstallers()))
.map(Map.Entry::getKey)
.collect(toList());
diff --git a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/local/installer/WsAgentInstallerInfrastructureProvisioner.java b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/local/installer/WsAgentInstallerInfrastructureProvisioner.java
index c4c3689456..232d65e157 100644
--- a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/local/installer/WsAgentInstallerInfrastructureProvisioner.java
+++ b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/local/installer/WsAgentInstallerInfrastructureProvisioner.java
@@ -13,10 +13,10 @@ package org.eclipse.che.workspace.infrastructure.docker.local.installer;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
+import org.eclipse.che.api.workspace.server.Utils;
import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
import org.eclipse.che.api.workspace.server.spi.InternalInfrastructureException;
-import org.eclipse.che.api.workspace.shared.Utils;
import org.eclipse.che.inject.CheBootstrap;
import org.eclipse.che.workspace.infrastructure.docker.local.server.DockerExtConfBindingProvider;
import org.eclipse.che.workspace.infrastructure.docker.model.DockerContainerConfig;
diff --git a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/local/projects/ProjectsVolumeProvisioner.java b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/local/projects/ProjectsVolumeProvisioner.java
index 19cf61939f..235091cd88 100644
--- a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/local/projects/ProjectsVolumeProvisioner.java
+++ b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/local/projects/ProjectsVolumeProvisioner.java
@@ -11,7 +11,7 @@
package org.eclipse.che.workspace.infrastructure.docker.local.projects;
import static java.lang.String.format;
-import static org.eclipse.che.api.workspace.shared.Utils.getDevMachineName;
+import static org.eclipse.che.api.workspace.server.Utils.getDevMachineName;
import static org.slf4j.LoggerFactory.getLogger;
import com.google.common.base.Strings;
diff --git a/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/DockerInternalRuntimeTest.java b/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/DockerInternalRuntimeTest.java
index c21372394f..176bb84699 100644
--- a/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/DockerInternalRuntimeTest.java
+++ b/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/DockerInternalRuntimeTest.java
@@ -300,7 +300,7 @@ public class DockerInternalRuntimeTest {
return new InstallerImpl(
"installer_" + i,
"installer_name" + i,
- String.valueOf(i),
+ String.valueOf(i) + ".0.0",
"test installer",
Collections.emptyList(),
emptyMap(),
diff --git a/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/local/installer/WsAgentInstallerInfrastructureProvisionerTest.java b/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/local/installer/WsAgentInstallerInfrastructureProvisionerTest.java
index 9be5abdac5..867d492995 100644
--- a/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/local/installer/WsAgentInstallerInfrastructureProvisionerTest.java
+++ b/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/local/installer/WsAgentInstallerInfrastructureProvisionerTest.java
@@ -16,10 +16,10 @@ import static org.mockito.Mockito.when;
import static org.testng.Assert.assertEquals;
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
+import org.eclipse.che.api.workspace.server.Utils;
import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl;
import org.eclipse.che.api.workspace.server.model.impl.MachineConfigImpl;
import org.eclipse.che.api.workspace.server.spi.RuntimeIdentityImpl;
-import org.eclipse.che.api.workspace.shared.Utils;
import org.eclipse.che.inject.CheBootstrap;
import org.eclipse.che.workspace.infrastructure.docker.local.server.DockerExtConfBindingProvider;
import org.eclipse.che.workspace.infrastructure.docker.model.DockerContainerConfig;
diff --git a/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/local/projects/ProjectsVolumeProvisionerTest.java b/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/local/projects/ProjectsVolumeProvisionerTest.java
index 06c8137652..c7bf14eb25 100644
--- a/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/local/projects/ProjectsVolumeProvisionerTest.java
+++ b/infrastructures/docker/src/test/java/org/eclipse/che/workspace/infrastructure/docker/local/projects/ProjectsVolumeProvisionerTest.java
@@ -17,11 +17,11 @@ import static org.testng.Assert.assertEquals;
import java.io.IOException;
import java.util.Collections;
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
+import org.eclipse.che.api.workspace.server.Utils;
import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl;
import org.eclipse.che.api.workspace.server.model.impl.MachineConfigImpl;
import org.eclipse.che.api.workspace.server.spi.InternalInfrastructureException;
import org.eclipse.che.api.workspace.server.spi.RuntimeIdentityImpl;
-import org.eclipse.che.api.workspace.shared.Utils;
import org.eclipse.che.commons.lang.os.WindowsPathEscaper;
import org.eclipse.che.workspace.infrastructure.docker.model.DockerContainerConfig;
import org.eclipse.che.workspace.infrastructure.docker.model.DockerEnvironment;
diff --git a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisioner.java b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisioner.java
index af37ca9cc5..bb9ea3837b 100644
--- a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisioner.java
+++ b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisioner.java
@@ -28,9 +28,9 @@ import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
import org.eclipse.che.api.installer.server.InstallerRegistry;
import org.eclipse.che.api.installer.server.exception.InstallerException;
import org.eclipse.che.api.installer.shared.model.Installer;
+import org.eclipse.che.api.workspace.server.Utils;
import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
-import org.eclipse.che.api.workspace.shared.Utils;
import org.eclipse.che.workspace.infrastructure.openshift.ServerExposer;
import org.eclipse.che.workspace.infrastructure.openshift.environment.OpenShiftEnvironment;
import org.eclipse.che.workspace.infrastructure.openshift.provision.ConfigurationProvisioner;
diff --git a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/volume/PersistentVolumeClaimProvisioner.java b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/volume/PersistentVolumeClaimProvisioner.java
index 4b4a1516de..d36a5bc1ea 100644
--- a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/volume/PersistentVolumeClaimProvisioner.java
+++ b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/volume/PersistentVolumeClaimProvisioner.java
@@ -25,9 +25,9 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
+import org.eclipse.che.api.workspace.server.Utils;
import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
-import org.eclipse.che.api.workspace.shared.Utils;
import org.eclipse.che.workspace.infrastructure.openshift.environment.OpenShiftEnvironment;
import org.eclipse.che.workspace.infrastructure.openshift.provision.ConfigurationProvisioner;
diff --git a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisionerTest.java b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisionerTest.java
index a44121e965..1acaf6695c 100644
--- a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisionerTest.java
+++ b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisionerTest.java
@@ -12,7 +12,7 @@ package org.eclipse.che.workspace.infrastructure.openshift.provision.installer;
import static java.util.Collections.emptyMap;
import static java.util.Collections.singletonList;
-import static org.eclipse.che.api.workspace.shared.Utils.WSAGENT_INSTALLER;
+import static org.eclipse.che.api.workspace.server.Utils.WSAGENT_INSTALLER;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.mock;
diff --git a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/volume/PersistentVolumeClaimProvisionerTest.java b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/volume/PersistentVolumeClaimProvisionerTest.java
index 5fc99af5fe..7fdc0b3396 100644
--- a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/volume/PersistentVolumeClaimProvisionerTest.java
+++ b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/volume/PersistentVolumeClaimProvisionerTest.java
@@ -11,7 +11,7 @@
package org.eclipse.che.workspace.infrastructure.openshift.provision.volume;
import static java.util.Collections.singletonList;
-import static org.eclipse.che.api.workspace.shared.Utils.WSAGENT_INSTALLER;
+import static org.eclipse.che.api.workspace.server.Utils.WSAGENT_INSTALLER;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
diff --git a/wsagent/agent/pom.xml b/wsagent/agent/pom.xml
index 5978255075..a4d17cc8bd 100644
--- a/wsagent/agent/pom.xml
+++ b/wsagent/agent/pom.xml
@@ -25,10 +25,6 @@
com.google.guava
guava
-
- com.google.inject
- guice
-
-
- org.eclipse.che.core
- che-core-api-installer
-