diff --git a/agents/che-core-api-agent-shared/pom.xml b/agents/che-core-api-agent-shared/pom.xml
index 06ec5b31b9..6c1dd13b0c 100644
--- a/agents/che-core-api-agent-shared/pom.xml
+++ b/agents/che-core-api-agent-shared/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.coreche-core-api-agent-shared
diff --git a/agents/che-core-api-agent/pom.xml b/agents/che-core-api-agent/pom.xml
index f1f1688109..0b23a44eee 100644
--- a/agents/che-core-api-agent/pom.xml
+++ b/agents/che-core-api-agent/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.coreche-core-api-agent
diff --git a/agents/exec/pom.xml b/agents/exec/pom.xml
index aab2dfd626..307db59696 100644
--- a/agents/exec/pom.xml
+++ b/agents/exec/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTexec-agentAgent :: Exec
diff --git a/agents/git-credentials/pom.xml b/agents/git-credentials/pom.xml
index 60d311855e..2507583863 100644
--- a/agents/git-credentials/pom.xml
+++ b/agents/git-credentials/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTgit-credentials-agentGit Credentials Agent
diff --git a/agents/go-agents/pom.xml b/agents/go-agents/pom.xml
index 824edd9ed6..5ae878b7b5 100644
--- a/agents/go-agents/pom.xml
+++ b/agents/go-agents/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTgo-agentsAgent :: Golang agents
diff --git a/agents/ls-csharp/pom.xml b/agents/ls-csharp/pom.xml
index b20bd67e6d..2d7ebdf14f 100644
--- a/agents/ls-csharp/pom.xml
+++ b/agents/ls-csharp/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTls-csharp-agentLanguage Server C# Agent
diff --git a/agents/ls-json/pom.xml b/agents/ls-json/pom.xml
index 62e3f312b8..07d139aa4f 100644
--- a/agents/ls-json/pom.xml
+++ b/agents/ls-json/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTls-json-agentLanguage Server Json Agent
diff --git a/agents/ls-json/src/main/resources/org.eclipse.che.ls.json.script.sh b/agents/ls-json/src/main/resources/org.eclipse.che.ls.json.script.sh
index c520fee176..2f10505b90 100644
--- a/agents/ls-json/src/main/resources/org.eclipse.che.ls.json.script.sh
+++ b/agents/ls-json/src/main/resources/org.eclipse.che.ls.json.script.sh
@@ -139,6 +139,19 @@ elif echo ${LINUX_TYPE} | grep -qi "opensuse"; then
${SUDO} zypper in nodejs
}
+# Alpine 3.3
+############
+elif echo ${LINUX_TYPE} | grep -qi "alpine"; then
+ test "${PACKAGES}" = "" || {
+ ${SUDO} apk update
+ ${SUDO} apk add ${PACKAGES};
+ }
+
+ command -v nodejs >/dev/null 2>&1 || {
+ ${SUDO} apk update
+ ${SUDO} apk add nodejs;
+ }
+
else
>&2 echo "Unrecognized Linux Type"
>&2 cat $FILE
diff --git a/agents/ls-php/pom.xml b/agents/ls-php/pom.xml
index ceea71ce61..1fd4869e1c 100644
--- a/agents/ls-php/pom.xml
+++ b/agents/ls-php/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTls-php-agentLanguage Server PHP Agent
diff --git a/agents/ls-php/src/main/resources/org.eclipse.che.ls.php.script.sh b/agents/ls-php/src/main/resources/org.eclipse.che.ls.php.script.sh
index a495a7ec73..73ca1cb081 100644
--- a/agents/ls-php/src/main/resources/org.eclipse.che.ls.php.script.sh
+++ b/agents/ls-php/src/main/resources/org.eclipse.che.ls.php.script.sh
@@ -94,6 +94,14 @@ elif echo ${LINUX_TYPE} | grep -qi "opensuse"; then
test "${PACKAGES}" = "" || {
${SUDO} zypper install -y ${PACKAGES};
}
+
+# Alpine 3.3
+############
+elif echo ${LINUX_TYPE} | grep -qi "alpine"; then
+ test "${PACKAGES}" = "" || {
+ ${SUDO} apk update
+ ${SUDO} apk add ${PACKAGES};
+ }
else
>&2 echo "Unrecognized Linux Type"
diff --git a/agents/ls-python/pom.xml b/agents/ls-python/pom.xml
index cc7a2a5fdb..44970aaee2 100644
--- a/agents/ls-python/pom.xml
+++ b/agents/ls-python/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTls-python-agentLanguage Server python Agent
diff --git a/agents/ls-typescript/pom.xml b/agents/ls-typescript/pom.xml
index d10733abac..27e85d5b72 100644
--- a/agents/ls-typescript/pom.xml
+++ b/agents/ls-typescript/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTls-typescript-agentLanguage Server typescript Agent
diff --git a/agents/pom.xml b/agents/pom.xml
index 16bccebe9a..616fea2089 100644
--- a/agents/pom.xml
+++ b/agents/pom.xml
@@ -16,11 +16,11 @@
che-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-agents-parent
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpomChe Agents Parent
diff --git a/agents/ssh/pom.xml b/agents/ssh/pom.xml
index 4361fb282a..56edf5a8f5 100644
--- a/agents/ssh/pom.xml
+++ b/agents/ssh/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTssh-agentSSH Agent
diff --git a/agents/terminal/pom.xml b/agents/terminal/pom.xml
index bc25c5e09f..d369ba5349 100644
--- a/agents/terminal/pom.xml
+++ b/agents/terminal/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTterminal-agentAgent :: Terminal
diff --git a/agents/unison/pom.xml b/agents/unison/pom.xml
index 04fd3464bb..c4a0a9063b 100644
--- a/agents/unison/pom.xml
+++ b/agents/unison/pom.xml
@@ -16,7 +16,7 @@
che-agents-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTunison-agentUnison Agent
diff --git a/assembly/assembly-ide-war/pom.xml b/assembly/assembly-ide-war/pom.xml
index 30c14c8674..b25fe1d8ea 100644
--- a/assembly/assembly-ide-war/pom.xml
+++ b/assembly/assembly-ide-war/pom.xml
@@ -16,7 +16,7 @@
che-assembly-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTassembly-ide-warwar
@@ -199,6 +199,10 @@
org.eclipse.che.pluginche-plugin-testing-junit-ide
+
+ org.eclipse.che.plugin
+ che-plugin-testing-phpunit-ide
+ org.eclipse.che.pluginche-plugin-testing-testng-ide
diff --git a/assembly/assembly-main/pom.xml b/assembly/assembly-main/pom.xml
index b41fcb69e6..973f539b92 100644
--- a/assembly/assembly-main/pom.xml
+++ b/assembly/assembly-main/pom.xml
@@ -16,7 +16,7 @@
che-assembly-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTassembly-mainpom
diff --git a/assembly/assembly-wsagent-server/pom.xml b/assembly/assembly-wsagent-server/pom.xml
index 8086524b0e..07d7037f40 100644
--- a/assembly/assembly-wsagent-server/pom.xml
+++ b/assembly/assembly-wsagent-server/pom.xml
@@ -16,7 +16,7 @@
che-assembly-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTassembly-wsagent-serverpom
diff --git a/assembly/assembly-wsagent-war/pom.xml b/assembly/assembly-wsagent-war/pom.xml
index 17318b4bda..4768884b34 100644
--- a/assembly/assembly-wsagent-war/pom.xml
+++ b/assembly/assembly-wsagent-war/pom.xml
@@ -16,7 +16,7 @@
che-assembly-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTassembly-wsagent-warwar
@@ -115,6 +115,10 @@
org.eclipse.che.pluginche-plugin-testing-junit-server
+
+ org.eclipse.che.plugin
+ che-plugin-testing-phpunit-server
+ org.eclipse.che.pluginche-plugin-testing-testng-server
diff --git a/assembly/assembly-wsmaster-war/pom.xml b/assembly/assembly-wsmaster-war/pom.xml
index 59dcf7afd0..1264f2ee41 100644
--- a/assembly/assembly-wsmaster-war/pom.xml
+++ b/assembly/assembly-wsmaster-war/pom.xml
@@ -16,7 +16,7 @@
che-assembly-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTassembly-wsmaster-warwar
diff --git a/assembly/pom.xml b/assembly/pom.xml
index 857efed005..c7c5a39261 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -16,12 +16,12 @@
che-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlorg.eclipse.cheche-assembly-parent
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpomChe IDE :: Parent
diff --git a/assembly2/assembly-wsagent-server/src/assembly/assembly.xml b/assembly2/assembly-wsagent-server/src/assembly/assembly.xml
index 500513535f..bb124df626 100644
--- a/assembly2/assembly-wsagent-server/src/assembly/assembly.xml
+++ b/assembly2/assembly-wsagent-server/src/assembly/assembly.xml
@@ -25,7 +25,7 @@
webappsROOT.war
- org.eclipse.che:fabric8-ide-assembly-wsagent-war
+ org.eclipse.che.assembly2:assembly-wsagent-war
diff --git a/assembly2/assembly-wsmaster-war/src/main/webapp/WEB-INF/keycloak.json b/assembly2/assembly-wsmaster-war/src/main/webapp/WEB-INF/keycloak.json
index 72813f2a76..89cc54b84b 100644
--- a/assembly2/assembly-wsmaster-war/src/main/webapp/WEB-INF/keycloak.json
+++ b/assembly2/assembly-wsmaster-war/src/main/webapp/WEB-INF/keycloak.json
@@ -5,5 +5,8 @@
"resource": "che",
"credentials": {
"secret": "2c1b2621-d251-4701-82c4-a7dd447faa97"
+ },
+ "redirect-rewrite-rules" : {
+ "^/wsmaster/api/(.*)$" : "/api/$1"
}
}
diff --git a/core/che-core-api-core/pom.xml b/core/che-core-api-core/pom.xml
index c772bf2573..b2978ed389 100644
--- a/core/che-core-api-core/pom.xml
+++ b/core/che-core-api-core/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-corejar
diff --git a/core/che-core-api-dto-maven-plugin/pom.xml b/core/che-core-api-dto-maven-plugin/pom.xml
index 55f237fd28..076bf4bbde 100644
--- a/core/che-core-api-dto-maven-plugin/pom.xml
+++ b/core/che-core-api-dto-maven-plugin/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-dto-maven-pluginmaven-plugin
diff --git a/core/che-core-api-dto/pom.xml b/core/che-core-api-dto/pom.xml
index a5369fbbaa..c20a4dd881 100644
--- a/core/che-core-api-dto/pom.xml
+++ b/core/che-core-api-dto/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-dtojar
diff --git a/core/che-core-api-model/pom.xml b/core/che-core-api-model/pom.xml
index bce0939796..8f074dc69a 100644
--- a/core/che-core-api-model/pom.xml
+++ b/core/che-core-api-model/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-modeljar
diff --git a/core/che-core-db-vendor-h2/pom.xml b/core/che-core-db-vendor-h2/pom.xml
index dfe957c2dc..b387655bd7 100644
--- a/core/che-core-db-vendor-h2/pom.xml
+++ b/core/che-core-db-vendor-h2/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-db-vendor-h2Che Core :: DB :: Vendor H2
diff --git a/core/che-core-db-vendor-postgresql/pom.xml b/core/che-core-db-vendor-postgresql/pom.xml
index 941b84f946..5a4d62ee29 100644
--- a/core/che-core-db-vendor-postgresql/pom.xml
+++ b/core/che-core-db-vendor-postgresql/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-db-vendor-postgresqlChe Core :: DB :: Vendor PostgreSQL
diff --git a/core/che-core-db/pom.xml b/core/che-core-db/pom.xml
index 3d593220c2..6dc60d24be 100644
--- a/core/che-core-db/pom.xml
+++ b/core/che-core-db/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-dbChe Core :: DB
diff --git a/core/che-core-typescript-dto-maven-plugin/pom.xml b/core/che-core-typescript-dto-maven-plugin/pom.xml
index a3da4636ba..2545e2bb82 100644
--- a/core/che-core-typescript-dto-maven-plugin/pom.xml
+++ b/core/che-core-typescript-dto-maven-plugin/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.coreche-core-typescript-dto-maven-plugin
diff --git a/core/commons/che-core-commons-annotations/pom.xml b/core/commons/che-core-commons-annotations/pom.xml
index 4fde57222b..835dcba675 100644
--- a/core/commons/che-core-commons-annotations/pom.xml
+++ b/core/commons/che-core-commons-annotations/pom.xml
@@ -16,7 +16,7 @@
che-core-commons-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-annotationsjar
diff --git a/core/commons/che-core-commons-inject/pom.xml b/core/commons/che-core-commons-inject/pom.xml
index f13724a4d7..6f2eec1a6b 100644
--- a/core/commons/che-core-commons-inject/pom.xml
+++ b/core/commons/che-core-commons-inject/pom.xml
@@ -16,7 +16,7 @@
che-core-commons-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-injectjar
diff --git a/core/commons/che-core-commons-j2ee/pom.xml b/core/commons/che-core-commons-j2ee/pom.xml
index 80071027cc..1f499866e5 100644
--- a/core/commons/che-core-commons-j2ee/pom.xml
+++ b/core/commons/che-core-commons-j2ee/pom.xml
@@ -16,7 +16,7 @@
che-core-commons-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-j2eejar
diff --git a/core/commons/che-core-commons-json/pom.xml b/core/commons/che-core-commons-json/pom.xml
index f1db9ce8a4..93b3dcd8a6 100644
--- a/core/commons/che-core-commons-json/pom.xml
+++ b/core/commons/che-core-commons-json/pom.xml
@@ -16,7 +16,7 @@
che-core-commons-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-jsonjar
diff --git a/core/commons/che-core-commons-lang/pom.xml b/core/commons/che-core-commons-lang/pom.xml
index 1aaeecdf23..51dc794ff7 100644
--- a/core/commons/che-core-commons-lang/pom.xml
+++ b/core/commons/che-core-commons-lang/pom.xml
@@ -16,7 +16,7 @@
che-core-commons-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-langjar
diff --git a/core/commons/che-core-commons-schedule/pom.xml b/core/commons/che-core-commons-schedule/pom.xml
index 3362d69d12..d97e6b0d5a 100644
--- a/core/commons/che-core-commons-schedule/pom.xml
+++ b/core/commons/che-core-commons-schedule/pom.xml
@@ -16,7 +16,7 @@
che-core-commons-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-schedulejar
diff --git a/core/commons/che-core-commons-test/pom.xml b/core/commons/che-core-commons-test/pom.xml
index b8be9a45cb..46809059af 100644
--- a/core/commons/che-core-commons-test/pom.xml
+++ b/core/commons/che-core-commons-test/pom.xml
@@ -16,7 +16,7 @@
che-core-commons-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-testjar
diff --git a/core/commons/che-core-commons-xml/pom.xml b/core/commons/che-core-commons-xml/pom.xml
index ed74b67a7e..fffa0ed0ad 100644
--- a/core/commons/che-core-commons-xml/pom.xml
+++ b/core/commons/che-core-commons-xml/pom.xml
@@ -16,7 +16,7 @@
che-core-commons-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-xmljar
diff --git a/core/commons/pom.xml b/core/commons/pom.xml
index 8f046e41f8..474eae5e37 100644
--- a/core/commons/pom.xml
+++ b/core/commons/pom.xml
@@ -16,7 +16,7 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-core-commons-parent
diff --git a/core/pom.xml b/core/pom.xml
index 787954a087..96825a388d 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -16,12 +16,12 @@
che-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlorg.eclipse.che.coreche-core-parent
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpomChe Core Parent
diff --git a/dashboard/pom.xml b/dashboard/pom.xml
index 2c1ad17ad6..3a2d6e00b6 100644
--- a/dashboard/pom.xml
+++ b/dashboard/pom.xml
@@ -16,12 +16,12 @@
che-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlorg.eclipse.che.dashboardche-dashboard-war
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTwarChe Dashboard :: Web App2015
diff --git a/dockerfiles/che/Dockerfile b/dockerfiles/che/Dockerfile
index dfcbc88e61..4fd8733e8e 100644
--- a/dockerfiles/che/Dockerfile
+++ b/dockerfiles/che/Dockerfile
@@ -36,5 +36,6 @@ RUN echo "http://dl-4.alpinelinux.org/alpine/edge/community" >> /etc/apk/reposit
EXPOSE 8000 8080
COPY entrypoint.sh /entrypoint.sh
+COPY open-jdk-source-file-location /open-jdk-source-file-location
ENTRYPOINT ["/entrypoint.sh"]
ADD eclipse-che.tar.gz /home/user/
diff --git a/dockerfiles/che/entrypoint.sh b/dockerfiles/che/entrypoint.sh
index fdd89c33a1..964634d5a4 100755
--- a/dockerfiles/che/entrypoint.sh
+++ b/dockerfiles/che/entrypoint.sh
@@ -83,8 +83,10 @@ set_environment_variables () {
### Set value of derived environment variables.
# CHE_DOCKER_IP is used internally by Che to set its IP address
- if [[ -n "${CHE_IP}" ]]; then
- export CHE_DOCKER_IP="${CHE_IP}"
+ if [[ -z "${CHE_DOCKER_IP}" ]]; then
+ if [[ -n "${CHE_IP}" ]]; then
+ export CHE_DOCKER_IP="${CHE_IP}"
+ fi
fi
# Convert Tomcat environment variables to POSIX format.
diff --git a/dockerfiles/che/open-jdk-source-file-location b/dockerfiles/che/open-jdk-source-file-location
new file mode 100644
index 0000000000..6030b59b83
--- /dev/null
+++ b/dockerfiles/che/open-jdk-source-file-location
@@ -0,0 +1,12 @@
+This package distributes OpenJDK binaries that are licensed under the GPL.
+The source code and build scripts used to create this binary are available for download at:
+
+* eclipse che image parent: `FROM openjdk:8u111-jre-alpine`
+ * official openjdk image parent: `FROM alpine:3.4`
+ * summary of alpine `openjdk8u111-b14` package reference - https://pkgs.alpinelinux.org/package/v3.4/community/x86_64/openjdk8-jre
+ * alpine build scripts for `openjdk8u111-b14` reference - https://git.alpinelinux.org/cgit/aports/tree/community/openjdk8?id=027d8ceca1422c0ffc3fe3a22523f22abedd694c
+ * build performed by running `APKBUILD` script which will:
+ * define jdk version reference - https://git.alpinelinux.org/cgit/aports/tree/community/openjdk8/APKBUILD?id=027d8ceca1422c0ffc3fe3a22523f22abedd694c#n5
+ * grab official jdk sources by version from "http://hg.openjdk.java.net" reference - https://git.alpinelinux.org/cgit/aports/tree/community/openjdk8/APKBUILD?id=027d8ceca1422c0ffc3fe3a22523f22abedd694c#n43
+ * add alpine specific patches reference - https://git.alpinelinux.org/cgit/aports/tree/community/openjdk8?id=027d8ceca1422c0ffc3fe3a22523f22abedd694c
+ * perform build
diff --git a/dockerfiles/cli/version/5.15.0/images b/dockerfiles/cli/version/5.15.0/images
new file mode 100644
index 0000000000..5abd12a95c
--- /dev/null
+++ b/dockerfiles/cli/version/5.15.0/images
@@ -0,0 +1,4 @@
+IMAGE_INIT=eclipse/che-init:5.15.0
+IMAGE_CHE=eclipse/che-server:5.15.0
+IMAGE_COMPOSE=docker/compose:1.8.1
+IMAGE_TRAEFIK=traefik:v1.3.0-rc3
diff --git a/dockerfiles/cli/version/5.15.0/images-stacks b/dockerfiles/cli/version/5.15.0/images-stacks
new file mode 100644
index 0000000000..4630f02af6
--- /dev/null
+++ b/dockerfiles/cli/version/5.15.0/images-stacks
@@ -0,0 +1,24 @@
+eclipse/alpine_jdk8
+eclipse/aspnet
+eclipse/centos_jdk8
+eclipse/cpp_gcc
+eclipse/debian_jdk8
+eclipse/debian_jdk8_node
+eclipse/debian_jre
+eclipse/dotnet_core
+eclipse/hadoop-dev
+eclipse/meteor
+eclipse/node
+eclipse/php
+eclipse/platformio
+eclipse/ruby_rails
+eclipse/selenium
+eclipse/ubuntu_android
+eclipse/ubuntu_go
+eclipse/ubuntu_gradle
+eclipse/ubuntu_jdk8
+eclipse/ubuntu_jre
+eclipse/ubuntu_python
+eclipse/ubuntu_wildfly8
+registry.centos.org/che-stacks/vertx
+
diff --git a/dockerfiles/cli/version/latest.ver b/dockerfiles/cli/version/latest.ver
index 22f097e28e..5d4f567eb6 100644
--- a/dockerfiles/cli/version/latest.ver
+++ b/dockerfiles/cli/version/latest.ver
@@ -1 +1 @@
-5.13.0
\ No newline at end of file
+5.14.0
\ No newline at end of file
diff --git a/dockerfiles/lib/dto-pom.xml b/dockerfiles/lib/dto-pom.xml
index b7b27ac9e0..5e52ba401c 100644
--- a/dockerfiles/lib/dto-pom.xml
+++ b/dockerfiles/lib/dto-pom.xml
@@ -17,13 +17,13 @@
maven-depmgt-pomorg.eclipse.che.depmgt
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTdto-typescriptpomChe TypeScript DTO
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT
diff --git a/ide/che-core-dyna-provider-generator-maven-plugin/pom.xml b/ide/che-core-dyna-provider-generator-maven-plugin/pom.xml
index e465dbaf88..000cbdbc3d 100644
--- a/ide/che-core-dyna-provider-generator-maven-plugin/pom.xml
+++ b/ide/che-core-dyna-provider-generator-maven-plugin/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-dyna-provider-generator-maven-pluginmaven-plugin
diff --git a/ide/che-core-ide-api/pom.xml b/ide/che-core-ide-api/pom.xml
index cb4d7b1481..a62068223d 100644
--- a/ide/che-core-ide-api/pom.xml
+++ b/ide/che-core-ide-api/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.coreche-core-ide-api
diff --git a/ide/che-core-ide-app/pom.xml b/ide/che-core-ide-app/pom.xml
index 87080260c9..df87deba5b 100644
--- a/ide/che-core-ide-app/pom.xml
+++ b/ide/che-core-ide-app/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-ide-appjar
@@ -336,6 +336,9 @@
**/*.png**/*.gif**/*.jpg
+ **/OutputCustomizer.java
+ **/DefaultOutputCustomizer.java
+ **/DefaultOutputCustomizerTest.java
diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/CommandOutputConsolePresenter.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/CommandOutputConsolePresenter.java
index 3f87dc5adf..221bdce07e 100644
--- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/CommandOutputConsolePresenter.java
+++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/CommandOutputConsolePresenter.java
@@ -25,8 +25,10 @@ import org.eclipse.che.api.machine.shared.dto.execagent.event.ProcessStdOutEvent
import org.eclipse.che.api.promises.client.Operation;
import org.eclipse.che.api.promises.client.OperationException;
import org.eclipse.che.commons.annotation.Nullable;
+import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.ide.api.command.CommandExecutor;
import org.eclipse.che.ide.api.command.CommandImpl;
+import org.eclipse.che.ide.api.editor.EditorAgent;
import org.eclipse.che.ide.api.machine.ExecAgentCommandManager;
import org.eclipse.che.ide.api.machine.events.ProcessFinishedEvent;
import org.eclipse.che.ide.api.machine.events.ProcessStartedEvent;
@@ -66,6 +68,8 @@ public class CommandOutputConsolePresenter implements CommandOutputConsole, Outp
private boolean followOutput = true;
private final List actionDelegates = new ArrayList<>();
+
+ private OutputCustomizer outputCustomizer = null;
@Inject
public CommandOutputConsolePresenter(final OutputConsoleView view,
@@ -75,7 +79,9 @@ public class CommandOutputConsolePresenter implements CommandOutputConsole, Outp
EventBus eventBus,
ExecAgentCommandManager execAgentCommandManager,
@Assisted CommandImpl command,
- @Assisted Machine machine) {
+ @Assisted Machine machine,
+ AppContext appContext,
+ EditorAgent editorAgent) {
this.view = view;
this.resources = resources;
this.execAgentCommandManager = execAgentCommandManager;
@@ -84,6 +90,7 @@ public class CommandOutputConsolePresenter implements CommandOutputConsole, Outp
this.eventBus = eventBus;
this.commandExecutor = commandExecutor;
+ setCustomizer(new DefaultOutputCustomizer(appContext, editorAgent));
view.setDelegate(this);
final String previewUrl = command.getAttributes().get(COMMAND_PREVIEW_URL_ATTRIBUTE_NAME);
@@ -275,4 +282,13 @@ public class CommandOutputConsolePresenter implements CommandOutputConsole, Outp
return view.getText();
}
+ @Override
+ public OutputCustomizer getCustomizer() {
+ return outputCustomizer;
+ }
+
+ /** Sets up the text output customizer */
+ public void setCustomizer(OutputCustomizer customizer) {
+ this.outputCustomizer = customizer;
+ }
}
diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/DefaultOutputConsole.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/DefaultOutputConsole.java
index e8f3f8bc13..2d2663accf 100644
--- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/DefaultOutputConsole.java
+++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/DefaultOutputConsole.java
@@ -14,6 +14,8 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
+import org.eclipse.che.ide.api.app.AppContext;
+import org.eclipse.che.ide.api.editor.EditorAgent;
import org.eclipse.che.ide.api.outputconsole.OutputConsole;
import org.eclipse.che.ide.machine.MachineResources;
import org.vectomatic.dom.svg.ui.SVGResource;
@@ -39,15 +41,21 @@ public class DefaultOutputConsole implements OutputConsole, OutputConsoleView.Ac
/** Follow output when printing text */
private boolean followOutput = true;
+ private OutputCustomizer customizer = null;
+
@Inject
public DefaultOutputConsole(OutputConsoleView view,
MachineResources resources,
+ AppContext appContext,
+ EditorAgent editorAgent,
@Assisted String title) {
this.view = view;
this.title = title;
this.resources = resources;
this.view.enableAutoScroll(true);
+ setCustomizer(new DefaultOutputCustomizer(appContext, editorAgent));
+
view.setDelegate(this);
view.hideCommand();
@@ -182,4 +190,14 @@ public class DefaultOutputConsole implements OutputConsole, OutputConsoleView.Ac
view.toggleScrollToEndButton(bottomReached);
}
+ @Override
+ public OutputCustomizer getCustomizer() {
+ return customizer;
+ }
+
+ /** Sets up the text output customizer */
+ public void setCustomizer(OutputCustomizer customizer) {
+ this.customizer = customizer;
+ }
+
}
diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/DefaultOutputCustomizer.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/DefaultOutputCustomizer.java
new file mode 100644
index 0000000000..1cf77a7127
--- /dev/null
+++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/DefaultOutputCustomizer.java
@@ -0,0 +1,226 @@
+/*******************************************************************************
+ * Copyright (c) 2017 RedHat, 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:
+ * RedHat, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.ide.console;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Strings.nullToEmpty;
+import static com.google.gwt.regexp.shared.RegExp.compile;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.eclipse.che.api.promises.client.Function;
+import org.eclipse.che.api.promises.client.FunctionException;
+import org.eclipse.che.api.promises.client.Promise;
+import org.eclipse.che.ide.api.app.AppContext;
+import org.eclipse.che.ide.api.editor.EditorAgent;
+import org.eclipse.che.ide.api.editor.EditorPartPresenter;
+import org.eclipse.che.ide.api.editor.OpenEditorCallbackImpl;
+import org.eclipse.che.ide.api.editor.text.TextPosition;
+import org.eclipse.che.ide.api.editor.text.TextRange;
+import org.eclipse.che.ide.api.editor.texteditor.TextEditor;
+import org.eclipse.che.ide.api.resources.Container;
+import org.eclipse.che.ide.api.resources.File;
+import org.eclipse.che.ide.api.resources.Resource;
+import org.eclipse.che.ide.resource.Path;
+
+import com.google.gwt.regexp.shared.MatchResult;
+import com.google.gwt.regexp.shared.RegExp;
+import com.google.gwt.user.client.Timer;
+import com.google.inject.Inject;
+
+/**
+ * Default customizer adds an anchor link to the lines that match a stack trace
+ * line pattern and installs a handler function for the link. The handler parses
+ * the stack trace line, searches for the candidate Java files to navigate to,
+ * opens the first file (of the found candidates) in editor and reveals it to
+ * the required line according to the stack trace line information
+ */
+public class DefaultOutputCustomizer implements OutputCustomizer {
+
+ private static final RegExp LINE_AT = compile("(\\s+at .+)");
+ private static final RegExp LINE_AT_EXCEPTION = compile("(\\s+at address:.+)");
+
+ private AppContext appContext;
+ private EditorAgent editorAgent;
+
+ @Inject
+ public DefaultOutputCustomizer(AppContext appContext, EditorAgent editorAgent) {
+ this.appContext = appContext;
+ this.editorAgent = editorAgent;
+
+ exportAnchorClickHandlerFunction();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.che.ide.extension.machine.client.outputspanel.console.
+ * OutputCustomizer#canCustomize(java.lang.String)
+ */
+ @Override
+ public boolean canCustomize(String text) {
+ return (LINE_AT.exec(text) != null && LINE_AT_EXCEPTION.exec(text) == null);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.che.ide.extension.machine.client.outputspanel.console.
+ * OutputCustomizer#customize(java.lang.String)
+ */
+ @Override
+ public String customize(String text) {
+ String customText = text;
+
+ MatchResult matcher = LINE_AT.exec(text);
+ if (matcher != null) {
+ try {
+ int start = text.indexOf("at", 0) + "at".length(), openBracket = text.indexOf("(", start),
+ column = text.indexOf(":", openBracket), closingBracket = text.indexOf(")", column);
+ String qualifiedName = text.substring(start, openBracket).trim();
+ String fileName = text.substring(openBracket + "(".length(), column).trim();
+ int lineNumber = Integer.valueOf(text.substring(column + ":".length(), closingBracket).trim());
+ customText = text.substring(0, openBracket + "(".length());
+ customText += "";
+ customText += text.substring(openBracket + "(".length(), closingBracket);
+ customText += "";
+ customText += text.substring(closingBracket);
+ text = customText;
+ } catch (IndexOutOfBoundsException ex) {
+ // ignore
+ }
+ }
+
+ return text;
+ }
+
+ /**
+ * A callback that is to be called for an anchor
+ *
+ * @param qualifiedName
+ * @param fileName
+ * @param lineNumber
+ */
+ public void handleAnchorClick(String qualifiedName, String fileName, final int lineNumber) {
+ if (qualifiedName == null || fileName == null) {
+ return;
+ }
+
+ String qualifiedClassName = qualifiedName.lastIndexOf('.') != -1
+ ? qualifiedName.substring(0, qualifiedName.lastIndexOf('.'))
+ : qualifiedName;
+ final String packageName = qualifiedClassName.lastIndexOf('.') != -1
+ ? qualifiedClassName.substring(0, qualifiedClassName.lastIndexOf('.'))
+ : "";
+
+ String relativeFilePath = (packageName.isEmpty() ? "" :
+ (packageName.replace(".", "/") + "/")) + fileName;
+
+ collectChildren(appContext.getWorkspaceRoot(), Path.valueOf(relativeFilePath)).then(files -> {
+ if (!files.isEmpty()) {
+ editorAgent.openEditor(files.get(0), new OpenEditorCallbackImpl() {
+ @Override
+ public void onEditorOpened(EditorPartPresenter editor) {
+ Timer t = new Timer() {
+ @Override
+ public void run() {
+ EditorPartPresenter editorPart = editorAgent.getActiveEditor();
+ selectRange(editorPart, lineNumber);
+ }
+ };
+ t.schedule(500);
+ }
+
+ @Override
+ public void onEditorActivated(EditorPartPresenter editor) {
+ selectRange(editor, lineNumber);
+ }
+ });
+
+ }
+ });
+ }
+
+ /*
+ * Returns the list of workspace files filtered by a relative path
+ */
+ private Promise> collectChildren(Container root, Path relativeFilePath) {
+ return root.getTree(-1).then(new Function>() {
+ @Override
+ public List apply(Resource[] children) throws FunctionException {
+ return Stream.of(children).filter(
+ child -> child.isFile() && endsWith(child.asFile().getLocation(), relativeFilePath))
+ .map(Resource::asFile).collect(Collectors.toList());
+ }
+ });
+ }
+
+ /*
+ * Checks if a path's last segments are equal to the provided relative path
+ */
+ private boolean endsWith(Path path, Path relativePath) {
+ checkNotNull(path);
+ checkNotNull(relativePath);
+
+ if (path.segmentCount() < relativePath.segmentCount())
+ return false;
+
+ for (int i = relativePath.segmentCount() - 1, j = path.segmentCount() - 1; i >= 0; i--, j--) {
+ if (!nullToEmpty(relativePath.segment(i)).equals(path.segment(j))) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /*
+ * Selects and shows the specified line of text in editor
+ */
+ private void selectRange(EditorPartPresenter editor, int line) {
+ if (editor instanceof TextEditor) {
+ TextPosition startPosition = new TextPosition(line - 1, 0);
+ int lineOffsetStart = ((TextEditor) editor).getDocument().getLineStart(line - 1);
+ if (lineOffsetStart == -1) {
+ lineOffsetStart = 0;
+ }
+
+ int lineOffsetEnd = ((TextEditor) editor).getDocument().getLineStart(line);
+ if (lineOffsetEnd == -1) {
+ lineOffsetEnd = 0;
+ }
+ while (((TextEditor) editor).getDocument().getLineAtOffset(lineOffsetEnd) > line - 1) {
+ lineOffsetEnd--;
+ }
+ if (lineOffsetStart > lineOffsetEnd) {
+ lineOffsetEnd = lineOffsetStart;
+ }
+
+ TextPosition endPosition = new TextPosition(line - 1, lineOffsetEnd - lineOffsetStart);
+
+ ((TextEditor) editor).getDocument().setSelectedRange(new TextRange(startPosition, endPosition), true);
+ ((TextEditor) editor).getDocument().setCursorPosition(startPosition);
+ }
+ }
+
+ /**
+ * Sets up a java callback to be called for an anchor
+ */
+ public native void exportAnchorClickHandlerFunction() /*-{
+ var that = this;
+ $wnd.open = $entry(function(qualifiedName,fileName,lineNumber) {
+ that.@org.eclipse.che.ide.console.DefaultOutputCustomizer::handleAnchorClick(*)(qualifiedName,fileName,lineNumber);
+ });
+ }-*/;
+}
diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/OutputConsoleView.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/OutputConsoleView.java
index 57da8be0da..533eee826d 100644
--- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/OutputConsoleView.java
+++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/OutputConsoleView.java
@@ -159,6 +159,9 @@ public interface OutputConsoleView extends View pair : output2Color) {
- final MatchResult matcher = pair.first.exec(text);
+ final MatchResult matcher = pair.first.exec(encoded);
if (matcher != null) {
- return text.replaceAll(matcher.getGroup(1),
+ return encoded.replaceAll(matcher.getGroup(1),
"" + matcher.getGroup(1) + "");
}
}
- return text;
+ return encoded;
}
};
diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/OutputCustomizer.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/OutputCustomizer.java
new file mode 100644
index 0000000000..1ed14c53d3
--- /dev/null
+++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/console/OutputCustomizer.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2017 RedHat, 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:
+ * RedHat, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.ide.console;
+
+/**
+ * An interface to allow output text customizations
+ */
+public interface OutputCustomizer {
+ /** Checks if the specified text can be/has to be customized */
+ boolean canCustomize(String text);
+
+ /** Returns the result of customization for the specified text */
+ String customize(String text);
+}
diff --git a/ide/che-core-ide-app/src/test/java/org/eclipse/che/ide/console/DefaultOutputCustomizerTest.java b/ide/che-core-ide-app/src/test/java/org/eclipse/che/ide/console/DefaultOutputCustomizerTest.java
new file mode 100644
index 0000000000..b3b0db344a
--- /dev/null
+++ b/ide/che-core-ide-app/src/test/java/org/eclipse/che/ide/console/DefaultOutputCustomizerTest.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2017 RedHat, 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:
+ * RedHat, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.ide.console;
+
+import org.eclipse.che.ide.api.app.AppContext;
+import org.eclipse.che.ide.api.editor.EditorAgent;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.testng.Assert;
+
+import com.google.gwtmockito.GwtMockitoTestRunner;
+
+/**
+ * JUnit test for stacktrace line detection in DefaultOutputCustomazer.
+ *
+ * See: CHE-15 - Java stacktrace support (From Platform to Che Workspace)
+ */
+@RunWith(GwtMockitoTestRunner.class)
+public class DefaultOutputCustomizerTest {
+ @Mock
+ AppContext appContext;
+ @Mock
+ EditorAgent editorAgent;
+
+ private OutputCustomizer outputCustomizer;
+
+ @Before
+ public void setUp() throws Exception {
+ outputCustomizer = new DefaultOutputCustomizer(appContext, editorAgent);
+ }
+
+ private void testStackTraceLine(boolean shouldBeCustomizable, String line, String expectedCustomization) throws Exception {
+ Assert.assertEquals(outputCustomizer.canCustomize(line), shouldBeCustomizable,
+ "Line [" + line + "] is " + (shouldBeCustomizable ? "" : "not ") +
+ "customizable while it should" +
+ (shouldBeCustomizable ? "n\'t " : " ") + "be: ");
+ if (shouldBeCustomizable) {
+ Assert.assertEquals(outputCustomizer.customize(line), expectedCustomization,
+ "Wrong customization result:");
+ }
+ }
+
+ /**
+ * Test for the detection of initial stacktrace lines in DefaultOutputCustomazer.
+ * These lines are not to be customized, however these lines show an examples of beginning
+ * the StackTrace and might be used in future to set up the customizer properly.
+ * @throws Exception
+ */
+ @Test
+ public void testInitialStackTraceLines() throws Exception {
+ testStackTraceLine(false, "org.test.HighLevelException: org.test.MidLevelException: org.test.LowLevelException", null);
+ testStackTraceLine(false, "Caused by: org.test.MidLevelException: org.test.LowLevelException", null);
+ testStackTraceLine(false, "Caused by: org.test.LowLevelException", null);
+ testStackTraceLine(false, "Exception in thread \"main\" java.lang.ArithmeticException: / by zero", null);
+ }
+
+ /**
+ * Test for the detection of informative stacktrace lines in DefaultOutputCustomazer.
+ * These lines have an information on qualified path, file name and line number for an
+ * exception
+ * @throws Exception
+ */
+ @Test
+ public void testValuableStackTraceLines() throws Exception {
+ testStackTraceLine(true, " at org.test.Junk.main(Junk.java:6)", " at org.test.Junk.main(Junk.java:6)");
+ testStackTraceLine(true, " at org.test.TrashClass.throwItThere(Junk.java:51)", " at org.test.TrashClass.throwItThere(Junk.java:51)");
+ testStackTraceLine(true, " at MyClass$ThrowInConstructor.(MyClass.java:16)", " at MyClass$ThrowInConstructor.(MyClass.java:16)");
+ }
+
+ /**
+ * Test for the detection of other stacktrace lines in DefaultOutputCustomazer.
+ * Other lines that can be a part of Stack Trace, however do not contain any
+ * useful information
+ * @throws Exception
+ */
+ @Test
+ public void testOtherStackTraceLines() throws Exception {
+ testStackTraceLine(false, " ... 1 more", null);
+ }
+
+ /**
+ * Test for the detection of non-stacktrace lines in DefaultOutputCustomazer.
+ * Other lines that might occur in output console
+ * @throws Exception
+ */
+ @Test
+ public void testNonStackTraceLines() throws Exception {
+ testStackTraceLine(false, "[STDOUT] Listening for transport dt_socket at address: 4403", null);
+ }
+}
diff --git a/ide/che-core-ide-generators/pom.xml b/ide/che-core-ide-generators/pom.xml
index 79d7e3daca..12ca35f236 100644
--- a/ide/che-core-ide-generators/pom.xml
+++ b/ide/che-core-ide-generators/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.coreche-core-ide-generators
diff --git a/ide/che-core-ide-stacks/pom.xml b/ide/che-core-ide-stacks/pom.xml
index 3db4fcadae..8c523e2fcf 100644
--- a/ide/che-core-ide-stacks/pom.xml
+++ b/ide/che-core-ide-stacks/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.coreche-core-ide-stacks
diff --git a/ide/che-core-ide-templates/pom.xml b/ide/che-core-ide-templates/pom.xml
index 3b3a4f7de1..8f1c70e59b 100644
--- a/ide/che-core-ide-templates/pom.xml
+++ b/ide/che-core-ide-templates/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.coreche-core-ide-templates
diff --git a/ide/che-core-ide-ui/pom.xml b/ide/che-core-ide-ui/pom.xml
index 5c9b3df3ea..7b7d38e194 100644
--- a/ide/che-core-ide-ui/pom.xml
+++ b/ide/che-core-ide-ui/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.coreche-core-ide-ui
diff --git a/ide/che-core-orion-editor/pom.xml b/ide/che-core-orion-editor/pom.xml
index 5abe557fb1..01a6e2e2ed 100644
--- a/ide/che-core-orion-editor/pom.xml
+++ b/ide/che-core-orion-editor/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-orion-editorjar
diff --git a/ide/che-ide-core/pom.xml b/ide/che-ide-core/pom.xml
index 0021c457e0..4fa224d3e6 100644
--- a/ide/che-ide-core/pom.xml
+++ b/ide/che-ide-core/pom.xml
@@ -16,7 +16,7 @@
che-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../../pom.xmlorg.eclipse.che.core
diff --git a/ide/commons-gwt/pom.xml b/ide/commons-gwt/pom.xml
index 203f868f97..6a891ba426 100644
--- a/ide/commons-gwt/pom.xml
+++ b/ide/commons-gwt/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-commons-gwtChe Core :: Commons :: GWT
diff --git a/ide/gwt-logger/pom.xml b/ide/gwt-logger/pom.xml
index 452016bf21..598fafad0a 100644
--- a/ide/gwt-logger/pom.xml
+++ b/ide/gwt-logger/pom.xml
@@ -16,7 +16,7 @@
che-core-ide-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-gwt-loggerChe Core :: Commons :: GWT Logger
diff --git a/ide/pom.xml b/ide/pom.xml
index 22d0c3e47d..df18041bec 100644
--- a/ide/pom.xml
+++ b/ide/pom.xml
@@ -16,7 +16,7 @@
che-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlorg.eclipse.che.core
diff --git a/plugins/plugin-composer/che-plugin-composer-ide/pom.xml b/plugins/plugin-composer/che-plugin-composer-ide/pom.xml
index bfad3d42d3..a22ef1887a 100644
--- a/plugins/plugin-composer/che-plugin-composer-ide/pom.xml
+++ b/plugins/plugin-composer/che-plugin-composer-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-composer-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-composer-idejar
diff --git a/plugins/plugin-composer/che-plugin-composer-server/pom.xml b/plugins/plugin-composer/che-plugin-composer-server/pom.xml
index 76560c3b06..c2cb23f865 100644
--- a/plugins/plugin-composer/che-plugin-composer-server/pom.xml
+++ b/plugins/plugin-composer/che-plugin-composer-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-composer-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-composer-serverChe Plugin :: Composer :: Server
diff --git a/plugins/plugin-composer/che-plugin-composer-shared/pom.xml b/plugins/plugin-composer/che-plugin-composer-shared/pom.xml
index 79df5587d9..e32c03c040 100644
--- a/plugins/plugin-composer/che-plugin-composer-shared/pom.xml
+++ b/plugins/plugin-composer/che-plugin-composer-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-composer-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-composer-sharedChe Plugin :: Composer :: Shared
diff --git a/plugins/plugin-composer/pom.xml b/plugins/plugin-composer/pom.xml
index 45152967e3..12f0b461a6 100644
--- a/plugins/plugin-composer/pom.xml
+++ b/plugins/plugin-composer/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-composer-parent
diff --git a/plugins/plugin-cpp/che-plugin-cpp-lang-ide/pom.xml b/plugins/plugin-cpp/che-plugin-cpp-lang-ide/pom.xml
index f373dcd92b..93c05b3496 100644
--- a/plugins/plugin-cpp/che-plugin-cpp-lang-ide/pom.xml
+++ b/plugins/plugin-cpp/che-plugin-cpp-lang-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-cpp-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-cpp-lang-idejar
diff --git a/plugins/plugin-cpp/che-plugin-cpp-lang-server/pom.xml b/plugins/plugin-cpp/che-plugin-cpp-lang-server/pom.xml
index aee89f271e..fbc9ca3f92 100644
--- a/plugins/plugin-cpp/che-plugin-cpp-lang-server/pom.xml
+++ b/plugins/plugin-cpp/che-plugin-cpp-lang-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-cpp-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-cpp-lang-serverChe Plugin :: C/C++ :: Extension Server
diff --git a/plugins/plugin-cpp/che-plugin-cpp-lang-shared/pom.xml b/plugins/plugin-cpp/che-plugin-cpp-lang-shared/pom.xml
index b82ac56e29..3cbe7648da 100644
--- a/plugins/plugin-cpp/che-plugin-cpp-lang-shared/pom.xml
+++ b/plugins/plugin-cpp/che-plugin-cpp-lang-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-cpp-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-cpp-lang-sharedChe Plugin :: C/C++ :: Shared
diff --git a/plugins/plugin-cpp/pom.xml b/plugins/plugin-cpp/pom.xml
index fcd1a2df7e..806f39b8d0 100644
--- a/plugins/plugin-cpp/pom.xml
+++ b/plugins/plugin-cpp/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-cpp-parent
diff --git a/plugins/plugin-csharp/che-plugin-csharp-lang-ide/pom.xml b/plugins/plugin-csharp/che-plugin-csharp-lang-ide/pom.xml
index 8c04cc6b6a..7aa1169a51 100644
--- a/plugins/plugin-csharp/che-plugin-csharp-lang-ide/pom.xml
+++ b/plugins/plugin-csharp/che-plugin-csharp-lang-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-csharp-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-csharp-lang-idejar
diff --git a/plugins/plugin-csharp/che-plugin-csharp-lang-server/pom.xml b/plugins/plugin-csharp/che-plugin-csharp-lang-server/pom.xml
index efc1fcc617..e33d00d022 100644
--- a/plugins/plugin-csharp/che-plugin-csharp-lang-server/pom.xml
+++ b/plugins/plugin-csharp/che-plugin-csharp-lang-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-csharp-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-csharp-lang-serverChe Plugin :: C# :: Extension Server
diff --git a/plugins/plugin-csharp/che-plugin-csharp-lang-shared/pom.xml b/plugins/plugin-csharp/che-plugin-csharp-lang-shared/pom.xml
index 0b35718445..5db0366676 100644
--- a/plugins/plugin-csharp/che-plugin-csharp-lang-shared/pom.xml
+++ b/plugins/plugin-csharp/che-plugin-csharp-lang-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-csharp-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-csharp-lang-sharedChe Plugin :: C# :: Shared
diff --git a/plugins/plugin-csharp/pom.xml b/plugins/plugin-csharp/pom.xml
index 1a0860ffb1..b6c60c7855 100644
--- a/plugins/plugin-csharp/pom.xml
+++ b/plugins/plugin-csharp/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-csharp-parent
diff --git a/plugins/plugin-dashboard/che-plugin-ext-dashboard/pom.xml b/plugins/plugin-dashboard/che-plugin-ext-dashboard/pom.xml
index cb74caafae..a7caa18aac 100644
--- a/plugins/plugin-dashboard/che-plugin-ext-dashboard/pom.xml
+++ b/plugins/plugin-dashboard/che-plugin-ext-dashboard/pom.xml
@@ -16,7 +16,7 @@
che-plugin-dashboard-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-ext-dashboard-clientjar
diff --git a/plugins/plugin-dashboard/pom.xml b/plugins/plugin-dashboard/pom.xml
index 1da8a9ef15..34cc68912a 100644
--- a/plugins/plugin-dashboard/pom.xml
+++ b/plugins/plugin-dashboard/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-dashboard-parent
diff --git a/plugins/plugin-debugger/che-plugin-debugger-ide/pom.xml b/plugins/plugin-debugger/che-plugin-debugger-ide/pom.xml
index df981ccf44..432c69c6ce 100644
--- a/plugins/plugin-debugger/che-plugin-debugger-ide/pom.xml
+++ b/plugins/plugin-debugger/che-plugin-debugger-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-debugger-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-debugger-idejar
diff --git a/plugins/plugin-debugger/pom.xml b/plugins/plugin-debugger/pom.xml
index 16f3b745f3..8fa65632db 100644
--- a/plugins/plugin-debugger/pom.xml
+++ b/plugins/plugin-debugger/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-debugger-parent
diff --git a/plugins/plugin-docker/che-plugin-docker-client/pom.xml b/plugins/plugin-docker/che-plugin-docker-client/pom.xml
index 834197acca..73d2f28b2f 100644
--- a/plugins/plugin-docker/che-plugin-docker-client/pom.xml
+++ b/plugins/plugin-docker/che-plugin-docker-client/pom.xml
@@ -16,7 +16,7 @@
che-plugin-docker-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-docker-clientjar
diff --git a/plugins/plugin-docker/che-plugin-docker-compose/pom.xml b/plugins/plugin-docker/che-plugin-docker-compose/pom.xml
index 9dd84bfcb6..7b971061aa 100644
--- a/plugins/plugin-docker/che-plugin-docker-compose/pom.xml
+++ b/plugins/plugin-docker/che-plugin-docker-compose/pom.xml
@@ -16,7 +16,7 @@
che-plugin-docker-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-docker-composejar
diff --git a/plugins/plugin-docker/che-plugin-docker-machine/pom.xml b/plugins/plugin-docker/che-plugin-docker-machine/pom.xml
index beb443ce9b..0cf02bc035 100644
--- a/plugins/plugin-docker/che-plugin-docker-machine/pom.xml
+++ b/plugins/plugin-docker/che-plugin-docker-machine/pom.xml
@@ -16,7 +16,7 @@
che-plugin-docker-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-docker-machinejar
diff --git a/plugins/plugin-docker/che-plugin-docker-machine/src/main/java/org/eclipse/che/plugin/docker/machine/DockerInstanceProvider.java b/plugins/plugin-docker/che-plugin-docker-machine/src/main/java/org/eclipse/che/plugin/docker/machine/DockerInstanceProvider.java
index acfd04c3e0..65d55a8426 100644
--- a/plugins/plugin-docker/che-plugin-docker-machine/src/main/java/org/eclipse/che/plugin/docker/machine/DockerInstanceProvider.java
+++ b/plugins/plugin-docker/che-plugin-docker-machine/src/main/java/org/eclipse/che/plugin/docker/machine/DockerInstanceProvider.java
@@ -200,7 +200,11 @@ public class DockerInstanceProvider implements InstanceProvider {
conn.disconnect();
}
} catch (IOException e) {
- LOG.error(e.getLocalizedMessage(), e);
+ LOG.error("Failed to remove {} snapshot from {}. Cause: {}",
+ dockerMachineSource.getRepository(),
+ dockerMachineSource.getRegistry(),
+ e.getLocalizedMessage(),
+ e);
}
}
@@ -239,7 +243,11 @@ public class DockerInstanceProvider implements InstanceProvider {
conn.disconnect();
}
} catch (IOException e) {
- LOG.error(e.getLocalizedMessage(), e);
+ LOG.error("Failed to remove {} snapshot from {}. Cause: {}",
+ repository,
+ DOCKER_HUB_BASE_URI,
+ e.getLocalizedMessage(),
+ e);
}
}
diff --git a/plugins/plugin-docker/che-plugin-docker-machine/src/main/java/org/eclipse/che/plugin/docker/machine/MachineProviderImpl.java b/plugins/plugin-docker/che-plugin-docker-machine/src/main/java/org/eclipse/che/plugin/docker/machine/MachineProviderImpl.java
index 05e79e5831..f907deab0a 100644
--- a/plugins/plugin-docker/che-plugin-docker-machine/src/main/java/org/eclipse/che/plugin/docker/machine/MachineProviderImpl.java
+++ b/plugins/plugin-docker/che-plugin-docker-machine/src/main/java/org/eclipse/che/plugin/docker/machine/MachineProviderImpl.java
@@ -554,7 +554,7 @@ public class MachineProviderImpl implements MachineInstanceProvider {
.withFilters(new Filters().withFilter("reference", imageName)))
.isEmpty();
} catch (IOException e) {
- LOG.warn("Failed to check image {} availability. Cause: {}", imageName, e.getMessage(), e);
+ LOG.warn("Failed to check image {} availability. Cause: {}", imageName, e.getMessage());
return false; // consider that image doesn't exist locally
}
}
diff --git a/plugins/plugin-docker/che-plugin-openshift-client/pom.xml b/plugins/plugin-docker/che-plugin-openshift-client/pom.xml
index 61889d439a..80111272a7 100644
--- a/plugins/plugin-docker/che-plugin-openshift-client/pom.xml
+++ b/plugins/plugin-docker/che-plugin-openshift-client/pom.xml
@@ -16,7 +16,7 @@
che-plugin-docker-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-openshift-clientjar
diff --git a/plugins/plugin-docker/pom.xml b/plugins/plugin-docker/pom.xml
index a7a6538b96..c08f95f122 100644
--- a/plugins/plugin-docker/pom.xml
+++ b/plugins/plugin-docker/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-docker-parent
diff --git a/plugins/plugin-gdb/che-plugin-gdb-ide/pom.xml b/plugins/plugin-gdb/che-plugin-gdb-ide/pom.xml
index 109a7b9012..db2e056875 100644
--- a/plugins/plugin-gdb/che-plugin-gdb-ide/pom.xml
+++ b/plugins/plugin-gdb/che-plugin-gdb-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-gdb-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-gdb-idejar
diff --git a/plugins/plugin-gdb/che-plugin-gdb-server/pom.xml b/plugins/plugin-gdb/che-plugin-gdb-server/pom.xml
index c2b1686026..5d7ebfccda 100644
--- a/plugins/plugin-gdb/che-plugin-gdb-server/pom.xml
+++ b/plugins/plugin-gdb/che-plugin-gdb-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-gdb-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-gdb-serverjar
diff --git a/plugins/plugin-gdb/pom.xml b/plugins/plugin-gdb/pom.xml
index 897e86342e..b54a9d99fe 100644
--- a/plugins/plugin-gdb/pom.xml
+++ b/plugins/plugin-gdb/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-gdb-parentpom
diff --git a/plugins/plugin-git/che-plugin-git-ext-git/pom.xml b/plugins/plugin-git/che-plugin-git-ext-git/pom.xml
index 25269ce472..285f2afc49 100644
--- a/plugins/plugin-git/che-plugin-git-ext-git/pom.xml
+++ b/plugins/plugin-git/che-plugin-git-ext-git/pom.xml
@@ -16,7 +16,7 @@
che-plugin-git-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-git-ext-gitjar
diff --git a/plugins/plugin-git/pom.xml b/plugins/plugin-git/pom.xml
index 3e74877fe5..b00898b7b2 100644
--- a/plugins/plugin-git/pom.xml
+++ b/plugins/plugin-git/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-git-parent
diff --git a/plugins/plugin-github/che-plugin-github-factory-resolver/pom.xml b/plugins/plugin-github/che-plugin-github-factory-resolver/pom.xml
index 86bb6b4642..6182677b97 100644
--- a/plugins/plugin-github/che-plugin-github-factory-resolver/pom.xml
+++ b/plugins/plugin-github/che-plugin-github-factory-resolver/pom.xml
@@ -16,7 +16,7 @@
che-plugin-github-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-github-factory-resolverjar
diff --git a/plugins/plugin-github/che-plugin-github-ide/pom.xml b/plugins/plugin-github/che-plugin-github-ide/pom.xml
index 24324fbe99..3a377a9566 100644
--- a/plugins/plugin-github/che-plugin-github-ide/pom.xml
+++ b/plugins/plugin-github/che-plugin-github-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-github-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-github-idejar
diff --git a/plugins/plugin-github/che-plugin-github-oauth2/pom.xml b/plugins/plugin-github/che-plugin-github-oauth2/pom.xml
index 8e09dfdf55..3b0648bca8 100644
--- a/plugins/plugin-github/che-plugin-github-oauth2/pom.xml
+++ b/plugins/plugin-github/che-plugin-github-oauth2/pom.xml
@@ -16,7 +16,7 @@
che-plugin-github-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-github-oauth2jar
diff --git a/plugins/plugin-github/che-plugin-github-provider-github/pom.xml b/plugins/plugin-github/che-plugin-github-provider-github/pom.xml
index fda69b8869..cfe760e331 100644
--- a/plugins/plugin-github/che-plugin-github-provider-github/pom.xml
+++ b/plugins/plugin-github/che-plugin-github-provider-github/pom.xml
@@ -16,7 +16,7 @@
che-plugin-github-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-github-provider-githubChe Plugin :: Github :: Credential provider
diff --git a/plugins/plugin-github/che-plugin-github-pullrequest/pom.xml b/plugins/plugin-github/che-plugin-github-pullrequest/pom.xml
index d3f70f1997..3bdd7298a4 100644
--- a/plugins/plugin-github/che-plugin-github-pullrequest/pom.xml
+++ b/plugins/plugin-github/che-plugin-github-pullrequest/pom.xml
@@ -16,7 +16,7 @@
che-plugin-github-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-github-pullrequestChe Plugin :: Github :: Pull request
diff --git a/plugins/plugin-github/che-plugin-github-server/pom.xml b/plugins/plugin-github/che-plugin-github-server/pom.xml
index 9238550829..faf75a628d 100644
--- a/plugins/plugin-github/che-plugin-github-server/pom.xml
+++ b/plugins/plugin-github/che-plugin-github-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-github-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-github-serverjar
diff --git a/plugins/plugin-github/che-plugin-github-shared/pom.xml b/plugins/plugin-github/che-plugin-github-shared/pom.xml
index 9df120a23a..b38722cc1d 100644
--- a/plugins/plugin-github/che-plugin-github-shared/pom.xml
+++ b/plugins/plugin-github/che-plugin-github-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-github-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-github-sharedChe Plugin :: Github :: Shared
diff --git a/plugins/plugin-github/pom.xml b/plugins/plugin-github/pom.xml
index 703f25223c..3ba0e8547b 100644
--- a/plugins/plugin-github/pom.xml
+++ b/plugins/plugin-github/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-github-parent
diff --git a/plugins/plugin-gwt/che-plugin-gwt-ext-gwt/pom.xml b/plugins/plugin-gwt/che-plugin-gwt-ext-gwt/pom.xml
index 311b9c5932..3d04b13a5e 100644
--- a/plugins/plugin-gwt/che-plugin-gwt-ext-gwt/pom.xml
+++ b/plugins/plugin-gwt/che-plugin-gwt-ext-gwt/pom.xml
@@ -16,7 +16,7 @@
che-plugin-gwt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-gwt-ext-gwtjar
diff --git a/plugins/plugin-gwt/pom.xml b/plugins/plugin-gwt/pom.xml
index eb57bcf41a..58e6636363 100644
--- a/plugins/plugin-gwt/pom.xml
+++ b/plugins/plugin-gwt/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-gwt-parent
diff --git a/plugins/plugin-help/che-plugin-help-ext-client/pom.xml b/plugins/plugin-help/che-plugin-help-ext-client/pom.xml
index 4aa9490d1e..99d7698fef 100644
--- a/plugins/plugin-help/che-plugin-help-ext-client/pom.xml
+++ b/plugins/plugin-help/che-plugin-help-ext-client/pom.xml
@@ -16,7 +16,7 @@
che-plugin-help-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-help-ext-clientjar
diff --git a/plugins/plugin-help/pom.xml b/plugins/plugin-help/pom.xml
index d33d8a89fa..50bec470a5 100644
--- a/plugins/plugin-help/pom.xml
+++ b/plugins/plugin-help/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-help-parent
diff --git a/plugins/plugin-java-debugger/che-plugin-java-debugger-ide/pom.xml b/plugins/plugin-java-debugger/che-plugin-java-debugger-ide/pom.xml
index 06a2ae567b..eb2475919a 100644
--- a/plugins/plugin-java-debugger/che-plugin-java-debugger-ide/pom.xml
+++ b/plugins/plugin-java-debugger/che-plugin-java-debugger-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-debugger-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-debugger-idejar
diff --git a/plugins/plugin-java-debugger/che-plugin-java-debugger-server/pom.xml b/plugins/plugin-java-debugger/che-plugin-java-debugger-server/pom.xml
index 1f5e85279a..0e21a4bbd6 100644
--- a/plugins/plugin-java-debugger/che-plugin-java-debugger-server/pom.xml
+++ b/plugins/plugin-java-debugger/che-plugin-java-debugger-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-debugger-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-debugger-serverjar
diff --git a/plugins/plugin-java-debugger/pom.xml b/plugins/plugin-java-debugger/pom.xml
index 00e318d42c..bf12c3bb6f 100644
--- a/plugins/plugin-java-debugger/pom.xml
+++ b/plugins/plugin-java-debugger/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-debugger-parentpom
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-filebuffers/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-filebuffers/pom.xml
index aebd91f81a..438ca3c967 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-filebuffers/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-filebuffers/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.core.filebuffersjar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-filesystem/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-filesystem/pom.xml
index 150eb91667..e67879f7b1 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-filesystem/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-filesystem/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.core.filesystemjar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-resources/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-resources/pom.xml
index a42c1588a4..60bc425e2c 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-resources/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-core-resources/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.core.resourcesjar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jdt-ui/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jdt-ui/pom.xml
index 87abd4d041..af375b1822 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jdt-ui/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jdt-ui/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.jdt.uijar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jface-text/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jface-text/pom.xml
index cddc1b21e3..6e80970cd9 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jface-text/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jface-text/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.jface.textjar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jface/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jface/pom.xml
index fe8a49a339..b3de95288c 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jface/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-jface/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.jfacejar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-ltk-core-refactoring/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-ltk-core-refactoring/pom.xml
index 5b547bc3b4..9ef153a429 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-ltk-core-refactoring/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-ltk-core-refactoring/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.ltk.core.refactoringjar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-search/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-search/pom.xml
index a881ffb64b..d92f8c613d 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-search/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-search/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.searchjar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-ui-ide/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-ui-ide/pom.xml
index ad45a3d754..8784f03017 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-ui-ide/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/org-eclipse-ui-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-ext-jdt-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.ui.idejar
diff --git a/plugins/plugin-java/che-plugin-java-ext-jdt/pom.xml b/plugins/plugin-java/che-plugin-java-ext-jdt/pom.xml
index 99ae490f84..8ab8027b40 100644
--- a/plugins/plugin-java/che-plugin-java-ext-jdt/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-jdt/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-ext-jdt-parentpom
diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-client/pom.xml b/plugins/plugin-java/che-plugin-java-ext-lang-client/pom.xml
index de144bda4a..3b1ee8a47d 100644
--- a/plugins/plugin-java/che-plugin-java-ext-lang-client/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-ext-lang-clientjar
diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-server/pom.xml b/plugins/plugin-java/che-plugin-java-ext-lang-server/pom.xml
index 023f16bd95..70b5a28e22 100644
--- a/plugins/plugin-java/che-plugin-java-ext-lang-server/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-lang-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-ext-lang-serverChe Plugin :: Java :: Extension Java Server
diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-shared/pom.xml b/plugins/plugin-java/che-plugin-java-ext-lang-shared/pom.xml
index 03e182c7aa..68eaddf706 100644
--- a/plugins/plugin-java/che-plugin-java-ext-lang-shared/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-ext-lang-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-ext-lang-sharedChe Plugin :: Java :: Extension Java Shared
diff --git a/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-ide/pom.xml b/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-ide/pom.xml
index 5fc6ab5084..e6bf1403ba 100644
--- a/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-ide/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-plainorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-plain-idejar
diff --git a/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-server/pom.xml b/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-server/pom.xml
index bd2b2cce88..45eee41270 100644
--- a/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-server/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-plainorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-plain-serverChe Plugin :: Java :: Plain :: Server
diff --git a/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-shared/pom.xml b/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-shared/pom.xml
index 897dae8480..3ec8b8fdc6 100644
--- a/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-shared/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-plain/che-plugin-java-plain-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-plainorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-plain-sharedChe Plugin :: Java :: Plain :: Shared
diff --git a/plugins/plugin-java/che-plugin-java-plain/pom.xml b/plugins/plugin-java/che-plugin-java-plain/pom.xml
index d076c1aeba..b79969b416 100644
--- a/plugins/plugin-java/che-plugin-java-plain/pom.xml
+++ b/plugins/plugin-java/che-plugin-java-plain/pom.xml
@@ -16,7 +16,7 @@
che-plugin-java-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-java-plain
diff --git a/plugins/plugin-java/pom.xml b/plugins/plugin-java/pom.xml
index f1a1d96636..57cd2986a4 100644
--- a/plugins/plugin-java/pom.xml
+++ b/plugins/plugin-java/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-java-parent
diff --git a/plugins/plugin-json/che-plugin-json-server/pom.xml b/plugins/plugin-json/che-plugin-json-server/pom.xml
index 06c5fad059..5b3715a1c3 100644
--- a/plugins/plugin-json/che-plugin-json-server/pom.xml
+++ b/plugins/plugin-json/che-plugin-json-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-json-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-json-serverChe Plugin :: JSON :: Extension Server
diff --git a/plugins/plugin-json/pom.xml b/plugins/plugin-json/pom.xml
index 009c4f383a..42024acea4 100644
--- a/plugins/plugin-json/pom.xml
+++ b/plugins/plugin-json/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-json-parent
diff --git a/plugins/plugin-keybinding-eclipse/plugin-keybinding-eclipse-ide/pom.xml b/plugins/plugin-keybinding-eclipse/plugin-keybinding-eclipse-ide/pom.xml
index 32d40ccccf..348d836731 100644
--- a/plugins/plugin-keybinding-eclipse/plugin-keybinding-eclipse-ide/pom.xml
+++ b/plugins/plugin-keybinding-eclipse/plugin-keybinding-eclipse-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-keybinding-eclipse-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-keybinding-eclipse-ide
diff --git a/plugins/plugin-keybinding-eclipse/pom.xml b/plugins/plugin-keybinding-eclipse/pom.xml
index 1c034778ae..1e8e5cf188 100644
--- a/plugins/plugin-keybinding-eclipse/pom.xml
+++ b/plugins/plugin-keybinding-eclipse/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-keybinding-eclipse-parent
diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakEnvironmentInitalizationFilter.java b/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakEnvironmentInitalizationFilter.java
index d5f95c7985..774078ef86 100644
--- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakEnvironmentInitalizationFilter.java
+++ b/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakEnvironmentInitalizationFilter.java
@@ -63,6 +63,12 @@ public class KeycloakEnvironmentInitalizationFilter implements Filter {
throws IOException, ServletException {
final HttpServletRequest httpRequest = (HttpServletRequest)request;
+ // TODO: use KeycloakOIDCFilter skip setting
+ if (httpRequest.getRequestURI().endsWith("/ws") || httpRequest.getRequestURI().endsWith("/eventbus")
+ || request.getScheme().equals("ws") || httpRequest.getScheme().equals("wss") || httpRequest.getRequestURI().contains("/websocket/")) {
+ filterChain.doFilter(request, response);
+ }
+
KeycloakSecurityContext context = (KeycloakSecurityContext)httpRequest.getAttribute(KeycloakSecurityContext.class.getName());
// In case of bearer token login, there is another object in session
if (context == null) {
diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/pom.xml b/plugins/plugin-languageserver/che-plugin-languageserver-ide/pom.xml
index 6abbbfe84f..37c1c596f3 100644
--- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/pom.xml
+++ b/plugins/plugin-languageserver/che-plugin-languageserver-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-languageserver-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT..che-plugin-languageserver-ide
diff --git a/plugins/plugin-languageserver/pom.xml b/plugins/plugin-languageserver/pom.xml
index 142dce90d0..8f46d1c786 100644
--- a/plugins/plugin-languageserver/pom.xml
+++ b/plugins/plugin-languageserver/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-languageserver-parent
diff --git a/plugins/plugin-machine/che-plugin-machine-ext-server/pom.xml b/plugins/plugin-machine/che-plugin-machine-ext-server/pom.xml
index 76a6c5b68e..8f878c5202 100644
--- a/plugins/plugin-machine/che-plugin-machine-ext-server/pom.xml
+++ b/plugins/plugin-machine/che-plugin-machine-ext-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-machine-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-machine-ext-server
diff --git a/plugins/plugin-machine/che-plugin-machine-ssh-client/pom.xml b/plugins/plugin-machine/che-plugin-machine-ssh-client/pom.xml
index a675122714..60767b518a 100644
--- a/plugins/plugin-machine/che-plugin-machine-ssh-client/pom.xml
+++ b/plugins/plugin-machine/che-plugin-machine-ssh-client/pom.xml
@@ -16,7 +16,7 @@
che-plugin-machine-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-machine-ssh-clientjar
diff --git a/plugins/plugin-machine/pom.xml b/plugins/plugin-machine/pom.xml
index 29fff0f76d..bedffb2304 100644
--- a/plugins/plugin-machine/pom.xml
+++ b/plugins/plugin-machine/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-machine-parent
diff --git a/plugins/plugin-maven/che-plugin-maven-generator-archetype/pom.xml b/plugins/plugin-maven/che-plugin-maven-generator-archetype/pom.xml
index 98b29fa864..0d149dee4d 100644
--- a/plugins/plugin-maven/che-plugin-maven-generator-archetype/pom.xml
+++ b/plugins/plugin-maven/che-plugin-maven-generator-archetype/pom.xml
@@ -16,7 +16,7 @@
che-plugin-maven-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-maven-generator-archetypejar
diff --git a/plugins/plugin-maven/che-plugin-maven-ide/pom.xml b/plugins/plugin-maven/che-plugin-maven-ide/pom.xml
index 6c4eaeebb6..f431aaa423 100644
--- a/plugins/plugin-maven/che-plugin-maven-ide/pom.xml
+++ b/plugins/plugin-maven/che-plugin-maven-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-maven-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-maven-ideChe Plugin :: Maven :: Extension Maven Client
diff --git a/plugins/plugin-maven/che-plugin-maven-server/pom.xml b/plugins/plugin-maven/che-plugin-maven-server/pom.xml
index f2c3ccb4e8..6c58eed795 100644
--- a/plugins/plugin-maven/che-plugin-maven-server/pom.xml
+++ b/plugins/plugin-maven/che-plugin-maven-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-maven-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-maven-serverjar
diff --git a/plugins/plugin-maven/che-plugin-maven-shared/pom.xml b/plugins/plugin-maven/che-plugin-maven-shared/pom.xml
index b8c0156315..fa2ebc36e6 100644
--- a/plugins/plugin-maven/che-plugin-maven-shared/pom.xml
+++ b/plugins/plugin-maven/che-plugin-maven-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-maven-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-maven-sharedChe Plugin :: Maven :: Extension Maven Shared
diff --git a/plugins/plugin-maven/che-plugin-maven-tools/pom.xml b/plugins/plugin-maven/che-plugin-maven-tools/pom.xml
index fe307f78e2..f0b67f62d4 100644
--- a/plugins/plugin-maven/che-plugin-maven-tools/pom.xml
+++ b/plugins/plugin-maven/che-plugin-maven-tools/pom.xml
@@ -16,7 +16,7 @@
che-plugin-maven-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-java-maven-toolsjar
diff --git a/plugins/plugin-maven/che-plugin-maven-wsmaster/pom.xml b/plugins/plugin-maven/che-plugin-maven-wsmaster/pom.xml
index e60464ac28..3a05fe3fd8 100644
--- a/plugins/plugin-maven/che-plugin-maven-wsmaster/pom.xml
+++ b/plugins/plugin-maven/che-plugin-maven-wsmaster/pom.xml
@@ -16,7 +16,7 @@
che-plugin-maven-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-maven-wsmasterjar
diff --git a/plugins/plugin-maven/maven-server/maven-server-api/pom.xml b/plugins/plugin-maven/maven-server/maven-server-api/pom.xml
index f346744e6d..234a9a11e2 100644
--- a/plugins/plugin-maven/maven-server/maven-server-api/pom.xml
+++ b/plugins/plugin-maven/maven-server/maven-server-api/pom.xml
@@ -16,7 +16,7 @@
che-maven-serverorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTmaven-server-apijar
diff --git a/plugins/plugin-maven/maven-server/maven-server-impl/pom.xml b/plugins/plugin-maven/maven-server/maven-server-impl/pom.xml
index 003e1a9cbe..b60b214aa9 100644
--- a/plugins/plugin-maven/maven-server/maven-server-impl/pom.xml
+++ b/plugins/plugin-maven/maven-server/maven-server-impl/pom.xml
@@ -16,7 +16,7 @@
che-maven-serverorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTmaven-server-impljar
diff --git a/plugins/plugin-maven/maven-server/pom.xml b/plugins/plugin-maven/maven-server/pom.xml
index 4108f5a713..ad50d5b269 100644
--- a/plugins/plugin-maven/maven-server/pom.xml
+++ b/plugins/plugin-maven/maven-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-maven-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-maven-serverpom
diff --git a/plugins/plugin-maven/pom.xml b/plugins/plugin-maven/pom.xml
index 45a6c2e742..8248d4b0fb 100644
--- a/plugins/plugin-maven/pom.xml
+++ b/plugins/plugin-maven/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-maven-parent
diff --git a/plugins/plugin-nodejs-debugger/che-plugin-nodejs-debugger-ide/pom.xml b/plugins/plugin-nodejs-debugger/che-plugin-nodejs-debugger-ide/pom.xml
index 3bc20e3ab9..0eae142184 100644
--- a/plugins/plugin-nodejs-debugger/che-plugin-nodejs-debugger-ide/pom.xml
+++ b/plugins/plugin-nodejs-debugger/che-plugin-nodejs-debugger-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-nodejs-debugger-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-nodejs-debugger-idejar
diff --git a/plugins/plugin-nodejs-debugger/che-plugin-nodejs-debugger-server/pom.xml b/plugins/plugin-nodejs-debugger/che-plugin-nodejs-debugger-server/pom.xml
index 812310973f..9985817d77 100644
--- a/plugins/plugin-nodejs-debugger/che-plugin-nodejs-debugger-server/pom.xml
+++ b/plugins/plugin-nodejs-debugger/che-plugin-nodejs-debugger-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-nodejs-debugger-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-nodejs-debugger-serverjar
diff --git a/plugins/plugin-nodejs-debugger/pom.xml b/plugins/plugin-nodejs-debugger/pom.xml
index 0ff801024a..2995bb9838 100644
--- a/plugins/plugin-nodejs-debugger/pom.xml
+++ b/plugins/plugin-nodejs-debugger/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-nodejs-debugger-parentpom
diff --git a/plugins/plugin-nodejs/che-plugin-nodejs-lang-ide/pom.xml b/plugins/plugin-nodejs/che-plugin-nodejs-lang-ide/pom.xml
index 587833cefd..5085c6b091 100644
--- a/plugins/plugin-nodejs/che-plugin-nodejs-lang-ide/pom.xml
+++ b/plugins/plugin-nodejs/che-plugin-nodejs-lang-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-nodejs-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-nodejs-lang-idejar
diff --git a/plugins/plugin-nodejs/che-plugin-nodejs-lang-server/pom.xml b/plugins/plugin-nodejs/che-plugin-nodejs-lang-server/pom.xml
index c323fffd0f..afc4e6beb9 100644
--- a/plugins/plugin-nodejs/che-plugin-nodejs-lang-server/pom.xml
+++ b/plugins/plugin-nodejs/che-plugin-nodejs-lang-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-nodejs-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-nodejs-lang-serverChe Plugin :: NodeJs :: Extension Server
diff --git a/plugins/plugin-nodejs/che-plugin-nodejs-lang-shared/pom.xml b/plugins/plugin-nodejs/che-plugin-nodejs-lang-shared/pom.xml
index 5bb71cb93c..b22da0e6e9 100644
--- a/plugins/plugin-nodejs/che-plugin-nodejs-lang-shared/pom.xml
+++ b/plugins/plugin-nodejs/che-plugin-nodejs-lang-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-nodejs-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-nodejs-lang-sharedChe Plugin :: NodeJs :: Extension Shared
diff --git a/plugins/plugin-nodejs/pom.xml b/plugins/plugin-nodejs/pom.xml
index 56dea3b0d8..9e2f15a0ad 100644
--- a/plugins/plugin-nodejs/pom.xml
+++ b/plugins/plugin-nodejs/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-nodejs-parent
diff --git a/plugins/plugin-orion/che-plugin-orion-compare/pom.xml b/plugins/plugin-orion/che-plugin-orion-compare/pom.xml
index d37c69bea9..5ea6ca5221 100644
--- a/plugins/plugin-orion/che-plugin-orion-compare/pom.xml
+++ b/plugins/plugin-orion/che-plugin-orion-compare/pom.xml
@@ -16,7 +16,7 @@
che-plugin-orion-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-orion-comparejar
diff --git a/plugins/plugin-orion/che-plugin-orion-editor/pom.xml b/plugins/plugin-orion/che-plugin-orion-editor/pom.xml
index 7fd9d3c698..57206f2823 100644
--- a/plugins/plugin-orion/che-plugin-orion-editor/pom.xml
+++ b/plugins/plugin-orion/che-plugin-orion-editor/pom.xml
@@ -16,7 +16,7 @@
che-plugin-orion-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-orion-editor
diff --git a/plugins/plugin-orion/pom.xml b/plugins/plugin-orion/pom.xml
index 95a0e65802..45d4db84ff 100644
--- a/plugins/plugin-orion/pom.xml
+++ b/plugins/plugin-orion/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-orion-parent
diff --git a/plugins/plugin-php/che-plugin-php-lang-ide/pom.xml b/plugins/plugin-php/che-plugin-php-lang-ide/pom.xml
index 0d3ae93053..801e8eaa2e 100644
--- a/plugins/plugin-php/che-plugin-php-lang-ide/pom.xml
+++ b/plugins/plugin-php/che-plugin-php-lang-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-php-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-php-lang-idejar
diff --git a/plugins/plugin-php/che-plugin-php-lang-server/pom.xml b/plugins/plugin-php/che-plugin-php-lang-server/pom.xml
index 7d2837ed81..e2d30c5fa1 100644
--- a/plugins/plugin-php/che-plugin-php-lang-server/pom.xml
+++ b/plugins/plugin-php/che-plugin-php-lang-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-php-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-php-lang-serverChe Plugin :: PHP :: Extension Server
diff --git a/plugins/plugin-php/che-plugin-php-lang-shared/pom.xml b/plugins/plugin-php/che-plugin-php-lang-shared/pom.xml
index 2ffeb63ba0..e1ad0bdb75 100644
--- a/plugins/plugin-php/che-plugin-php-lang-shared/pom.xml
+++ b/plugins/plugin-php/che-plugin-php-lang-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-php-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-php-lang-sharedChe Plugin :: PHP :: Shared
diff --git a/plugins/plugin-php/pom.xml b/plugins/plugin-php/pom.xml
index 7d9074cd3e..406467c84d 100644
--- a/plugins/plugin-php/pom.xml
+++ b/plugins/plugin-php/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-php-parent
diff --git a/plugins/plugin-product-info/pom.xml b/plugins/plugin-product-info/pom.xml
index 947e76be14..4b361e64c6 100644
--- a/plugins/plugin-product-info/pom.xml
+++ b/plugins/plugin-product-info/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-product-info
diff --git a/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-ide/pom.xml b/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-ide/pom.xml
index 617388e212..2f347b36be 100644
--- a/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-ide/pom.xml
+++ b/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-pullrequest-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-pullrequest-ideChe Plugin :: Pull request :: IDE
diff --git a/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-server/pom.xml b/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-server/pom.xml
index a8f91e30a4..9e2057c8be 100644
--- a/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-server/pom.xml
+++ b/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-pullrequest-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-pullrequest-serverChe Plugin :: Pull request :: Server
diff --git a/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-shared/pom.xml b/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-shared/pom.xml
index 4be59bdfbd..569e9409f9 100644
--- a/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-shared/pom.xml
+++ b/plugins/plugin-pullrequest-parent/che-plugin-pullrequest-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-pullrequest-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-pullrequest-sharedChe Plugin :: Pull request :: Shared
diff --git a/plugins/plugin-pullrequest-parent/pom.xml b/plugins/plugin-pullrequest-parent/pom.xml
index 1821aa3058..09883cab0c 100644
--- a/plugins/plugin-pullrequest-parent/pom.xml
+++ b/plugins/plugin-pullrequest-parent/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-pullrequest-parentpom
diff --git a/plugins/plugin-python/che-plugin-python-lang-ide/pom.xml b/plugins/plugin-python/che-plugin-python-lang-ide/pom.xml
index a045968021..3e5dd3813e 100644
--- a/plugins/plugin-python/che-plugin-python-lang-ide/pom.xml
+++ b/plugins/plugin-python/che-plugin-python-lang-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-python-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-python-lang-idejar
diff --git a/plugins/plugin-python/che-plugin-python-lang-server/pom.xml b/plugins/plugin-python/che-plugin-python-lang-server/pom.xml
index c8c1c41e57..f9593c690c 100644
--- a/plugins/plugin-python/che-plugin-python-lang-server/pom.xml
+++ b/plugins/plugin-python/che-plugin-python-lang-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-python-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-python-lang-serverChe Plugin :: Python :: Extension Server
diff --git a/plugins/plugin-python/che-plugin-python-lang-shared/pom.xml b/plugins/plugin-python/che-plugin-python-lang-shared/pom.xml
index 2aa895a1cb..87fd8236ad 100644
--- a/plugins/plugin-python/che-plugin-python-lang-shared/pom.xml
+++ b/plugins/plugin-python/che-plugin-python-lang-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-python-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-python-lang-sharedche-plugin-python-lang-shared
diff --git a/plugins/plugin-python/pom.xml b/plugins/plugin-python/pom.xml
index 62fc6f9803..9fee0e8324 100644
--- a/plugins/plugin-python/pom.xml
+++ b/plugins/plugin-python/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-python-parent
diff --git a/plugins/plugin-sdk/che-plugin-sdk-ext-plugins/pom.xml b/plugins/plugin-sdk/che-plugin-sdk-ext-plugins/pom.xml
index 094bd68411..fe21a6127c 100644
--- a/plugins/plugin-sdk/che-plugin-sdk-ext-plugins/pom.xml
+++ b/plugins/plugin-sdk/che-plugin-sdk-ext-plugins/pom.xml
@@ -16,7 +16,7 @@
che-plugin-sdk-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-sdk-ext-pluginsjar
diff --git a/plugins/plugin-sdk/che-plugin-sdk-tools/pom.xml b/plugins/plugin-sdk/che-plugin-sdk-tools/pom.xml
index aa9bf88965..e3899dc7a1 100644
--- a/plugins/plugin-sdk/che-plugin-sdk-tools/pom.xml
+++ b/plugins/plugin-sdk/che-plugin-sdk-tools/pom.xml
@@ -16,7 +16,7 @@
che-plugin-sdk-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-sdk-toolsjar
diff --git a/plugins/plugin-sdk/pom.xml b/plugins/plugin-sdk/pom.xml
index e3de6f278d..f42697a61f 100644
--- a/plugins/plugin-sdk/pom.xml
+++ b/plugins/plugin-sdk/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-sdk-parent
diff --git a/plugins/plugin-ssh-machine/pom.xml b/plugins/plugin-ssh-machine/pom.xml
index 260496037f..e6da384c7a 100644
--- a/plugins/plugin-ssh-machine/pom.xml
+++ b/plugins/plugin-ssh-machine/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-ssh-machine
diff --git a/plugins/plugin-svn/che-plugin-svn-ext-ide/pom.xml b/plugins/plugin-svn/che-plugin-svn-ext-ide/pom.xml
index 8724ace4c3..6ffae4733a 100644
--- a/plugins/plugin-svn/che-plugin-svn-ext-ide/pom.xml
+++ b/plugins/plugin-svn/che-plugin-svn-ext-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-svn-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-svn-ext-idejar
diff --git a/plugins/plugin-svn/che-plugin-svn-ext-server/pom.xml b/plugins/plugin-svn/che-plugin-svn-ext-server/pom.xml
index e5bdb36d35..3bc57f3f2e 100644
--- a/plugins/plugin-svn/che-plugin-svn-ext-server/pom.xml
+++ b/plugins/plugin-svn/che-plugin-svn-ext-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-svn-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-svn-ext-serverjar
diff --git a/plugins/plugin-svn/che-plugin-svn-ext-shared/pom.xml b/plugins/plugin-svn/che-plugin-svn-ext-shared/pom.xml
index 05eb5aa820..c1454b3700 100644
--- a/plugins/plugin-svn/che-plugin-svn-ext-shared/pom.xml
+++ b/plugins/plugin-svn/che-plugin-svn-ext-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-svn-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-svn-ext-sharedjar
diff --git a/plugins/plugin-svn/pom.xml b/plugins/plugin-svn/pom.xml
index af1936c107..eef41b9aa1 100644
--- a/plugins/plugin-svn/pom.xml
+++ b/plugins/plugin-svn/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-svn-parent
diff --git a/plugins/plugin-testing-java/plugin-testing-classpath/che-plugin-testing-classpath-maven-server/pom.xml b/plugins/plugin-testing-java/plugin-testing-classpath/che-plugin-testing-classpath-maven-server/pom.xml
index 3e85c4eaf0..2a3b0f27ec 100644
--- a/plugins/plugin-testing-java/plugin-testing-classpath/che-plugin-testing-classpath-maven-server/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-classpath/che-plugin-testing-classpath-maven-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-classpathorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-classpath-maven-serverChe Plugin :: Java Testing :: Maven Classpath
diff --git a/plugins/plugin-testing-java/plugin-testing-classpath/che-plugin-testing-classpath-server/pom.xml b/plugins/plugin-testing-java/plugin-testing-classpath/che-plugin-testing-classpath-server/pom.xml
index 9506350582..5bea985a2a 100644
--- a/plugins/plugin-testing-java/plugin-testing-classpath/che-plugin-testing-classpath-server/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-classpath/che-plugin-testing-classpath-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-classpathorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-classpath-serverChe Plugin :: Java Testing :: Classpath
diff --git a/plugins/plugin-testing-java/plugin-testing-classpath/pom.xml b/plugins/plugin-testing-java/plugin-testing-classpath/pom.xml
index f50e5d60dd..c9d5271256 100644
--- a/plugins/plugin-testing-java/plugin-testing-classpath/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-classpath/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-java-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-classpathpom
diff --git a/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-ide/pom.xml b/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-ide/pom.xml
index cfbac4e257..6e214796e2 100644
--- a/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-ide/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-junitorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-junit-ideChe Plugin :: Java Testing :: JUnit IDE
diff --git a/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-server/pom.xml b/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-server/pom.xml
index 1fc770c3f7..7b40d6c887 100644
--- a/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-server/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-junitorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-junit-serverChe Plugin :: Java Testing :: JUnit Server
diff --git a/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-server/src/main/java/org/eclipse/che/plugin/testing/junit/server/JUnitTestRunner.java b/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-server/src/main/java/org/eclipse/che/plugin/testing/junit/server/JUnitTestRunner.java
index ff4b536885..6725527de8 100644
--- a/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-server/src/main/java/org/eclipse/che/plugin/testing/junit/server/JUnitTestRunner.java
+++ b/plugins/plugin-testing-java/plugin-testing-junit/che-plugin-testing-junit-server/src/main/java/org/eclipse/che/plugin/testing/junit/server/JUnitTestRunner.java
@@ -32,6 +32,8 @@ import org.eclipse.che.api.testing.server.listener.AbstractTestListener;
import org.eclipse.che.api.testing.server.listener.OutputTestListener;
import org.eclipse.che.api.testing.shared.TestCase;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
import org.eclipse.che.dto.server.DtoFactory;
import org.eclipse.che.plugin.testing.classpath.server.TestClasspathProvider;
import org.eclipse.che.plugin.testing.classpath.server.TestClasspathRegistry;
@@ -542,4 +544,16 @@ public class JUnitTestRunner implements TestRunner {
dtoResult.setTestCases(testList);
return dtoResult;
}
+
+ @Override
+ public TestResultRootDto runTests(Map testParameters) throws Exception {
+ // New API - Not supported yet
+ return null;
+ }
+
+ @Override
+ public List getTestResults(List testResultsPath) {
+ // New API - Not supported yet
+ return null;
+ }
}
diff --git a/plugins/plugin-testing-java/plugin-testing-junit/pom.xml b/plugins/plugin-testing-java/plugin-testing-junit/pom.xml
index c4e989e119..783a82ad75 100644
--- a/plugins/plugin-testing-java/plugin-testing-junit/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-junit/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-java-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-junitpom
diff --git a/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-ide/pom.xml b/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-ide/pom.xml
index ac37570802..3798a6adc0 100644
--- a/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-ide/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-testngorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-testng-ideChe Plugin :: Java Testing :: TestNG IDE
diff --git a/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-server/pom.xml b/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-server/pom.xml
index eca3b9d51c..4154f279fe 100644
--- a/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-server/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-testngorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-testng-serverChe Plugin :: Java Testing :: TestNG Server
diff --git a/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-server/src/main/java/org/eclipse/che/plugin/testing/testng/server/TestNGRunner.java b/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-server/src/main/java/org/eclipse/che/plugin/testing/testng/server/TestNGRunner.java
index 8847d3bed0..866849b788 100644
--- a/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-server/src/main/java/org/eclipse/che/plugin/testing/testng/server/TestNGRunner.java
+++ b/plugins/plugin-testing-java/plugin-testing-testng/che-plugin-testing-testng-server/src/main/java/org/eclipse/che/plugin/testing/testng/server/TestNGRunner.java
@@ -32,6 +32,8 @@ import org.eclipse.che.api.testing.server.listener.AbstractTestListener;
import org.eclipse.che.api.testing.server.listener.OutputTestListener;
import org.eclipse.che.api.testing.shared.TestCase;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
import org.eclipse.che.dto.server.DtoFactory;
import org.eclipse.che.plugin.testing.classpath.server.TestClasspathProvider;
import org.eclipse.che.plugin.testing.classpath.server.TestClasspathRegistry;
@@ -350,4 +352,16 @@ public class TestNGRunner implements TestRunner {
}
});
}
+
+ @Override
+ public TestResultRootDto runTests(Map testParameters) throws Exception {
+ // New API - Not supported yet
+ return null;
+ }
+
+ @Override
+ public List getTestResults(List testResultsPath) {
+ // New API - Not supported yet
+ return null;
+ }
}
diff --git a/plugins/plugin-testing-java/plugin-testing-testng/pom.xml b/plugins/plugin-testing-java/plugin-testing-testng/pom.xml
index 109439b7f8..6ca33ff1f8 100644
--- a/plugins/plugin-testing-java/plugin-testing-testng/pom.xml
+++ b/plugins/plugin-testing-java/plugin-testing-testng/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-java-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-testngpom
diff --git a/plugins/plugin-testing-java/pom.xml b/plugins/plugin-testing-java/pom.xml
index 2a457319f7..710d405326 100644
--- a/plugins/plugin-testing-java/pom.xml
+++ b/plugins/plugin-testing-java/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-java-parentpom
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/pom.xml b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/pom.xml
new file mode 100644
index 0000000000..330cefd7a4
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/pom.xml
@@ -0,0 +1,76 @@
+
+
+
+ 4.0.0
+
+ che-plugin-testing-phpunit
+ org.eclipse.che.plugin
+ 5.15.0-SNAPSHOT
+
+ che-plugin-testing-phpunit-ide
+ Che Plugin :: PHP Testing :: PHPUnit IDE
+
+
+ com.google.inject
+ guice
+
+
+ javax.validation
+ validation-api
+
+
+ org.eclipse.che.core
+ che-core-commons-gwt
+
+
+ org.eclipse.che.core
+ che-core-ide-api
+
+
+ org.eclipse.che.core
+ che-core-ide-app
+
+
+ org.eclipse.che.plugin
+ che-plugin-testing-ide
+
+
+ org.vectomatic
+ lib-gwt-svg
+
+
+ com.google.gwt
+ gwt-user
+ provided
+
+
+ com.google.gwt.inject
+ gin
+ provided
+
+
+
+
+
+ src/main/java
+
+ **/*.java
+
+
+
+ src/main/resources
+
+
+
+
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitGinModule.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitGinModule.java
new file mode 100644
index 0000000000..a2b5cf6aad
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitGinModule.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.ide;
+
+import org.eclipse.che.ide.api.extension.ExtensionGinModule;
+import org.eclipse.che.plugin.testing.ide.TestAction;
+
+import com.google.gwt.inject.client.AbstractGinModule;
+import com.google.gwt.inject.client.multibindings.GinMultibinder;
+
+/**
+ * PHPUnit Gin module.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+@ExtensionGinModule
+public class PHPUnitGinModule extends AbstractGinModule {
+ @Override
+ protected void configure() {
+ GinMultibinder.newSetBinder(binder(), TestAction.class).addBinding().to(PHPUnitTestActionGroup.class);
+ }
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestActionGroup.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestActionGroup.java
new file mode 100644
index 0000000000..aa3989e071
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestActionGroup.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.ide;
+
+import org.eclipse.che.ide.api.action.Action;
+import org.eclipse.che.ide.api.action.ActionManager;
+import org.eclipse.che.ide.api.action.DefaultActionGroup;
+import org.eclipse.che.ide.api.keybinding.KeyBindingAgent;
+import org.eclipse.che.plugin.testing.ide.TestAction;
+import org.eclipse.che.plugin.testing.phpunit.ide.action.PHPRunContainerTestAction;
+import org.eclipse.che.plugin.testing.phpunit.ide.action.PHPRunScriptTestAction;
+import org.eclipse.che.plugin.testing.phpunit.ide.action.PHPRunScriptTestEditorAction;
+
+import com.google.inject.Inject;
+
+/**
+ * PHPUnit test action implementation.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTestActionGroup implements TestAction {
+
+ private final Action runScriptTestAction;
+ private final Action runScriptTestEditorAction;
+ private final Action runContainerTestAction;
+
+ @Inject
+ public PHPUnitTestActionGroup(ActionManager actionManager,
+ PHPRunScriptTestAction runScriptTestAction,
+ PHPRunScriptTestEditorAction runScriptTestEditorAction,
+ PHPRunContainerTestAction runContainerTestAction,
+ KeyBindingAgent keyBinding) {
+ actionManager.registerAction("PHPRunScriptTestAction", runScriptTestAction);
+ actionManager.registerAction("PHPRunScriptTestEditorAction", runScriptTestEditorAction);
+ actionManager.registerAction("PHPRunContainerTestAction", runContainerTestAction);
+ this.runScriptTestAction = runScriptTestAction;
+ this.runScriptTestEditorAction = runScriptTestEditorAction;
+ this.runContainerTestAction = runContainerTestAction;
+ }
+
+ @Override
+ public void addMainMenuItems(DefaultActionGroup testMainMenu) {
+ testMainMenu.add(runScriptTestEditorAction);
+ testMainMenu.add(runContainerTestAction);
+ }
+
+ @Override
+ public void addContextMenuItems(DefaultActionGroup testContextMenu) {
+ testContextMenu.add(runScriptTestAction);
+ testContextMenu.add(runContainerTestAction);
+ }
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestLocalizationConstant.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestLocalizationConstant.java
new file mode 100644
index 0000000000..95d178c397
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestLocalizationConstant.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.ide;
+
+import com.google.gwt.i18n.client.Messages;
+
+/**
+ * Localization constants. Interface to represent the constants defined in resource bundle: 'PHPUnitTestLocalizationConstant.properties'.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public interface PHPUnitTestLocalizationConstant extends Messages {
+
+ @Key("action.runScript.title")
+ String actionRunScriptTitle();
+
+ @Key("action.runScript.description")
+ String actionRunScriptDescription();
+
+ @Key("action.runContainer.title")
+ String actionRunContainerTitle();
+
+ @Key("action.runContainer.description")
+ String actionRunContainerDescription();
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestResources.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestResources.java
new file mode 100644
index 0000000000..1c73817d8b
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestResources.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.ide;
+
+import org.vectomatic.dom.svg.ui.SVGResource;
+
+import com.google.gwt.resources.client.ClientBundle;
+
+/**
+ * PHPUnit ide part resources.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public interface PHPUnitTestResources extends ClientBundle {
+
+ @Source("org/eclipse/che/plugin/testing/phpunit/ide/svg/test.svg")
+ SVGResource testIcon();
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunContainerTestAction.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunContainerTestAction.java
new file mode 100644
index 0000000000..0b255aad72
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunContainerTestAction.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.ide.action;
+
+import static org.eclipse.che.ide.workspace.perspectives.project.ProjectPerspective.PROJECT_PERSPECTIVE_ID;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.validation.constraints.NotNull;
+
+import org.eclipse.che.ide.api.action.AbstractPerspectiveAction;
+import org.eclipse.che.ide.api.action.ActionEvent;
+import org.eclipse.che.ide.api.app.AppContext;
+import org.eclipse.che.ide.api.resources.Container;
+import org.eclipse.che.ide.api.resources.Project;
+import org.eclipse.che.ide.api.selection.Selection;
+import org.eclipse.che.ide.api.selection.SelectionAgent;
+import org.eclipse.che.ide.resources.tree.ContainerNode;
+import org.eclipse.che.plugin.testing.ide.TestActionRunner;
+import org.eclipse.che.plugin.testing.phpunit.ide.PHPUnitTestLocalizationConstant;
+import org.eclipse.che.plugin.testing.phpunit.ide.PHPUnitTestResources;
+
+import com.google.inject.Inject;
+
+/**
+ * "Run Container" PHPUnit test action.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPRunContainerTestAction extends AbstractPerspectiveAction {
+
+ private final TestActionRunner runner;
+ private final AppContext appContext;
+ private final SelectionAgent selectionAgent;
+
+ @Inject
+ public PHPRunContainerTestAction(TestActionRunner runner,
+ PHPUnitTestResources resources,
+ AppContext appContext,
+ SelectionAgent selectionAgent,
+ PHPUnitTestLocalizationConstant localization) {
+ super(Arrays.asList(PROJECT_PERSPECTIVE_ID),
+ localization.actionRunContainerTitle(),
+ localization.actionRunScriptDescription(),
+ null,
+ resources.testIcon());
+ this.runner = runner;
+ this.appContext = appContext;
+ this.selectionAgent = selectionAgent;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ final Selection> selection = selectionAgent.getSelection();
+ final Object possibleNode = selection.getHeadElement();
+ if (possibleNode instanceof ContainerNode) {
+ Container container = ((ContainerNode) possibleNode).getData();
+ final Project project = appContext.getRootProject();
+ Map parameters = new HashMap<>();
+ parameters.put("testTarget", container.getLocation().toString());
+ runner.run("PHPUnit", project.getPath(), parameters);
+ }
+ }
+
+ @Override
+ public void updateInPerspective(@NotNull ActionEvent e) {
+ if ((appContext.getRootProject() == null)) {
+ e.getPresentation().setVisible(true);
+ e.getPresentation().setEnabled(false);
+ return;
+ }
+ final Selection> selection = selectionAgent.getSelection();
+ if (selection == null || selection.isEmpty()) {
+ e.getPresentation().setEnabled(false);
+ return;
+ }
+ if (selection.isMultiSelection()) {
+ e.getPresentation().setEnabled(false);
+ return;
+ }
+ final Object possibleNode = selection.getHeadElement();
+ if (possibleNode instanceof ContainerNode) {
+ String projectType = ((ContainerNode) possibleNode).getData().getProject().getType();
+ if ("php".equalsIgnoreCase(projectType) || "composer".equalsIgnoreCase(projectType)) {
+ e.getPresentation().setVisible(true);
+ e.getPresentation().setEnabled(true);
+ return;
+ }
+ }
+ e.getPresentation().setVisible(false);
+ e.getPresentation().setEnabled(false);
+ }
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunScriptTestAction.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunScriptTestAction.java
new file mode 100644
index 0000000000..35ac2bee86
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunScriptTestAction.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.ide.action;
+
+import static org.eclipse.che.ide.workspace.perspectives.project.ProjectPerspective.PROJECT_PERSPECTIVE_ID;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.validation.constraints.NotNull;
+
+import org.eclipse.che.ide.api.action.AbstractPerspectiveAction;
+import org.eclipse.che.ide.api.action.ActionEvent;
+import org.eclipse.che.ide.api.app.AppContext;
+import org.eclipse.che.ide.api.resources.Project;
+import org.eclipse.che.ide.api.resources.VirtualFile;
+import org.eclipse.che.ide.api.selection.Selection;
+import org.eclipse.che.ide.api.selection.SelectionAgent;
+import org.eclipse.che.ide.resources.tree.FileNode;
+import org.eclipse.che.plugin.testing.ide.TestActionRunner;
+import org.eclipse.che.plugin.testing.phpunit.ide.PHPUnitTestLocalizationConstant;
+import org.eclipse.che.plugin.testing.phpunit.ide.PHPUnitTestResources;
+
+import com.google.inject.Inject;
+
+/**
+ * "Run Script" PHPUnit test action.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPRunScriptTestAction extends AbstractPerspectiveAction {
+
+ private final TestActionRunner runner;
+ private final AppContext appContext;
+ private final SelectionAgent selectionAgent;
+
+ @Inject
+ public PHPRunScriptTestAction(TestActionRunner runner,
+ PHPUnitTestResources resources,
+ AppContext appContext,
+ SelectionAgent selectionAgent,
+ PHPUnitTestLocalizationConstant localization) {
+ super(Arrays.asList(PROJECT_PERSPECTIVE_ID),
+ localization.actionRunScriptTitle(),
+ localization.actionRunScriptDescription(),
+ null,
+ resources.testIcon());
+ this.runner = runner;
+ this.appContext = appContext;
+ this.selectionAgent = selectionAgent;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ final Selection> selection = selectionAgent.getSelection();
+ final Object possibleNode = selection.getHeadElement();
+ if (possibleNode instanceof FileNode) {
+ VirtualFile file = ((FileNode) possibleNode).getData();
+ final Project project = appContext.getRootProject();
+ Map parameters = new HashMap<>();
+ parameters.put("testTarget", file.getLocation().toString());
+ runner.run("PHPUnit", project.getPath(), parameters);
+ }
+ }
+
+ @Override
+ public void updateInPerspective(@NotNull ActionEvent e) {
+ if ((appContext.getRootProject() == null)) {
+ e.getPresentation().setVisible(true);
+ e.getPresentation().setEnabled(false);
+ return;
+ }
+ final Selection> selection = selectionAgent.getSelection();
+ if (selection == null || selection.isEmpty()) {
+ e.getPresentation().setEnabled(false);
+ return;
+ }
+ if (selection.isMultiSelection()) {
+ e.getPresentation().setEnabled(false);
+ return;
+ }
+ final Object possibleNode = selection.getHeadElement();
+ boolean enable = possibleNode instanceof FileNode
+ && (((FileNode) possibleNode).getData().getExtension().equals("php")
+ || ((FileNode) possibleNode).getData().getExtension().equals("phtml"));
+ e.getPresentation().setEnabled(enable);
+ e.getPresentation().setVisible(enable);
+ }
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunScriptTestEditorAction.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunScriptTestEditorAction.java
new file mode 100644
index 0000000000..5c579faa66
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/java/org/eclipse/che/plugin/testing/phpunit/ide/action/PHPRunScriptTestEditorAction.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.ide.action;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.che.ide.api.action.ActionEvent;
+import org.eclipse.che.ide.api.action.ProjectAction;
+import org.eclipse.che.ide.api.app.AppContext;
+import org.eclipse.che.ide.api.editor.EditorAgent;
+import org.eclipse.che.ide.api.editor.EditorInput;
+import org.eclipse.che.ide.api.editor.EditorPartPresenter;
+import org.eclipse.che.ide.api.filetypes.FileTypeRegistry;
+import org.eclipse.che.ide.api.resources.Project;
+import org.eclipse.che.ide.api.resources.VirtualFile;
+import org.eclipse.che.ide.api.selection.SelectionAgent;
+import org.eclipse.che.plugin.testing.ide.TestActionRunner;
+import org.eclipse.che.plugin.testing.phpunit.ide.PHPUnitTestLocalizationConstant;
+import org.eclipse.che.plugin.testing.phpunit.ide.PHPUnitTestResources;
+
+import com.google.inject.Inject;
+
+/**
+ * "Run Script" PHPUnit test editor action.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPRunScriptTestEditorAction extends ProjectAction {
+
+ private final TestActionRunner runner;
+ private final AppContext appContext;
+ private final EditorAgent editorAgent;
+ private final FileTypeRegistry fileTypeRegistry;
+
+ @Inject
+ public PHPRunScriptTestEditorAction(TestActionRunner runner,
+ EditorAgent editorAgent,
+ FileTypeRegistry fileTypeRegistry,
+ PHPUnitTestResources resources,
+ AppContext appContext,
+ SelectionAgent selectionAgent,
+ PHPUnitTestLocalizationConstant localization) {
+ super(localization.actionRunScriptTitle(), localization.actionRunScriptDescription(), resources.testIcon());
+ this.runner = runner;
+ this.appContext = appContext;
+ this.editorAgent = editorAgent;
+ this.fileTypeRegistry = fileTypeRegistry;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ final Project project = appContext.getRootProject();
+ EditorPartPresenter editorPart = editorAgent.getActiveEditor();
+ final VirtualFile file = editorPart.getEditorInput().getFile();
+ Map parameters = new HashMap<>();
+ parameters.put("testTarget", file.getLocation().toString());
+ runner.run("PHPUnit", project.getPath(), parameters);
+ }
+
+ @Override
+ protected void updateProjectAction(ActionEvent e) {
+ if (editorAgent.getActiveEditor() != null) {
+ EditorInput input = editorAgent.getActiveEditor().getEditorInput();
+ VirtualFile file = input.getFile();
+ final String fileExtension = fileTypeRegistry.getFileTypeByFile(file).getExtension();
+ if ("php".equals(fileExtension) || "phtml".equals(fileExtension)) {
+ e.getPresentation().setEnabledAndVisible(true);
+ return;
+ }
+ }
+ e.getPresentation().setEnabledAndVisible(false);
+ }
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/PHPUnit.gwt.xml b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/PHPUnit.gwt.xml
new file mode 100644
index 0000000000..f020bd77ec
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/PHPUnit.gwt.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestLocalizationConstant.properties b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestLocalizationConstant.properties
new file mode 100644
index 0000000000..20348356e8
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/PHPUnitTestLocalizationConstant.properties
@@ -0,0 +1,16 @@
+#
+# Copyright (c) 2012-2017 Codenvy, S.A.
+# 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:
+# Rogue Wave Software, Inc. - initial API and implementation
+#
+
+##### Actions #####
+action.runScript.title = PHPUnit
+action.runScript.description = Run the currently selected PHPUnit test script
+action.runContainer.title = PHPUnit
+action.runContainer.description = Run all the tests available under PHPUnit test container
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/svg/test.svg b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/svg/test.svg
new file mode 100644
index 0000000000..79b385d2dd
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/svg/test.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/svg/test_all.svg b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/svg/test_all.svg
new file mode 100644
index 0000000000..42353ffae0
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-ide/src/main/resources/org/eclipse/che/plugin/testing/phpunit/ide/svg/test_all.svg
@@ -0,0 +1,74 @@
+
+
+
+
+
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/pom.xml b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/pom.xml
new file mode 100644
index 0000000000..2d5e4ad976
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ 4.0.0
+
+ che-plugin-testing-phpunit
+ org.eclipse.che.plugin
+ 5.15.0-SNAPSHOT
+
+ che-plugin-testing-phpunit-server
+ Che Plugin :: PHP Testing :: PHPUnit Server
+
+
+ com.google.code.gson
+ gson
+
+
+ com.google.inject
+ guice
+
+
+ com.google.inject.extensions
+ guice-multibindings
+
+
+ commons-io
+ commons-io
+
+
+ javax.inject
+ javax.inject
+
+
+ org.eclipse.che.core
+ che-core-api-core
+
+
+ org.eclipse.che.core
+ che-core-api-dto
+
+
+ org.eclipse.che.core
+ che-core-api-project
+
+
+ org.eclipse.che.core
+ che-core-api-testing
+
+
+ org.eclipse.che.core
+ che-core-api-testing-shared
+
+
+ org.eclipse.che.core
+ che-core-commons-inject
+
+
+ org.slf4j
+ slf4j-api
+
+
+
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitMessageParser.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitMessageParser.java
new file mode 100644
index 0000000000..306f66d022
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitMessageParser.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server;
+
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestCase;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestException;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestRoot;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestSuite;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestWarning;
+
+/**
+ * PHPUnit message parser.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitMessageParser {
+
+ public static final String CALL_DYNAMIC = "->";
+ public static final String CALL_STATIC = "::";
+ private static final String ELEMENT_EVENT = "event";
+ private static final String ELEMENT_EXCEPTION = "exception";
+ private static final String ELEMENT_TARGET_TESTSUITE = "testsuite";
+ private static final String ELEMENT_TARGET_TESTCASE = "testcase";
+ private static final String ELEMENT_TEST = "test";
+ private static final String ELEMENT_WARNINGS = "warnings";
+ public static final String PROPERTY_CLASS = "class";
+ public static final String PROPERTY_CODE = "code";
+ public static final String PROPERTY_COUNT = "tests";
+ public static final String PROPERTY_FILE = "file";
+ public static final String PROPERTY_FILTERED = "filtered";
+ public static final String PROPERTY_LINE = "line";
+ public static final String PROPERTY_MESSAGE = "message";
+ public static final String PROPERTY_DIFF = "diff";
+ public static final String PROPERTY_NAME = "name";
+ public static final String PROPERTY_TIME = "time";
+ public static final String PROPERTY_TARGET = "target";
+ public static final String PROPERTY_TRACE = "trace";
+ public static final String STATUS_ERROR = "error";
+ public static final String STATUS_WARNING = "warning";
+ public static final String STATUS_FAIL = "fail";
+ public static final String STATUS_INCOMPLETE = "incomplete";
+ public static final String STATUS_PASS = "pass";
+ public static final String STATUS_SKIP = "skip";
+ public static final String TAG_END = "end";
+ public static final String TAG_START = "start";
+
+ private PHPUnitTestSuite currentGroup;
+ private PHPUnitTestCase currentTestCase;
+
+ public PHPUnitMessageParser(PHPUnitTestRoot testRoot) {
+ this.currentGroup = testRoot;
+ }
+
+ /**
+ * Parses provided message from PHPUnit printer.
+ *
+ * @param message
+ */
+ public void parse(final Map, ?> message) {
+ if (message == null) {
+ return;
+ }
+ final String target = (String) message.get(PROPERTY_TARGET);
+ final String event = (String) message.get(ELEMENT_EVENT);
+ final Map, ?> mTest = (Map, ?>) message.get(ELEMENT_TEST);
+ if (target.equals(ELEMENT_TARGET_TESTSUITE)) {
+ parseGroupStart(event, mTest);
+ if (event.equals(TAG_END)) {
+ parseGroupEnd();
+ }
+ } else if (target.equals(ELEMENT_TARGET_TESTCASE)) {
+ if (event.equals(TAG_START)) {
+ parseTestStart(event, mTest);
+ } else {
+ parseTestEnd(message, event, mTest);
+ }
+ }
+ }
+
+ private void parseGroupStart(final String event, final Map, ?> mTest) {
+ if (event.equals(TAG_START)) {
+ final PHPUnitTestSuite group = new PHPUnitTestSuite(mTest, currentGroup);
+ currentGroup.addChild(group, false);
+ group.setParent(currentGroup);
+ currentGroup = group;
+ }
+ }
+
+ private void parseGroupEnd() {
+ final PHPUnitTestSuite group = currentGroup;
+ currentGroup = (PHPUnitTestSuite) currentGroup.getParent();
+ currentGroup.addChild(group, true);
+ }
+
+ private void parseTestStart(final String event, final Map, ?> mTest) {
+ final PHPUnitTestCase testCase = new PHPUnitTestCase(mTest, currentGroup, event);
+ currentTestCase = testCase;
+ currentGroup.addChild(testCase, false);
+ }
+
+ private void parseTestEnd(final Map, ?> message, final String event, final Map, ?> mTest) {
+ final PHPUnitTestCase testCase = currentTestCase;
+ testCase.updateStatus(event);
+ final Map, ?> exception = (Map, ?>) message.get(ELEMENT_EXCEPTION);
+ if (exception != null)
+ parseException(testCase, exception);
+ final Map, ?> warnings = (Map, ?>) message.get(ELEMENT_WARNINGS);
+ if (warnings != null)
+ parseWarnings(testCase, warnings);
+ final String time = (String) message.get(PROPERTY_TIME);
+ testCase.setTime(Double.valueOf(time));
+ currentGroup.addChild(testCase, true);
+ }
+
+ /**
+ * @param testCase
+ * @param exception
+ */
+ private void parseException(final PHPUnitTestCase testCase, final Map, ?> exception) {
+ testCase.setException(new PHPUnitTestException(exception, testCase));
+ }
+
+ private void parseWarnings(final PHPUnitTestCase testCase, final Map, ?> warnings) {
+ Map, ?> mWarning;
+ // keep initial order
+ for (int i = 0; (mWarning = (Map, ?>) warnings.get(String.valueOf(i))) != null; ++i) {
+ if (testCase.getWarnings() == null)
+ testCase.setWarnings(new ArrayList(warnings.size()));
+ final PHPUnitTestWarning warning = new PHPUnitTestWarning(mWarning, testCase);
+ testCase.getWarnings().add(i, warning);
+ }
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestEngine.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestEngine.java
new file mode 100644
index 0000000000..45dd533294
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestEngine.java
@@ -0,0 +1,287 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server;
+
+import static org.eclipse.che.plugin.testing.phpunit.server.PHPUnitTestRunner.LOG;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.eclipse.che.api.core.ServerException;
+import org.eclipse.che.api.core.util.AbstractLineConsumer;
+import org.eclipse.che.api.core.util.CommandLine;
+import org.eclipse.che.api.core.util.ProcessUtil;
+import org.eclipse.che.api.project.server.ProjectManager;
+import org.eclipse.che.api.project.server.VirtualFileEntry;
+import org.eclipse.che.api.testing.server.exceptions.TestFrameworkException;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
+import org.eclipse.che.api.vfs.Path;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestRoot;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.internal.LinkedTreeMap;
+
+/**
+ * PHPUnit tests running engine.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTestEngine {
+
+ private final class PrinterListener implements Runnable {
+
+ private ServerSocket serverSocket;
+ private Socket socket;
+ private Gson gson = new GsonBuilder().create();
+ private ExecutorService threadExecutor;
+
+ public PrinterListener() {
+ threadExecutor = Executors.newSingleThreadExecutor(new ThreadFactory() {
+ @Override
+ public Thread newThread(Runnable r) {
+ final Thread thread = new Thread(r, "PHPUnitPrinterListener");
+ thread.setDaemon(true);
+ return thread;
+ }
+ });
+ }
+
+ @Override
+ public void run() {
+ try {
+ serverSocket = new ServerSocket(PRINTER_PORT, 1);
+ serverSocket.setSoTimeout(3000);
+ serverSocket.setReuseAddress(true);
+ // Release engine to perform tests
+ latchReady.countDown();
+ socket = serverSocket.accept();
+ handleReport(socket);
+ } catch (final IOException e) {
+ Thread.currentThread().interrupt();
+ } finally {
+ shutdown();
+ }
+ }
+
+ void shutdown() {
+ try {
+ if (socket != null && !socket.isClosed())
+ socket.close();
+ } catch (final Exception e) {}
+ try {
+ if (serverSocket != null && !serverSocket.isClosed())
+ serverSocket.close();
+ } catch (final IOException e) {}
+ threadExecutor.shutdown();
+ }
+
+ void startup() {
+ threadExecutor.submit(this);
+ }
+
+ @SuppressWarnings("unchecked")
+ private void handleReport(final Socket socket) {
+ try {
+ final BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+ final PHPUnitMessageParser messageParser = new PHPUnitMessageParser(phpTestsRoot);
+ String line;
+ Map value = null;
+ while ((line = reader.readLine()) != null) {
+ try {
+ value = gson.fromJson(line, LinkedTreeMap.class);
+ messageParser.parse(value);
+ } catch (final Throwable e) {
+ value = null;
+ }
+ }
+ latchDone.countDown();
+ shutdown();
+ } catch (final IOException e) {
+ Thread.currentThread().interrupt();
+ shutdown();
+ }
+ }
+ }
+
+ private static final String PRINTER_NAME = "ZendPHPUnitLogger";
+ private static final String PRINTER_DIRECTORY = "phpunit-printer";
+ private static final String PHPUNIT_GLOBAL = "phpunit";
+ private static final String PHPUNIT_COMPOSER = "/vendor/bin/phpunit";
+ private static final int PRINTER_PORT = 7478;
+
+ private final ProjectManager projectManager;
+ private final CountDownLatch latchReady = new CountDownLatch(1);
+ private final CountDownLatch latchDone = new CountDownLatch(1);
+
+ private PHPUnitTestRoot phpTestsRoot;
+ private PHPUnitTestResultsProvider testResultsProvider;
+
+ public PHPUnitTestEngine(ProjectManager projectManager) {
+ this.projectManager = projectManager;
+ }
+
+ /**
+ * Executes PHP unit tests with the use of provided parameters.
+ *
+ * @param testParameters
+ * @return
+ * @throws Exception
+ */
+ public TestResultRootDto executeTests(Map testParameters) throws Exception {
+ String projectPath = testParameters.get("projectPath");
+ String projectAbsolutePath = testParameters.get("absoluteProjectPath");
+ String testTargetRelativePath = testParameters.get("testTarget");
+ File testTargetFile = getTestTargetFile(testTargetRelativePath, projectAbsolutePath);
+ File testTargetWorkingDirectory =
+ testTargetFile.isDirectory() ? testTargetFile : testTargetFile.getParentFile();
+ // Get appropriate path to executable
+ String phpUnitExecutable = PHPUNIT_GLOBAL;
+ if (hasComposerRunner(projectPath)) {
+ phpUnitExecutable = projectAbsolutePath + PHPUNIT_COMPOSER;
+ }
+ // Get appropriate logger for PHP unit version
+ final File printerFile = getPrinterFile();
+ final String printerDirAbsolutePath = printerFile.getParentFile().getAbsolutePath();
+ PrinterListener printerListener = new PrinterListener();
+ printerListener.startup();
+ // Reset provider & tests root
+ testResultsProvider = new PHPUnitTestResultsProvider();
+ phpTestsRoot = new PHPUnitTestRoot();
+ // Wait for listener thread to be started
+ try {
+ latchReady.await();
+ } catch (InterruptedException e) {
+ LOG.error(e.getMessage(), e);
+ }
+ final CommandLine cmdRunTests = new CommandLine(phpUnitExecutable,
+ "--include-path",
+ printerDirAbsolutePath,
+ "--printer",
+ PRINTER_NAME,
+ getTestTarget(testTargetFile));
+ ProcessBuilder pb = new ProcessBuilder().redirectErrorStream(true)
+ .directory(testTargetWorkingDirectory)
+ .command(cmdRunTests.toShellCommand());
+ pb.environment().put("ZEND_PHPUNIT_PORT", String.valueOf(PRINTER_PORT));
+ Process processRunPHPUnitTests = pb.start();
+ final StringBuilder stdErrOut = new StringBuilder();
+ ProcessUtil.process(processRunPHPUnitTests, new AbstractLineConsumer() {
+ @Override
+ public void writeLine(String line) throws IOException {
+ if (!line.isEmpty())
+ stdErrOut.append(line + "\n");
+ }
+ });
+ int exitValue = processRunPHPUnitTests.waitFor();
+ try {
+ latchDone.await();
+ } catch (InterruptedException e) {
+ LOG.error(e.getMessage(), e);
+ }
+ if (exitValue != 0 && stdErrOut.length() > 0 && phpTestsRoot.getChildren() == null) {
+ throw new TestFrameworkException("PHPUnit Error:\n" + stdErrOut.toString());
+ }
+ return testResultsProvider.getTestResultsRoot(phpTestsRoot);
+ }
+
+ /**
+ * Returns test results for given result path.
+ *
+ * @param testResultsPath
+ * @return test results for given result path
+ */
+ public List getTestResults(List testResultsPath) {
+ return testResultsProvider.getTestResults(testResultsPath);
+ }
+
+ private File getPrinterFile() {
+ final String phpLoggerLocation = PRINTER_DIRECTORY + '/' + PRINTER_NAME + ".php";
+ final File tmpDir = new File(System.getProperty("java.io.tmpdir"));
+ final File tmpPrinterFile = new File(tmpDir, phpLoggerLocation);
+ if (!tmpPrinterFile.exists()) {
+ try {
+ tmpPrinterFile.getParentFile().mkdir();
+ tmpPrinterFile.createNewFile();
+ InputStream printerFileContent = getClass().getClassLoader().getResourceAsStream(phpLoggerLocation);
+ FileUtils.copyInputStreamToFile(printerFileContent, tmpPrinterFile);
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ } finally {
+ if (tmpPrinterFile.exists()) {
+ tmpPrinterFile.getParentFile().deleteOnExit();
+ tmpPrinterFile.deleteOnExit();
+ }
+ }
+ }
+ return tmpPrinterFile;
+ }
+
+ private File getTestTargetFile(String testTargetRelativePath, String projectAbsolutePath) {
+ if (Path.of(testTargetRelativePath).length() > 1)
+ return new File(Path.of(projectAbsolutePath)
+ .newPath(Path.of(testTargetRelativePath).subPath(1))
+ .toString());
+ return new File(Path.of(projectAbsolutePath).toString());
+ }
+
+ private String getTestTarget(File testTargetFile) {
+ if (testTargetFile.isDirectory()) {
+ if ((new File(testTargetFile, "phpunit.xml").exists()
+ || new File(testTargetFile, "phpunit.xml.dist").exists())) {
+ return "";
+ }
+ return testTargetFile.getAbsolutePath();
+ }
+ return FilenameUtils.removeExtension(testTargetFile.getAbsolutePath());
+ }
+
+ @SuppressWarnings("unchecked")
+ private boolean hasComposerRunner(String projectPath) {
+ VirtualFileEntry composerJson;
+ try {
+ composerJson = projectManager.getProjectsRoot().getChild(projectPath + "/composer.json");
+ if (composerJson == null)
+ return false;
+ } catch (ServerException e) {
+ return false;
+ }
+ try (InputStream inputStream = composerJson.getVirtualFile().getContent();
+ InputStreamReader reader = new InputStreamReader(inputStream);) {
+ Gson gson = new GsonBuilder().create();
+ Map composerJsonMap = gson.fromJson(reader, LinkedTreeMap.class);
+ Map requireDev = (Map) composerJsonMap.get("require-dev");
+ if (requireDev != null && requireDev.get("phpunit/phpunit") != null)
+ return true;
+ Map require = (Map) composerJsonMap.get("require");
+ if (require != null && require.get("phpunit/phpunit") != null)
+ return true;
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ }
+ return false;
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestResultsProvider.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestResultsProvider.java
new file mode 100644
index 0000000000..d7c7f843e8
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestResultsProvider.java
@@ -0,0 +1,181 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.che.api.testing.shared.common.TestResultStatus;
+import org.eclipse.che.api.testing.shared.common.TestResultType;
+import org.eclipse.che.api.testing.shared.dto.SimpleLocationDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceFrameDto;
+import org.eclipse.che.dto.server.DtoFactory;
+import org.eclipse.che.plugin.testing.phpunit.server.model.AbstractPHPUnitTestResult;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestCase;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestException;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestRoot;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTestSuite;
+import org.eclipse.che.plugin.testing.phpunit.server.model.PHPUnitTraceFrame;
+
+/**
+ * Test results provider.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+class PHPUnitTestResultsProvider {
+
+ private final Map testResultsCache = new HashMap<>();
+
+ /**
+ * Builds and returns test results root.
+ *
+ * @param resultsRoot
+ * @return test results root
+ */
+ public TestResultRootDto getTestResultsRoot(PHPUnitTestRoot resultsRoot) {
+ TestResultRootDto testResultRootDto = DtoFactory.getInstance().createDto(TestResultRootDto.class);
+ testResultRootDto.setTestFrameworkName(PHPUnitTestRunner.RUNNER_ID);
+ testResultRootDto.setStatus(getStatus(resultsRoot.getStatus()));
+ testResultRootDto.setResultPath(Collections.singletonList("php-tests-root"));
+ testResultRootDto.setName(getRootLabel(resultsRoot.getStatus()));
+ testResultRootDto.setInfoText(getTimeString(resultsRoot.getTime()));
+ testResultRootDto.setEmpty(resultsRoot.getChildren() == null);
+ // Add PHP related test result to cache
+ testResultsCache.put(getKey(testResultRootDto.getResultPath()), resultsRoot);
+ return testResultRootDto;
+ }
+
+ /**
+ * Builds and returns test results for given path.
+ *
+ * @param testResultsPath
+ * @return test results for given path
+ */
+ public List getTestResults(List testResultsPath) {
+ String key = getKey(testResultsPath);
+ AbstractPHPUnitTestResult phpTestResult = testResultsCache.get(key);
+ int testChildCounter = 0;
+ List testResults = new ArrayList<>();
+ for (AbstractPHPUnitTestResult phpChildResult : phpTestResult.getChildren()) {
+ List childResultsPath = new ArrayList<>(testResultsPath);
+ childResultsPath.add(String.valueOf(testChildCounter++));
+ TestResultDto testResultDto = getTestResult(phpChildResult, childResultsPath);
+ testResults.add(testResultDto);
+ }
+ return testResults;
+ }
+
+ private TestResultDto getTestResult(AbstractPHPUnitTestResult phpTestResult, List testResultPath) {
+ TestResultDto testResultDto = DtoFactory.getInstance().createDto(TestResultDto.class);
+ testResultDto.setStatus(getStatus(phpTestResult.getStatus()));
+ testResultDto.setResultPath(testResultPath);
+ testResultDto.setName(phpTestResult.getName());
+ testResultDto.setTrace(getTestTrace(phpTestResult));
+ testResultDto.setInfoText(getTimeString(phpTestResult.getTime()));
+ testResultDto.setType(phpTestResult instanceof PHPUnitTestSuite ? TestResultType.TEST_SUITE
+ : TestResultType.TEST_CASE);
+ SimpleLocationDto simpleLocationDto = DtoFactory.getInstance().createDto(SimpleLocationDto.class);
+ simpleLocationDto.setResourcePath(phpTestResult.getFile());
+ simpleLocationDto.setLineNumber(phpTestResult.getLine() - 1);
+ testResultDto.setTestLocation(simpleLocationDto);
+ // Add PHP related test result to cache
+ testResultsCache.put(getKey(testResultDto.getResultPath()), phpTestResult);
+ return testResultDto;
+ }
+
+ private TestResultTraceDto getTestTrace(AbstractPHPUnitTestResult phpTestResult) {
+ TestResultTraceDto testResultTraceDto = DtoFactory.getInstance().createDto(TestResultTraceDto.class);
+ if (phpTestResult instanceof PHPUnitTestCase) {
+ PHPUnitTestCase phpTestCase = (PHPUnitTestCase) phpTestResult;
+ PHPUnitTestException phpTestEvent = phpTestCase.getException();
+ if (phpTestEvent != null) {
+ testResultTraceDto.setMessage(phpTestEvent.getExceptionClass() + ": " + phpTestEvent.getMessage());
+ List traceFrames = new ArrayList<>();
+ for (PHPUnitTraceFrame phpTraceFrame : phpTestEvent.getTrace()) {
+ TestResultTraceFrameDto testResultTraceFrameDto =
+ DtoFactory.getInstance()
+ .createDto(TestResultTraceFrameDto.class);
+ testResultTraceFrameDto.setTraceFrame(phpTraceFrame.toString());
+ SimpleLocationDto simpleLocationDto = DtoFactory.getInstance().createDto(SimpleLocationDto.class);
+ simpleLocationDto.setResourcePath(phpTraceFrame.getFile());
+ simpleLocationDto.setLineNumber(phpTraceFrame.getLine() - 1);
+ testResultTraceFrameDto.setLocation(simpleLocationDto);
+ traceFrames.add(testResultTraceFrameDto);
+ }
+ testResultTraceDto.setTraceFrames(traceFrames);
+ return testResultTraceDto;
+ }
+ }
+ return null;
+ }
+
+ private String getKey(List resultsPath) {
+ StringBuilder sb = new StringBuilder();
+ Iterator resultsPathIterator = resultsPath.iterator();
+ sb.append(resultsPathIterator.next());
+ while (resultsPathIterator.hasNext()) {
+ sb.append("->" + resultsPathIterator.next());
+ }
+ return sb.toString();
+ }
+
+ private TestResultStatus getStatus(int phpStatus) {
+ switch (phpStatus) {
+ case AbstractPHPUnitTestResult.STATUS_PASS: {
+ return TestResultStatus.SUCCESS;
+ }
+ case AbstractPHPUnitTestResult.STATUS_WARNING: {
+ return TestResultStatus.WARNING;
+ }
+ case AbstractPHPUnitTestResult.STATUS_FAIL: {
+ return TestResultStatus.FAILURE;
+ }
+ case AbstractPHPUnitTestResult.STATUS_ERROR: {
+ return TestResultStatus.ERROR;
+ }
+ case AbstractPHPUnitTestResult.STATUS_SKIP:
+ case AbstractPHPUnitTestResult.STATUS_INCOMPLETE: {
+ return TestResultStatus.SKIPPED;
+ }
+ }
+ return null;
+ }
+
+ private String getRootLabel(int phpStatus) {
+ switch (phpStatus) {
+ case AbstractPHPUnitTestResult.STATUS_PASS: {
+ return "Tests Passed";
+ }
+ case AbstractPHPUnitTestResult.STATUS_FAIL:
+ case AbstractPHPUnitTestResult.STATUS_ERROR: {
+ return "Tests Failed";
+ }
+ case AbstractPHPUnitTestResult.STATUS_SKIP:
+ case AbstractPHPUnitTestResult.STATUS_INCOMPLETE: {
+ return "Tests Skipped";
+ }
+ }
+ return "Test Results";
+ }
+
+ private String getTimeString(double time) {
+ return "(" + (new DecimalFormat("0.000")).format(time) + " ms)";
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestRunner.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestRunner.java
new file mode 100644
index 0000000000..ce033797bd
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/PHPUnitTestRunner.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.eclipse.che.api.project.server.ProjectManager;
+import org.eclipse.che.api.testing.server.framework.TestRunner;
+import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * PHPUnit implementation for the test runner service.
+ *
+ *
+ * Available Parameters for {@link PHPUnitTestRunner#runTests(Map)}
+ *
+ * projectPath : Relative path to the project directory
+ * absoluteProjectPath : Absolute path to the project directory
+ * testTarget : Path to test target (container or script).
+ *
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTestRunner implements TestRunner {
+
+ public static final Logger LOG = LoggerFactory.getLogger(PHPUnitTestRunner.class);
+ public static final String RUNNER_ID = "PHPUnit";
+
+ private final PHPUnitTestEngine testEngine;
+
+ @Inject
+ public PHPUnitTestRunner(ProjectManager projectManager) {
+ testEngine = new PHPUnitTestEngine(projectManager);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getName() {
+ return RUNNER_ID;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public TestResultRootDto runTests(Map testParameters) throws Exception {
+ return testEngine.executeTests(testParameters);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List getTestResults(List testResultsPath) {
+ return testEngine.getTestResults(testResultsPath);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public TestResult execute(Map testParameters) throws Exception {
+ return null;
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/inject/PHPUnitGuiceModule.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/inject/PHPUnitGuiceModule.java
new file mode 100644
index 0000000000..6f86d5795a
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/inject/PHPUnitGuiceModule.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.inject;
+
+import static com.google.inject.multibindings.Multibinder.newSetBinder;
+
+import org.eclipse.che.api.testing.server.framework.TestRunner;
+import org.eclipse.che.inject.DynaModule;
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitTestRunner;
+
+import com.google.inject.AbstractModule;
+
+/**
+ * PHPUnit Guice module.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+@DynaModule
+public class PHPUnitGuiceModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ newSetBinder(binder(), TestRunner.class).addBinding().to(PHPUnitTestRunner.class);
+ }
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitElement.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitElement.java
new file mode 100644
index 0000000000..a23050c8c5
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitElement.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+import java.util.Map;
+
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitMessageParser;
+
+/**
+ * Abstract implementation for PHP unit model elements.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+abstract public class AbstractPHPUnitElement {
+
+ protected String file = "";
+ protected boolean isFiltered = false;
+ protected int line = 0;
+ protected AbstractPHPUnitElement parent;
+
+ public AbstractPHPUnitElement(final Map, ?> properties, final AbstractPHPUnitElement parent) {
+ if (properties != null)
+ init(properties);
+ if (parent != null)
+ setParent(parent);
+ }
+
+ /**
+ * Sets this element parent.
+ *
+ * @param parent
+ */
+ public void setParent(final AbstractPHPUnitElement parent) {
+ this.parent = parent;
+ }
+
+ /**
+ * Returns related element file path.
+ *
+ * @return related element file path
+ */
+ public String getFile() {
+ return file;
+ }
+
+ /**
+ * Returns related element file line.
+ *
+ * @return related element file line
+ */
+ public int getLine() {
+ return line;
+ }
+
+ /**
+ * Returns element's parent.
+ *
+ * @return element's parent
+ */
+ public AbstractPHPUnitElement getParent() {
+ return parent;
+ }
+
+ /**
+ * Checks if this element is filtered.
+ *
+ * @return true if this element is filtered, false otherwise
+ */
+ public boolean isFiltered() {
+ return isFiltered;
+ }
+
+ private void init(final Map, ?> properties) {
+ final String pFile = (String) properties.get(PHPUnitMessageParser.PROPERTY_FILE);
+ if (pFile != null) {
+ file = (String) properties.get(PHPUnitMessageParser.PROPERTY_FILE);
+ line = Integer.parseInt((String) properties.get(PHPUnitMessageParser.PROPERTY_LINE));
+ }
+ if (properties.get(PHPUnitMessageParser.PROPERTY_FILTERED) != null) {
+ isFiltered = true;
+ }
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitTestEvent.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitTestEvent.java
new file mode 100644
index 0000000000..0ddd06579e
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitTestEvent.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitMessageParser;
+
+/**
+ * Abstract implementation for PHP unit test event elements.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public abstract class AbstractPHPUnitTestEvent extends AbstractPHPUnitElement {
+
+ protected String message;
+ protected String diff;
+ protected List trace;
+
+ public AbstractPHPUnitTestEvent(final Map, ?> event, final AbstractPHPUnitElement parent) {
+ super(event, parent);
+ message = (String) event.get(PHPUnitMessageParser.PROPERTY_MESSAGE);
+ diff = (String) event.get(PHPUnitMessageParser.PROPERTY_DIFF);
+ final Map, ?> mTrace = (Map, ?>) event.get(PHPUnitMessageParser.PROPERTY_TRACE);
+ if (mTrace == null || mTrace.isEmpty())
+ return;
+ trace = new ArrayList(mTrace.size());
+ for (int i = 0; i < mTrace.size(); ++i) {
+ trace.add(new PHPUnitTraceFrame((Map, ?>) mTrace.get(String.valueOf(i)), this));
+ }
+ }
+
+ /**
+ * Returns element description.
+ *
+ * @return element description
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * Returns diff.
+ *
+ * @return diff
+ */
+ public String getDiff() {
+ return diff;
+ }
+
+ /**
+ * Returns element related trace.
+ *
+ * @return element related trace
+ */
+ public List getTrace() {
+ return trace;
+ }
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitTestResult.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitTestResult.java
new file mode 100644
index 0000000000..845b6f1c53
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/AbstractPHPUnitTestResult.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitMessageParser;
+
+/**
+ * Abstract implementation for PHP unit test result elements.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public abstract class AbstractPHPUnitTestResult extends AbstractPHPUnitElement {
+
+ public static final int STATUS_STARTED = 0;
+ public static final int STATUS_PASS = 1;
+ public static final int STATUS_SKIP = 2;
+ public static final int STATUS_INCOMPLETE = 3;
+ public static final int STATUS_WARNING = 4;
+ public static final int STATUS_FAIL = 5;
+ public static final int STATUS_ERROR = 6;
+
+ protected String name = "";
+ protected int status = 0;
+ protected double time = 0;
+
+ public AbstractPHPUnitTestResult(final Map, ?> test, final PHPUnitTestSuite parent) {
+ super(test, parent);
+ if (test != null)
+ name = (String) test.get(PHPUnitMessageParser.PROPERTY_NAME);
+ }
+
+ /**
+ * Implementors should return this element children.
+ *
+ * @return this element children
+ */
+ public abstract Set getChildren();
+
+ /**
+ * Returns element name.
+ *
+ * @return element name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Returns number of run count.
+ *
+ * @return number of run count
+ */
+ public int getRunCount() {
+ return 1;
+ }
+
+ /**
+ * Returns element status.
+ *
+ * @return element status.
+ */
+ public int getStatus() {
+ return status;
+ }
+
+ /**
+ * Sets element status.
+ *
+ * @param status
+ */
+ public void setStatus(final int status) {
+ this.status = status;
+ }
+
+ /**
+ * Returns execution time.
+ *
+ * @return execution time
+ */
+ public double getTime() {
+ return time;
+ }
+
+ /**
+ * Sets the execution time.
+ *
+ * @param time
+ */
+ public void setTime(double time) {
+ this.time = time;
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestCase.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestCase.java
new file mode 100644
index 0000000000..dcc7af2c48
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestCase.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitMessageParser;
+
+/**
+ * Test case model element implementation.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTestCase extends AbstractPHPUnitTestResult {
+
+ protected PHPUnitTestException exception = null;
+ protected List warnings = null;
+
+ public PHPUnitTestCase(final Map, ?> test, final PHPUnitTestSuite parent) {
+ super(test, parent);
+ }
+
+ public PHPUnitTestCase(final Map, ?> test, final PHPUnitTestSuite parent, final String sStatus) {
+ this(test, parent);
+ updateStatus(sStatus);
+ }
+
+ @Override
+ public Set getChildren() {
+ return Collections.emptySet();
+ }
+
+ /**
+ * Updates status of this test case.
+ *
+ * @param sStatus
+ */
+ public void updateStatus(String sStatus) {
+ if (sStatus.equals(PHPUnitMessageParser.STATUS_PASS))
+ status = STATUS_PASS;
+ else if (sStatus.equals(PHPUnitMessageParser.STATUS_SKIP))
+ status = STATUS_SKIP;
+ else if (sStatus.equals(PHPUnitMessageParser.STATUS_INCOMPLETE))
+ status = STATUS_INCOMPLETE;
+ else if (sStatus.equals(PHPUnitMessageParser.STATUS_WARNING))
+ status = STATUS_WARNING;
+ else if (sStatus.equals(PHPUnitMessageParser.STATUS_FAIL))
+ status = STATUS_FAIL;
+ else if (sStatus.equals(PHPUnitMessageParser.STATUS_ERROR))
+ status = STATUS_ERROR;
+ else if (sStatus.equals(PHPUnitMessageParser.TAG_START))
+ status = STATUS_STARTED;
+ }
+
+ /**
+ * returns related exception if there is any.
+ *
+ * @return related exception if there is any
+ */
+ public PHPUnitTestException getException() {
+ return exception;
+ }
+
+ /**
+ * Returns related warnings if there are any.
+ *
+ * @return related warnings if there are any
+ */
+ public List getWarnings() {
+ return warnings;
+ }
+
+ /**
+ * Sets test case related exception.
+ *
+ * @param exception
+ */
+ public void setException(final PHPUnitTestException exception) {
+ this.exception = exception;
+
+ }
+
+ /**
+ * Sets test case related warnings.
+ *
+ * @param warnings
+ */
+ public void setWarnings(final List warnings) {
+ this.warnings = warnings;
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestException.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestException.java
new file mode 100644
index 0000000000..3e79c04418
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestException.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitMessageParser;
+
+/**
+ * Test exception model element implementation.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTestException extends AbstractPHPUnitTestEvent {
+
+ private static final String TOP_CLASS = "Exception"; //$NON-NLS-1$
+ private String exceptionClass = TOP_CLASS;
+
+ public PHPUnitTestException(Map, ?> exception, PHPUnitTestCase parent) {
+ super(exception, parent);
+ exceptionClass = (String) exception.get(PHPUnitMessageParser.PROPERTY_CLASS);
+ }
+
+ /**
+ * Returns exception class.
+ *
+ * @return exception class
+ */
+ public String getExceptionClass() {
+ return exceptionClass;
+ }
+
+ /**
+ * Sets abnormal exception if occurred.
+ *
+ * @param testCase
+ */
+ public static void addAbnormalException(PHPUnitTestCase testCase) {
+ // if(ABNORMAL_EXCEPTION == null) {
+ Map exception = new HashMap();
+ exception.put(PHPUnitMessageParser.PROPERTY_CLASS, "An unexpected termination has occurred");
+ exception.put(PHPUnitMessageParser.PROPERTY_MESSAGE, "The test case was unexpectedly terminated");
+ PHPUnitTestException abnormalException = new PHPUnitTestException(exception, null);
+ abnormalException.setParent(testCase);
+ testCase.setException(abnormalException);
+ testCase.setStatus(AbstractPHPUnitTestResult.STATUS_ERROR);
+ PHPUnitTestSuite parent = (PHPUnitTestSuite) testCase.getParent();
+ if (parent != null) {
+ parent.setStatus(testCase.getStatus());
+ }
+ testCase.setException(new PHPUnitTestException(exception, testCase));
+ }
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestRoot.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestRoot.java
new file mode 100644
index 0000000000..45c60ad374
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestRoot.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+/**
+ * Tests root element.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTestRoot extends PHPUnitTestSuite {
+
+ public PHPUnitTestRoot() {
+ super(null, null);
+ }
+
+ @Override
+ public String getName() {
+ return "Test Results";
+ }
+
+ @Override
+ public void setStatus(final int status) {
+ statusCount.counts[status]++;
+ this.status = Math.max(this.status, status);
+ if (parent != null)
+ ((PHPUnitTestSuite) parent).setStatus(status);
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestSuite.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestSuite.java
new file mode 100644
index 0000000000..eb10ac47c7
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestSuite.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitMessageParser;
+
+/**
+ * Test suite model element implementation.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTestSuite extends AbstractPHPUnitTestResult {
+
+ protected class StatusCount {
+ public int[] counts = { 0, 0, 0, 0, 0, 0, 0 }; // STATUS_STARTED,
+ // STATUS_PASS,
+ // STATUS_SKIP,
+ // STATUS_INCOMPLETE,
+ // STATUS_FAIL,
+ // STATUS_ERROR
+ }
+
+ protected final StatusCount statusCount = new StatusCount();
+ private Set children = null;
+ private int runCount = 0;
+ private int totalCount;
+
+ public PHPUnitTestSuite(final Map, ?> test, final PHPUnitTestSuite parent) {
+ super(test, parent);
+ if (test == null)
+ totalCount = 0;
+ else
+ totalCount = Integer.parseInt((String) test.get(PHPUnitMessageParser.PROPERTY_COUNT));
+ }
+
+ @Override
+ public Set getChildren() {
+ return children;
+ }
+
+ @Override
+ public int getRunCount() {
+ return runCount;
+ }
+
+ @Override
+ public int getStatus() {
+ return status;
+ }
+
+ @Override
+ public void setStatus(final int status) {
+ statusCount.counts[status]++;
+ this.status = Math.max(this.status, status);
+ if (parent != null)
+ ((PHPUnitTestSuite) parent).setStatus(status);
+ }
+
+ /**
+ * Adds child element to this test suite.
+ *
+ * @param test
+ * @param finished
+ */
+ public void addChild(final AbstractPHPUnitTestResult test, boolean finished) {
+ if (children == null) {
+ children = new LinkedHashSet<>();
+ }
+ children.add(test);
+ if (test instanceof PHPUnitTestCase && finished) {
+ addRunCount(1);
+ }
+ time += test.getTime();
+ setStatus(test.getStatus());
+ }
+
+ /**
+ * Returns status count.
+ *
+ * @param status
+ * @return status count for provided status
+ */
+ public int getStatusCount(final int status) {
+ return statusCount.counts[status];
+ }
+
+ /**
+ * Returns total tests count.
+ *
+ * @return total tests count
+ */
+ public int getTotalCount() {
+ return totalCount;
+ }
+
+ /**
+ * Sets test suite element parent.
+ *
+ * @param group
+ */
+ public void setParent(final PHPUnitTestSuite group) {
+ parent = group;
+ }
+
+ private void addRunCount(final int count) {
+ runCount += count;
+ if (parent != null)
+ ((PHPUnitTestSuite) parent).addRunCount(count);
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestWarning.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestWarning.java
new file mode 100644
index 0000000000..00d9d1fea7
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTestWarning.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+import java.util.Map;
+
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitMessageParser;
+
+/**
+ * Test warning model element implementation.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTestWarning extends AbstractPHPUnitTestEvent {
+
+ private String code = ""; //$NON-NLS-1$
+
+ public PHPUnitTestWarning(final Map, ?> warning, final AbstractPHPUnitElement parent) {
+ super(warning, parent);
+ code = (String) warning.get(PHPUnitMessageParser.PROPERTY_CODE);
+ }
+
+ /**
+ * Returns warning related code.
+ *
+ * @return warning related code
+ */
+ public String getCode() {
+ return code;
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTraceFrame.java b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTraceFrame.java
new file mode 100644
index 0000000000..538d71880c
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/java/org/eclipse/che/plugin/testing/phpunit/server/model/PHPUnitTraceFrame.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.phpunit.server.model;
+
+import java.nio.file.Paths;
+import java.util.Map;
+
+import org.eclipse.che.plugin.testing.phpunit.server.PHPUnitMessageParser;
+
+/**
+ * Trace frame model element implementation.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class PHPUnitTraceFrame extends AbstractPHPUnitElement {
+
+ private String traceFunction = ""; //$NON-NLS-1$
+ private String traceClass = ""; //$NON-NLS-1$
+ private String traceType = PHPUnitMessageParser.CALL_DYNAMIC;
+
+ public PHPUnitTraceFrame(final Map, ?> frame, final AbstractPHPUnitTestEvent parent) {
+ super(frame, parent);
+ traceFunction = (String) frame.get("function"); //$NON-NLS-1$
+ traceClass = (String) frame.get("class"); //$NON-NLS-1$
+ traceType = (String) frame.get("type"); //$NON-NLS-1$
+ }
+
+ /**
+ * Returns trace frame function name.
+ *
+ * @return trace frame function name
+ */
+ public String getFunction() {
+ return traceFunction;
+ }
+
+ /**
+ * Returns trace frame class name.
+ *
+ * @return trace frame class name
+ */
+ public String getClassName() {
+ return traceClass;
+ }
+
+ /**
+ * Returns trace frame type.
+ *
+ * @return trace frame type
+ */
+ public String getTraceType() {
+ return traceType;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuffer result = new StringBuffer(1);
+ if (traceClass != null)
+ result.append(traceClass);
+ if (traceType != null)
+ result.append(traceType);
+ result.append(traceFunction);
+ if (file != null) {
+ String fileName = Paths.get(file).getFileName().toString();
+ result.append('(' + fileName + ':' + line + ')');
+ } else {
+ result.append("()");
+ }
+ return result.toString();
+ }
+
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/resources/phpunit-printer/ZendPHPUnitLogger.php b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/resources/phpunit-printer/ZendPHPUnitLogger.php
new file mode 100644
index 0000000000..a116604458
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/che-plugin-testing-phpunit-server/src/main/resources/phpunit-printer/ZendPHPUnitLogger.php
@@ -0,0 +1,465 @@
+cleanTest();
+
+ $port = $_SERVER['ZEND_PHPUNIT_PORT'];
+ if (! isset($port)) {
+ $port = 7478;
+ }
+ $this->out = fsockopen('127.0.0.1', $port, $errno, $errstr, 5);
+ }
+
+ public function startTestSuite(TestSuite $suite)
+ {
+ $this->writeTest($suite, 'start');
+ }
+
+ public function startTest(Test $test)
+ {
+ $this->cleanTest();
+ $this->writeTest($test, 'start');
+ ZendPHPUnitErrorHandlerTracer::getInstance()->start();
+ }
+
+ public function addError(Test $test, \Exception $e, $time)
+ {
+ $this->status = 'error';
+ $this->exception = $e;
+ }
+
+ public function addWarning(Test $test, Warning $e, $time) {
+ $this->status = 'warning';
+ $this->exception = $e;
+ }
+
+ public function addFailure(Test $test, AssertionFailedError $e, $time)
+ {
+ $this->status = 'fail';
+ $this->exception = $e;
+ }
+
+ public function addIncompleteTest(Test $test, \Exception $e, $time)
+ {
+ $this->status = 'incomplete';
+ $this->exception = $e;
+ }
+
+ public function addSkippedTest(Test $test, \Exception $e, $time)
+ {
+ $this->status = 'skip';
+ $this->exception = $e;
+ }
+
+ public function endTest(Test $test, $time)
+ {
+ $this->warnings = ZendPHPUnitErrorHandlerTracer::getInstance()->stop();
+ $this->time = $time;
+ $this->writeTest($test, $this->status);
+ }
+
+ public function endTestSuite(TestSuite $suite)
+ {
+ $this->writeTest($suite, 'end');
+ }
+
+ public function addRiskyTest(Test $test, \Exception $e, $time)
+ {}
+
+ public function flush()
+ {
+ parent::flush();
+ }
+
+ private function cleanTest()
+ {
+ $this->status = 'pass';
+ $this->exception = null;
+ $this->warnings = array();
+ $this->time = 0;
+ }
+
+ private function writeArray($array)
+ {
+ $result = $this->writeJson($this->encodeJson($array));
+ return $result;
+ }
+
+ private function writeTest(Test $test, $event)
+ {
+ // echo out test output
+ if ($test instanceof TestCase) {
+ $hasPerformed = false;
+ if (method_exists($test, 'hasPerformedExpectationsOnOutput')) {
+ $hasPerformed = $test->hasPerformedExpectationsOnOutput();
+ } else {
+ $hasPerformed = $test->hasExpectationOnOutput();
+ }
+
+ if (! $hasPerformed && $test->getActualOutput() != null) {
+ echo $test->getActualOutput();
+ }
+ }
+ // write log
+ $result = array(
+ 'event' => $event
+ );
+ if ($test instanceof TestSuite) {
+ if (preg_match("*::*", $test->getName()) != 0) { // if it is a dataprovider test suite
+ // $result['target'] = 'testsuite-dataprovider';
+ $result['target'] = 'testsuite';
+ if ($event == 'start')
+ $this->dataProviderNumerator = 0;
+ elseif ($event == 'end')
+ $this->dataProviderNumerator = - 1;
+ } else {
+ $result['target'] = 'testsuite';
+ $this->dataProviderNumerator = - 1;
+ }
+ try {
+ $class = new ReflectionClass($test->getName());
+ $name = $class->getName();
+ $file = $class->getFileName();
+ $line = $class->getStartLine();
+ $result['test'] = array(
+ 'name' => $name,
+ 'tests' => $test->count(),
+ 'file' => $file,
+ 'line' => $line
+ );
+ } catch (ReflectionException $re) {
+ $name = $test->getName();
+ $result['test'] = array(
+ 'name' => $name,
+ 'tests' => $test->count()
+ );
+ }
+ } else { // If we're dealing with TestCase
+ $result['target'] = 'testcase';
+ $result['time'] = $this->time;
+ $class = new ReflectionClass($test);
+ try {
+ $method = $class->getMethod($test->getName());
+ if ($this->dataProviderNumerator < 0) {
+ $method_name = $method->getName();
+ } else {
+ $method_name = $method->getName() . "[" . $this->dataProviderNumerator . "]";
+ if ($event == 'start') {
+ $this->dataProviderNumerator ++;
+ }
+ }
+ $result['test'] = array(
+ 'name' => $method_name,
+ 'file' => $method->getFileName(),
+ 'line' => $method->getStartLine()
+ );
+ } catch (ReflectionException $re) {
+ $result['test'] = array(
+ 'name' => $test->getName()
+ );
+ }
+ }
+ if ($this->exception !== null) {
+ $message = $this->exception->getMessage();
+ $diff = "";
+ if ($this->exception instanceof ExpectationFailedException) {
+ if (method_exists($this->exception, "getDescription")) {
+ $message = $this->exception->getDescription();
+ } else
+ if (method_exists($this->exception, "getMessage")) { // PHPUnit 3.6.3
+ $message = $this->exception->getMessage();
+ }
+ if (method_exists($this->exception, "getComparisonFailure") && method_exists($this->exception->getComparisonFailure(), "getDiff")) {
+ $diff = $this->exception->getComparisonFailure()->getDiff();
+ }
+ }
+ $message = trim(preg_replace('/\s+/m', ' ', $message));
+ $result += array(
+ 'exception' => array(
+ 'message' => $message,
+ 'diff' => $diff,
+ 'class' => get_class($this->exception),
+ 'file' => $this->exception->getFile(),
+ 'line' => $this->exception->getLine(),
+ 'trace' => ZendPHPUnitLogger::filterTrace($this->exception->getTrace())
+ )
+ );
+ if (! isset($result['exception']['file'])) {
+ $result['exception']['filtered'] = true;
+ }
+ }
+ if (! empty($this->warnings)) {
+ $result += array(
+ 'warnings' => $this->warnings
+ );
+ }
+ if (! $this->writeArray($result)) {
+ die();
+ }
+ }
+
+ private function writeJson($buffer)
+ {
+ if ($this->out && ! @feof($this->out)) {
+ return @fwrite($this->out, "$buffer\n");
+ }
+ }
+
+ private function escapeString($string)
+ {
+ return str_replace(array(
+ "\\",
+ "\"",
+ '/',
+ "\b",
+ "\f",
+ "\n",
+ "\r",
+ "\t"
+ ), array(
+ '\\\\',
+ '\"',
+ '\/',
+ '\b',
+ '\f',
+ '\n',
+ '\r',
+ '\t'
+ ), $string);
+ }
+
+ private function encodeJson($array)
+ {
+ $result = '';
+ if (is_scalar($array))
+ $array = array(
+ $array
+ );
+ $first = true;
+ foreach ($array as $key => $value) {
+ if (! $first)
+ $result .= ',';
+ else
+ $first = false;
+ $result .= sprintf('"%s":', $this->escapeString($key));
+ if (is_array($value) || is_object($value))
+ $result .= sprintf('%s', $this->encodeJson($value));
+ else
+ $result .= sprintf('"%s"', $this->escapeString($value));
+ }
+ return '{' . $result . '}';
+ }
+
+ public static function filterTrace($trace)
+ {
+ $filteredTrace = array();
+ foreach ($trace as $frame) {
+ if (! isset($frame['file']))
+ continue;
+ $filteredFrame = array(
+ 'file' => $frame['file'],
+ 'line' => $frame['line'],
+ 'function' => $frame['function']
+ );
+ if (isset($frame['class']))
+ $filteredFrame += array(
+ 'class' => $frame['class'],
+ 'type' => $frame['type']
+ );
+ $filteredTrace[] = $filteredFrame;
+ }
+ return $filteredTrace;
+ }
+}
+
+class ZendPHPUnitErrorHandlerTracer extends ZendPHPUnitErrorHandler
+{
+
+ private static $ZendPHPUnitErrorHandlerTracer;
+
+ /**
+ *
+ * @return ZendPHPUnitErrorHandlerTracer
+ */
+ public static function getInstance()
+ {
+ if (self::$ZendPHPUnitErrorHandlerTracer === null) {
+ self::$ZendPHPUnitErrorHandlerTracer = new self();
+ }
+ return self::$ZendPHPUnitErrorHandlerTracer;
+ }
+
+ public static $errorCodes = array(
+ E_ERROR => 'Error',
+ E_WARNING => 'Warning',
+ E_PARSE => 'Parsing Error',
+ E_NOTICE => 'Notice',
+ E_CORE_ERROR => 'Core Error',
+ E_CORE_WARNING => 'Core Warning',
+ E_COMPILE_ERROR => 'Compile Error',
+ E_COMPILE_WARNING => 'Compile Warning',
+ E_USER_ERROR => 'User Error',
+ E_USER_WARNING => 'User Warning',
+ E_USER_NOTICE => 'User Notice',
+ E_STRICT => 'Runtime Notice',
+ E_RECOVERABLE_ERROR => 'Recoverable Error',
+ E_DEPRECATED => 'Deprecated',
+ E_USER_DEPRECATED => 'User Deprecated'
+ );
+
+ protected $warnings;
+
+ public function handle($errno, $errstr, $errfile, $errline)
+ {
+ parent::handle($errno, $errstr, $errfile, $errline);
+ $warning = array(
+ 'code' => isset(self::$errorCodes[$errno]) ? self::$errorCodes[$errno] : $errno,
+ 'message' => $errstr,
+ 'file' => $errfile,
+ 'line' => $errline,
+ 'trace' => ZendPHPUnitLogger::filterTrace(debug_backtrace()),
+ 'time' => PHP_Timer::resourceUsage()
+ );
+ $return = false;
+ switch ($errno) { // ignoring user abort
+ case E_USER_ERROR:
+ case E_RECOVERABLE_ERROR:
+ throw new ZendPHPUnitUserErrorException($warning['message'], $errno);
+ }
+ $this->warnings[] = $warning;
+ return $return;
+ }
+
+ public function start()
+ {
+ $this->warnings = array();
+ parent::start();
+ }
+
+ public function stop()
+ {
+ parent::stop();
+ $return = $this->warnings;
+ $this->warnings = array();
+ return $return;
+ }
+}
+
+class ZendPHPUnitErrorHandler
+{
+
+ private static $ZendPHPUnitErrorHandler;
+
+ /**
+ *
+ * @return ZendPHPUnitErrorHandler
+ */
+ public static function getInstance()
+ {
+ if (self::$ZendPHPUnitErrorHandler === null) {
+ self::$ZendPHPUnitErrorHandler = new self();
+ }
+ return self::$ZendPHPUnitErrorHandler;
+ }
+
+ public function handle($errno, $errstr, $errfile, $errline)
+ {
+ if (error_reporting() === 0) {
+ return false;
+ }
+
+ if ($errfile === __FILE__ || (stripos($errfile, dirname(dirname(__FILE__))) === 0 && $errno !== E_USER_NOTICE))
+ return true;
+
+ // handle errors same as PHPUnit_Util_ErrorHandler
+ if ($errno == E_STRICT) {
+ if (PHPUnit_Framework_Error_Notice::$enabled !== TRUE) {
+ return FALSE;
+ }
+
+ $exception = 'PHPUnit_Framework_Error_Notice';
+ }
+
+ else
+ if ($errno == E_WARNING) {
+ if (PHPUnit_Framework_Error_Warning::$enabled !== TRUE) {
+ return FALSE;
+ }
+
+ $exception = 'PHPUnit_Framework_Error_Warning';
+ }
+
+ else
+ if ($errno == E_NOTICE) {
+ trigger_error($errstr, E_USER_NOTICE);
+ return FALSE;
+ }
+
+ else {
+ $exception = 'PHPUnit_Framework_Error';
+ }
+
+ throw new $exception($errstr, $errno, $errfile, $errline, $trace = null);
+ }
+
+ public function start()
+ {
+ set_error_handler(array(
+ &$this,
+ 'handle'
+ ));
+ }
+
+ public function stop()
+ {
+ restore_error_handler();
+ }
+}
+
+class ZendPHPUnitUserErrorException extends Exception
+{
+}
diff --git a/plugins/plugin-testing-php/plugin-testing-phpunit/pom.xml b/plugins/plugin-testing-php/plugin-testing-phpunit/pom.xml
new file mode 100644
index 0000000000..8a0b322a2d
--- /dev/null
+++ b/plugins/plugin-testing-php/plugin-testing-phpunit/pom.xml
@@ -0,0 +1,39 @@
+
+
+
+ 4.0.0
+
+ che-plugin-testing-php-parent
+ org.eclipse.che.plugin
+ 5.15.0-SNAPSHOT
+
+ che-plugin-testing-phpunit
+ pom
+ Che Plugin :: PHP Testing :: PHPUnit Parent
+
+ che-plugin-testing-phpunit-ide
+ che-plugin-testing-phpunit-server
+
+
+
+
+
+ org.eclipse.che.core
+ che-core-api-dto-maven-plugin
+ ${project.version}
+
+
+
+
+
diff --git a/plugins/plugin-testing-php/pom.xml b/plugins/plugin-testing-php/pom.xml
new file mode 100644
index 0000000000..1308e1389c
--- /dev/null
+++ b/plugins/plugin-testing-php/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ che-plugin-parent
+ org.eclipse.che.plugin
+ 5.15.0-SNAPSHOT
+
+ che-plugin-testing-php-parent
+ pom
+ Che Plugin :: PHP Testing :: PHP Testing Parent
+
+ plugin-testing-phpunit
+
+
+
+
+
+ com.mycila
+ license-maven-plugin
+
+ true
+
+
+
+ org.eclipse.che.core
+ che-core-api-dto-maven-plugin
+ ${project.version}
+
+
+
+
+
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/pom.xml b/plugins/plugin-testing/che-plugin-testing-ide/pom.xml
index 3a2dd77a40..4d734c0def 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/pom.xml
+++ b/plugins/plugin-testing/che-plugin-testing-ide/pom.xml
@@ -16,7 +16,7 @@
che-plugin-testing-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-ideChe Plugin :: Testing :: IDE
@@ -141,14 +141,7 @@
com.mycilalicense-maven-plugin
-
- **/**/TestingHandler.java
- **/**/ExecutorPromiseMocker.java
- **/**/PromiseMocker.java
- **/**/FunctionAnswer.java
- **/**/MockitoPrinter.java
- **/**/TestServiceClientTest.java
-
+ true
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestActionRunner.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestActionRunner.java
new file mode 100644
index 0000000000..68f2f692eb
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestActionRunner.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.ide;
+
+import static org.eclipse.che.ide.api.notification.StatusNotification.DisplayMode.FLOAT_MODE;
+import static org.eclipse.che.ide.api.notification.StatusNotification.Status.FAIL;
+import static org.eclipse.che.ide.api.notification.StatusNotification.Status.PROGRESS;
+import static org.eclipse.che.ide.api.notification.StatusNotification.Status.SUCCESS;
+
+import java.util.Map;
+
+import org.eclipse.che.api.promises.client.Operation;
+import org.eclipse.che.api.promises.client.OperationException;
+import org.eclipse.che.api.promises.client.Promise;
+import org.eclipse.che.api.promises.client.PromiseError;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
+import org.eclipse.che.ide.api.notification.NotificationManager;
+import org.eclipse.che.ide.api.notification.StatusNotification;
+import org.eclipse.che.plugin.testing.ide.view.TestResultPresenter;
+
+import com.google.inject.Inject;
+
+/**
+ * Test action runner.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class TestActionRunner {
+
+ private final TestServiceClient service;
+ private final NotificationManager notificationManager;
+ private final TestResultPresenter presenter;
+
+ @Inject
+ public TestActionRunner(TestServiceClient service,
+ NotificationManager notificationManager,
+ TestResultPresenter presenter) {
+ this.service = service;
+ this.notificationManager = notificationManager;
+ this.presenter = presenter;
+ }
+
+ public void run(String testFramework, String projectPath, Map parameters) {
+ presenter.clear();
+ final StatusNotification notification = new StatusNotification("Running Tests...", PROGRESS, FLOAT_MODE);
+ notificationManager.notify(notification);
+ Promise testResultPromise = service.runTests(testFramework, projectPath, parameters);
+ testResultPromise.then(new Operation() {
+ @Override
+ public void apply(TestResultRootDto result) throws OperationException {
+ if (result.isEmpty()) {
+ notification.setStatus(FAIL);
+ notification.setTitle("No tests could be found");
+ return;
+ }
+ notification.setStatus(SUCCESS);
+ switch (result.getStatus()) {
+ case SUCCESS: {
+ notification.setTitle("Test runner executed successfully");
+ notification.setContent("All tests passed.");
+ break;
+ }
+ case FAILURE: {
+ notification.setTitle("Test runner executed successfully with test failures");
+ notification.setContent("Some test(s) failed.");
+ break;
+ }
+ case ERROR: {
+ notification.setTitle("Test runner executed successfully with test errors");
+ notification.setContent("Some test(s) failed with errors.");
+ break;
+ }
+ case WARNING: {
+ notification.setTitle("Test runner executed successfully with test warnings");
+ notification.setContent("Some test(s) passed with warnings.");
+ break;
+ }
+ case SKIPPED: {
+ notification.setTitle("Test runner executed successfully with some tests skipped");
+ notification.setContent("Some test(s) were skipped.");
+ break;
+ }
+ }
+ presenter.handleResponse(result);
+ }
+ }).catchError(new Operation() {
+ @Override
+ public void apply(PromiseError exception) throws OperationException {
+ notification.setTitle("Failed to execute test runner");
+ notification.setContent("Please see dev-machine log for more details.");
+ notification.setStatus(FAIL);
+ }
+ });
+ }
+
+}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestResources.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestResources.java
index 629b3d5e26..0dda1ea2ea 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestResources.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestResources.java
@@ -18,19 +18,21 @@ import com.google.gwt.resources.client.ClientBundle;
* Resources for test extension.
*
* @author Mirage Abeysekara
- *
*/
public interface TestResources extends ClientBundle {
-
+
@Source("org/eclipse/che/plugin/testing/ide/svg/test.svg")
+ @Deprecated
SVGResource testIcon();
@Source("org/eclipse/che/plugin/testing/ide/svg/test_results_pass.svg")
+ @Deprecated
SVGResource testResultsPass();
@Source("org/eclipse/che/plugin/testing/ide/svg/test_results_fail.svg")
+ @Deprecated
SVGResource testResultsFail();
-
+
@Source("org/eclipse/che/plugin/testing/ide/svg/test_method_fail.svg")
SVGResource testMethodFail();
@@ -42,4 +44,19 @@ public interface TestResources extends ClientBundle {
@Source("org/eclipse/che/plugin/testing/ide/svg/show_failures_only_icon.svg")
SVGResource showFailuresOnlyButtonIcon();
+
+ @Source("org/eclipse/che/plugin/testing/ide/svg/test_result_failure.svg")
+ SVGResource testResultFailureIcon();
+
+ @Source("org/eclipse/che/plugin/testing/ide/svg/test_result_success.svg")
+ SVGResource testResultSuccessIcon();
+
+ @Source("org/eclipse/che/plugin/testing/ide/svg/test_result_warning.svg")
+ SVGResource testResultWarningIcon();
+
+ @Source("org/eclipse/che/plugin/testing/ide/svg/test_result_skipped.svg")
+ SVGResource testResultSkippedIcon();
+
+ @Source("org/eclipse/che/plugin/testing/ide/svg/test_result_trace_frame.svg")
+ SVGResource testResultTraceFrameIcon();
}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestServiceClient.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestServiceClient.java
index 4acdf7d01b..01aefdaae9 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestServiceClient.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/TestServiceClient.java
@@ -27,6 +27,8 @@ import org.eclipse.che.api.promises.client.js.JsPromiseError;
import org.eclipse.che.api.promises.client.js.RejectFunction;
import org.eclipse.che.api.promises.client.js.ResolveFunction;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
import org.eclipse.che.ide.MimeType;
import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.ide.api.command.CommandImpl;
@@ -110,7 +112,6 @@ public class TestServiceClient {
this.processesPanelPresenter = processesPanelPresenter;
this.testGoal = testGoal;
}
-
public Promise getOrCreateTestCompileCommand() {
List commands = commandManager.getCommands();
@@ -132,6 +133,7 @@ public class TestServiceClient {
return promiseProvider.resolve(null);
}
+ @Deprecated
public Promise getTestResult(String projectPath, String testFramework, Map parameters) {
return getTestResult(projectPath, testFramework, parameters, null);
}
@@ -255,4 +257,32 @@ public class TestServiceClient {
.send(dtoUnmarshallerFactory.newUnmarshaller(TestResult.class));
}
+ public Promise runTests(String testFramework, String projectPath, Map parameters) {
+ StringBuilder sb = new StringBuilder();
+ if (parameters != null) {
+ for (Map.Entry e : parameters.entrySet()) {
+ if (sb.length() > 0) {
+ sb.append('&');
+ }
+ sb.append(URL.encode(e.getKey())).append('=').append(URL.encode(e.getValue()));
+ }
+ }
+ String url = appContext.getDevMachine().getWsAgentBaseUrl() + "/che/testing/runtests/?testFramework=" + testFramework
+ + "&projectPath=" + projectPath + "&" + sb.toString();
+ return asyncRequestFactory.createGetRequest(url).header(HTTPHeader.ACCEPT, MimeType.APPLICATION_JSON)
+ .send(dtoUnmarshallerFactory.newUnmarshaller(TestResultRootDto.class));
+ }
+
+ public Promise> getTestResults(String testFramework, List testResultsPath) {
+ StringBuilder params = new StringBuilder();
+ for (int i = 0; i < testResultsPath.size(); i++) {
+ params.append("&path" + i + '=');
+ params.append(testResultsPath.get(i));
+ }
+ String url = appContext.getDevMachine().getWsAgentBaseUrl() + "/che/testing/gettestresults/?testFramework="
+ + testFramework + params.toString();
+ return asyncRequestFactory.createGetRequest(url).header(HTTPHeader.ACCEPT, MimeType.APPLICATION_JSON)
+ .send(dtoUnmarshallerFactory.newListUnmarshaller(TestResultDto.class));
+ }
+
}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/inject/TestingGinModule.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/inject/TestingGinModule.java
index d8ee0e3946..d24a150526 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/inject/TestingGinModule.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/inject/TestingGinModule.java
@@ -10,13 +10,13 @@
*******************************************************************************/
package org.eclipse.che.plugin.testing.ide.inject;
-import com.google.gwt.inject.client.AbstractGinModule;
-import com.google.gwt.inject.client.assistedinject.GinFactoryModuleBuilder;
-
import org.eclipse.che.ide.api.extension.ExtensionGinModule;
import org.eclipse.che.plugin.testing.ide.view.TestResultView;
import org.eclipse.che.plugin.testing.ide.view.TestResultViewImpl;
import org.eclipse.che.plugin.testing.ide.view.navigation.factory.TestResultNodeFactory;
+
+import com.google.gwt.inject.client.AbstractGinModule;
+import com.google.gwt.inject.client.assistedinject.GinFactoryModuleBuilder;
/**
* Gin Module for test runner extension.
*
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultPresenter.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultPresenter.java
index 9f8b925aab..ae32193f4a 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultPresenter.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultPresenter.java
@@ -11,6 +11,7 @@
package org.eclipse.che.plugin.testing.ide.view;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
import org.eclipse.che.ide.api.parts.PartStackType;
import org.eclipse.che.ide.api.parts.WorkspaceAgent;
import org.eclipse.che.ide.api.parts.base.BasePresenter;
@@ -36,10 +37,8 @@ public class TestResultPresenter extends BasePresenter implements TestResultView
private final TestResultView view;
@Inject
- public TestResultPresenter(WorkspaceAgent workspaceAgent,
- TestLocalizationConstant localizationConstant,
- TestResources resources,
- TestResultView view) {
+ public TestResultPresenter(WorkspaceAgent workspaceAgent, TestLocalizationConstant localizationConstant,
+ TestResources resources, TestResultView view) {
this.workspaceAgent = workspaceAgent;
this.localizationConstant = localizationConstant;
this.resources = resources;
@@ -78,9 +77,26 @@ public class TestResultPresenter extends BasePresenter implements TestResultView
* @param response
* result of the test runner
*/
+ @Deprecated
public void handleResponse(TestResult response) {
workspaceAgent.openPart(this, PartStackType.INFORMATION);
workspaceAgent.setActivePart(this);
view.showResults(response);
}
+
+ /**
+ * Activates test results part and shows the results.
+ *
+ * @param response
+ * result root of the test runner
+ */
+ public void handleResponse(TestResultRootDto response) {
+ workspaceAgent.openPart(this, PartStackType.INFORMATION);
+ workspaceAgent.setActivePart(this);
+ view.showResults(response);
+ }
+
+ public void clear() {
+ view.clear();
+ }
}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultView.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultView.java
index 4f428f5c7e..63f89d183f 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultView.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultView.java
@@ -11,6 +11,7 @@
package org.eclipse.che.plugin.testing.ide.view;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
import org.eclipse.che.ide.api.mvp.View;
import org.eclipse.che.ide.api.parts.base.BaseActionDelegate;
@@ -20,6 +21,7 @@ import org.eclipse.che.ide.api.parts.base.BaseActionDelegate;
* @author Mirage Abeysekara
*/
public interface TestResultView extends View {
+
/**
* Sets whether this panel is visible.
*
@@ -34,7 +36,21 @@ public interface TestResultView extends View {
* @param result
* test results which comes from the server
*/
+ @Deprecated
void showResults(TestResult result);
+
+ /**
+ * Activate Test results part.
+ *
+ * @param result
+ * test results which comes from the server
+ */
+ void showResults(TestResultRootDto result);
+
+ /**
+ * Clears the result view.
+ */
+ void clear();
interface ActionDelegate extends BaseActionDelegate {
}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultViewImpl.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultViewImpl.java
index 2c00c1f07c..a65ae6fbc8 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultViewImpl.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/TestResultViewImpl.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.che.plugin.testing.ide.view;
+import static org.eclipse.che.ide.ui.smartTree.SelectionModel.Mode.SINGLE;
import static org.eclipse.che.plugin.maven.shared.MavenAttributes.DEFAULT_TEST_SOURCE_FOLDER;
import java.util.ArrayList;
@@ -20,20 +21,6 @@ import java.util.List;
import java.util.Map;
import javax.validation.constraints.NotNull;
-import com.google.common.base.Optional;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.Style;
-import com.google.gwt.event.logical.shared.SelectionEvent;
-import com.google.gwt.event.logical.shared.SelectionHandler;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.Timer;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.SplitLayoutPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
import org.eclipse.che.api.promises.client.Operation;
import org.eclipse.che.api.promises.client.OperationException;
@@ -41,6 +28,9 @@ import org.eclipse.che.api.promises.client.Promise;
import org.eclipse.che.api.promises.client.PromiseError;
import org.eclipse.che.api.testing.shared.TestCase;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceFrameDto;
import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.ide.api.data.tree.Node;
import org.eclipse.che.ide.api.data.tree.NodeInterceptor;
@@ -62,12 +52,32 @@ import org.eclipse.che.ide.ui.smartTree.NodeStorage;
import org.eclipse.che.ide.ui.smartTree.NodeUniqueKeyProvider;
import org.eclipse.che.ide.ui.smartTree.Tree;
import org.eclipse.che.ide.util.loging.Log;
-import org.eclipse.che.plugin.testing.ide.TestResources;
import org.eclipse.che.plugin.testing.ide.view.navigation.TestClassNavigation;
import org.eclipse.che.plugin.testing.ide.view.navigation.factory.TestResultNodeFactory;
+import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.AbstractTestResultTreeNode;
import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultClassNode;
import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultGroupNode;
import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultMethodNode;
+import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultRootNode;
+import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultTraceFrameNode;
+
+import com.google.common.base.Optional;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.logical.shared.SelectionEvent;
+import com.google.gwt.event.logical.shared.SelectionHandler;
+import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.ui.DockLayoutPanel;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.SplitLayoutPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.web.bindery.event.shared.EventBus;
/**
* Implementation for TestResult view. Uses tree for presenting test results.
@@ -76,46 +86,56 @@ import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultMethod
*/
@Singleton
public class TestResultViewImpl extends BaseView
- implements TestResultView, TestClassNavigation {
+ implements TestResultView, TestClassNavigation {
interface TestResultViewImplUiBinder extends UiBinder {
}
- private static final TestResultViewImplUiBinder UI_BINDER = GWT.create(TestResultViewImplUiBinder.class);
+ interface Styles extends CssResource {
- private final JavaNavigationService javaNavigationService;
- private final AppContext appContext;
- private final EditorAgent editorAgent;
- private final TestResultNodeFactory nodeFactory;
- private TestResult lastTestResult;
- private Tree resultTree;
- private int lastWentLine = 0;
- private boolean showFailuresOnly = false;
+ String traceOutputMessage();
+
+ String traceOutputStack();
+
+ }
+
+ private static final TestResultViewImplUiBinder UI_BINDER = GWT.create(TestResultViewImplUiBinder.class);
+
+ private final JavaNavigationService javaNavigationService;
+ private final AppContext appContext;
+ private final EditorAgent editorAgent;
+ private final EventBus eventBus;
+ private final TestResultNodeFactory nodeFactory;
+ private TestResult lastTestResult;
+ private int lastWentLine = 0;
+ private boolean showFailuresOnly = false;
@UiField(provided = true)
- SplitLayoutPanel splitLayoutPanel;
+ SplitLayoutPanel splitLayoutPanel;
@UiField
- Label outputResult;
+ Styles style;
@UiField
- FlowPanel navigationPanel;
+ DockLayoutPanel navigationPanel;
+
+ @UiField
+ FlowPanel traceOutputPanel;
@Inject
- public TestResultViewImpl(TestResources testResources,
- PartStackUIResources resources,
- JavaNavigationService javaNavigationService,
- EditorAgent editorAgent,
- AppContext appContext,
- TestResultNodeFactory nodeFactory) {
+ public TestResultViewImpl(PartStackUIResources resources, JavaNavigationService javaNavigationService,
+ EditorAgent editorAgent, AppContext appContext, EventBus eventBus, TestResultNodeFactory nodeFactory) {
super(resources);
this.javaNavigationService = javaNavigationService;
this.editorAgent = editorAgent;
this.appContext = appContext;
+ this.eventBus = eventBus;
this.nodeFactory = nodeFactory;
splitLayoutPanel = new SplitLayoutPanel(1);
setContentWidget(UI_BINDER.createAndBindUi(this));
+ }
+ private Tree createTree() {
NodeUniqueKeyProvider idProvider = new NodeUniqueKeyProvider() {
@NotNull
@Override
@@ -125,47 +145,53 @@ public class TestResultViewImpl extends BaseView
};
NodeStorage nodeStorage = new NodeStorage(idProvider);
NodeLoader nodeLoader = new NodeLoader(Collections. emptySet());
- resultTree = new Tree(nodeStorage, nodeLoader);
- resultTree.getSelectionModel().addSelectionHandler(new SelectionHandler() {
- @Override
- public void onSelection(SelectionEvent event) {
- Node methodNode = event.getSelectedItem();
- if (methodNode instanceof TestResultMethodNode) {
- outputResult.setText(((TestResultMethodNode)methodNode).getStackTrace());
- }
- }
- });
- resultTree.getElement().getStyle().setWidth(100, Style.Unit.PCT);
- resultTree.getElement().getStyle().setHeight(100, Style.Unit.PCT);
- navigationPanel.add(resultTree);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void focusView() {
+ Tree tree = new Tree(nodeStorage, nodeLoader);
+ tree.getSelectionModel().setSelectionMode(SINGLE);
+ return tree;
}
/**
* {@inheritDoc}
*/
@Override
+ @Deprecated
public void showResults(TestResult result) {
- this.lastTestResult = result;
+ clear();
+ lastTestResult = result;
setTitle("Test Results (Framework: " + result.getTestFramework() + ")");
- buildTree();
+ fillNavigationPanel(result);
focusView();
}
- private void buildTree() {
- resultTree.getNodeStorage().clear();
- outputResult.setText("");
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void showResults(TestResultRootDto result) {
+ setTitle("Test Results (Framework: " + result.getTestFrameworkName() + ")");
+ fillNavigationPanel(result);
+ focusView();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void clear() {
+ setTitle("");
+ navigationPanel.clear();
+ traceOutputPanel.clear();
+ }
+
+ @Deprecated
+ private void fillNavigationPanel(final TestResult result) {
+ Tree resultTree = buildResultTree(result);
TestResultGroupNode root = nodeFactory.getTestResultGroupNode(lastTestResult, showFailuresOnly, new Runnable() {
@Override
public void run() {
showFailuresOnly = !showFailuresOnly;
- buildTree();
+ clear();
+ fillNavigationPanel(result);
}
});
HashMap> classNodeHashMap = new LinkedHashMap<>();
@@ -178,8 +204,8 @@ public class TestResultViewImpl extends BaseView
classNodeHashMap.put(testCase.getClassName(), methodNodes);
}
classNodeHashMap.get(testCase.getClassName())
- .add(nodeFactory.getTestResultMethodNodeNode(!testCase.isFailed(), testCase.getMethod(), testCase.getTrace(),
- testCase.getMessage(), testCase.getFailingLine(), this));
+ .add(nodeFactory.getTestResultMethodNodeNode(!testCase.isFailed(), testCase.getMethod(),
+ testCase.getTrace(), testCase.getMessage(), testCase.getFailingLine(), this));
}
List classNodes = new ArrayList<>();
for (Map.Entry> entry : classNodeHashMap.entrySet()) {
@@ -188,11 +214,84 @@ public class TestResultViewImpl extends BaseView
classNodes.add(classNode);
}
root.setChildren(classNodes);
+ navigationPanel.add(resultTree);
resultTree.getNodeStorage().add(root);
resultTree.expandAll();
}
+ private void fillNavigationPanel(TestResultRootDto result) {
+ Tree resultTree = buildResultTree(result);
+ TestResultRootNode root = nodeFactory.createTestResultRootNode(result, result.getTestFrameworkName());
+ resultTree.getNodeStorage().add(root);
+ navigationPanel.add(resultTree);
+ }
+
+ @Deprecated
+ private Tree buildResultTree(TestResult result) {
+ Tree resultTree = createTree();
+ resultTree.getSelectionModel().addSelectionHandler(new SelectionHandler() {
+ @Override
+ public void onSelection(SelectionEvent event) {
+ Node selectedNode = event.getSelectedItem();
+ if (selectedNode instanceof TestResultMethodNode) {
+ fillOutputPanel(((TestResultMethodNode) selectedNode).getStackTrace());
+ }
+ }
+ });
+ return resultTree;
+ }
+
+ private Tree buildResultTree(TestResultRootDto result) {
+ Tree resultTree = createTree();
+ resultTree.getSelectionModel().addSelectionHandler(new SelectionHandler() {
+ @Override
+ public void onSelection(SelectionEvent event) {
+ Node selectedNode = event.getSelectedItem();
+ if (selectedNode instanceof AbstractTestResultTreeNode) {
+ fillOutputPanel((AbstractTestResultTreeNode) selectedNode);
+ }
+ }
+ });
+ return resultTree;
+ }
+
+ @Deprecated
+ private void fillOutputPanel(String text) {
+ traceOutputPanel.clear();
+ Label traceMessageLabel = new Label(text);
+ traceMessageLabel.setStyleName(style.traceOutputMessage());
+ traceOutputPanel.add(traceMessageLabel);
+ }
+
+ private void fillOutputPanel(AbstractTestResultTreeNode node) {
+ traceOutputPanel.clear();
+ TestResultTraceDto testTrace = node.getTestTrace();
+ if (testTrace == null)
+ return;
+ Label traceOutputMessage = new Label(testTrace.getMessage());
+ traceOutputMessage.setStyleName(style.traceOutputMessage());
+ traceOutputMessage.setWordWrap(true);
+ traceOutputPanel.add(traceOutputMessage);
+ Tree traceTree = buildTraceTree(testTrace);
+ DockLayoutPanel traceOutputStack = new DockLayoutPanel(Unit.PX);
+ traceOutputStack.setStyleName(style.traceOutputStack());
+ traceOutputStack.add(traceTree);
+ traceOutputPanel.add(traceOutputStack);
+ }
+
+ private Tree buildTraceTree(TestResultTraceDto trace) {
+ Tree traceTree = createTree();
+ List traceNodes = new ArrayList<>();
+ for (TestResultTraceFrameDto traceFrame : trace.getTraceFrames()) {
+ TestResultTraceFrameNode traceNode = nodeFactory.createTestResultTraceFrameNode(traceFrame);
+ traceNodes.add(traceNode);
+ }
+ traceTree.getNodeStorage().add(traceNodes);
+ return traceTree;
+ }
+
@Override
+ @Deprecated
public void gotoClass(final String packagePath, String className, String methodName, int line) {
if (lastTestResult == null) {
return;
@@ -214,13 +313,10 @@ public class TestResultViewImpl extends BaseView
@Override
public void run() {
EditorPartPresenter editorPart = editorAgent.getActiveEditor();
- final Document doc = ((TextEditor)editorPart).getDocument();
- if (line == -1 &&
- className != null &&
- methodName != null) {
- Promise cuPromise =
- javaNavigationService.getCompilationUnit(file.getProject().getLocation(),
- className, true);
+ final Document doc = ((TextEditor) editorPart).getDocument();
+ if (line == -1 && className != null && methodName != null) {
+ Promise cuPromise = javaNavigationService
+ .getCompilationUnit(file.getProject().getLocation(), className, true);
cuPromise.then(new Operation() {
@Override
public void apply(CompilationUnit cu) throws OperationException {
@@ -230,8 +326,10 @@ public class TestResultViewImpl extends BaseView
if (methodName.equals(m.getElementName())) {
Region methodRegion = m.getFileRegion();
if (methodRegion != null) {
- lastWentLine = doc.getLineAtOffset(methodRegion.getOffset());
- doc.setCursorPosition(new TextPosition(lastWentLine - 1, 0));
+ lastWentLine = doc
+ .getLineAtOffset(methodRegion.getOffset());
+ doc.setCursorPosition(
+ new TextPosition(lastWentLine - 1, 0));
}
}
}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/SimpleLocationHandler.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/SimpleLocationHandler.java
new file mode 100644
index 0000000000..5446968d22
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/SimpleLocationHandler.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.ide.view.navigation;
+
+import org.eclipse.che.api.promises.client.Operation;
+import org.eclipse.che.api.promises.client.OperationException;
+import org.eclipse.che.api.promises.client.PromiseError;
+import org.eclipse.che.api.testing.shared.dto.SimpleLocationDto;
+import org.eclipse.che.ide.api.app.AppContext;
+import org.eclipse.che.ide.api.editor.EditorAgent;
+import org.eclipse.che.ide.api.editor.EditorPartPresenter;
+import org.eclipse.che.ide.api.editor.document.Document;
+import org.eclipse.che.ide.api.editor.text.TextPosition;
+import org.eclipse.che.ide.api.editor.texteditor.TextEditor;
+import org.eclipse.che.ide.api.resources.File;
+import org.eclipse.che.ide.api.resources.VirtualFile;
+
+import com.google.common.base.Optional;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.inject.Inject;
+
+/**
+ * Simple location DTO handler. It is responsible for opening the provided location.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class SimpleLocationHandler {
+
+ private static final String PROJECTS_ROOT = "/projects";
+
+ private final EditorAgent editorAgent;
+ private final AppContext appContext;
+
+ @Inject
+ public SimpleLocationHandler(EditorAgent editorAgent, AppContext appContext) {
+ this.editorAgent = editorAgent;
+ this.appContext = appContext;
+ }
+
+ /**
+ * Tries to open provided location.
+ *
+ * @param location
+ */
+ public void openFile(final SimpleLocationDto location) {
+ openFile(location, null);
+ }
+
+ /**
+ * Tries to open provided location. Supports callback if there is a need.
+ *
+ * @param location
+ * @param callback
+ */
+ public void openFile(final SimpleLocationDto location, final AsyncCallback callback) {
+ tryFindFileInWorkspace(location, new AsyncCallback() {
+ @Override
+ public void onSuccess(VirtualFile virtualFile) {
+ if (callback != null)
+ callback.onSuccess(virtualFile);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (callback != null)
+ callback.onFailure(caught);
+ }
+ });
+ }
+
+ private void tryFindFileInWorkspace(final SimpleLocationDto location, final AsyncCallback callback) {
+ if (location == null) {
+ return;
+ }
+ String resourcePath = location.getResourcePath();
+ if (resourcePath == null || resourcePath.isEmpty()) {
+ return;
+ }
+ if (resourcePath.startsWith(PROJECTS_ROOT))
+ resourcePath = resourcePath.substring(PROJECTS_ROOT.length() + 1);
+ try {
+ appContext.getWorkspaceRoot().getFile(resourcePath).then(new Operation>() {
+ @Override
+ public void apply(Optional file) throws OperationException {
+ if (file.isPresent()) {
+ openFileAndScrollToLine(file.get(), location.getLineNumber(), callback);
+ } else {
+ callback.onFailure(new IllegalArgumentException(location.getResourcePath() + " not found."));
+ }
+ }
+ }).catchError(new Operation() {
+ @Override
+ public void apply(PromiseError arg) throws OperationException {
+ callback.onFailure(new IllegalArgumentException(location.getResourcePath() + " not found."));
+ }
+ });
+ } catch (IllegalStateException ignored) {
+ callback.onFailure(new IllegalArgumentException(location.getResourcePath() + " not found."));
+ }
+ }
+
+ private void openFileAndScrollToLine(final VirtualFile virtualFile,
+ final int scrollToLine,
+ final AsyncCallback callback) {
+ editorAgent.openEditor(virtualFile, new EditorAgent.OpenEditorCallback() {
+ @Override
+ public void onEditorOpened(EditorPartPresenter editor) {
+ new Timer() {
+ @Override
+ public void run() {
+ scrollToLine(editorAgent.getActiveEditor(), scrollToLine);
+ callback.onSuccess(virtualFile);
+ }
+ }.schedule(300);
+ }
+
+ @Override
+ public void onEditorActivated(EditorPartPresenter editor) {
+ new Timer() {
+ @Override
+ public void run() {
+ scrollToLine(editorAgent.getActiveEditor(), scrollToLine);
+ callback.onSuccess(virtualFile);
+ }
+ }.schedule(300);
+ }
+
+ @Override
+ public void onInitializationFailed() {
+ callback.onFailure(new IllegalStateException("Initialization " + virtualFile.getName()
+ + " in the editor failed"));
+ }
+ });
+ }
+
+ private void scrollToLine(EditorPartPresenter editor, int lineNumber) {
+ if (editor instanceof TextEditor) {
+ TextEditor textEditor = (TextEditor) editor;
+ Document document = textEditor.getDocument();
+ if (document != null) {
+ TextPosition newPosition = new TextPosition(lineNumber, 0);
+ document.setCursorPosition(newPosition);
+ }
+ }
+ }
+}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/TestClassNavigation.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/TestClassNavigation.java
index 23180e22d1..8e47fdffb2 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/TestClassNavigation.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/TestClassNavigation.java
@@ -14,6 +14,7 @@ package org.eclipse.che.plugin.testing.ide.view.navigation;
* Enables navigation to the failed test class.
* @author Mirage Abeysekara
*/
+@Deprecated
public interface TestClassNavigation {
/**
@@ -22,5 +23,6 @@ public interface TestClassNavigation {
* @param packagePath
* @param line
*/
+ @Deprecated
void gotoClass(String packagePath, String className, String methodName, int line);
}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/factory/TestResultNodeFactory.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/factory/TestResultNodeFactory.java
index 55173d2b8d..035d619792 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/factory/TestResultNodeFactory.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/factory/TestResultNodeFactory.java
@@ -11,10 +11,16 @@
package org.eclipse.che.plugin.testing.ide.view.navigation.factory;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceFrameDto;
import org.eclipse.che.plugin.testing.ide.view.navigation.TestClassNavigation;
import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultClassNode;
import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultGroupNode;
import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultMethodNode;
+import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultNode;
+import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultRootNode;
+import org.eclipse.che.plugin.testing.ide.view.navigation.nodes.TestResultTraceFrameNode;
import com.google.inject.assistedinject.Assisted;
@@ -25,16 +31,28 @@ import com.google.inject.assistedinject.Assisted;
*/
public interface TestResultNodeFactory {
+ TestResultRootNode createTestResultRootNode(TestResultRootDto testResultRootDto,
+ String frameworkName);
+
+ TestResultNode createTestResultEntryNode(TestResultDto testResultDto,
+ String frameworkName);
+
+ TestResultTraceFrameNode createTestResultTraceFrameNode(TestResultTraceFrameDto testResultTraceFrameDto);
+
+ @Deprecated
TestResultGroupNode getTestResultGroupNode(TestResult result,
boolean showFailuresOnly,
Runnable showOnlyFailuresDelegate);
+ @Deprecated
TestResultClassNode getTestResultClassNodeNode(String className);
+ @Deprecated
TestResultMethodNode getTestResultMethodNodeNode(boolean success,
@Assisted("methodName") String methodName,
- @Assisted("stackTrace") String stackTrace,
- @Assisted("message") String message,
+ @Assisted("stackTrace") String stackTrace,
+ @Assisted("message") String message,
int lineNumber,
TestClassNavigation navigationHandler);
+
}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/AbstractTestResultTreeNode.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/AbstractTestResultTreeNode.java
new file mode 100644
index 0000000000..dcd0615e7f
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/AbstractTestResultTreeNode.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.ide.view.navigation.nodes;
+
+import static org.eclipse.che.ide.api.theme.Style.getEditorInfoTextColor;
+
+import javax.validation.constraints.NotNull;
+
+import org.eclipse.che.api.testing.shared.common.TestResultStatus;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceDto;
+import org.eclipse.che.ide.api.data.tree.AbstractTreeNode;
+import org.eclipse.che.ide.ui.smartTree.presentation.HasPresentation;
+import org.eclipse.che.ide.ui.smartTree.presentation.NodePresentation;
+import org.eclipse.che.plugin.testing.ide.TestResources;
+import org.eclipse.che.plugin.testing.ide.TestServiceClient;
+import org.eclipse.che.plugin.testing.ide.view.navigation.factory.TestResultNodeFactory;
+
+/**
+ * Abstract implementation of test result tree node.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public abstract class AbstractTestResultTreeNode extends AbstractTreeNode implements HasPresentation {
+
+ protected final TestResources testResources;
+ protected final TestResultNodeFactory nodeFactory;
+ protected final TestServiceClient testServiceClient;
+ protected final String frameworkName;
+ private NodePresentation nodePresentation;
+
+ private static final String TEXT_INFO_CSS = "color: " + getEditorInfoTextColor() + "; font-size: 11px";
+
+ public AbstractTestResultTreeNode(TestServiceClient testServiceClient,
+ TestResultNodeFactory nodeFactory,
+ TestResources testResources,
+ String frameworkName) {
+ this.testServiceClient = testServiceClient;
+ this.nodeFactory = nodeFactory;
+ this.testResources = testResources;
+ this.frameworkName = frameworkName;
+ }
+
+ /**
+ * Implementors should return related test result trace if there is any.
+ *
+ * @return related test result trace
+ */
+ public abstract TestResultTraceDto getTestTrace();
+
+ /**
+ * Implementors should return related test result info text if there is any.
+ *
+ * @return related test result info text
+ */
+ public abstract String getTestInfoText();
+
+ /**
+ * Implementors should return related test result status.
+ *
+ * @return related test result status
+ */
+ public abstract TestResultStatus getTestStatus();
+
+ @Override
+ public void updatePresentation(@NotNull NodePresentation presentation) {
+ String infoText = getTestInfoText();
+ switch (getTestStatus()) {
+ case FAILURE:
+ case ERROR: {
+ presentation.setPresentableIcon(testResources.testResultFailureIcon());
+ break;
+ }
+ case SUCCESS: {
+ presentation.setPresentableIcon(testResources.testResultSuccessIcon());
+ break;
+ }
+ case WARNING: {
+ presentation.setPresentableIcon(testResources.testResultWarningIcon());
+ break;
+ }
+ case SKIPPED: {
+ presentation.setPresentableIcon(testResources.testResultSkippedIcon());
+ break;
+ }
+ }
+ presentation.setPresentableText(getName());
+ if (infoText != null) {
+ presentation.setInfoText(infoText);
+ presentation.setInfoTextCss(TEXT_INFO_CSS);
+ }
+ }
+
+ @Override
+ public NodePresentation getPresentation(boolean update) {
+ if (nodePresentation == null) {
+ nodePresentation = new NodePresentation();
+ updatePresentation(nodePresentation);
+ }
+ if (update) {
+ updatePresentation(nodePresentation);
+ }
+ return nodePresentation;
+ }
+
+}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultClassNode.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultClassNode.java
index 581d6d0373..65c09d5071 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultClassNode.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultClassNode.java
@@ -32,6 +32,7 @@ import com.google.inject.assistedinject.Assisted;
*
* @author Mirage Abeysekara
*/
+@Deprecated
public class TestResultClassNode extends AbstractTreeNode implements HasPresentation {
private final String className;
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultGroupNode.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultGroupNode.java
index 5c84adc3a1..93fe41116c 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultGroupNode.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultGroupNode.java
@@ -44,6 +44,7 @@ import elemental.html.SpanElement;
*
* @author Mirage Abeysekara
*/
+@Deprecated
public class TestResultGroupNode extends AbstractTreeNode implements HasPresentation {
private NodePresentation nodePresentation;
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultMethodNode.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultMethodNode.java
index 023e0bb213..779802b4c0 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultMethodNode.java
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultMethodNode.java
@@ -33,6 +33,7 @@ import com.google.inject.assistedinject.Assisted;
*
* @author Mirage Abeysekara
*/
+@Deprecated
public class TestResultMethodNode extends AbstractTreeNode implements HasAction, HasPresentation {
private String methodName;
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultNode.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultNode.java
new file mode 100644
index 0000000000..2704e1ae40
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultNode.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.ide.view.navigation.nodes;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.che.api.promises.client.Function;
+import org.eclipse.che.api.promises.client.Promise;
+import org.eclipse.che.api.testing.shared.common.TestResultStatus;
+import org.eclipse.che.api.testing.shared.common.TestResultType;
+import org.eclipse.che.api.testing.shared.dto.SimpleLocationDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceDto;
+import org.eclipse.che.ide.api.data.tree.HasAction;
+import org.eclipse.che.ide.api.data.tree.Node;
+import org.eclipse.che.plugin.testing.ide.TestResources;
+import org.eclipse.che.plugin.testing.ide.TestServiceClient;
+import org.eclipse.che.plugin.testing.ide.view.navigation.SimpleLocationHandler;
+import org.eclipse.che.plugin.testing.ide.view.navigation.factory.TestResultNodeFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
+
+/**
+ * Test result node (i.e. test suite, test case).
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class TestResultNode extends AbstractTestResultTreeNode implements HasAction {
+
+ private final TestResultDto testResultDto;
+ private final SimpleLocationHandler simpleLocationHandler;
+
+ @Inject
+ public TestResultNode(TestServiceClient testServiceClient,
+ TestResultNodeFactory nodeFactory,
+ TestResources testResources,
+ SimpleLocationHandler simpleLocationHandler,
+ @Assisted TestResultDto testResultDto,
+ @Assisted String frameworkName) {
+ super(testServiceClient, nodeFactory, testResources, frameworkName);
+ this.testResultDto = testResultDto;
+ this.simpleLocationHandler = simpleLocationHandler;
+ }
+
+ @Override
+ public String getName() {
+ return testResultDto.getName();
+ }
+
+ @Override
+ public boolean isLeaf() {
+ return testResultDto.getType() == TestResultType.TEST_CASE ? true : false;
+ }
+
+ @Override
+ public String getTestInfoText() {
+ if (testResultDto.getInfoText() != null)
+ return testResultDto.getInfoText();
+ return null;
+ }
+
+ @Override
+ public TestResultStatus getTestStatus() {
+ return testResultDto.getStatus();
+ }
+
+ @Override
+ public TestResultTraceDto getTestTrace() {
+ return testResultDto.getTrace();
+ }
+
+ @Override
+ public void actionPerformed() {
+ SimpleLocationDto location = testResultDto.getTestLocation();
+ if (location != null) {
+ simpleLocationHandler.openFile(location);
+ }
+ }
+
+ @Override
+ protected Promise> getChildrenImpl() {
+ final List children = new ArrayList();
+ Promise> promise = testServiceClient.getTestResults(frameworkName,
+ testResultDto.getResultPath());
+ return promise.then(new Function, List>() {
+ @Override
+ public List apply(List arg) {
+ for (TestResultDto entry : arg) {
+ TestResultNode child = nodeFactory.createTestResultEntryNode(entry, frameworkName);
+ children.add(child);
+ }
+ return children;
+ }
+ });
+ }
+
+}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultRootNode.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultRootNode.java
new file mode 100644
index 0000000000..a6773fd659
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultRootNode.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.ide.view.navigation.nodes;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.che.api.promises.client.Function;
+import org.eclipse.che.api.promises.client.Promise;
+import org.eclipse.che.api.testing.shared.common.TestResultStatus;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceDto;
+import org.eclipse.che.ide.api.data.tree.Node;
+import org.eclipse.che.plugin.testing.ide.TestResources;
+import org.eclipse.che.plugin.testing.ide.TestServiceClient;
+import org.eclipse.che.plugin.testing.ide.view.navigation.factory.TestResultNodeFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
+
+/**
+ * Test results root node.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class TestResultRootNode extends AbstractTestResultTreeNode {
+
+ private final TestResultRootDto testResultRootDto;
+
+ @Inject
+ public TestResultRootNode(TestServiceClient testServiceClient,
+ TestResultNodeFactory nodeFactory,
+ TestResources testResources,
+ @Assisted TestResultRootDto testResultRootDto,
+ @Assisted String frameworkName) {
+ super(testServiceClient, nodeFactory, testResources, frameworkName);
+ this.testResultRootDto = testResultRootDto;
+
+ }
+
+ @Override
+ public String getName() {
+ return testResultRootDto.getName();
+ }
+
+ @Override
+ public boolean isLeaf() {
+ return false;
+ }
+
+ @Override
+ public String getTestInfoText() {
+ if (testResultRootDto.getInfoText() != null)
+ return testResultRootDto.getInfoText();
+ return null;
+ }
+
+ @Override
+ public TestResultStatus getTestStatus() {
+ return testResultRootDto.getStatus();
+ }
+
+ @Override
+ public TestResultTraceDto getTestTrace() {
+ return testResultRootDto.getTrace();
+ }
+
+ @Override
+ protected Promise> getChildrenImpl() {
+ final List children = new ArrayList();
+ Promise> promise = testServiceClient.getTestResults(frameworkName,
+ testResultRootDto.getResultPath());
+ return promise.then(new Function, List>() {
+ @Override
+ public List apply(List arg) {
+ for (TestResultDto entry : arg) {
+ TestResultNode child = nodeFactory.createTestResultEntryNode(entry, frameworkName);
+ children.add(child);
+ }
+ return children;
+ }
+ });
+ }
+
+}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultTraceFrameNode.java b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultTraceFrameNode.java
new file mode 100644
index 0000000000..221e1087de
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/java/org/eclipse/che/plugin/testing/ide/view/navigation/nodes/TestResultTraceFrameNode.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.plugin.testing.ide.view.navigation.nodes;
+
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import org.eclipse.che.api.promises.client.Promise;
+import org.eclipse.che.api.testing.shared.dto.SimpleLocationDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultTraceFrameDto;
+import org.eclipse.che.ide.api.data.tree.AbstractTreeNode;
+import org.eclipse.che.ide.api.data.tree.HasAction;
+import org.eclipse.che.ide.api.data.tree.Node;
+import org.eclipse.che.ide.ui.smartTree.presentation.HasPresentation;
+import org.eclipse.che.ide.ui.smartTree.presentation.NodePresentation;
+import org.eclipse.che.plugin.testing.ide.TestResources;
+import org.eclipse.che.plugin.testing.ide.view.navigation.SimpleLocationHandler;
+
+import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
+
+/**
+ * Test result trace frame node.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public class TestResultTraceFrameNode extends AbstractTreeNode implements HasPresentation, HasAction {
+
+ private final TestResources testResources;
+ private final SimpleLocationHandler simpleLocationHandler;
+ private final TestResultTraceFrameDto testResultTraceFrameDto;
+ private NodePresentation nodePresentation;
+
+ @Inject
+ public TestResultTraceFrameNode(TestResources testResources,
+ SimpleLocationHandler simpleLocationHandler,
+ @Assisted TestResultTraceFrameDto testResultTraceFrameDto) {
+ this.testResources = testResources;
+ this.simpleLocationHandler = simpleLocationHandler;
+ this.testResultTraceFrameDto = testResultTraceFrameDto;
+ }
+
+ @Override
+ public String getName() {
+ return testResultTraceFrameDto.getTraceFrame();
+ }
+
+ @Override
+ public boolean isLeaf() {
+ return true;
+ }
+
+ @Override
+ public void updatePresentation(@NotNull NodePresentation presentation) {
+ presentation.setPresentableIcon(testResources.testResultTraceFrameIcon());
+ presentation.setPresentableText(getName());
+ }
+
+ @Override
+ public NodePresentation getPresentation(boolean update) {
+ if (nodePresentation == null) {
+ nodePresentation = new NodePresentation();
+ updatePresentation(nodePresentation);
+ }
+ if (update) {
+ updatePresentation(nodePresentation);
+ }
+ return nodePresentation;
+ }
+
+ @Override
+ public void actionPerformed() {
+ SimpleLocationDto location = testResultTraceFrameDto.getLocation();
+ if (location != null) {
+ simpleLocationHandler.openFile(location);
+ }
+ }
+
+ @Override
+ protected Promise> getChildrenImpl() {
+ return null;
+ }
+
+}
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_failure.svg b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_failure.svg
new file mode 100644
index 0000000000..227f0012b1
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_failure.svg
@@ -0,0 +1,52 @@
+
+
+
+
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_skipped.svg b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_skipped.svg
new file mode 100644
index 0000000000..7133aead36
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_skipped.svg
@@ -0,0 +1,52 @@
+
+
+
+
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_success.svg b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_success.svg
new file mode 100644
index 0000000000..d516285153
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_success.svg
@@ -0,0 +1,52 @@
+
+
+
+
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_trace_frame.svg b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_trace_frame.svg
new file mode 100644
index 0000000000..6ee05a002b
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_trace_frame.svg
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_warning.svg b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_warning.svg
new file mode 100644
index 0000000000..fa5acfb9f8
--- /dev/null
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/svg/test_result_warning.svg
@@ -0,0 +1,52 @@
+
+
+
+
diff --git a/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/view/TestResultViewImpl.ui.xml b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/view/TestResultViewImpl.ui.xml
index 4839105dd4..9821c197e4 100644
--- a/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/view/TestResultViewImpl.ui.xml
+++ b/plugins/plugin-testing/che-plugin-testing-ide/src/main/resources/org/eclipse/che/plugin/testing/ide/view/TestResultViewImpl.ui.xml
@@ -13,9 +13,14 @@
-
-
- .outputLabel {
+
+ .traceOutputMessage {
+ font-family: mainFontFamily;
+ font-size: fontSize;
+ font-weight: normal;
+ line-height: normal;
+ padding-bottom: 5px;
user-select: text;
-moz-user-select: text;
-webkit-user-select: text;
@@ -23,28 +28,19 @@
overflow: scroll;
margin: 2px;
white-space: pre-wrap;
- }
-
- .outputBackground{
- background-color: #1f1f1f;
+ }
+ .traceOutputStack {
+ height: 100%;
+ width: 100%;
}
-
-
-
-
-
+
-
-
-
-
-
+
-
diff --git a/plugins/plugin-testing/pom.xml b/plugins/plugin-testing/pom.xml
index 160fc283bf..557c9146ea 100644
--- a/plugins/plugin-testing/pom.xml
+++ b/plugins/plugin-testing/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-testing-parentpom
diff --git a/plugins/plugin-traefik/plugin-traefik-docker/pom.xml b/plugins/plugin-traefik/plugin-traefik-docker/pom.xml
index f33bac2e13..f88d9ef38e 100644
--- a/plugins/plugin-traefik/plugin-traefik-docker/pom.xml
+++ b/plugins/plugin-traefik/plugin-traefik-docker/pom.xml
@@ -16,7 +16,7 @@
che-plugin-traefik-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-traefik-dockerjar
diff --git a/plugins/plugin-traefik/pom.xml b/plugins/plugin-traefik/pom.xml
index 7cc0efb22c..b25a06e1d6 100644
--- a/plugins/plugin-traefik/pom.xml
+++ b/plugins/plugin-traefik/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-traefik-parent
diff --git a/plugins/plugin-urlfactory/pom.xml b/plugins/plugin-urlfactory/pom.xml
index dfdd16c491..c65e712b35 100644
--- a/plugins/plugin-urlfactory/pom.xml
+++ b/plugins/plugin-urlfactory/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-url-factory
diff --git a/plugins/plugin-web/che-plugin-web-ext-server/pom.xml b/plugins/plugin-web/che-plugin-web-ext-server/pom.xml
index be80ea30c8..2dc4d50354 100644
--- a/plugins/plugin-web/che-plugin-web-ext-server/pom.xml
+++ b/plugins/plugin-web/che-plugin-web-ext-server/pom.xml
@@ -16,7 +16,7 @@
che-plugin-web-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-web-ext-server
diff --git a/plugins/plugin-web/che-plugin-web-ext-shared/pom.xml b/plugins/plugin-web/che-plugin-web-ext-shared/pom.xml
index 67f9ae1b8d..26ec91d8db 100644
--- a/plugins/plugin-web/che-plugin-web-ext-shared/pom.xml
+++ b/plugins/plugin-web/che-plugin-web-ext-shared/pom.xml
@@ -16,7 +16,7 @@
che-plugin-web-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-web-ext-shared
diff --git a/plugins/plugin-web/che-plugin-web-ext-web/pom.xml b/plugins/plugin-web/che-plugin-web-ext-web/pom.xml
index 803b117f95..939ee31eb5 100644
--- a/plugins/plugin-web/che-plugin-web-ext-web/pom.xml
+++ b/plugins/plugin-web/che-plugin-web-ext-web/pom.xml
@@ -16,7 +16,7 @@
che-plugin-web-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-web-ext-webjar
diff --git a/plugins/plugin-web/pom.xml b/plugins/plugin-web/pom.xml
index 51389ae8e8..97b650ae6c 100644
--- a/plugins/plugin-web/pom.xml
+++ b/plugins/plugin-web/pom.xml
@@ -16,7 +16,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-web-parent
diff --git a/plugins/plugin-zend-debugger/che-plugin-zend-debugger-ide/pom.xml b/plugins/plugin-zend-debugger/che-plugin-zend-debugger-ide/pom.xml
index fc30e1f2bd..5efb32d4fb 100644
--- a/plugins/plugin-zend-debugger/che-plugin-zend-debugger-ide/pom.xml
+++ b/plugins/plugin-zend-debugger/che-plugin-zend-debugger-ide/pom.xml
@@ -13,7 +13,7 @@
che-plugin-zend-debugger-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-zend-debugger-idejar
diff --git a/plugins/plugin-zend-debugger/che-plugin-zend-debugger-server/pom.xml b/plugins/plugin-zend-debugger/che-plugin-zend-debugger-server/pom.xml
index 458e40f702..ae9430523f 100644
--- a/plugins/plugin-zend-debugger/che-plugin-zend-debugger-server/pom.xml
+++ b/plugins/plugin-zend-debugger/che-plugin-zend-debugger-server/pom.xml
@@ -13,7 +13,7 @@
che-plugin-zend-debugger-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-plugin-zend-debugger-serverjar
diff --git a/plugins/plugin-zend-debugger/pom.xml b/plugins/plugin-zend-debugger/pom.xml
index adf7cbaf80..52cb7ccba5 100644
--- a/plugins/plugin-zend-debugger/pom.xml
+++ b/plugins/plugin-zend-debugger/pom.xml
@@ -13,7 +13,7 @@
che-plugin-parentorg.eclipse.che.plugin
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-plugin-zend-debugger-parent
diff --git a/plugins/pom.xml b/plugins/pom.xml
index 080769e78e..fdc07e61a7 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -16,12 +16,12 @@
che-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlorg.eclipse.che.pluginche-plugin-parent
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpomChe Plugin :: Parent
@@ -58,6 +58,7 @@
plugin-zend-debuggerplugin-testingplugin-testing-java
+ plugin-testing-phpplugin-pullrequest-parentplugin-traefik
diff --git a/pom.xml b/pom.xml
index a9d2531251..6c20ec0b8a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,11 +16,11 @@
maven-depmgt-pomorg.eclipse.che.depmgt
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.cheche-parent
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpomChe Parent
@@ -43,10 +43,10 @@
https://github.com/eclipse/che
- 5.14.0-SNAPSHOT
- 5.14.0-SNAPSHOT
- 5.14.0-SNAPSHOT
- 3.1.0.Final
+ 5.15.0-SNAPSHOT
+ 5.15.0-SNAPSHOT
+ 5.15.0-SNAPSHOT
+ 3.2.0.CR1-SNAPSHOT1.0-beta2
@@ -1004,6 +1004,16 @@
che-plugin-testing-junit-server${che.version}
+
+ org.eclipse.che.plugin
+ che-plugin-testing-phpunit-ide
+ ${che.version}
+
+
+ org.eclipse.che.plugin
+ che-plugin-testing-phpunit-server
+ ${che.version}
+ org.eclipse.che.pluginche-plugin-testing-testng-ide
diff --git a/samples/pom.xml b/samples/pom.xml
index 0155fa9e3f..97c3dd2c44 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -16,12 +16,12 @@
che-parentorg.eclipse.che
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlorg.eclipse.che.sampleche-sample-parent
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpomChe Sample :: Parent
diff --git a/samples/sample-plugin-actions/che-sample-plugin-actions-ide/pom.xml b/samples/sample-plugin-actions/che-sample-plugin-actions-ide/pom.xml
index 5d6e4b06b2..c1276569fc 100644
--- a/samples/sample-plugin-actions/che-sample-plugin-actions-ide/pom.xml
+++ b/samples/sample-plugin-actions/che-sample-plugin-actions-ide/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-actions-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-actions-idejar
diff --git a/samples/sample-plugin-actions/pom.xml b/samples/sample-plugin-actions/pom.xml
index 5c27cca32c..d988129ad4 100644
--- a/samples/sample-plugin-actions/pom.xml
+++ b/samples/sample-plugin-actions/pom.xml
@@ -16,7 +16,7 @@
che-sample-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-sample-plugin-actions-parent
diff --git a/samples/sample-plugin-embedjs/che-sample-plugin-embedjs-ide/pom.xml b/samples/sample-plugin-embedjs/che-sample-plugin-embedjs-ide/pom.xml
index 7683118eee..b44906f917 100644
--- a/samples/sample-plugin-embedjs/che-sample-plugin-embedjs-ide/pom.xml
+++ b/samples/sample-plugin-embedjs/che-sample-plugin-embedjs-ide/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-embedjs-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-embedjs-idejar
diff --git a/samples/sample-plugin-embedjs/pom.xml b/samples/sample-plugin-embedjs/pom.xml
index 15704358b9..b83f65fce6 100644
--- a/samples/sample-plugin-embedjs/pom.xml
+++ b/samples/sample-plugin-embedjs/pom.xml
@@ -16,7 +16,7 @@
che-sample-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-sample-plugin-embedjs-parent
diff --git a/samples/sample-plugin-filetype/che-sample-plugin-filetype-ide/pom.xml b/samples/sample-plugin-filetype/che-sample-plugin-filetype-ide/pom.xml
index e98282b3c7..e14fc70d91 100644
--- a/samples/sample-plugin-filetype/che-sample-plugin-filetype-ide/pom.xml
+++ b/samples/sample-plugin-filetype/che-sample-plugin-filetype-ide/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-filetype-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-filetype-idejar
diff --git a/samples/sample-plugin-filetype/pom.xml b/samples/sample-plugin-filetype/pom.xml
index e9be7517fa..c2950cb3dc 100644
--- a/samples/sample-plugin-filetype/pom.xml
+++ b/samples/sample-plugin-filetype/pom.xml
@@ -16,7 +16,7 @@
che-sample-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-sample-plugin-filetype-parent
diff --git a/samples/sample-plugin-json/che-sample-plugin-json-ide/pom.xml b/samples/sample-plugin-json/che-sample-plugin-json-ide/pom.xml
index 3196eaab77..a8c1be2664 100644
--- a/samples/sample-plugin-json/che-sample-plugin-json-ide/pom.xml
+++ b/samples/sample-plugin-json/che-sample-plugin-json-ide/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-json-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-json-idejar
diff --git a/samples/sample-plugin-json/che-sample-plugin-json-server/pom.xml b/samples/sample-plugin-json/che-sample-plugin-json-server/pom.xml
index 1d6ce5da75..aa77c9c36c 100644
--- a/samples/sample-plugin-json/che-sample-plugin-json-server/pom.xml
+++ b/samples/sample-plugin-json/che-sample-plugin-json-server/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-json-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-json-serverChe Sample :: Plugin JSON :: Server
diff --git a/samples/sample-plugin-json/che-sample-plugin-json-shared/pom.xml b/samples/sample-plugin-json/che-sample-plugin-json-shared/pom.xml
index ce47247435..86325e824b 100644
--- a/samples/sample-plugin-json/che-sample-plugin-json-shared/pom.xml
+++ b/samples/sample-plugin-json/che-sample-plugin-json-shared/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-json-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-json-sharedChe Sample :: Plugin JSON :: Shared
diff --git a/samples/sample-plugin-json/pom.xml b/samples/sample-plugin-json/pom.xml
index 620cde12ad..4adf57fc9c 100644
--- a/samples/sample-plugin-json/pom.xml
+++ b/samples/sample-plugin-json/pom.xml
@@ -16,7 +16,7 @@
che-sample-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-sample-plugin-json-parent
diff --git a/samples/sample-plugin-nativeaccess/che-sample-plugin-nativeaccess-ide/pom.xml b/samples/sample-plugin-nativeaccess/che-sample-plugin-nativeaccess-ide/pom.xml
index dbba70b03d..e4e52f4a36 100644
--- a/samples/sample-plugin-nativeaccess/che-sample-plugin-nativeaccess-ide/pom.xml
+++ b/samples/sample-plugin-nativeaccess/che-sample-plugin-nativeaccess-ide/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-nativeaccess-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-nativeaccess-idejar
diff --git a/samples/sample-plugin-nativeaccess/pom.xml b/samples/sample-plugin-nativeaccess/pom.xml
index 7ec3ce40cc..f784778fc8 100644
--- a/samples/sample-plugin-nativeaccess/pom.xml
+++ b/samples/sample-plugin-nativeaccess/pom.xml
@@ -16,7 +16,7 @@
che-sample-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-sample-plugin-nativeaccess-parent
diff --git a/samples/sample-plugin-parts/che-sample-plugin-parts-ide/pom.xml b/samples/sample-plugin-parts/che-sample-plugin-parts-ide/pom.xml
index 2dd853cd5b..0afc00a89b 100644
--- a/samples/sample-plugin-parts/che-sample-plugin-parts-ide/pom.xml
+++ b/samples/sample-plugin-parts/che-sample-plugin-parts-ide/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-parts-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-parts-idejar
diff --git a/samples/sample-plugin-parts/pom.xml b/samples/sample-plugin-parts/pom.xml
index 01d727813e..7e2650112b 100644
--- a/samples/sample-plugin-parts/pom.xml
+++ b/samples/sample-plugin-parts/pom.xml
@@ -16,7 +16,7 @@
che-sample-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-sample-plugin-parts-parent
diff --git a/samples/sample-plugin-serverservice/che-sample-plugin-serverservice-ide/pom.xml b/samples/sample-plugin-serverservice/che-sample-plugin-serverservice-ide/pom.xml
index 524738687b..646e5c5fe6 100644
--- a/samples/sample-plugin-serverservice/che-sample-plugin-serverservice-ide/pom.xml
+++ b/samples/sample-plugin-serverservice/che-sample-plugin-serverservice-ide/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-serverservice-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-serverservice-idejar
diff --git a/samples/sample-plugin-serverservice/che-sample-plugin-serverservice-server/pom.xml b/samples/sample-plugin-serverservice/che-sample-plugin-serverservice-server/pom.xml
index e68fe812c0..5ee9c045d5 100644
--- a/samples/sample-plugin-serverservice/che-sample-plugin-serverservice-server/pom.xml
+++ b/samples/sample-plugin-serverservice/che-sample-plugin-serverservice-server/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-serverservice-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-serverservice-serverChe Sample :: Plugin ServerService :: Server
diff --git a/samples/sample-plugin-serverservice/pom.xml b/samples/sample-plugin-serverservice/pom.xml
index d1b14d359c..cab23d2d39 100644
--- a/samples/sample-plugin-serverservice/pom.xml
+++ b/samples/sample-plugin-serverservice/pom.xml
@@ -16,7 +16,7 @@
che-sample-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-sample-plugin-serverservice-parent
diff --git a/samples/sample-plugin-wizard/che-sample-plugin-wizard-ide/pom.xml b/samples/sample-plugin-wizard/che-sample-plugin-wizard-ide/pom.xml
index a7f82fb930..7a19ea4784 100644
--- a/samples/sample-plugin-wizard/che-sample-plugin-wizard-ide/pom.xml
+++ b/samples/sample-plugin-wizard/che-sample-plugin-wizard-ide/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-wizard-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-wizard-idejar
diff --git a/samples/sample-plugin-wizard/che-sample-plugin-wizard-server/pom.xml b/samples/sample-plugin-wizard/che-sample-plugin-wizard-server/pom.xml
index fe9b239cdb..849767b249 100644
--- a/samples/sample-plugin-wizard/che-sample-plugin-wizard-server/pom.xml
+++ b/samples/sample-plugin-wizard/che-sample-plugin-wizard-server/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-wizard-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-wizard-serverChe Sample :: Plugin Wizard :: Server
diff --git a/samples/sample-plugin-wizard/che-sample-plugin-wizard-shared/pom.xml b/samples/sample-plugin-wizard/che-sample-plugin-wizard-shared/pom.xml
index 6f6e02c762..088619115c 100644
--- a/samples/sample-plugin-wizard/che-sample-plugin-wizard-shared/pom.xml
+++ b/samples/sample-plugin-wizard/che-sample-plugin-wizard-shared/pom.xml
@@ -16,7 +16,7 @@
che-sample-plugin-wizard-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-sample-plugin-wizard-sharedChe Sample :: Plugin Wizard :: Shared
diff --git a/samples/sample-plugin-wizard/pom.xml b/samples/sample-plugin-wizard/pom.xml
index 18ad7210ff..8153a7ea38 100644
--- a/samples/sample-plugin-wizard/pom.xml
+++ b/samples/sample-plugin-wizard/pom.xml
@@ -16,7 +16,7 @@
che-sample-parentorg.eclipse.che.sample
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlche-sample-plugin-wizard-parent
diff --git a/wsagent/agent/pom.xml b/wsagent/agent/pom.xml
index 426f077d0f..adc616cbae 100644
--- a/wsagent/agent/pom.xml
+++ b/wsagent/agent/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTwsagentWorkspace Agent
diff --git a/wsagent/che-core-api-debug-shared/pom.xml b/wsagent/che-core-api-debug-shared/pom.xml
index 5b82ec3091..188df67c10 100644
--- a/wsagent/che-core-api-debug-shared/pom.xml
+++ b/wsagent/che-core-api-debug-shared/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-debug-sharedjar
diff --git a/wsagent/che-core-api-debug/pom.xml b/wsagent/che-core-api-debug/pom.xml
index d25fe6ff2f..55cbff96b7 100644
--- a/wsagent/che-core-api-debug/pom.xml
+++ b/wsagent/che-core-api-debug/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-debugChe Core :: API :: Debug
diff --git a/wsagent/che-core-api-git-shared/pom.xml b/wsagent/che-core-api-git-shared/pom.xml
index 1687feecd5..6960799887 100644
--- a/wsagent/che-core-api-git-shared/pom.xml
+++ b/wsagent/che-core-api-git-shared/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-git-sharedjar
diff --git a/wsagent/che-core-api-git/pom.xml b/wsagent/che-core-api-git/pom.xml
index 0c1c9fa63e..eccd5bcb4f 100644
--- a/wsagent/che-core-api-git/pom.xml
+++ b/wsagent/che-core-api-git/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-gitjar
diff --git a/wsagent/che-core-api-languageserver-maven-plugin/pom.xml b/wsagent/che-core-api-languageserver-maven-plugin/pom.xml
index d0a2391585..515d279d51 100644
--- a/wsagent/che-core-api-languageserver-maven-plugin/pom.xml
+++ b/wsagent/che-core-api-languageserver-maven-plugin/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-languageserver-maven-pluginmaven-plugin
diff --git a/wsagent/che-core-api-languageserver-shared/pom.xml b/wsagent/che-core-api-languageserver-shared/pom.xml
index e4d487ed34..d0a3398bac 100644
--- a/wsagent/che-core-api-languageserver-shared/pom.xml
+++ b/wsagent/che-core-api-languageserver-shared/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-languageserver-sharedjar
diff --git a/wsagent/che-core-api-languageserver/pom.xml b/wsagent/che-core-api-languageserver/pom.xml
index 5c4e29fbdf..b56e58d56c 100644
--- a/wsagent/che-core-api-languageserver/pom.xml
+++ b/wsagent/che-core-api-languageserver/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-languageserverjar
diff --git a/wsagent/che-core-api-oauth/pom.xml b/wsagent/che-core-api-oauth/pom.xml
index e4764c81b8..fc97c4b33e 100644
--- a/wsagent/che-core-api-oauth/pom.xml
+++ b/wsagent/che-core-api-oauth/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-oauthjar
diff --git a/wsagent/che-core-api-project-shared/pom.xml b/wsagent/che-core-api-project-shared/pom.xml
index dba195a596..d18d7d9de4 100644
--- a/wsagent/che-core-api-project-shared/pom.xml
+++ b/wsagent/che-core-api-project-shared/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-project-sharedjar
diff --git a/wsagent/che-core-api-project/pom.xml b/wsagent/che-core-api-project/pom.xml
index a773158f44..d3bd9cbed7 100644
--- a/wsagent/che-core-api-project/pom.xml
+++ b/wsagent/che-core-api-project/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-projectjar
@@ -101,7 +101,7 @@
org.eclipse.che.coreche-core-api-project-shared
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.core
diff --git a/wsagent/che-core-api-testing-shared/pom.xml b/wsagent/che-core-api-testing-shared/pom.xml
index 2b21bd8c65..0c6445edd5 100644
--- a/wsagent/che-core-api-testing-shared/pom.xml
+++ b/wsagent/che-core-api-testing-shared/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-testing-sharedChe Core :: API :: Testing Shared
@@ -42,10 +42,7 @@
com.mycilalicense-maven-plugin
-
- **/**/TestingOutput.java
- **/**/Constants.java
-
+ true
diff --git a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/TestResult.java b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/TestResult.java
index 5e5bc9f1b2..dad25039b4 100644
--- a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/TestResult.java
+++ b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/TestResult.java
@@ -20,6 +20,7 @@ import org.eclipse.che.dto.shared.DTO;
* @author Mirage Abeysekara
*/
@DTO
+@Deprecated
public interface TestResult {
/**
diff --git a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/common/TestResultStatus.java b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/common/TestResultStatus.java
new file mode 100644
index 0000000000..a130f10d3f
--- /dev/null
+++ b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/common/TestResultStatus.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.api.testing.shared.common;
+
+/**
+ * Test result status enum.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public enum TestResultStatus {
+
+ SUCCESS, SKIPPED, WARNING, FAILURE, ERROR;
+
+}
diff --git a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/common/TestResultType.java b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/common/TestResultType.java
new file mode 100644
index 0000000000..d946d8ee3c
--- /dev/null
+++ b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/common/TestResultType.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.api.testing.shared.common;
+
+/**
+ * Test result type (test suite or test case).
+ *
+ * @author Bartlomiej Laczkowski
+ */
+public enum TestResultType {
+
+ TEST_SUITE, TEST_CASE;
+
+}
diff --git a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/SimpleLocationDto.java b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/SimpleLocationDto.java
new file mode 100644
index 0000000000..b3cb705740
--- /dev/null
+++ b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/SimpleLocationDto.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.api.testing.shared.dto;
+
+import org.eclipse.che.dto.shared.DTO;
+
+/**
+ * Provides info about file to be opened in the editor and line number on which the selection should be made.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+@DTO
+public interface SimpleLocationDto {
+
+ /**
+ * Returns path to resource that should be opened in the editor.
+ *
+ * @return path to resource that should be opened in the editor
+ */
+ String getResourcePath();
+
+ /**
+ * Sets path to resource that should be opened in the editor.
+ *
+ * @param resourcePath
+ */
+ void setResourcePath(String resourcePath);
+
+ /**
+ * Returns line number that should be selected in the editor.
+ *
+ * @return line number that should be selected in the editor.
+ */
+ int getLineNumber();
+
+ /**
+ * Sets the line number that should be selected in the editor.
+ *
+ * @param lineNumber
+ */
+ void setLineNumber(int lineNumber);
+
+}
diff --git a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultDto.java b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultDto.java
new file mode 100644
index 0000000000..3118cba96d
--- /dev/null
+++ b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultDto.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.api.testing.shared.dto;
+
+import java.util.List;
+
+import org.eclipse.che.api.testing.shared.common.TestResultStatus;
+import org.eclipse.che.api.testing.shared.common.TestResultType;
+import org.eclipse.che.dto.shared.DTO;
+
+/**
+ * Test Result DTO.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+@DTO
+public interface TestResultDto {
+
+ /**
+ * Returns test result type (i.e. test case or test suite).
+ *
+ * @return test result type (i.e. test case or test suite)
+ */
+ TestResultType getType();
+
+ /**
+ * Sets test result type
+ *
+ * @param type
+ */
+ void setType(TestResultType type);
+
+ /**
+ * Returns test result status (success, failure, etc.)
+ *
+ * @return test result status
+ */
+ TestResultStatus getStatus();
+
+ /**
+ * Sets test result status
+ *
+ * @param status
+ */
+ void setStatus(TestResultStatus status);
+
+ /**
+ * Returns test result name (i.e. test suite/test case name)
+ *
+ * @return test result name
+ */
+ String getName();
+
+ /**
+ * Sets test result name
+ *
+ * @param name
+ */
+ void setName(String name);
+
+ /**
+ * Returns additional text (i.e. test execution time) that will be added as info text in related tree element label.
+ *
+ * @return info text
+ */
+ String getInfoText();
+
+ /**
+ * Sets additional info text.
+ *
+ * @param infoText
+ */
+ void setInfoText(String infoText);
+
+ /**
+ * Returns test result related stack trace DTO.
+ *
+ * @return test result related stack trace DTO
+ */
+ TestResultTraceDto getTrace();
+
+ /**
+ * Sets test result related stack trace DTO.
+ *
+ * @param traceDto
+ */
+ void setTrace(TestResultTraceDto traceDto);
+
+ /**
+ * Returns test result simple location DTO (i.e. file with related test case).
+ *
+ * @return test result simple location DTO
+ */
+ SimpleLocationDto getTestLocation();
+
+ /**
+ * Sets test result simple location DTO.
+ *
+ * @param simpleLocationDto
+ */
+ void setTestLocation(SimpleLocationDto simpleLocationDto);
+
+ /**
+ * Returns path to test result.
+ *
+ * @return path to test result
+ */
+ List getResultPath();
+
+ /**
+ * Sets path to test result.
+ *
+ * @param resultPath
+ */
+ void setResultPath(List resultPath);
+
+}
diff --git a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultRootDto.java b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultRootDto.java
new file mode 100644
index 0000000000..3c9e74d6d6
--- /dev/null
+++ b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultRootDto.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.api.testing.shared.dto;
+
+import java.util.List;
+
+import org.eclipse.che.api.testing.shared.common.TestResultStatus;
+import org.eclipse.che.dto.shared.DTO;
+
+/**
+ * Test result root DTO.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+@DTO
+public interface TestResultRootDto {
+
+ /**
+ * Returns related test framework name.
+ *
+ * @return related test framework name
+ */
+ String getTestFrameworkName();
+
+ /**
+ * Sets related test framework name.
+ *
+ * @param frameworkName
+ */
+ void setTestFrameworkName(String frameworkName);
+
+ /**
+ * Returns overall test result status (success/failure, etc.).
+ *
+ * @return overall test result status
+ */
+ TestResultStatus getStatus();
+
+ /**
+ * Sets overall test result status
+ *
+ * @param status
+ */
+ void setStatus(TestResultStatus status);
+
+ /**
+ * Returns test result root name.
+ *
+ * @return test result root name
+ */
+ String getName();
+
+ /**
+ * Sets test result root name.
+ *
+ * @param label
+ */
+ void setName(String label);
+
+ /**
+ * Returns additional text (i.e. test execution time) that will be added as info text in related tree element label.
+ *
+ * @return info text
+ */
+ String getInfoText();
+
+ /**
+ * Sets additional info text.
+ *
+ * @param infoText
+ */
+ void setInfoText(String infoText);
+
+ /**
+ * Returns test result related stack trace DTO.
+ *
+ * @return test result related stack trace DTO
+ */
+ TestResultTraceDto getTrace();
+
+ /**
+ * Sets test result related stack trace DTO.
+ *
+ * @param traceDto
+ */
+ void setTrace(TestResultTraceDto traceDto);
+
+ /**
+ * Returns path to test result root.
+ *
+ * @return path to test result root
+ */
+ List getResultPath();
+
+ /**
+ * Sets path to test result root.
+ *
+ * @param resultPath
+ */
+ void setResultPath(List resultPath);
+
+ /**
+ * Returns true if this result root is empty (has no test results at all).
+ *
+ * @return true if this result root is empty, false otherwise
+ */
+ boolean isEmpty();
+
+ /**
+ * Sets whether this result root is empty (has no test results at all)
+ *
+ * @param isEmpty
+ */
+ void setEmpty(boolean isEmpty);
+
+}
diff --git a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultTraceDto.java b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultTraceDto.java
new file mode 100644
index 0000000000..f875e41f79
--- /dev/null
+++ b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultTraceDto.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.api.testing.shared.dto;
+
+import java.util.List;
+
+import org.eclipse.che.dto.shared.DTO;
+
+/**
+ * Test result trace DTO.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+@DTO
+public interface TestResultTraceDto {
+
+ /**
+ * Returns related message (i.e. error/exception description).
+ *
+ * @return related message
+ */
+ String getMessage();
+
+ /**
+ * Sets related message (i.e. error/exception description).
+ *
+ * @param message
+ */
+ void setMessage(String message);
+
+ /**
+ * Returns list of stack frames for this trace.
+ *
+ * @return list of stack frames
+ */
+ List getTraceFrames();
+
+ /**
+ * Sets list of stack frames for this trace.
+ *
+ * @param traceFrames
+ */
+ void setTraceFrames(List traceFrames);
+
+}
diff --git a/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultTraceFrameDto.java b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultTraceFrameDto.java
new file mode 100644
index 0000000000..56392f3f1b
--- /dev/null
+++ b/wsagent/che-core-api-testing-shared/src/main/java/org/eclipse/che/api/testing/shared/dto/TestResultTraceFrameDto.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.api.testing.shared.dto;
+
+import org.eclipse.che.dto.shared.DTO;
+
+/**
+ * Single trace frame DTO.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+@DTO
+public interface TestResultTraceFrameDto {
+
+ /**
+ * Returns trace frame description/name.
+ *
+ * @return trace frame description/name
+ */
+ String getTraceFrame();
+
+ /**
+ * Sets trace frame description/name.
+ *
+ * @param traceFrame
+ */
+ void setTraceFrame(String traceFrame);
+
+ /**
+ * Returns trace frame simple location DTO (i.e. file with related method/function definition).
+ *
+ * @return trace frame simple location DTO
+ */
+ SimpleLocationDto getLocation();
+
+ /**
+ * Sets trace frame simple location DTO.
+ *
+ * @param location
+ */
+ void setLocation(SimpleLocationDto location);
+
+}
diff --git a/wsagent/che-core-api-testing/pom.xml b/wsagent/che-core-api-testing/pom.xml
index 9839895e8f..a88f696d3f 100644
--- a/wsagent/che-core-api-testing/pom.xml
+++ b/wsagent/che-core-api-testing/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-testingChe Core :: API :: Testing
@@ -124,11 +124,7 @@
com.mycilalicense-maven-plugin
-
- **/**/TestingOutputImpl.java
- **/**/AbstractTestListener.java
- **/**/OutputTestListener.java
-
+ true
diff --git a/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/TestingService.java b/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/TestingService.java
index 4153172e8d..8dc38c2c9e 100644
--- a/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/TestingService.java
+++ b/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/TestingService.java
@@ -11,6 +11,7 @@
package org.eclipse.che.api.testing.server;
import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -26,10 +27,15 @@ import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+import org.eclipse.che.api.testing.server.exceptions.TestFrameworkException;
import org.eclipse.che.api.testing.server.framework.TestFrameworkRegistry;
import org.eclipse.che.api.testing.server.framework.TestRunner;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -45,6 +51,7 @@ import io.swagger.annotations.ApiResponses;
@Path("che/testing")
public class TestingService {
+ public static final Logger LOG = LoggerFactory.getLogger(TestingService.class);
private final TestFrameworkRegistry frameworkRegistry;
@Inject
@@ -66,6 +73,7 @@ public class TestingService {
* @return the test result of test case
* @throws Exception when the test runner failed to execute test cases.
*/
+ @Deprecated
@GET
@Path("run")
@Produces(MediaType.APPLICATION_JSON)
@@ -91,22 +99,55 @@ public class TestingService {
}
- private WebApplicationException translateException(Throwable e) {
- if (e instanceof WebApplicationException) {
- return (WebApplicationException)e;
+ @GET
+ @Path("runtests")
+ @Produces(MediaType.APPLICATION_JSON)
+ @ApiOperation(value = "Execute Java tests and return result root entry", notes = "The GET parameters are passed to the test framework implementation.")
+ @ApiResponses({ @ApiResponse(code = 200, message = "OK"), @ApiResponse(code = 500, message = "Server error") })
+ public TestResultRootDto runTests(@Context UriInfo uriInfo) throws Exception {
+ Map queryParameters = getMap(uriInfo.getQueryParameters());
+ String projectPath = queryParameters.get("projectPath");
+ String absoluteProjectPath = ResourcesPlugin.getPathToWorkspace() + projectPath;
+ queryParameters.put("absoluteProjectPath", absoluteProjectPath);
+ String testFramework = queryParameters.get("testFramework");
+ getTestRunner(testFramework);
+ TestResultRootDto result;
+ try {
+ result = frameworkRegistry.getTestRunner(testFramework).runTests(queryParameters);
+ } catch (TestFrameworkException e) {
+ LOG.error(e.getMessage());
+ throw e;
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ throw e;
}
- Throwable cause = null;
- if (e instanceof InvocationTargetException) {
- cause = e.getCause();
+ return result;
+ }
+
+ @GET
+ @Path("gettestresults")
+ @Produces(MediaType.APPLICATION_JSON)
+ @ApiOperation(value = "Execute Java tests and return result root entry", notes = "The GET parameters are passed to the test framework implementation.")
+ @ApiResponses({ @ApiResponse(code = 200, message = "OK"), @ApiResponse(code = 500, message = "Server error") })
+ public List getTestResults(@Context UriInfo uriInfo) throws Exception {
+ Map queryParameters = getMap(uriInfo.getQueryParameters());
+ String testFramework = queryParameters.get("testFramework");
+ int i = 0;
+ String item;
+ List testResultsPath = new ArrayList<>();
+ while ((item = queryParameters.get("path" + (i++))) != null) {
+ testResultsPath.add(item);
}
- if (e instanceof RuntimeException) {
- cause = e.getCause();
+ getTestRunner(testFramework);
+ List result = frameworkRegistry.getTestRunner(testFramework).getTestResults(testResultsPath);
+ return result;
+ }
+
+ private void getTestRunner(String testFramework) throws Exception {
+ TestRunner runner = frameworkRegistry.getTestRunner(testFramework);
+ if (runner == null) {
+ throw new Exception("No test frameworks found: " + testFramework);
}
- if (cause != null && cause != e) {
- return translateException(cause);
- }
- return new WebApplicationException(Response.status(Response.Status.INTERNAL_SERVER_ERROR)
- .entity("An unexpected error occured during test execution: " + e.toString()).build());
}
private Map getMap(MultivaluedMap queryParameters) {
@@ -126,4 +167,23 @@ public class TestingService {
}
return map;
}
+
+ private WebApplicationException translateException(Throwable e) {
+ if (e instanceof WebApplicationException) {
+ return (WebApplicationException)e;
+ }
+ Throwable cause = null;
+ if (e instanceof InvocationTargetException) {
+ cause = e.getCause();
+ }
+ if (e instanceof RuntimeException) {
+ cause = e.getCause();
+ }
+ if (cause != null && cause != e) {
+ return translateException(cause);
+ }
+ return new WebApplicationException(Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+ .entity("An unexpected error occured during test execution: " + e.toString()).build());
+ }
+
}
diff --git a/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/exceptions/TestFrameworkException.java b/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/exceptions/TestFrameworkException.java
new file mode 100644
index 0000000000..37965565d4
--- /dev/null
+++ b/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/exceptions/TestFrameworkException.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Rogue Wave Software, 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:
+ * Rogue Wave Software, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.che.api.testing.server.exceptions;
+
+import org.eclipse.che.api.core.ServerException;
+
+/**
+ * Test framework specific exception.
+ *
+ * @author Bartlomiej Laczkowski
+ */
+@SuppressWarnings("serial")
+public class TestFrameworkException extends ServerException {
+
+ public TestFrameworkException(String message) {
+ super(message);
+ }
+
+ public TestFrameworkException(String message, Throwable throwable) {
+ super(message, throwable);
+ }
+
+}
diff --git a/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/framework/TestRunner.java b/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/framework/TestRunner.java
index c13e7310ec..575810d3ca 100644
--- a/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/framework/TestRunner.java
+++ b/wsagent/che-core-api-testing/src/main/java/org/eclipse/che/api/testing/server/framework/TestRunner.java
@@ -10,9 +10,12 @@
*******************************************************************************/
package org.eclipse.che.api.testing.server.framework;
+import java.util.List;
import java.util.Map;
import org.eclipse.che.api.testing.shared.TestResult;
+import org.eclipse.che.api.testing.shared.dto.TestResultDto;
+import org.eclipse.che.api.testing.shared.dto.TestResultRootDto;
/**
* Interface for defining test frameworks for the test runner. All test
@@ -36,8 +39,34 @@ public interface TestRunner {
* @throws Exception
* when test runner execution fails.
*/
+ @Deprecated
TestResult execute(Map testParameters) throws Exception;
+ /**
+ * Call this method to execute the test cases and return the results. The
+ * test runner framework will automatically call this method to execute
+ * tests.
+ *
+ * @param testParameters
+ * Map of parameters for executing the test cases. Most of the
+ * parameters are coming from the REST service request are passed
+ * as a map.
+ * @return the test results.
+ * @throws Exception
+ * when test runner execution fails.
+ */
+ TestResultRootDto runTests(Map testParameters) throws Exception;
+
+ /**
+ * Call this method to get child elements for test result that is stored
+ * under given path (i.e. test cases/test suites that are grouped by related
+ * test suite).
+ *
+ * @param testResultsPath
+ * @return child elements for test result under given path
+ */
+ List getTestResults(List testResultsPath);
+
/**
* The test runner framework will call this method to get the framework name
* for registration.
diff --git a/wsagent/che-core-api-testing/src/test/java/org/eclipse/che/api/testing/server/TestingServiceTest.java b/wsagent/che-core-api-testing/src/test/java/org/eclipse/che/api/testing/server/TestServiceTest.java
similarity index 99%
rename from wsagent/che-core-api-testing/src/test/java/org/eclipse/che/api/testing/server/TestingServiceTest.java
rename to wsagent/che-core-api-testing/src/test/java/org/eclipse/che/api/testing/server/TestServiceTest.java
index 4bef8f98f1..1683f35e82 100644
--- a/wsagent/che-core-api-testing/src/test/java/org/eclipse/che/api/testing/server/TestingServiceTest.java
+++ b/wsagent/che-core-api-testing/src/test/java/org/eclipse/che/api/testing/server/TestServiceTest.java
@@ -40,7 +40,7 @@ import com.jayway.restassured.response.Response;
* @author Mirage Abeysekara
*/
@Listeners(value = {EverrestJetty.class, MockitoTestNGListener.class})
-public class TestingServiceTest {
+public class TestServiceTest {
private final String SERVICE_PATH = "/che/testing";
private final String SERVICE_PATH_RUN_ACTION = SERVICE_PATH + "/run";
diff --git a/wsagent/che-core-git-impl-jgit/pom.xml b/wsagent/che-core-git-impl-jgit/pom.xml
index 3334457ebb..9cede1e1d8 100644
--- a/wsagent/che-core-git-impl-jgit/pom.xml
+++ b/wsagent/che-core-git-impl-jgit/pom.xml
@@ -17,7 +17,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-git-impl-jgitjar
diff --git a/wsagent/che-core-ssh-key-ide/pom.xml b/wsagent/che-core-ssh-key-ide/pom.xml
index 60ade89123..e232b926f6 100644
--- a/wsagent/che-core-ssh-key-ide/pom.xml
+++ b/wsagent/che-core-ssh-key-ide/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.pluginche-plugin-ssh-key-ide
diff --git a/wsagent/che-core-ssh-key-server/pom.xml b/wsagent/che-core-ssh-key-server/pom.xml
index d2867312a8..2151616831 100644
--- a/wsagent/che-core-ssh-key-server/pom.xml
+++ b/wsagent/che-core-ssh-key-server/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTorg.eclipse.che.pluginche-plugin-ssh-key-server
diff --git a/wsagent/che-wsagent-core/pom.xml b/wsagent/che-wsagent-core/pom.xml
index 56b79d8e45..4662427028 100644
--- a/wsagent/che-wsagent-core/pom.xml
+++ b/wsagent/che-wsagent-core/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-wsagent-corewar
diff --git a/wsagent/che-wsagent-core/src/main/java/org/eclipse/che/wsagent/server/WsAgentURLProvider.java b/wsagent/che-wsagent-core/src/main/java/org/eclipse/che/wsagent/server/WsAgentURLProvider.java
index 5eb551a76c..4e5b9eec21 100644
--- a/wsagent/che-wsagent-core/src/main/java/org/eclipse/che/wsagent/server/WsAgentURLProvider.java
+++ b/wsagent/che-wsagent-core/src/main/java/org/eclipse/che/wsagent/server/WsAgentURLProvider.java
@@ -53,6 +53,7 @@ public class WsAgentURLProvider implements Provider {
public String get() {
if (isNullOrEmpty(cachedAgentUrl)) {
try {
+ LOG.warn("requesting:" + workspaceApiEndpoint + wsId);
final WorkspaceDto workspace = requestFactory.fromUrl(workspaceApiEndpoint + wsId)
.useGetMethod()
.request()
diff --git a/wsagent/pom.xml b/wsagent/pom.xml
index 9e13526683..0a6f4abfa5 100644
--- a/wsagent/pom.xml
+++ b/wsagent/pom.xml
@@ -16,12 +16,12 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../core/pom.xmlorg.eclipse.che.coreche-agent-parent
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpomChe Agent Parent
diff --git a/wsagent/wsagent-local/pom.xml b/wsagent/wsagent-local/pom.xml
index 07c4a9a6b7..db6745a381 100644
--- a/wsagent/wsagent-local/pom.xml
+++ b/wsagent/wsagent-local/pom.xml
@@ -16,7 +16,7 @@
che-agent-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTwsagent-localChe Core :: API :: Agent
diff --git a/wsmaster/che-core-api-account/pom.xml b/wsmaster/che-core-api-account/pom.xml
index db24c2c6bc..838f32e6e2 100644
--- a/wsmaster/che-core-api-account/pom.xml
+++ b/wsmaster/che-core-api-account/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-accountChe Core :: API :: Account
diff --git a/wsmaster/che-core-api-auth-shared/pom.xml b/wsmaster/che-core-api-auth-shared/pom.xml
index 6f58148c52..82367faf48 100644
--- a/wsmaster/che-core-api-auth-shared/pom.xml
+++ b/wsmaster/che-core-api-auth-shared/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-auth-sharedjar
diff --git a/wsmaster/che-core-api-auth/pom.xml b/wsmaster/che-core-api-auth/pom.xml
index 0ef5e64e3b..cdb8a2e06e 100644
--- a/wsmaster/che-core-api-auth/pom.xml
+++ b/wsmaster/che-core-api-auth/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-authjar
diff --git a/wsmaster/che-core-api-factory-shared/pom.xml b/wsmaster/che-core-api-factory-shared/pom.xml
index cd877de2c6..9db232def8 100644
--- a/wsmaster/che-core-api-factory-shared/pom.xml
+++ b/wsmaster/che-core-api-factory-shared/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-factory-sharedjar
diff --git a/wsmaster/che-core-api-factory/pom.xml b/wsmaster/che-core-api-factory/pom.xml
index f6c6ad3dee..5cb35ec4e0 100644
--- a/wsmaster/che-core-api-factory/pom.xml
+++ b/wsmaster/che-core-api-factory/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-factoryjar
diff --git a/wsmaster/che-core-api-machine-shared/pom.xml b/wsmaster/che-core-api-machine-shared/pom.xml
index a3fa37a5a4..e47e701cda 100644
--- a/wsmaster/che-core-api-machine-shared/pom.xml
+++ b/wsmaster/che-core-api-machine-shared/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-machine-sharedjar
diff --git a/wsmaster/che-core-api-machine/pom.xml b/wsmaster/che-core-api-machine/pom.xml
index aad437fb88..b0f03057ac 100644
--- a/wsmaster/che-core-api-machine/pom.xml
+++ b/wsmaster/che-core-api-machine/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-machinejar
diff --git a/wsmaster/che-core-api-project-templates-shared/pom.xml b/wsmaster/che-core-api-project-templates-shared/pom.xml
index dde0c2df94..d063635555 100644
--- a/wsmaster/che-core-api-project-templates-shared/pom.xml
+++ b/wsmaster/che-core-api-project-templates-shared/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-project-templates-sharedChe Core :: API :: Project Templates :: Shared
diff --git a/wsmaster/che-core-api-project-templates/pom.xml b/wsmaster/che-core-api-project-templates/pom.xml
index 3e184c52ee..d440f39900 100644
--- a/wsmaster/che-core-api-project-templates/pom.xml
+++ b/wsmaster/che-core-api-project-templates/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-project-templatesChe Core :: API :: Project Templates
diff --git a/wsmaster/che-core-api-ssh-shared/pom.xml b/wsmaster/che-core-api-ssh-shared/pom.xml
index 6290a422cc..21762d7a39 100644
--- a/wsmaster/che-core-api-ssh-shared/pom.xml
+++ b/wsmaster/che-core-api-ssh-shared/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-ssh-sharedjar
diff --git a/wsmaster/che-core-api-ssh/pom.xml b/wsmaster/che-core-api-ssh/pom.xml
index b7d982c26f..f7362a621e 100644
--- a/wsmaster/che-core-api-ssh/pom.xml
+++ b/wsmaster/che-core-api-ssh/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-sshjar
diff --git a/wsmaster/che-core-api-system-shared/pom.xml b/wsmaster/che-core-api-system-shared/pom.xml
index 8f3549c34d..f87b90bc9d 100644
--- a/wsmaster/che-core-api-system-shared/pom.xml
+++ b/wsmaster/che-core-api-system-shared/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-system-sharedjar
diff --git a/wsmaster/che-core-api-system/pom.xml b/wsmaster/che-core-api-system/pom.xml
index c7803787d9..48d707b046 100644
--- a/wsmaster/che-core-api-system/pom.xml
+++ b/wsmaster/che-core-api-system/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-systemjar
diff --git a/wsmaster/che-core-api-user-shared/pom.xml b/wsmaster/che-core-api-user-shared/pom.xml
index 95e692d572..3013bceb68 100644
--- a/wsmaster/che-core-api-user-shared/pom.xml
+++ b/wsmaster/che-core-api-user-shared/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-user-sharedChe Core :: API :: User :: Shared
diff --git a/wsmaster/che-core-api-user/pom.xml b/wsmaster/che-core-api-user/pom.xml
index cb3cefd09b..226bce685b 100644
--- a/wsmaster/che-core-api-user/pom.xml
+++ b/wsmaster/che-core-api-user/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-userChe Core :: API :: User
diff --git a/wsmaster/che-core-api-workspace-shared/pom.xml b/wsmaster/che-core-api-workspace-shared/pom.xml
index 3fd74a1c72..16d4e76841 100644
--- a/wsmaster/che-core-api-workspace-shared/pom.xml
+++ b/wsmaster/che-core-api-workspace-shared/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-workspace-sharedjar
diff --git a/wsmaster/che-core-api-workspace/pom.xml b/wsmaster/che-core-api-workspace/pom.xml
index 5ec6a3db07..88236c4496 100644
--- a/wsmaster/che-core-api-workspace/pom.xml
+++ b/wsmaster/che-core-api-workspace/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-api-workspacejar
diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/environment/server/CheEnvironmentEngine.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/environment/server/CheEnvironmentEngine.java
index c78b30f561..c37607c4ac 100644
--- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/environment/server/CheEnvironmentEngine.java
+++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/environment/server/CheEnvironmentEngine.java
@@ -940,8 +940,11 @@ public class CheEnvironmentEngine {
}
} catch (NotFoundException e) {
try {
- machineLogger.writeLine("Failed to boot machine from snapshot: snapshot not found. " +
- "Machine will be created from origin source.");
+ machineLogger.writeLine(
+ format("Failed to boot machine %s of workspace %s, because snapshot not found. " +
+ "The machine will be created from origin source.",
+ machine.getConfig().getName(),
+ machine.getWorkspaceId()));
} catch (IOException ignore) { }
}
}
@@ -949,8 +952,10 @@ public class CheEnvironmentEngine {
instance = machineStarter.startMachine(machineLogger, machineSource);
} catch (SourceNotFoundException e) {
if (recover) {
- LOG.error("Image of snapshot for machine " + machine.getConfig().getName() +
- " not found. " + "Machine will be created from origin source.");
+ LOG.error(format("The snapshot of the image for the machine %s of the workspace %s not found. " +
+ "The machine will be created from origin source.",
+ machine.getConfig().getName(),
+ machine.getWorkspaceId()));
machine = originMachine;
instance = machineStarter.startMachine(machineLogger, null);
} else {
diff --git a/wsmaster/che-core-sql-schema/pom.xml b/wsmaster/che-core-sql-schema/pom.xml
index 6120c47fc4..0f93b0ecf0 100644
--- a/wsmaster/che-core-sql-schema/pom.xml
+++ b/wsmaster/che-core-sql-schema/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTche-core-sql-schemaChe Core :: SQL :: Schema
diff --git a/wsmaster/integration-tests/cascade-removal/pom.xml b/wsmaster/integration-tests/cascade-removal/pom.xml
index 7aeef614b2..c94448ee27 100644
--- a/wsmaster/integration-tests/cascade-removal/pom.xml
+++ b/wsmaster/integration-tests/cascade-removal/pom.xml
@@ -16,7 +16,7 @@
integration-tests-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTcascade-removalIntegration Tests :: Cascade Removal
diff --git a/wsmaster/integration-tests/pom.xml b/wsmaster/integration-tests/pom.xml
index 1a9ab957af..1412fa39d6 100644
--- a/wsmaster/integration-tests/pom.xml
+++ b/wsmaster/integration-tests/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../pom.xmlintegration-tests-parent
diff --git a/wsmaster/integration-tests/postgresql-tck/pom.xml b/wsmaster/integration-tests/postgresql-tck/pom.xml
index bf2cee371f..75aaa68b09 100644
--- a/wsmaster/integration-tests/postgresql-tck/pom.xml
+++ b/wsmaster/integration-tests/postgresql-tck/pom.xml
@@ -16,7 +16,7 @@
integration-tests-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpostgresql-tckjar
diff --git a/wsmaster/pom.xml b/wsmaster/pom.xml
index 3f014fb832..92e45bca5b 100644
--- a/wsmaster/pom.xml
+++ b/wsmaster/pom.xml
@@ -16,11 +16,11 @@
che-core-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOT../core/pom.xmlche-master-parent
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTpomChe Master Parent
diff --git a/wsmaster/wsmaster-local/pom.xml b/wsmaster/wsmaster-local/pom.xml
index 254023d150..b71c44979f 100644
--- a/wsmaster/wsmaster-local/pom.xml
+++ b/wsmaster/wsmaster-local/pom.xml
@@ -16,7 +16,7 @@
che-master-parentorg.eclipse.che.core
- 5.14.0-SNAPSHOT
+ 5.15.0-SNAPSHOTwsmaster-localChe Core :: API :: Impl Local