diff --git a/assembly-multiuser/assembly-ide-war/pom.xml b/assembly-multiuser/assembly-ide-war/pom.xml index 5f75d082a0..203c47b979 100644 --- a/assembly-multiuser/assembly-ide-war/pom.xml +++ b/assembly-multiuser/assembly-ide-war/pom.xml @@ -42,12 +42,12 @@ war - org.eclipse.che.core - che-machine-authentication-ide + org.eclipse.che.multiuser + che-multiuser-keycloak-ide - org.eclipse.che.plugin - che-plugin-keycloak-ide + org.eclipse.che.multiuser + che-multiuser-machine-authentication-ide diff --git a/assembly-multiuser/assembly-wsagent-war/pom.xml b/assembly-multiuser/assembly-wsagent-war/pom.xml index c9db2786c0..c07b40669f 100644 --- a/assembly-multiuser/assembly-wsagent-war/pom.xml +++ b/assembly-multiuser/assembly-wsagent-war/pom.xml @@ -45,12 +45,12 @@ che-core-commons-inject - org.eclipse.che.core - che-machine-authentication-agent + org.eclipse.che.multiuser + che-multiuser-keycloak-server - org.eclipse.che.plugin - che-plugin-keycloak-server + org.eclipse.che.multiuser + che-multiuser-machine-authentication-agent javax.servlet diff --git a/assembly-multiuser/assembly-wsagent-war/src/main/java/org/eclipse/che/wsagent/server/WsAgentMachineAuthServletModule.java b/assembly-multiuser/assembly-wsagent-war/src/main/java/org/eclipse/che/wsagent/server/WsAgentMachineAuthServletModule.java index 1b3c8360d1..cf1f224b35 100644 --- a/assembly-multiuser/assembly-wsagent-war/src/main/java/org/eclipse/che/wsagent/server/WsAgentMachineAuthServletModule.java +++ b/assembly-multiuser/assembly-wsagent-war/src/main/java/org/eclipse/che/wsagent/server/WsAgentMachineAuthServletModule.java @@ -13,7 +13,7 @@ package org.eclipse.che.wsagent.server; import com.google.inject.servlet.ServletModule; import org.eclipse.che.api.core.cors.CheCorsFilter; import org.eclipse.che.inject.DynaModule; -import org.eclipse.che.machine.authentication.agent.MachineLoginFilter; +import org.eclipse.che.multiuser.machine.authentication.agent.MachineLoginFilter; import org.everrest.guice.servlet.GuiceEverrestServlet; @DynaModule diff --git a/assembly-multiuser/assembly-wsmaster-war/pom.xml b/assembly-multiuser/assembly-wsmaster-war/pom.xml index cf75e8c59e..552f7d570d 100644 --- a/assembly-multiuser/assembly-wsmaster-war/pom.xml +++ b/assembly-multiuser/assembly-wsmaster-war/pom.xml @@ -32,14 +32,6 @@ assembly-wsmaster-war war - - org.eclipse.che.core - che-core-api-account-permission - - - org.eclipse.che.core - che-core-api-authorization-impl - org.eclipse.che.core che-core-api-factory @@ -48,10 +40,6 @@ org.eclipse.che.core che-core-api-system - - org.eclipse.che.core - che-core-api-user-permission - org.eclipse.che.core che-core-api-workspace @@ -65,8 +53,40 @@ che-core-db-vendor-postgresql - org.eclipse.che.core - che-machine-authentication + org.eclipse.che.multiuser + che-multiuser-api-authorization-impl + + + org.eclipse.che.multiuser + che-multiuser-keycloak-server + + + org.eclipse.che.multiuser + che-multiuser-keycloak-token-provider + + + org.eclipse.che.multiuser + che-multiuser-machine-authentication + + + org.eclipse.che.multiuser + che-multiuser-permission-account + + + org.eclipse.che.multiuser + che-multiuser-permission-factory + + + org.eclipse.che.multiuser + che-multiuser-permission-system + + + org.eclipse.che.multiuser + che-multiuser-permission-user + + + org.eclipse.che.multiuser + che-multiuser-permission-workspace org.eclipse.che.plugin @@ -76,14 +96,6 @@ org.eclipse.che.plugin che-plugin-docker-machine-auth - - org.eclipse.che.plugin - che-plugin-keycloak-server - - - org.eclipse.che.plugin - che-plugin-keycloak-token-provider - org.postgresql postgresql diff --git a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/KeycloakApiModule.java b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/KeycloakApiModule.java index 78fc67b4b3..ef2ef46a23 100644 --- a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/KeycloakApiModule.java +++ b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/KeycloakApiModule.java @@ -11,14 +11,14 @@ package org.eclipse.che.api.deploy; import com.google.inject.AbstractModule; -import org.eclipse.che.api.permission.server.PermissionChecker; -import org.eclipse.che.api.permission.server.PermissionCheckerImpl; import org.eclipse.che.api.user.server.jpa.JpaPreferenceDao; import org.eclipse.che.api.user.server.jpa.JpaUserDao; import org.eclipse.che.api.user.server.spi.PreferenceDao; import org.eclipse.che.api.user.server.spi.UserDao; import org.eclipse.che.inject.DynaModule; -import org.eclipse.che.keycloak.server.deploy.KeycloakModule; +import org.eclipse.che.multiuser.api.permission.server.PermissionChecker; +import org.eclipse.che.multiuser.api.permission.server.PermissionCheckerImpl; +import org.eclipse.che.multiuser.keycloak.server.deploy.KeycloakModule; import org.eclipse.che.security.PBKDF2PasswordEncryptor; import org.eclipse.che.security.PasswordEncryptor; diff --git a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/KeycloakApiServletModule.java b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/KeycloakApiServletModule.java index f80e55c6f3..e17a4a1ced 100644 --- a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/KeycloakApiServletModule.java +++ b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/KeycloakApiServletModule.java @@ -12,7 +12,7 @@ package org.eclipse.che.api.deploy; import com.google.inject.servlet.ServletModule; import org.eclipse.che.inject.DynaModule; -import org.eclipse.che.keycloak.server.deploy.KeycloakServletModule; +import org.eclipse.che.multiuser.keycloak.server.deploy.KeycloakServletModule; /** @author Max Shaposhnik (mshaposhnik@codenvy.com) */ @DynaModule diff --git a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthModule.java b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthModule.java index e159510d33..97c6a18e5f 100644 --- a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthModule.java +++ b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthModule.java @@ -16,8 +16,14 @@ import org.eclipse.che.api.workspace.server.WorkspaceServiceLinksInjector; import org.eclipse.che.commons.auth.token.HeaderRequestTokenExtractor; import org.eclipse.che.commons.auth.token.RequestTokenExtractor; import org.eclipse.che.inject.DynaModule; -import org.eclipse.che.machine.authentication.server.MachineAuthLinksInjector; -import org.eclipse.che.machine.authentication.server.interceptor.InterceptorModule; +import org.eclipse.che.multiuser.machine.authentication.server.AuthWsAgentHealthChecker; +import org.eclipse.che.multiuser.machine.authentication.server.MachineAuthLinksInjector; +import org.eclipse.che.multiuser.machine.authentication.server.MachineSessionInvalidator; +import org.eclipse.che.multiuser.machine.authentication.server.MachineTokenPermissionsFilter; +import org.eclipse.che.multiuser.machine.authentication.server.MachineTokenRegistry; +import org.eclipse.che.multiuser.machine.authentication.server.MachineTokenService; +import org.eclipse.che.multiuser.machine.authentication.server.WorkspaceServiceAuthLinksInjector; +import org.eclipse.che.multiuser.machine.authentication.server.interceptor.InterceptorModule; /** * Machine authentification bindings. @@ -31,14 +37,13 @@ public class MachineAuthModule extends AbstractModule { install(new InterceptorModule()); bind(MachineLinksInjector.class).to(MachineAuthLinksInjector.class); bind(org.eclipse.che.api.agent.server.WsAgentHealthChecker.class) - .to(org.eclipse.che.machine.authentication.server.AuthWsAgentHealthChecker.class); - bind(org.eclipse.che.machine.authentication.server.MachineTokenPermissionsFilter.class); - bind(org.eclipse.che.machine.authentication.server.MachineTokenService.class); - bind(org.eclipse.che.machine.authentication.server.MachineTokenRegistry.class); - bind(org.eclipse.che.machine.authentication.server.MachineSessionInvalidator.class); + .to(AuthWsAgentHealthChecker.class); + bind(MachineTokenPermissionsFilter.class); + bind(MachineTokenService.class); + bind(MachineTokenRegistry.class); + bind(MachineSessionInvalidator.class); bind(RequestTokenExtractor.class).to(HeaderRequestTokenExtractor.class); - bind(WorkspaceServiceLinksInjector.class) - .to(org.eclipse.che.machine.authentication.server.WorkspaceServiceAuthLinksInjector.class); + bind(WorkspaceServiceLinksInjector.class).to(WorkspaceServiceAuthLinksInjector.class); bind(org.eclipse.che.api.environment.server.MachineInstanceProvider.class) .to(org.eclipse.che.plugin.docker.machine.AuthMachineProviderImpl.class); } diff --git a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthServletModule.java b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthServletModule.java index 194baf65cd..3752368239 100644 --- a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthServletModule.java +++ b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthServletModule.java @@ -12,7 +12,7 @@ package org.eclipse.che.api.deploy; import com.google.inject.servlet.ServletModule; import org.eclipse.che.inject.DynaModule; -import org.eclipse.che.machine.authentication.server.MachineLoginFilter; +import org.eclipse.che.multiuser.machine.authentication.server.MachineLoginFilter; /** * Machine authentification bindings. diff --git a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MultiUserCheWsMasterModule.java b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MultiUserCheWsMasterModule.java index b513beda37..8bd4173473 100644 --- a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MultiUserCheWsMasterModule.java +++ b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MultiUserCheWsMasterModule.java @@ -13,8 +13,9 @@ package org.eclipse.che.api.deploy; import com.google.inject.AbstractModule; import com.google.inject.multibindings.Multibinder; import javax.sql.DataSource; -import org.eclipse.che.api.permission.server.account.AccountPermissionsChecker; import org.eclipse.che.inject.DynaModule; +import org.eclipse.che.multiuser.api.permission.server.account.AccountPermissionsChecker; +import org.eclipse.che.multiuser.permission.account.PersonalAccountPermissionsChecker; @DynaModule public class MultiUserCheWsMasterModule extends AbstractModule { @@ -22,16 +23,23 @@ public class MultiUserCheWsMasterModule extends AbstractModule { @Override protected void configure() { bind(DataSource.class).toProvider(org.eclipse.che.core.db.JndiDataSourceProvider.class); - bind(org.eclipse.che.api.system.server.SystemServicePermissionsFilter.class); - install(new org.eclipse.che.api.permission.server.jpa.SystemPermissionsJpaModule()); - install(new org.eclipse.che.api.permission.server.PermissionsModule()); - install(new org.eclipse.che.api.workspace.server.WorkspaceApiPermissionsModule()); - bind(org.eclipse.che.api.user.server.permissions.UserProfileServicePermissionsFilter.class); - bind(org.eclipse.che.api.user.server.permissions.UserServicePermissionsFilter.class); - bind(org.eclipse.che.api.factory.server.permissions.FactoryPermissionsFilter.class); + install(new org.eclipse.che.multiuser.api.permission.server.jpa.SystemPermissionsJpaModule()); + install(new org.eclipse.che.multiuser.api.permission.server.PermissionsModule()); + install( + new org.eclipse.che.multiuser.permission.workspace.server.WorkspaceApiPermissionsModule()); + install( + new org.eclipse.che.multiuser.permission.workspace.server.jpa + .MultiuserWorkspaceJpaModule()); + + //Permission filters + bind(org.eclipse.che.multiuser.permission.system.SystemServicePermissionsFilter.class); + bind(org.eclipse.che.multiuser.permission.user.UserProfileServicePermissionsFilter.class); + bind(org.eclipse.che.multiuser.permission.user.UserServicePermissionsFilter.class); + bind(org.eclipse.che.multiuser.permission.factory.FactoryPermissionsFilter.class); bind(org.eclipse.che.plugin.activity.ActivityPermissionsFilter.class); + Multibinder.newSetBinder(binder(), AccountPermissionsChecker.class) .addBinding() - .to(org.eclipse.che.account.permission.PersonalAccountPermissionsChecker.class); + .to(PersonalAccountPermissionsChecker.class); } } diff --git a/assembly-multiuser/assembly-wsmaster-war/src/main/resources/META-INF/persistence.xml b/assembly-multiuser/assembly-wsmaster-war/src/main/resources/META-INF/persistence.xml index f33dd7a187..ac09ad43d6 100644 --- a/assembly-multiuser/assembly-wsmaster-war/src/main/resources/META-INF/persistence.xml +++ b/assembly-multiuser/assembly-wsmaster-war/src/main/resources/META-INF/persistence.xml @@ -54,11 +54,11 @@ org.eclipse.che.api.ssh.server.model.impl.SshPairImpl - org.eclipse.che.api.permission.server.model.impl.SystemPermissionsImpl - org.eclipse.che.api.permission.server.model.impl.AbstractPermissions - org.eclipse.che.api.workspace.server.model.impl.WorkerImpl - org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl - org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl + org.eclipse.che.multiuser.api.permission.server.model.impl.SystemPermissionsImpl + org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions + org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl + org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl + org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl true diff --git a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/CheWsMasterModule.java b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/CheWsMasterModule.java index 1b49db9f22..11ceeb2850 100644 --- a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/CheWsMasterModule.java +++ b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/CheWsMasterModule.java @@ -33,8 +33,12 @@ public class CheWsMasterModule extends AbstractModule { bind(org.eclipse.che.api.environment.server.MachineInstanceProvider.class) .to(org.eclipse.che.plugin.docker.machine.MachineProviderImpl.class); + bind(org.eclipse.che.api.workspace.server.stack.StackLoader.class); bind(DataSource.class).toProvider(org.eclipse.che.core.db.h2.H2DataSourceProvider.class); + install(new org.eclipse.che.api.user.server.jpa.UserJpaModule()); + install(new org.eclipse.che.api.workspace.server.jpa.WorkspaceJpaModule()); + bind(org.eclipse.che.api.user.server.CheUserCreator.class); } } diff --git a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java index eb20e74653..20e9b08b75 100644 --- a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java +++ b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterModule.java @@ -37,7 +37,9 @@ import org.eclipse.che.api.factory.server.FactoryAcceptValidator; import org.eclipse.che.api.factory.server.FactoryCreateValidator; import org.eclipse.che.api.factory.server.FactoryEditValidator; import org.eclipse.che.api.factory.server.FactoryParametersResolver; +import org.eclipse.che.api.machine.server.jpa.MachineJpaModule; import org.eclipse.che.api.machine.server.recipe.RecipeLoader; +import org.eclipse.che.api.machine.server.recipe.RecipeService; import org.eclipse.che.api.machine.shared.Constants; import org.eclipse.che.api.workspace.server.WorkspaceConfigMessageBodyAdapter; import org.eclipse.che.api.workspace.server.WorkspaceMessageBodyAdapter; @@ -57,8 +59,7 @@ public class WsMasterModule extends AbstractModule { install(new com.google.inject.persist.jpa.JpaPersistModule("main")); install(new org.eclipse.che.account.api.AccountModule()); install(new org.eclipse.che.api.ssh.server.jpa.SshJpaModule()); - install(new org.eclipse.che.api.machine.server.jpa.MachineJpaModule()); - install(new org.eclipse.che.api.workspace.server.jpa.WorkspaceJpaModule()); + install(new MachineJpaModule()); install(new org.eclipse.che.api.core.jsonrpc.impl.JsonRpcModule()); install(new org.eclipse.che.api.core.websocket.impl.WebSocketModule()); @@ -91,12 +92,11 @@ public class WsMasterModule extends AbstractModule { bind(org.eclipse.che.api.project.server.template.ProjectTemplateRegistry.class); bind(org.eclipse.che.api.project.server.template.ProjectTemplateService.class); bind(org.eclipse.che.api.ssh.server.SshService.class); - bind(org.eclipse.che.api.machine.server.recipe.RecipeService.class); + bind(RecipeService.class); bind(org.eclipse.che.api.user.server.UserService.class); bind(org.eclipse.che.api.user.server.ProfileService.class); bind(org.eclipse.che.api.user.server.PreferencesService.class); - bind(org.eclipse.che.api.workspace.server.stack.StackLoader.class); MapBinder stacks = MapBinder.newMapBinder( binder(), String.class, String.class, Names.named(StackLoader.CHE_PREDEFINED_STACKS)); @@ -133,7 +133,7 @@ public class WsMasterModule extends AbstractModule { new org.eclipse.che.api.machine.server.model.impl.ServerConfImpl( Constants.WSAGENT_DEBUG_REFERENCE, "4403/tcp", "http", null)); - bind(org.eclipse.che.api.machine.server.recipe.RecipeLoader.class); + bind(RecipeLoader.class); Multibinder.newSetBinder( binder(), String.class, Names.named(RecipeLoader.CHE_PREDEFINED_RECIPES)) .addBinding() diff --git a/dashboard/pom.xml b/dashboard/pom.xml index e1acea9022..7740d89889 100644 --- a/dashboard/pom.xml +++ b/dashboard/pom.xml @@ -221,8 +221,8 @@ - - + + diff --git a/wsmaster/che-core-api-authorization-impl/pom.xml b/multiuser/api/che-multiuser-api-authorization-impl/pom.xml similarity index 78% rename from wsmaster/che-core-api-authorization-impl/pom.xml rename to multiuser/api/che-multiuser-api-authorization-impl/pom.xml index 8334b5a635..759e4c0594 100644 --- a/wsmaster/che-core-api-authorization-impl/pom.xml +++ b/multiuser/api/che-multiuser-api-authorization-impl/pom.xml @@ -14,13 +14,13 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-api + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-core-api-authorization-impl + che-multiuser-api-authorization-impl jar - Che Core :: API :: Authorization Impl + Che Multiuser :: API :: Authorization Impl javax.inject @@ -30,10 +30,6 @@ javax.ws.rs javax.ws.rs-api - - org.eclipse.che.core - che-core-api-authorization - org.eclipse.che.core che-core-api-core @@ -43,12 +39,16 @@ che-core-api-dto - org.eclipse.che.core - che-core-api-permission + org.eclipse.che.multiuser + che-multiuser-api-authorization - org.eclipse.che.core - che-core-api-permission-shared + org.eclipse.che.multiuser + che-multiuser-api-permission + + + org.eclipse.che.multiuser + che-multiuser-api-permission-shared ch.qos.logback diff --git a/wsmaster/che-core-api-authorization-impl/src/main/java/org/eclipse/che/api/permission/server/PermissionCheckerImpl.java b/multiuser/api/che-multiuser-api-authorization-impl/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionCheckerImpl.java similarity index 95% rename from wsmaster/che-core-api-authorization-impl/src/main/java/org/eclipse/che/api/permission/server/PermissionCheckerImpl.java rename to multiuser/api/che-multiuser-api-authorization-impl/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionCheckerImpl.java index 7ca0526caf..97896518d8 100644 --- a/wsmaster/che-core-api-authorization-impl/src/main/java/org/eclipse/che/api/permission/server/PermissionCheckerImpl.java +++ b/multiuser/api/che-multiuser-api-authorization-impl/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionCheckerImpl.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import javax.inject.Inject; import org.eclipse.che.api.core.ConflictException; diff --git a/wsmaster/che-core-api-authorization-impl/src/test/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImplTest.java b/multiuser/api/che-multiuser-api-authorization-impl/src/test/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImplTest.java similarity index 96% rename from wsmaster/che-core-api-authorization-impl/src/test/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImplTest.java rename to multiuser/api/che-multiuser-api-authorization-impl/src/test/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImplTest.java index 9543e2b726..1487d8d19c 100644 --- a/wsmaster/che-core-api-authorization-impl/src/test/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImplTest.java +++ b/multiuser/api/che-multiuser-api-authorization-impl/src/test/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImplTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import static java.util.Arrays.asList; import static org.mockito.Matchers.anyObject; @@ -25,8 +25,8 @@ import javax.ws.rs.core.UriBuilder; import org.eclipse.che.api.core.rest.HttpJsonRequest; import org.eclipse.che.api.core.rest.HttpJsonRequestFactory; import org.eclipse.che.api.core.rest.HttpJsonResponse; -import org.eclipse.che.api.permission.shared.dto.PermissionsDto; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.shared.dto.PermissionsDto; import org.mockito.Mock; import org.mockito.stubbing.Answer; import org.mockito.testng.MockitoTestNGListener; diff --git a/wsmaster/che-core-api-authorization-impl/src/test/java/org/eclipse/che/api/permission/server/PermissionCheckerImplTest.java b/multiuser/api/che-multiuser-api-authorization-impl/src/test/java/org/eclipse/che/multiuser/api/permission/server/PermissionCheckerImplTest.java similarity index 97% rename from wsmaster/che-core-api-authorization-impl/src/test/java/org/eclipse/che/api/permission/server/PermissionCheckerImplTest.java rename to multiuser/api/che-multiuser-api-authorization-impl/src/test/java/org/eclipse/che/multiuser/api/permission/server/PermissionCheckerImplTest.java index e91339864c..64148fbb3c 100644 --- a/wsmaster/che-core-api-authorization-impl/src/test/java/org/eclipse/che/api/permission/server/PermissionCheckerImplTest.java +++ b/multiuser/api/che-multiuser-api-authorization-impl/src/test/java/org/eclipse/che/multiuser/api/permission/server/PermissionCheckerImplTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; diff --git a/wsmaster/che-core-api-authorization-impl/src/test/resources/logback-test.xml b/multiuser/api/che-multiuser-api-authorization-impl/src/test/resources/logback-test.xml similarity index 100% rename from wsmaster/che-core-api-authorization-impl/src/test/resources/logback-test.xml rename to multiuser/api/che-multiuser-api-authorization-impl/src/test/resources/logback-test.xml diff --git a/wsmaster/che-core-api-authorization/pom.xml b/multiuser/api/che-multiuser-api-authorization/pom.xml similarity index 89% rename from wsmaster/che-core-api-authorization/pom.xml rename to multiuser/api/che-multiuser-api-authorization/pom.xml index 518ab6c23c..202a6820ba 100644 --- a/wsmaster/che-core-api-authorization/pom.xml +++ b/multiuser/api/che-multiuser-api-authorization/pom.xml @@ -14,13 +14,13 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-api + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-core-api-authorization + che-multiuser-api-authorization jar - Che Core :: API :: Authorization + Che Multiuser :: API :: Authorization ${project.build.directory}/generated-sources/dto/ @@ -54,12 +54,12 @@ che-core-api-dto - org.eclipse.che.core - che-core-api-permission + org.eclipse.che.multiuser + che-multiuser-api-permission - org.eclipse.che.core - che-core-api-permission-shared + org.eclipse.che.multiuser + che-multiuser-api-permission-shared org.slf4j @@ -113,8 +113,8 @@ - org.eclipse.che.core - che-core-api-permission-shared + org.eclipse.che.multiuser + che-multiuser-api-permission-shared ${project.version} @@ -123,7 +123,7 @@ org.eclipse.che.api.permission.shared.dto ${dto-generator-out-directory} - org.eclipse.che.api.permission.server.dto.DtoServerImpls + org.eclipse.che.multiuser.api.permission.server.dto.DtoServerImpls server diff --git a/wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/AuthorizedSubject.java b/multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/AuthorizedSubject.java similarity index 97% rename from wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/AuthorizedSubject.java rename to multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/AuthorizedSubject.java index ab740aeafc..4490520d5f 100644 --- a/wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/AuthorizedSubject.java +++ b/multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/AuthorizedSubject.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import static java.lang.String.format; diff --git a/wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImpl.java b/multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImpl.java similarity index 96% rename from wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImpl.java rename to multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImpl.java index 5d6fa42417..597955f3c9 100644 --- a/wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImpl.java +++ b/multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImpl.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -24,7 +24,7 @@ import javax.ws.rs.core.UriBuilder; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.rest.HttpJsonRequestFactory; -import org.eclipse.che.api.permission.shared.dto.PermissionsDto; +import org.eclipse.che.multiuser.api.permission.shared.dto.PermissionsDto; /** * Implementation of {@link PermissionChecker} that load permissions by http requests to {@link diff --git a/wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/PermissionChecker.java b/multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionChecker.java similarity index 96% rename from wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/PermissionChecker.java rename to multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionChecker.java index 2bfcad5a1a..bbfbdb6329 100644 --- a/wsmaster/che-core-api-authorization/src/main/java/org/eclipse/che/api/permission/server/PermissionChecker.java +++ b/multiuser/api/che-multiuser-api-authorization/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionChecker.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.NotFoundException; diff --git a/wsmaster/che-core-api-authorization/src/test/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImplTest.java b/multiuser/api/che-multiuser-api-authorization/src/test/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImplTest.java similarity index 96% rename from wsmaster/che-core-api-authorization/src/test/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImplTest.java rename to multiuser/api/che-multiuser-api-authorization/src/test/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImplTest.java index 9543e2b726..1487d8d19c 100644 --- a/wsmaster/che-core-api-authorization/src/test/java/org/eclipse/che/api/permission/server/HttpPermissionCheckerImplTest.java +++ b/multiuser/api/che-multiuser-api-authorization/src/test/java/org/eclipse/che/multiuser/api/permission/server/HttpPermissionCheckerImplTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import static java.util.Arrays.asList; import static org.mockito.Matchers.anyObject; @@ -25,8 +25,8 @@ import javax.ws.rs.core.UriBuilder; import org.eclipse.che.api.core.rest.HttpJsonRequest; import org.eclipse.che.api.core.rest.HttpJsonRequestFactory; import org.eclipse.che.api.core.rest.HttpJsonResponse; -import org.eclipse.che.api.permission.shared.dto.PermissionsDto; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.shared.dto.PermissionsDto; import org.mockito.Mock; import org.mockito.stubbing.Answer; import org.mockito.testng.MockitoTestNGListener; diff --git a/wsmaster/che-core-api-authorization/src/test/resources/logback-test.xml b/multiuser/api/che-multiuser-api-authorization/src/test/resources/logback-test.xml similarity index 100% rename from wsmaster/che-core-api-authorization/src/test/resources/logback-test.xml rename to multiuser/api/che-multiuser-api-authorization/src/test/resources/logback-test.xml diff --git a/wsmaster/che-core-api-permission-shared/pom.xml b/multiuser/api/che-multiuser-api-permission-shared/pom.xml similarity index 83% rename from wsmaster/che-core-api-permission-shared/pom.xml rename to multiuser/api/che-multiuser-api-permission-shared/pom.xml index d4574c358d..69823be47c 100644 --- a/wsmaster/che-core-api-permission-shared/pom.xml +++ b/multiuser/api/che-multiuser-api-permission-shared/pom.xml @@ -14,13 +14,13 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-api + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-core-api-permission-shared + che-multiuser-api-permission-shared jar - Che :: Permissions :: Shared + Che Multiuser :: Permissions :: Shared org.eclipse.che.core diff --git a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/dto/DomainDto.java b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/dto/DomainDto.java similarity index 87% rename from wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/dto/DomainDto.java rename to multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/dto/DomainDto.java index 47aa5d4051..3a3a548726 100644 --- a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/dto/DomainDto.java +++ b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/dto/DomainDto.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.shared.dto; +package org.eclipse.che.multiuser.api.permission.shared.dto; import java.util.List; -import org.eclipse.che.api.permission.shared.model.PermissionsDomain; import org.eclipse.che.dto.shared.DTO; +import org.eclipse.che.multiuser.api.permission.shared.model.PermissionsDomain; /** @author Sergii Leschenko */ @DTO diff --git a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/dto/PermissionsDto.java b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/dto/PermissionsDto.java similarity index 88% rename from wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/dto/PermissionsDto.java rename to multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/dto/PermissionsDto.java index 8525b83233..c23a989c5e 100644 --- a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/dto/PermissionsDto.java +++ b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/dto/PermissionsDto.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.shared.dto; +package org.eclipse.che.multiuser.api.permission.shared.dto; import java.util.List; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.dto.shared.DTO; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** @author Sergii Leschenko */ @DTO diff --git a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/event/EventType.java b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/event/EventType.java similarity index 89% rename from wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/event/EventType.java rename to multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/event/EventType.java index f1cbe51278..8b339cc6ab 100644 --- a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/event/EventType.java +++ b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/event/EventType.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.shared.event; +package org.eclipse.che.multiuser.api.permission.shared.event; /** * Defines list of event types related to permissions. diff --git a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/event/PermissionsEvent.java b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/event/PermissionsEvent.java similarity index 86% rename from wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/event/PermissionsEvent.java rename to multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/event/PermissionsEvent.java index 4da7fd3a07..b31c7aa004 100644 --- a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/event/PermissionsEvent.java +++ b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/event/PermissionsEvent.java @@ -8,10 +8,10 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.shared.event; +package org.eclipse.che.multiuser.api.permission.shared.event; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.annotation.Nullable; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * The base interface for all events related to permissions. diff --git a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/model/Permissions.java b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/model/Permissions.java similarity index 94% rename from wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/model/Permissions.java rename to multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/model/Permissions.java index a0980b496e..f5bdf219d9 100644 --- a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/model/Permissions.java +++ b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/model/Permissions.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.shared.model; +package org.eclipse.che.multiuser.api.permission.shared.model; import java.util.List; import org.eclipse.che.commons.annotation.Nullable; diff --git a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/model/PermissionsDomain.java b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/model/PermissionsDomain.java similarity index 92% rename from wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/model/PermissionsDomain.java rename to multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/model/PermissionsDomain.java index 1e8812b610..f7a7bc95e1 100644 --- a/wsmaster/che-core-api-permission-shared/src/main/java/org/eclipse/che/api/permission/shared/model/PermissionsDomain.java +++ b/multiuser/api/che-multiuser-api-permission-shared/src/main/java/org/eclipse/che/multiuser/api/permission/shared/model/PermissionsDomain.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.shared.model; +package org.eclipse.che.multiuser.api.permission.shared.model; import java.util.List; diff --git a/wsmaster/che-core-api-permission/pom.xml b/multiuser/api/che-multiuser-api-permission/pom.xml similarity index 93% rename from wsmaster/che-core-api-permission/pom.xml rename to multiuser/api/che-multiuser-api-permission/pom.xml index b8de417338..9036be6997 100644 --- a/wsmaster/che-core-api-permission/pom.xml +++ b/multiuser/api/che-multiuser-api-permission/pom.xml @@ -14,13 +14,13 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-api + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-core-api-permission + che-multiuser-api-permission jar - Che :: Permissions API + Che Multiuser :: Permissions API ${project.build.directory}/generated-sources/dto/ @@ -69,10 +69,6 @@ org.eclipse.che.core che-core-api-dto - - org.eclipse.che.core - che-core-api-permission-shared - org.eclipse.che.core che-core-api-user @@ -93,6 +89,10 @@ org.eclipse.che.core che-core-db + + org.eclipse.che.multiuser + che-multiuser-api-permission-shared + org.eclipse.persistence eclipselink @@ -194,17 +194,17 @@ - org.eclipse.che.core - che-core-api-permission-shared + org.eclipse.che.multiuser + che-multiuser-api-permission-shared ${project.version} - org.eclipse.che.api.permission.shared.dto + org.eclipse.che.multiuser.api.permission.shared.dto ${dto-generator-out-directory} - org.ecipse.che.api.permission.server.dto.DtoServerImpls + org.ecipse.che.api.multiuser.permission.server.dto.DtoServerImpls server diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/AbstractPermissionsDomain.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/AbstractPermissionsDomain.java similarity index 92% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/AbstractPermissionsDomain.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/AbstractPermissionsDomain.java index c3bed365dd..0c16714b9a 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/AbstractPermissionsDomain.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/AbstractPermissionsDomain.java @@ -8,15 +8,15 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import com.google.common.collect.ImmutableList; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.shared.model.PermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.shared.model.PermissionsDomain; /** * Abstract implementation for {@link PermissionsDomain} diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/InstanceParameterValidator.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/InstanceParameterValidator.java similarity index 97% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/InstanceParameterValidator.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/InstanceParameterValidator.java index 5ba234579f..fb4ec0124d 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/InstanceParameterValidator.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/InstanceParameterValidator.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import javax.inject.Inject; import javax.inject.Singleton; diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsManager.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsManager.java similarity index 95% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsManager.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsManager.java index 13e9cc2bde..cf609fa902 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsManager.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsManager.java @@ -8,10 +8,10 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import static com.google.common.base.MoreObjects.firstNonNull; -import static org.eclipse.che.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; +import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -31,15 +31,15 @@ import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.Pages; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.notification.EventService; -import org.eclipse.che.api.permission.server.event.PermissionsCreatedEvent; -import org.eclipse.che.api.permission.server.event.PermissionsRemovedEvent; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.lang.concurrent.StripedLocks; import org.eclipse.che.commons.lang.concurrent.Unlocker; import org.eclipse.che.commons.subject.Subject; +import org.eclipse.che.multiuser.api.permission.server.event.PermissionsCreatedEvent; +import org.eclipse.che.multiuser.api.permission.server.event.PermissionsRemovedEvent; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Facade for Permissions related operations. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsModule.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsModule.java similarity index 68% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsModule.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsModule.java index 9c5330ffbb..37f2f618b2 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsModule.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsModule.java @@ -8,18 +8,18 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import com.google.inject.AbstractModule; import com.google.inject.multibindings.MapBinder; import com.google.inject.multibindings.Multibinder; import com.google.inject.name.Names; -import org.eclipse.che.api.permission.server.account.AccountPermissionsChecker; -import org.eclipse.che.api.permission.server.filter.GetPermissionsFilter; -import org.eclipse.che.api.permission.server.filter.RemovePermissionsFilter; -import org.eclipse.che.api.permission.server.filter.SetPermissionsFilter; -import org.eclipse.che.api.permission.server.filter.check.RemovePermissionsChecker; -import org.eclipse.che.api.permission.server.filter.check.SetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.server.account.AccountPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.GetPermissionsFilter; +import org.eclipse.che.multiuser.api.permission.server.filter.RemovePermissionsFilter; +import org.eclipse.che.multiuser.api.permission.server.filter.SetPermissionsFilter; +import org.eclipse.che.multiuser.api.permission.server.filter.check.RemovePermissionsChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.SetPermissionsChecker; /** @author Sergii Leschenko */ public class PermissionsModule extends AbstractModule { diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsService.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsService.java similarity index 95% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsService.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsService.java index 0b73add968..e24e8c8b88 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/PermissionsService.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/PermissionsService.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import static com.google.common.base.Strings.isNullOrEmpty; import static java.util.Collections.singletonList; @@ -39,13 +39,13 @@ import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.rest.Service; import org.eclipse.che.api.core.rest.annotations.Required; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.shared.dto.DomainDto; -import org.eclipse.che.api.permission.shared.dto.PermissionsDto; -import org.eclipse.che.api.permission.shared.model.Permissions; -import org.eclipse.che.api.permission.shared.model.PermissionsDomain; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.shared.dto.DomainDto; +import org.eclipse.che.multiuser.api.permission.shared.dto.PermissionsDto; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; +import org.eclipse.che.multiuser.api.permission.shared.model.PermissionsDomain; /** * Defines Permissions REST API diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/SuperPrivilegesChecker.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/SuperPrivilegesChecker.java similarity index 96% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/SuperPrivilegesChecker.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/SuperPrivilegesChecker.java index d9688fb664..e82c733c47 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/SuperPrivilegesChecker.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/SuperPrivilegesChecker.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import java.util.Set; import java.util.stream.Collectors; import javax.inject.Inject; import javax.inject.Named; -import org.eclipse.che.api.permission.shared.model.PermissionsDomain; import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.multiuser.api.permission.shared.model.PermissionsDomain; /** * Checks that current subject has privileges to perform some operation without required diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/SystemDomain.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/SystemDomain.java similarity index 92% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/SystemDomain.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/SystemDomain.java index 4e428a5a7b..63c3e279e9 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/SystemDomain.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/SystemDomain.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import java.util.List; import java.util.Set; @@ -16,7 +16,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import javax.inject.Inject; import javax.inject.Named; -import org.eclipse.che.api.permission.server.model.impl.SystemPermissionsImpl; +import org.eclipse.che.multiuser.api.permission.server.model.impl.SystemPermissionsImpl; /** * Domain for storing actions that are used for managing system e.g. user management, configuration properties management. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/account/AccountOperation.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/account/AccountOperation.java similarity index 92% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/account/AccountOperation.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/account/AccountOperation.java index 0829b07596..fed903d4c2 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/account/AccountOperation.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/account/AccountOperation.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.account; +package org.eclipse.che.multiuser.api.permission.server.account; /** * Actions that can be performed by users in accounts. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/account/AccountPermissionsChecker.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/account/AccountPermissionsChecker.java similarity index 94% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/account/AccountPermissionsChecker.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/account/AccountPermissionsChecker.java index ca2feb6fb1..019efc5139 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/account/AccountPermissionsChecker.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/account/AccountPermissionsChecker.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.account; +package org.eclipse.che.multiuser.api.permission.server.account; import org.eclipse.che.api.core.ForbiddenException; diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/event/PermissionsCreatedEvent.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/event/PermissionsCreatedEvent.java similarity index 72% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/event/PermissionsCreatedEvent.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/event/PermissionsCreatedEvent.java index e032eca3d7..e1e6111ae4 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/event/PermissionsCreatedEvent.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/event/PermissionsCreatedEvent.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.event; +package org.eclipse.che.multiuser.api.permission.server.event; -import static org.eclipse.che.api.permission.shared.event.EventType.PERMISSIONS_ADDED; +import static org.eclipse.che.multiuser.api.permission.shared.event.EventType.PERMISSIONS_ADDED; -import org.eclipse.che.api.permission.shared.event.EventType; -import org.eclipse.che.api.permission.shared.event.PermissionsEvent; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.annotation.Nullable; +import org.eclipse.che.multiuser.api.permission.shared.event.EventType; +import org.eclipse.che.multiuser.api.permission.shared.event.PermissionsEvent; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Defines permissions added events. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/event/PermissionsRemovedEvent.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/event/PermissionsRemovedEvent.java similarity index 72% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/event/PermissionsRemovedEvent.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/event/PermissionsRemovedEvent.java index ba1d0af26d..c6b949d9f1 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/event/PermissionsRemovedEvent.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/event/PermissionsRemovedEvent.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.event; +package org.eclipse.che.multiuser.api.permission.server.event; -import static org.eclipse.che.api.permission.shared.event.EventType.PERMISSIONS_REMOVED; +import static org.eclipse.che.multiuser.api.permission.shared.event.EventType.PERMISSIONS_REMOVED; -import org.eclipse.che.api.permission.shared.event.EventType; -import org.eclipse.che.api.permission.shared.event.PermissionsEvent; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.annotation.Nullable; +import org.eclipse.che.multiuser.api.permission.shared.event.EventType; +import org.eclipse.che.multiuser.api.permission.shared.event.PermissionsEvent; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Defines permissions added events. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/GetPermissionsFilter.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/GetPermissionsFilter.java similarity index 88% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/GetPermissionsFilter.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/GetPermissionsFilter.java index cbcf8bfd02..22b207c7f3 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/GetPermissionsFilter.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/GetPermissionsFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter; +package org.eclipse.che.multiuser.api.permission.server.filter; import javax.inject.Inject; import javax.ws.rs.Path; @@ -19,11 +19,11 @@ import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.InstanceParameterValidator; -import org.eclipse.che.api.permission.server.PermissionsManager; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.api.permission.server.InstanceParameterValidator; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/RemovePermissionsFilter.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/RemovePermissionsFilter.java similarity index 87% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/RemovePermissionsFilter.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/RemovePermissionsFilter.java index b29802ee11..f14b93b285 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/RemovePermissionsFilter.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/RemovePermissionsFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter; +package org.eclipse.che.multiuser.api.permission.server.filter; import javax.inject.Inject; import javax.ws.rs.Path; @@ -18,12 +18,12 @@ import org.eclipse.che.api.core.BadRequestException; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.InstanceParameterValidator; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; -import org.eclipse.che.api.permission.server.filter.check.DomainsPermissionsCheckers; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.api.permission.server.InstanceParameterValidator; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DomainsPermissionsCheckers; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/SetPermissionsFilter.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/SetPermissionsFilter.java similarity index 84% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/SetPermissionsFilter.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/SetPermissionsFilter.java index 66c12d9db8..0c2c8ffc47 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/SetPermissionsFilter.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/SetPermissionsFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter; +package org.eclipse.che.multiuser.api.permission.server.filter; import static com.google.common.base.Strings.isNullOrEmpty; @@ -18,11 +18,11 @@ import org.eclipse.che.api.core.BadRequestException; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.InstanceParameterValidator; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; -import org.eclipse.che.api.permission.server.filter.check.DomainsPermissionsCheckers; -import org.eclipse.che.api.permission.shared.dto.PermissionsDto; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.api.permission.server.InstanceParameterValidator; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DomainsPermissionsCheckers; +import org.eclipse.che.multiuser.api.permission.shared.dto.PermissionsDto; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DefaultRemovePermissionsChecker.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DefaultRemovePermissionsChecker.java similarity index 85% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DefaultRemovePermissionsChecker.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DefaultRemovePermissionsChecker.java index c5b9c7afc7..d13028abc6 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DefaultRemovePermissionsChecker.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DefaultRemovePermissionsChecker.java @@ -8,9 +8,9 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter.check; +package org.eclipse.che.multiuser.api.permission.server.filter.check; -import static org.eclipse.che.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; +import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import javax.inject.Singleton; import org.eclipse.che.api.core.ForbiddenException; diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DefaultSetPermissionsChecker.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DefaultSetPermissionsChecker.java similarity index 80% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DefaultSetPermissionsChecker.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DefaultSetPermissionsChecker.java index fba459d9e4..eb501ae942 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DefaultSetPermissionsChecker.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DefaultSetPermissionsChecker.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter.check; +package org.eclipse.che.multiuser.api.permission.server.filter.check; -import static org.eclipse.che.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; +import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import javax.inject.Singleton; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Common checks while setting permissions. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DomainsPermissionsCheckers.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DomainsPermissionsCheckers.java similarity index 96% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DomainsPermissionsCheckers.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DomainsPermissionsCheckers.java index 3f25649ed7..2f37dc9eb6 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/DomainsPermissionsCheckers.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/DomainsPermissionsCheckers.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter.check; +package org.eclipse.che.multiuser.api.permission.server.filter.check; import java.util.Map; import javax.inject.Inject; diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/RemovePermissionsChecker.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/RemovePermissionsChecker.java similarity index 93% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/RemovePermissionsChecker.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/RemovePermissionsChecker.java index 866839a9aa..e616bddf14 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/RemovePermissionsChecker.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/RemovePermissionsChecker.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter.check; +package org.eclipse.che.multiuser.api.permission.server.filter.check; import org.eclipse.che.api.core.ForbiddenException; diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/SetPermissionsChecker.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/SetPermissionsChecker.java similarity index 85% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/SetPermissionsChecker.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/SetPermissionsChecker.java index 59a0f9efdb..1a1d6af0a6 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/filter/check/SetPermissionsChecker.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/filter/check/SetPermissionsChecker.java @@ -8,10 +8,10 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter.check; +package org.eclipse.che.multiuser.api.permission.server.filter.check; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.shared.model.Permissions; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Defines contract for domain specific checks, before set permissions. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/AbstractJpaPermissionsDao.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/AbstractJpaPermissionsDao.java similarity index 93% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/AbstractJpaPermissionsDao.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/AbstractJpaPermissionsDao.java index e439dcc7e2..1bb45bcf22 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/AbstractJpaPermissionsDao.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/AbstractJpaPermissionsDao.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.jpa; +package org.eclipse.che.multiuser.api.permission.server.jpa; import static java.util.Objects.requireNonNull; @@ -21,9 +21,9 @@ import javax.persistence.EntityManager; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; /** * Basic JPA DAO implementation for {@link Permissions} objects. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/JpaSystemPermissionsDao.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/JpaSystemPermissionsDao.java similarity index 95% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/JpaSystemPermissionsDao.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/JpaSystemPermissionsDao.java index d30a4a44ce..f461169024 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/JpaSystemPermissionsDao.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/JpaSystemPermissionsDao.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.jpa; +package org.eclipse.che.multiuser.api.permission.server.jpa; import static com.google.common.base.Preconditions.checkArgument; import static java.lang.String.format; @@ -28,10 +28,10 @@ import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.notification.EventService; -import org.eclipse.che.api.permission.server.SystemDomain; -import org.eclipse.che.api.permission.server.model.impl.SystemPermissionsImpl; import org.eclipse.che.api.user.server.event.BeforeUserRemovedEvent; import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.SystemPermissionsImpl; /** * JPA based implementation of system permissions DAO. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/SystemPermissionsJpaModule.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/SystemPermissionsJpaModule.java similarity index 71% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/SystemPermissionsJpaModule.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/SystemPermissionsJpaModule.java index e659261b3f..81612d4d96 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/SystemPermissionsJpaModule.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/SystemPermissionsJpaModule.java @@ -8,16 +8,16 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.jpa; +package org.eclipse.che.multiuser.api.permission.server.jpa; import com.google.inject.AbstractModule; import com.google.inject.TypeLiteral; import com.google.inject.multibindings.Multibinder; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.SystemDomain; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.model.impl.SystemPermissionsImpl; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.model.impl.SystemPermissionsImpl; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; /** @author Max Shaposhnik */ public class SystemPermissionsJpaModule extends AbstractModule { diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/listener/RemovePermissionsOnLastUserRemovedEventSubscriber.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/listener/RemovePermissionsOnLastUserRemovedEventSubscriber.java similarity index 91% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/listener/RemovePermissionsOnLastUserRemovedEventSubscriber.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/listener/RemovePermissionsOnLastUserRemovedEventSubscriber.java index de3ee9daf8..4b280f9b45 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/jpa/listener/RemovePermissionsOnLastUserRemovedEventSubscriber.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/jpa/listener/RemovePermissionsOnLastUserRemovedEventSubscriber.java @@ -8,9 +8,9 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.jpa.listener; +package org.eclipse.che.multiuser.api.permission.server.jpa.listener; -import static org.eclipse.che.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; +import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import java.util.List; import javax.annotation.PostConstruct; @@ -20,11 +20,11 @@ import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.notification.EventService; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; import org.eclipse.che.api.user.server.event.BeforeUserRemovedEvent; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; /** * Listens for {@link UserImpl} removal events, and checks if the removing user is the last who have diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/model/impl/AbstractPermissions.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/model/impl/AbstractPermissions.java similarity index 95% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/model/impl/AbstractPermissions.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/model/impl/AbstractPermissions.java index 9fb7a77168..316ad3c590 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/model/impl/AbstractPermissions.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/model/impl/AbstractPermissions.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.model.impl; +package org.eclipse.che.multiuser.api.permission.server.model.impl; import java.util.List; import java.util.Objects; @@ -22,8 +22,8 @@ import javax.persistence.PostLoad; import javax.persistence.PrePersist; import javax.persistence.PreUpdate; import javax.persistence.Transient; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.api.user.server.model.impl.UserImpl; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Represents user's permissions to access to some resources diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/model/impl/SystemPermissionsImpl.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/model/impl/SystemPermissionsImpl.java similarity index 94% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/model/impl/SystemPermissionsImpl.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/model/impl/SystemPermissionsImpl.java index 5665722b69..837147a1da 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/model/impl/SystemPermissionsImpl.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/model/impl/SystemPermissionsImpl.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.model.impl; +package org.eclipse.che.multiuser.api.permission.server.model.impl; import java.util.ArrayList; import java.util.List; @@ -20,7 +20,7 @@ import javax.persistence.FetchType; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; -import org.eclipse.che.api.permission.server.SystemDomain; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; /** * System permissions data object. diff --git a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/spi/PermissionsDao.java b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/spi/PermissionsDao.java similarity index 93% rename from wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/spi/PermissionsDao.java rename to multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/spi/PermissionsDao.java index 93b147f4ac..d1ad00c5d9 100644 --- a/wsmaster/che-core-api-permission/src/main/java/org/eclipse/che/api/permission/server/spi/PermissionsDao.java +++ b/multiuser/api/che-multiuser-api-permission/src/main/java/org/eclipse/che/multiuser/api/permission/server/spi/PermissionsDao.java @@ -8,15 +8,15 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.spi; +package org.eclipse.che.multiuser.api.permission.server.spi; import java.util.List; import java.util.Optional; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; /** * General contract of storage for permissions. Single Storage may maintain one or more Domains (it diff --git a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/PermissionsManagerTest.java b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/PermissionsManagerTest.java similarity index 94% rename from wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/PermissionsManagerTest.java rename to multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/PermissionsManagerTest.java index be0bfd2a53..cb001e7ee1 100644 --- a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/PermissionsManagerTest.java +++ b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/PermissionsManagerTest.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server; +package org.eclipse.che.multiuser.api.permission.server; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; -import static org.eclipse.che.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; +import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; @@ -35,12 +35,12 @@ import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.notification.EventService; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; -import org.eclipse.che.api.permission.shared.dto.PermissionsDto; -import org.eclipse.che.api.permission.shared.model.Permissions; -import org.eclipse.che.api.permission.shared.model.PermissionsDomain; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.api.permission.shared.dto.PermissionsDto; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; +import org.eclipse.che.multiuser.api.permission.shared.model.PermissionsDomain; import org.mockito.Mock; import org.mockito.testng.MockitoTestNGListener; import org.testng.annotations.BeforeMethod; @@ -71,7 +71,7 @@ public class PermissionsManagerTest { expectedExceptions = ServerException.class, expectedExceptionsMessageRegExp = "Permissions Domain 'test' should be stored in only one storage. " - + "Duplicated in class org.eclipse.che.api.permission.server.spi.PermissionsDao.* and class org.eclipse.che.api.permission.server.spi.PermissionsDao.*" + + "Duplicated in class org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao.* and class org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao.*" ) public void shouldThrowExceptionIfThereAreTwoStoragesWhichServeOneDomain() throws Exception { @SuppressWarnings("unchecked") diff --git a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/GetPermissionsFilterTest.java b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/GetPermissionsFilterTest.java similarity index 92% rename from wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/GetPermissionsFilterTest.java rename to multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/GetPermissionsFilterTest.java index 7f81f2f7ee..e3696d49db 100644 --- a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/GetPermissionsFilterTest.java +++ b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/GetPermissionsFilterTest.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter; +package org.eclipse.che.multiuser.api.permission.server.filter; import static com.jayway.restassured.RestAssured.given; import static java.util.Collections.singletonList; -import static org.eclipse.che.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; +import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; @@ -31,14 +31,14 @@ import java.util.List; import org.eclipse.che.api.core.BadRequestException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.rest.shared.dto.ServiceError; -import org.eclipse.che.api.permission.server.InstanceParameterValidator; -import org.eclipse.che.api.permission.server.PermissionsManager; -import org.eclipse.che.api.permission.server.PermissionsService; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.InstanceParameterValidator; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; +import org.eclipse.che.multiuser.api.permission.server.PermissionsService; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; import org.everrest.assured.EverrestJetty; import org.everrest.core.Filter; import org.everrest.core.GenericContainerRequest; diff --git a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/RemovePermissionsFilterTest.java b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/RemovePermissionsFilterTest.java similarity index 92% rename from wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/RemovePermissionsFilterTest.java rename to multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/RemovePermissionsFilterTest.java index cf87bf06b8..3d5eb93edc 100644 --- a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/RemovePermissionsFilterTest.java +++ b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/RemovePermissionsFilterTest.java @@ -8,10 +8,10 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter; +package org.eclipse.che.multiuser.api.permission.server.filter; import static com.jayway.restassured.RestAssured.given; -import static org.eclipse.che.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; +import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; @@ -32,14 +32,14 @@ import com.jayway.restassured.response.Response; import org.eclipse.che.api.core.BadRequestException; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.rest.shared.dto.ServiceError; -import org.eclipse.che.api.permission.server.InstanceParameterValidator; -import org.eclipse.che.api.permission.server.PermissionsService; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; -import org.eclipse.che.api.permission.server.filter.check.DomainsPermissionsCheckers; -import org.eclipse.che.api.permission.server.filter.check.RemovePermissionsChecker; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.InstanceParameterValidator; +import org.eclipse.che.multiuser.api.permission.server.PermissionsService; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DomainsPermissionsCheckers; +import org.eclipse.che.multiuser.api.permission.server.filter.check.RemovePermissionsChecker; import org.everrest.assured.EverrestJetty; import org.everrest.core.Filter; import org.everrest.core.GenericContainerRequest; diff --git a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/SetPermissionsFilterTest.java b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/SetPermissionsFilterTest.java similarity index 92% rename from wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/SetPermissionsFilterTest.java rename to multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/SetPermissionsFilterTest.java index b90a1c0c46..630ca6f4c7 100644 --- a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/filter/SetPermissionsFilterTest.java +++ b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/filter/SetPermissionsFilterTest.java @@ -8,10 +8,10 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.filter; +package org.eclipse.che.multiuser.api.permission.server.filter; import static com.jayway.restassured.RestAssured.given; -import static org.eclipse.che.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; +import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; @@ -31,16 +31,16 @@ import java.util.Collections; import org.eclipse.che.api.core.BadRequestException; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.rest.shared.dto.ServiceError; -import org.eclipse.che.api.permission.server.InstanceParameterValidator; -import org.eclipse.che.api.permission.server.PermissionsService; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; -import org.eclipse.che.api.permission.server.filter.check.DomainsPermissionsCheckers; -import org.eclipse.che.api.permission.server.filter.check.SetPermissionsChecker; -import org.eclipse.che.api.permission.shared.dto.PermissionsDto; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.InstanceParameterValidator; +import org.eclipse.che.multiuser.api.permission.server.PermissionsService; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DomainsPermissionsCheckers; +import org.eclipse.che.multiuser.api.permission.server.filter.check.SetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.shared.dto.PermissionsDto; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; import org.everrest.assured.EverrestJetty; import org.everrest.core.Filter; import org.everrest.core.GenericContainerRequest; diff --git a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/jpa/SystemPermissionsTckModule.java b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/jpa/SystemPermissionsTckModule.java similarity index 82% rename from wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/jpa/SystemPermissionsTckModule.java rename to multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/jpa/SystemPermissionsTckModule.java index 2b414e3391..5656aca010 100644 --- a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/jpa/SystemPermissionsTckModule.java +++ b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/jpa/SystemPermissionsTckModule.java @@ -8,18 +8,12 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.jpa; +package org.eclipse.che.multiuser.api.permission.server.jpa; import com.google.inject.TypeLiteral; import com.google.inject.multibindings.Multibinder; import com.google.inject.name.Names; import org.eclipse.che.account.spi.AccountImpl; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.SystemDomain; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.model.impl.SystemPermissionsImpl; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; -import org.eclipse.che.api.permission.server.spi.tck.SystemPermissionsDaoTest; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.commons.test.db.H2JpaCleaner; @@ -32,6 +26,12 @@ import org.eclipse.che.core.db.DBInitializer; import org.eclipse.che.core.db.h2.jpa.eclipselink.H2ExceptionHandler; import org.eclipse.che.core.db.schema.SchemaInitializer; import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.model.impl.SystemPermissionsImpl; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.api.permission.server.spi.tck.SystemPermissionsDaoTest.TestDomain; import org.h2.Driver; /** @author Max Shaposhnik (mshaposhnik@codenvy.com) */ @@ -60,7 +60,7 @@ public class SystemPermissionsTckModule extends TckModule { binder(), String.class, Names.named(SystemDomain.SYSTEM_DOMAIN_ACTIONS)); bind(new TypeLiteral>() {}) - .to(SystemPermissionsDaoTest.TestDomain.class); + .to(TestDomain.class); bind(new TypeLiteral>() {}) .to(JpaSystemPermissionsDao.class); diff --git a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/spi/tck/SystemPermissionsDaoTest.java b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/spi/tck/SystemPermissionsDaoTest.java similarity index 92% rename from wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/spi/tck/SystemPermissionsDaoTest.java rename to multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/spi/tck/SystemPermissionsDaoTest.java index 782bd22c97..9ddf5e3aa4 100644 --- a/wsmaster/che-core-api-permission/src/test/java/org/eclipse/che/api/permission/server/spi/tck/SystemPermissionsDaoTest.java +++ b/multiuser/api/che-multiuser-api-permission/src/test/java/org/eclipse/che/multiuser/api/permission/server/spi/tck/SystemPermissionsDaoTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.permission.server.spi.tck; +package org.eclipse.che.multiuser.api.permission.server.spi.tck; import static java.util.Arrays.asList; import static org.testng.AssertJUnit.assertEquals; @@ -19,12 +19,12 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import javax.inject.Inject; import org.eclipse.che.api.core.Page; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.jpa.JpaSystemPermissionsDao; -import org.eclipse.che.api.permission.server.model.impl.SystemPermissionsImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.tck.TckListener; import org.eclipse.che.commons.test.tck.repository.TckRepository; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.jpa.JpaSystemPermissionsDao; +import org.eclipse.che.multiuser.api.permission.server.model.impl.SystemPermissionsImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Listeners; diff --git a/multiuser/api/che-multiuser-api-permission/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule b/multiuser/api/che-multiuser-api-permission/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule new file mode 100644 index 0000000000..3d1ea5b0d5 --- /dev/null +++ b/multiuser/api/che-multiuser-api-permission/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule @@ -0,0 +1 @@ +org.eclipse.che.multiuser.api.permission.server.jpa.SystemPermissionsTckModule diff --git a/wsmaster/che-core-api-permission/src/test/resources/logback-test.xml b/multiuser/api/che-multiuser-api-permission/src/test/resources/logback-test.xml similarity index 100% rename from wsmaster/che-core-api-permission/src/test/resources/logback-test.xml rename to multiuser/api/che-multiuser-api-permission/src/test/resources/logback-test.xml diff --git a/plugins/plugin-keycloak/pom.xml b/multiuser/api/pom.xml similarity index 66% rename from plugins/plugin-keycloak/pom.xml rename to multiuser/api/pom.xml index 13d7db2189..2ce395eeac 100644 --- a/plugins/plugin-keycloak/pom.xml +++ b/multiuser/api/pom.xml @@ -14,18 +14,18 @@ 4.0.0 - che-plugin-parent - org.eclipse.che.plugin + che-multiuser-parent + org.eclipse.che.multiuser 5.18.0-SNAPSHOT ../pom.xml - che-plugin-keycloak-parent + che-multiuser-api pom - Che Plugin :: Keycloak + Che Multiuser :: API Parent - che-plugin-keycloak-ide - che-plugin-keycloak-shared - che-plugin-keycloak-server - che-plugin-keycloak-token-provider + che-multiuser-api-permission-shared + che-multiuser-api-permission + che-multiuser-api-authorization + che-multiuser-api-authorization-impl diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-ide/pom.xml b/multiuser/keycloak/che-multiuser-keycloak-ide/pom.xml similarity index 78% rename from plugins/plugin-keycloak/che-plugin-keycloak-ide/pom.xml rename to multiuser/keycloak/che-multiuser-keycloak-ide/pom.xml index 5fc40afa81..08d807e73a 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-ide/pom.xml +++ b/multiuser/keycloak/che-multiuser-keycloak-ide/pom.xml @@ -14,13 +14,14 @@ 4.0.0 - che-plugin-keycloak-parent - org.eclipse.che.plugin + che-multiuser-keycloak + org.eclipse.che.multiuser 5.18.0-SNAPSHOT + ../pom.xml - che-plugin-keycloak-ide + che-multiuser-keycloak-ide jar - Che Keycloak IDE plugin + Che Multiuser :: Keycloak IDE com.google.gwt.inject @@ -39,12 +40,12 @@ che-core-ide-api - org.eclipse.che.core - che-machine-authentication-ide + org.eclipse.che.multiuser + che-multiuser-keycloak-shared - org.eclipse.che.plugin - che-plugin-keycloak-shared + org.eclipse.che.multiuser + che-multiuser-machine-authentication-ide com.google.gwt diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/Keycloak.java b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/Keycloak.java similarity index 98% rename from plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/Keycloak.java rename to multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/Keycloak.java index 053d944b85..195fa6d514 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/Keycloak.java +++ b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/Keycloak.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.ide; +package org.eclipse.che.multiuser.keycloak.ide; import com.google.gwt.core.client.JavaScriptObject; import org.eclipse.che.api.promises.client.Promise; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/KeycloakAsyncRequest.java b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/KeycloakAsyncRequest.java similarity index 98% rename from plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/KeycloakAsyncRequest.java rename to multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/KeycloakAsyncRequest.java index 98715093d0..04bddb4299 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/KeycloakAsyncRequest.java +++ b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/KeycloakAsyncRequest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.ide; +package org.eclipse.che.multiuser.keycloak.ide; import com.google.gwt.http.client.RequestBuilder; import org.eclipse.che.api.promises.client.Function; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/KeycloakAsyncRequestFactory.java b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/KeycloakAsyncRequestFactory.java similarity index 89% rename from plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/KeycloakAsyncRequestFactory.java rename to multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/KeycloakAsyncRequestFactory.java index bf6a369ddf..2e3aab183a 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/KeycloakAsyncRequestFactory.java +++ b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/KeycloakAsyncRequestFactory.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.ide; +package org.eclipse.che.multiuser.keycloak.ide; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.AUTH_SERVER_URL_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.CLIENT_ID_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.REALM_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.AUTH_SERVER_URL_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.CLIENT_ID_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.REALM_SETTING; import com.google.gwt.core.client.Callback; import com.google.gwt.core.client.JavaScriptObject; @@ -33,9 +33,9 @@ import org.eclipse.che.ide.json.JsonHelper; import org.eclipse.che.ide.rest.AsyncRequest; import org.eclipse.che.ide.rest.HTTPHeader; import org.eclipse.che.ide.util.loging.Log; -import org.eclipse.che.keycloak.shared.KeycloakConstants; -import org.eclipse.che.machine.authentication.ide.MachineAsyncRequestFactory; -import org.eclipse.che.machine.authentication.ide.MachineTokenServiceClient; +import org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants; +import org.eclipse.che.multiuser.machine.authentication.ide.MachineAsyncRequestFactory; +import org.eclipse.che.multiuser.machine.authentication.ide.MachineTokenServiceClient; /** KeycloakAuthAsyncRequestFactory */ @Singleton diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/inject/KeycloakAuthGinModule.java b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/inject/KeycloakAuthGinModule.java similarity index 83% rename from plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/inject/KeycloakAuthGinModule.java rename to multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/inject/KeycloakAuthGinModule.java index 6de733c5e1..6426f6222d 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/java/org/eclipse/che/keycloak/ide/inject/KeycloakAuthGinModule.java +++ b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/java/org/eclipse/che/multiuser/keycloak/ide/inject/KeycloakAuthGinModule.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.ide.inject; +package org.eclipse.che.multiuser.keycloak.ide.inject; import com.google.gwt.inject.client.AbstractGinModule; import org.eclipse.che.ide.api.extension.ExtensionGinModule; @@ -21,6 +21,6 @@ public class KeycloakAuthGinModule extends AbstractGinModule { @Override public void configure() { bind(AsyncRequestFactory.class) - .to(org.eclipse.che.keycloak.ide.KeycloakAsyncRequestFactory.class); + .to(org.eclipse.che.multiuser.keycloak.ide.KeycloakAsyncRequestFactory.class); } } diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/resources/org/eclipse/che/keycloak/Keycloak.gwt.xml b/multiuser/keycloak/che-multiuser-keycloak-ide/src/main/resources/org/eclipse/che/multiuser/keycloak/Keycloak.gwt.xml similarity index 100% rename from plugins/plugin-keycloak/che-plugin-keycloak-ide/src/main/resources/org/eclipse/che/keycloak/Keycloak.gwt.xml rename to multiuser/keycloak/che-multiuser-keycloak-ide/src/main/resources/org/eclipse/che/multiuser/keycloak/Keycloak.gwt.xml diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/pom.xml b/multiuser/keycloak/che-multiuser-keycloak-server/pom.xml similarity index 87% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/pom.xml rename to multiuser/keycloak/che-multiuser-keycloak-server/pom.xml index d485661df2..19aa2842fb 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/pom.xml +++ b/multiuser/keycloak/che-multiuser-keycloak-server/pom.xml @@ -14,13 +14,13 @@ 4.0.0 - che-plugin-keycloak-parent - org.eclipse.che.plugin + che-multiuser-keycloak + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-plugin-keycloak-server + che-multiuser-keycloak-server jar - Che Keycloak Server plugin + Che Multiuser :: Keycloak Server com.fasterxml.jackson.core @@ -54,10 +54,6 @@ javax.ws.rs javax.ws.rs-api - - org.eclipse.che.core - che-core-api-authorization - org.eclipse.che.core che-core-api-core @@ -79,8 +75,12 @@ che-core-commons-auth - org.eclipse.che.plugin - che-plugin-keycloak-shared + org.eclipse.che.multiuser + che-multiuser-api-authorization + + + org.eclipse.che.multiuser + che-multiuser-keycloak-shared org.keycloak diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/AbstractKeycloakFilter.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/AbstractKeycloakFilter.java similarity index 95% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/AbstractKeycloakFilter.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/AbstractKeycloakFilter.java index 2677cf9020..cc466f816d 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/AbstractKeycloakFilter.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/AbstractKeycloakFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server; +package org.eclipse.che.multiuser.keycloak.server; import javax.servlet.Filter; import javax.servlet.FilterConfig; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakAuthenticationFilter.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakAuthenticationFilter.java similarity index 97% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakAuthenticationFilter.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakAuthenticationFilter.java index ede6a2466c..cd4e9c2370 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakAuthenticationFilter.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakAuthenticationFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server; +package org.eclipse.che.multiuser.keycloak.server; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.Claims; @@ -37,7 +37,7 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.che.commons.auth.token.RequestTokenExtractor; -import org.eclipse.che.keycloak.shared.KeycloakConstants; +import org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakConfigurationService.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakConfigurationService.java similarity index 72% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakConfigurationService.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakConfigurationService.java index dfaf62ab3b..04dfec1175 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakConfigurationService.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakConfigurationService.java @@ -8,17 +8,17 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server; +package org.eclipse.che.multiuser.keycloak.server; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.AUTH_SERVER_URL_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.CLIENT_ID_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.GITHUB_ENDPOINT_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.LOGOUT_ENDPOINT_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.OSO_ENDPOINT_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.PASSWORD_ENDPOINT_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.PROFILE_ENDPOINT_SETTING; -import static org.eclipse.che.keycloak.shared.KeycloakConstants.REALM_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.AUTH_SERVER_URL_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.CLIENT_ID_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.GITHUB_ENDPOINT_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.LOGOUT_ENDPOINT_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.OSO_ENDPOINT_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.PASSWORD_ENDPOINT_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.PROFILE_ENDPOINT_SETTING; +import static org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants.REALM_SETTING; import com.google.common.collect.Maps; import java.util.Collections; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakEnvironmentInitalizationFilter.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakEnvironmentInitalizationFilter.java similarity index 95% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakEnvironmentInitalizationFilter.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakEnvironmentInitalizationFilter.java index bd20974df9..2f548b2986 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakEnvironmentInitalizationFilter.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakEnvironmentInitalizationFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server; +package org.eclipse.che.multiuser.keycloak.server; import static java.util.Collections.emptyList; @@ -29,14 +29,14 @@ import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.model.user.User; -import org.eclipse.che.api.permission.server.AuthorizedSubject; -import org.eclipse.che.api.permission.server.PermissionChecker; import org.eclipse.che.api.user.server.UserManager; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.auth.token.RequestTokenExtractor; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.commons.subject.SubjectImpl; +import org.eclipse.che.multiuser.api.permission.server.AuthorizedSubject; +import org.eclipse.che.multiuser.api.permission.server.PermissionChecker; /** * Sets subject attribute into session based on keycloak authentication data. diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakHttpJsonRequestFactory.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakHttpJsonRequestFactory.java similarity index 96% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakHttpJsonRequestFactory.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakHttpJsonRequestFactory.java index b59f0db505..c87ffba1ba 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakHttpJsonRequestFactory.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakHttpJsonRequestFactory.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server; +package org.eclipse.che.multiuser.keycloak.server; import javax.inject.Inject; import javax.inject.Singleton; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakSettings.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakSettings.java similarity index 93% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakSettings.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakSettings.java index 4a3c146248..444d8249c5 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakSettings.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakSettings.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server; +package org.eclipse.che.multiuser.keycloak.server; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.BufferedReader; @@ -17,7 +17,7 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; -import org.eclipse.che.keycloak.shared.KeycloakConstants; +import org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakTokenValidator.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakTokenValidator.java similarity index 95% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakTokenValidator.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakTokenValidator.java index 524fa6254b..ff7d921326 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/KeycloakTokenValidator.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/KeycloakTokenValidator.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server; +package org.eclipse.che.multiuser.keycloak.server; import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.model.user.User; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/dao/KeycloakProfileDao.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/dao/KeycloakProfileDao.java similarity index 97% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/dao/KeycloakProfileDao.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/dao/KeycloakProfileDao.java index fa5a0bc77a..65cb555d11 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/dao/KeycloakProfileDao.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/dao/KeycloakProfileDao.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server.dao; +package org.eclipse.che.multiuser.keycloak.server.dao; import static java.util.Objects.requireNonNull; @@ -29,7 +29,7 @@ import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.user.server.model.impl.ProfileImpl; import org.eclipse.che.api.user.server.spi.ProfileDao; import org.eclipse.che.commons.env.EnvironmentContext; -import org.eclipse.che.keycloak.shared.KeycloakConstants; +import org.eclipse.che.multiuser.keycloak.shared.KeycloakConstants; import org.keycloak.representations.idm.UserRepresentation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/deploy/KeycloakModule.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/deploy/KeycloakModule.java similarity index 70% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/deploy/KeycloakModule.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/deploy/KeycloakModule.java index 24536daa3d..364e60f84a 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/deploy/KeycloakModule.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/deploy/KeycloakModule.java @@ -8,22 +8,22 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server.deploy; +package org.eclipse.che.multiuser.keycloak.server.deploy; import com.google.inject.AbstractModule; import org.eclipse.che.api.core.rest.HttpJsonRequestFactory; import org.eclipse.che.api.user.server.TokenValidator; import org.eclipse.che.api.user.server.spi.ProfileDao; -import org.eclipse.che.keycloak.server.KeycloakConfigurationService; -import org.eclipse.che.keycloak.server.KeycloakTokenValidator; -import org.eclipse.che.keycloak.server.dao.KeycloakProfileDao; +import org.eclipse.che.multiuser.keycloak.server.KeycloakConfigurationService; +import org.eclipse.che.multiuser.keycloak.server.KeycloakTokenValidator; +import org.eclipse.che.multiuser.keycloak.server.dao.KeycloakProfileDao; public class KeycloakModule extends AbstractModule { @Override protected void configure() { bind(HttpJsonRequestFactory.class) - .to(org.eclipse.che.keycloak.server.KeycloakHttpJsonRequestFactory.class); + .to(org.eclipse.che.multiuser.keycloak.server.KeycloakHttpJsonRequestFactory.class); bind(TokenValidator.class).to(KeycloakTokenValidator.class); bind(KeycloakConfigurationService.class); diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/deploy/KeycloakServletModule.java b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/deploy/KeycloakServletModule.java similarity index 84% rename from plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/deploy/KeycloakServletModule.java rename to multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/deploy/KeycloakServletModule.java index 656abf61b2..f35d3c4aee 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-server/src/main/java/org/eclipse/che/keycloak/server/deploy/KeycloakServletModule.java +++ b/multiuser/keycloak/che-multiuser-keycloak-server/src/main/java/org/eclipse/che/multiuser/keycloak/server/deploy/KeycloakServletModule.java @@ -8,12 +8,12 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.server.deploy; +package org.eclipse.che.multiuser.keycloak.server.deploy; import com.google.inject.servlet.ServletModule; import javax.inject.Singleton; -import org.eclipse.che.keycloak.server.KeycloakAuthenticationFilter; -import org.eclipse.che.keycloak.server.KeycloakEnvironmentInitalizationFilter; +import org.eclipse.che.multiuser.keycloak.server.KeycloakAuthenticationFilter; +import org.eclipse.che.multiuser.keycloak.server.KeycloakEnvironmentInitalizationFilter; public class KeycloakServletModule extends ServletModule { @Override diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-shared/pom.xml b/multiuser/keycloak/che-multiuser-keycloak-shared/pom.xml similarity index 84% rename from plugins/plugin-keycloak/che-plugin-keycloak-shared/pom.xml rename to multiuser/keycloak/che-multiuser-keycloak-shared/pom.xml index 8c1086719c..efda7bc88d 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-shared/pom.xml +++ b/multiuser/keycloak/che-multiuser-keycloak-shared/pom.xml @@ -14,13 +14,13 @@ 4.0.0 - che-plugin-keycloak-parent - org.eclipse.che.plugin + che-multiuser-keycloak + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-plugin-keycloak-shared + che-multiuser-keycloak-shared jar - Che Keycloak Shared module + Che Multiuser :: Keycloak Shared module javax.servlet diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-shared/src/main/java/org/eclipse/che/keycloak/shared/KeycloakConstants.java b/multiuser/keycloak/che-multiuser-keycloak-shared/src/main/java/org/eclipse/che/multiuser/keycloak/shared/KeycloakConstants.java similarity index 97% rename from plugins/plugin-keycloak/che-plugin-keycloak-shared/src/main/java/org/eclipse/che/keycloak/shared/KeycloakConstants.java rename to multiuser/keycloak/che-multiuser-keycloak-shared/src/main/java/org/eclipse/che/multiuser/keycloak/shared/KeycloakConstants.java index ef0e82916d..9c1d3b662b 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-shared/src/main/java/org/eclipse/che/keycloak/shared/KeycloakConstants.java +++ b/multiuser/keycloak/che-multiuser-keycloak-shared/src/main/java/org/eclipse/che/multiuser/keycloak/shared/KeycloakConstants.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.shared; +package org.eclipse.che.multiuser.keycloak.shared; /** @author Max Shaposhnik (mshaposh@redhat.com) */ public class KeycloakConstants { diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/pom.xml b/multiuser/keycloak/che-multiuser-keycloak-token-provider/pom.xml similarity index 92% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/pom.xml rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/pom.xml index 1db1d25989..8c00f983d9 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/pom.xml +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/pom.xml @@ -14,12 +14,12 @@ 4.0.0 - che-plugin-keycloak-parent - org.eclipse.che.plugin + che-multiuser-keycloak + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-plugin-keycloak-token-provider - Che Keycloak Token Provider plugin + che-multiuser-keycloak-token-provider + Che Multiuser :: Keycloak Token Provider com.fasterxml.jackson.core diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/contoller/TokenController.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/contoller/TokenController.java similarity index 89% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/contoller/TokenController.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/contoller/TokenController.java index 38472130fd..f8fbdcb736 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/contoller/TokenController.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/contoller/TokenController.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.contoller; +package org.eclipse.che.multiuser.keycloak.token.provider.contoller; import java.io.IOException; import javax.inject.Inject; @@ -29,10 +29,10 @@ import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.UnauthorizedException; import org.eclipse.che.commons.env.EnvironmentContext; -import org.eclipse.che.keycloak.token.provider.exception.KeycloakException; -import org.eclipse.che.keycloak.token.provider.oauth.OpenShiftGitHubOAuthAuthenticator; -import org.eclipse.che.keycloak.token.provider.service.KeycloakTokenProvider; -import org.eclipse.che.keycloak.token.provider.validator.KeycloakTokenValidator; +import org.eclipse.che.multiuser.keycloak.token.provider.exception.KeycloakException; +import org.eclipse.che.multiuser.keycloak.token.provider.oauth.OpenShiftGitHubOAuthAuthenticator; +import org.eclipse.che.multiuser.keycloak.token.provider.service.KeycloakTokenProvider; +import org.eclipse.che.multiuser.keycloak.token.provider.validator.KeycloakTokenValidator; import org.eclipse.che.security.oauth.OAuthAuthenticator; import org.eclipse.che.security.oauth.OAuthAuthenticatorProvider; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/deploy/KeycloakModule.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/deploy/KeycloakModule.java similarity index 78% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/deploy/KeycloakModule.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/deploy/KeycloakModule.java index 9cf3ec7c69..22359ba5b1 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/deploy/KeycloakModule.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/deploy/KeycloakModule.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.deploy; +package org.eclipse.che.multiuser.keycloak.token.provider.deploy; import com.google.inject.AbstractModule; import org.eclipse.che.inject.DynaModule; @@ -17,6 +17,6 @@ import org.eclipse.che.inject.DynaModule; public class KeycloakModule extends AbstractModule { @Override protected void configure() { - bind(org.eclipse.che.keycloak.token.provider.contoller.TokenController.class); + bind(org.eclipse.che.multiuser.keycloak.token.provider.contoller.TokenController.class); } } diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/exception/KeycloakException.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/exception/KeycloakException.java similarity index 91% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/exception/KeycloakException.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/exception/KeycloakException.java index 03edaf7e01..c9e9c564a3 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/exception/KeycloakException.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/exception/KeycloakException.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.exception; +package org.eclipse.che.multiuser.keycloak.token.provider.exception; public class KeycloakException extends Exception { diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/oauth/OpenShiftGitHubOAuthAuthenticator.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/oauth/OpenShiftGitHubOAuthAuthenticator.java similarity index 96% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/oauth/OpenShiftGitHubOAuthAuthenticator.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/oauth/OpenShiftGitHubOAuthAuthenticator.java index 13fb91ac2a..ca8d4b1ae5 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/oauth/OpenShiftGitHubOAuthAuthenticator.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/oauth/OpenShiftGitHubOAuthAuthenticator.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.oauth; +package org.eclipse.che.multiuser.keycloak.token.provider.oauth; import static com.google.common.base.Strings.isNullOrEmpty; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/service/KeycloakTokenProvider.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/service/KeycloakTokenProvider.java similarity index 96% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/service/KeycloakTokenProvider.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/service/KeycloakTokenProvider.java index 0396624cea..e9204502ec 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/service/KeycloakTokenProvider.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/service/KeycloakTokenProvider.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.service; +package org.eclipse.che.multiuser.keycloak.token.provider.service; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -26,7 +26,7 @@ import org.eclipse.che.api.core.UnauthorizedException; import org.eclipse.che.api.core.rest.HttpJsonRequestFactory; import org.eclipse.che.api.core.rest.HttpJsonResponse; import org.eclipse.che.commons.annotation.Nullable; -import org.eclipse.che.keycloak.token.provider.util.UrlHelper; +import org.eclipse.che.multiuser.keycloak.token.provider.util.UrlHelper; @Singleton public class KeycloakTokenProvider { diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/util/UrlHelper.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/util/UrlHelper.java similarity index 92% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/util/UrlHelper.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/util/UrlHelper.java index a43395a714..1f63c8c815 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/util/UrlHelper.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/util/UrlHelper.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.util; +package org.eclipse.che.multiuser.keycloak.token.provider.util; import java.util.HashMap; import java.util.Map; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/validator/KeycloakTokenValidator.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/validator/KeycloakTokenValidator.java similarity index 85% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/validator/KeycloakTokenValidator.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/validator/KeycloakTokenValidator.java index f254cc89fa..3f139c08df 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/main/java/org/eclipse/che/keycloak/token/provider/validator/KeycloakTokenValidator.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/main/java/org/eclipse/che/multiuser/keycloak/token/provider/validator/KeycloakTokenValidator.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.validator; +package org.eclipse.che.multiuser.keycloak.token.provider.validator; import javax.inject.Singleton; import org.apache.commons.lang3.StringUtils; -import org.eclipse.che.keycloak.token.provider.exception.KeycloakException; +import org.eclipse.che.multiuser.keycloak.token.provider.exception.KeycloakException; @Singleton public class KeycloakTokenValidator { diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/test/java/org/eclipse/che/keycloak/token/provider/util/UrlHelperTest.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/test/java/org/eclipse/che/multiuser/keycloak/token/provider/util/UrlHelperTest.java similarity index 94% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/test/java/org/eclipse/che/keycloak/token/provider/util/UrlHelperTest.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/test/java/org/eclipse/che/multiuser/keycloak/token/provider/util/UrlHelperTest.java index eff8a96e65..085c6450c3 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/test/java/org/eclipse/che/keycloak/token/provider/util/UrlHelperTest.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/test/java/org/eclipse/che/multiuser/keycloak/token/provider/util/UrlHelperTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.util; +package org.eclipse.che.multiuser.keycloak.token.provider.util; import static org.junit.Assert.assertEquals; diff --git a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/test/java/org/eclipse/che/keycloak/token/provider/validator/KeycloakTokenValidatorTest.java b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/test/java/org/eclipse/che/multiuser/keycloak/token/provider/validator/KeycloakTokenValidatorTest.java similarity index 87% rename from plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/test/java/org/eclipse/che/keycloak/token/provider/validator/KeycloakTokenValidatorTest.java rename to multiuser/keycloak/che-multiuser-keycloak-token-provider/src/test/java/org/eclipse/che/multiuser/keycloak/token/provider/validator/KeycloakTokenValidatorTest.java index b0c755b0e0..0868154f17 100644 --- a/plugins/plugin-keycloak/che-plugin-keycloak-token-provider/src/test/java/org/eclipse/che/keycloak/token/provider/validator/KeycloakTokenValidatorTest.java +++ b/multiuser/keycloak/che-multiuser-keycloak-token-provider/src/test/java/org/eclipse/che/multiuser/keycloak/token/provider/validator/KeycloakTokenValidatorTest.java @@ -8,9 +8,9 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.keycloak.token.provider.validator; +package org.eclipse.che.multiuser.keycloak.token.provider.validator; -import org.eclipse.che.keycloak.token.provider.exception.KeycloakException; +import org.eclipse.che.multiuser.keycloak.token.provider.exception.KeycloakException; import org.junit.BeforeClass; import org.junit.Test; diff --git a/multiuser/keycloak/pom.xml b/multiuser/keycloak/pom.xml new file mode 100644 index 0000000000..724687db70 --- /dev/null +++ b/multiuser/keycloak/pom.xml @@ -0,0 +1,31 @@ + + + + 4.0.0 + + che-multiuser-parent + org.eclipse.che.multiuser + 5.18.0-SNAPSHOT + ../pom.xml + + che-multiuser-keycloak + pom + Che Multiuser :: Keycloak Integration Parent + + che-multiuser-keycloak-shared + che-multiuser-keycloak-ide + che-multiuser-keycloak-server + che-multiuser-keycloak-token-provider + + diff --git a/wsagent/che-machine-authentication-agent/pom.xml b/multiuser/machine-auth/che-multiuser-machine-authentication-agent/pom.xml similarity index 91% rename from wsagent/che-machine-authentication-agent/pom.xml rename to multiuser/machine-auth/che-multiuser-machine-authentication-agent/pom.xml index 7ead795f81..f2dcd2e5ab 100644 --- a/wsagent/che-machine-authentication-agent/pom.xml +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-agent/pom.xml @@ -14,12 +14,12 @@ 4.0.0 - che-agent-parent - org.eclipse.che.core + che-multiuser-machine-auth + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-machine-authentication-agent - Che :: Machine Authentication Agent + che-multiuser-machine-authentication-agent + Che Multiuser :: Machine Authentication Agent ${project.build.directory}/generated-sources/dto/ diff --git a/wsagent/che-machine-authentication-agent/src/main/java/org/eclipse/che/machine/authentication/agent/MachineLoginFilter.java b/multiuser/machine-auth/che-multiuser-machine-authentication-agent/src/main/java/org/eclipse/che/multiuser/machine/authentication/agent/MachineLoginFilter.java similarity index 98% rename from wsagent/che-machine-authentication-agent/src/main/java/org/eclipse/che/machine/authentication/agent/MachineLoginFilter.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-agent/src/main/java/org/eclipse/che/multiuser/machine/authentication/agent/MachineLoginFilter.java index 97b63e035b..8623eeeba8 100644 --- a/wsagent/che-machine-authentication-agent/src/main/java/org/eclipse/che/machine/authentication/agent/MachineLoginFilter.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-agent/src/main/java/org/eclipse/che/multiuser/machine/authentication/agent/MachineLoginFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.agent; +package org.eclipse.che.multiuser.machine.authentication.agent; import static com.google.common.base.Strings.isNullOrEmpty; diff --git a/wsagent/che-machine-authentication-agent/src/test/java/org/eclipse/che/machine/authentication/agent/MachineLoginFilterTest.java b/multiuser/machine-auth/che-multiuser-machine-authentication-agent/src/test/java/org/eclipse/che/multiuser/machine/authentication/agent/MachineLoginFilterTest.java similarity index 99% rename from wsagent/che-machine-authentication-agent/src/test/java/org/eclipse/che/machine/authentication/agent/MachineLoginFilterTest.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-agent/src/test/java/org/eclipse/che/multiuser/machine/authentication/agent/MachineLoginFilterTest.java index 281ac286ac..3645c7cfde 100644 --- a/wsagent/che-machine-authentication-agent/src/test/java/org/eclipse/che/machine/authentication/agent/MachineLoginFilterTest.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-agent/src/test/java/org/eclipse/che/multiuser/machine/authentication/agent/MachineLoginFilterTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.agent; +package org.eclipse.che.multiuser.machine.authentication.agent; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; diff --git a/wsmaster/che-machine-authentication-ide/pom.xml b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/pom.xml similarity index 88% rename from wsmaster/che-machine-authentication-ide/pom.xml rename to multiuser/machine-auth/che-multiuser-machine-authentication-ide/pom.xml index 89c0a39ed0..a275c4c304 100644 --- a/wsmaster/che-machine-authentication-ide/pom.xml +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/pom.xml @@ -14,12 +14,12 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-machine-auth + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-machine-authentication-ide - Che Core :: IDE :: Machine Authentication + che-multiuser-machine-authentication-ide + Che Multiuser :: Machine Authentication IDE ${project.build.directory}/generated-sources/dto/ false @@ -66,8 +66,8 @@ che-core-ide-api - org.eclipse.che.core - che-machine-authentication-shared + org.eclipse.che.multiuser + che-multiuser-machine-authentication-shared com.google.gwt @@ -77,7 +77,6 @@ src/main/java - src/test/java target/classes @@ -149,18 +148,18 @@ - org.eclipse.che.machine.authentication.shared.dto + org.eclipse.che.multiuser.machine.authentication.shared.dto ${dto-generator-out-directory} - org.eclipse.che.machine.authentication.ide.dto.DtoClientImpls + org.eclipse.che.multiuser.machine.authentication.ide.DtoClientImpls client - org.eclipse.che.core - che-machine-authentication-shared + org.eclipse.che.multiuser + che-multiuser-machine-authentication-shared ${project.version} diff --git a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/CheAuthMachineLinksModifier.java b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/CheAuthMachineLinksModifier.java similarity index 96% rename from wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/CheAuthMachineLinksModifier.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/CheAuthMachineLinksModifier.java index 64b89f3683..525a858ac9 100644 --- a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/CheAuthMachineLinksModifier.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/CheAuthMachineLinksModifier.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.ide; +package org.eclipse.che.multiuser.machine.authentication.ide; import static org.eclipse.che.api.machine.shared.Constants.WSAGENT_WEBSOCKET_REFERENCE; diff --git a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineAsyncRequest.java b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineAsyncRequest.java similarity index 98% rename from wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineAsyncRequest.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineAsyncRequest.java index 5be1f396b2..8513dca512 100644 --- a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineAsyncRequest.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineAsyncRequest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.ide; +package org.eclipse.che.multiuser.machine.authentication.ide; import static com.google.common.net.HttpHeaders.AUTHORIZATION; diff --git a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineAsyncRequestFactory.java b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineAsyncRequestFactory.java similarity index 97% rename from wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineAsyncRequestFactory.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineAsyncRequestFactory.java index a1ce8a6baf..5451700cd0 100644 --- a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineAsyncRequestFactory.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineAsyncRequestFactory.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.ide; +package org.eclipse.che.multiuser.machine.authentication.ide; import static com.google.common.base.Strings.isNullOrEmpty; import static com.google.common.base.Strings.nullToEmpty; @@ -33,7 +33,7 @@ import org.eclipse.che.ide.rest.AsyncRequest; import org.eclipse.che.ide.rest.AsyncRequestCallback; import org.eclipse.che.ide.rest.AsyncRequestFactory; import org.eclipse.che.ide.rest.Unmarshallable; -import org.eclipse.che.machine.authentication.shared.dto.MachineTokenDto; +import org.eclipse.che.multiuser.machine.authentication.shared.dto.MachineTokenDto; /** * Looks at the request and substitutes an appropriate implementation. diff --git a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineTokenServiceClient.java b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineTokenServiceClient.java similarity index 82% rename from wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineTokenServiceClient.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineTokenServiceClient.java index 34e136635b..9ba977a349 100644 --- a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineTokenServiceClient.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineTokenServiceClient.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.ide; +package org.eclipse.che.multiuser.machine.authentication.ide; import org.eclipse.che.api.promises.client.Promise; import org.eclipse.che.api.user.shared.dto.UserDto; -import org.eclipse.che.machine.authentication.shared.dto.MachineTokenDto; +import org.eclipse.che.multiuser.machine.authentication.shared.dto.MachineTokenDto; /** * GWT Client for MachineToken Service. diff --git a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineTokenServiceClientImpl.java b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineTokenServiceClientImpl.java similarity index 93% rename from wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineTokenServiceClientImpl.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineTokenServiceClientImpl.java index 939c903e0f..fb2e7f4497 100644 --- a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/MachineTokenServiceClientImpl.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/MachineTokenServiceClientImpl.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.ide; +package org.eclipse.che.multiuser.machine.authentication.ide; import com.google.inject.Inject; import org.eclipse.che.api.promises.client.Promise; @@ -17,7 +17,7 @@ import org.eclipse.che.ide.api.app.AppContext; import org.eclipse.che.ide.rest.AsyncRequestFactory; import org.eclipse.che.ide.rest.DtoUnmarshallerFactory; import org.eclipse.che.ide.rest.RestContext; -import org.eclipse.che.machine.authentication.shared.dto.MachineTokenDto; +import org.eclipse.che.multiuser.machine.authentication.shared.dto.MachineTokenDto; /** * Implementation for {@link MachineTokenServiceClient}. diff --git a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/inject/MachineAuthGinModule.java b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/inject/MachineAuthGinModule.java similarity index 66% rename from wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/inject/MachineAuthGinModule.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/inject/MachineAuthGinModule.java index 6fdc867739..f03501f069 100644 --- a/wsmaster/che-machine-authentication-ide/src/main/java/org/eclipse/che/machine/authentication/ide/inject/MachineAuthGinModule.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/java/org/eclipse/che/multiuser/machine/authentication/ide/inject/MachineAuthGinModule.java @@ -8,14 +8,15 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.ide.inject; +package org.eclipse.che.multiuser.machine.authentication.ide.inject; import com.google.gwt.inject.client.AbstractGinModule; import com.google.inject.Singleton; import org.eclipse.che.ide.api.extension.ExtensionGinModule; import org.eclipse.che.ide.api.machine.CheWsAgentLinksModifier; -import org.eclipse.che.machine.authentication.ide.CheAuthMachineLinksModifier; -import org.eclipse.che.machine.authentication.ide.MachineTokenServiceClient; +import org.eclipse.che.multiuser.machine.authentication.ide.CheAuthMachineLinksModifier; +import org.eclipse.che.multiuser.machine.authentication.ide.MachineTokenServiceClient; +import org.eclipse.che.multiuser.machine.authentication.ide.MachineTokenServiceClientImpl; /** @author Anton Korneta */ @ExtensionGinModule @@ -23,9 +24,9 @@ public class MachineAuthGinModule extends AbstractGinModule { @Override protected void configure() { - //bind(AsyncRequestFactory.class).to(org.eclipse.che.machine.authentication.ide.MachineAsyncRequestFactory.class); + //bind(AsyncRequestFactory.class).to(MachineAsyncRequestFactory.class); bind(MachineTokenServiceClient.class) - .to(org.eclipse.che.machine.authentication.ide.MachineTokenServiceClientImpl.class) + .to(MachineTokenServiceClientImpl.class) .in(Singleton.class); bind(CheWsAgentLinksModifier.class).to(CheAuthMachineLinksModifier.class); } diff --git a/wsmaster/che-machine-authentication-ide/src/main/resources/org/eclipse/che/machine/authentication/Authentication.gwt.xml b/multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/resources/org/eclipse/che/multiuser/machine/authentication/Authentication.gwt.xml similarity index 100% rename from wsmaster/che-machine-authentication-ide/src/main/resources/org/eclipse/che/machine/authentication/Authentication.gwt.xml rename to multiuser/machine-auth/che-multiuser-machine-authentication-ide/src/main/resources/org/eclipse/che/multiuser/machine/authentication/Authentication.gwt.xml diff --git a/wsmaster/che-machine-authentication-shared/pom.xml b/multiuser/machine-auth/che-multiuser-machine-authentication-shared/pom.xml similarity index 81% rename from wsmaster/che-machine-authentication-shared/pom.xml rename to multiuser/machine-auth/che-multiuser-machine-authentication-shared/pom.xml index d1118591c0..8425cfd69a 100644 --- a/wsmaster/che-machine-authentication-shared/pom.xml +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-shared/pom.xml @@ -14,13 +14,13 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-machine-auth + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-machine-authentication-shared + che-multiuser-machine-authentication-shared jar - Che Core :: API :: Machine Authentication Shared + Che Multiuser :: Machine Authentication Shared org.eclipse.che.core diff --git a/wsmaster/che-machine-authentication-shared/src/main/java/org/eclipse/che/machine/authentication/shared/dto/MachineTokenDto.java b/multiuser/machine-auth/che-multiuser-machine-authentication-shared/src/main/java/org/eclipse/che/multiuser/machine/authentication/shared/dto/MachineTokenDto.java similarity index 93% rename from wsmaster/che-machine-authentication-shared/src/main/java/org/eclipse/che/machine/authentication/shared/dto/MachineTokenDto.java rename to multiuser/machine-auth/che-multiuser-machine-authentication-shared/src/main/java/org/eclipse/che/multiuser/machine/authentication/shared/dto/MachineTokenDto.java index 47e892bef8..35f2650bf5 100644 --- a/wsmaster/che-machine-authentication-shared/src/main/java/org/eclipse/che/machine/authentication/shared/dto/MachineTokenDto.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication-shared/src/main/java/org/eclipse/che/multiuser/machine/authentication/shared/dto/MachineTokenDto.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.shared.dto; +package org.eclipse.che.multiuser.machine.authentication.shared.dto; import org.eclipse.che.dto.shared.DTO; diff --git a/wsmaster/che-machine-authentication/pom.xml b/multiuser/machine-auth/che-multiuser-machine-authentication/pom.xml similarity index 83% rename from wsmaster/che-machine-authentication/pom.xml rename to multiuser/machine-auth/che-multiuser-machine-authentication/pom.xml index 17925b42eb..d0f1f0ee4c 100644 --- a/wsmaster/che-machine-authentication/pom.xml +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/pom.xml @@ -14,13 +14,13 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-machine-auth + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-machine-authentication + che-multiuser-machine-authentication jar - Che Core :: API :: Machine Authentication + Che Multiuser :: Machine Authentication ${project.build.directory}/generated-sources/dto/ @@ -110,8 +110,16 @@ che-core-commons-lang - org.eclipse.che.core - che-machine-authentication-shared + org.eclipse.che.multiuser + che-multiuser-api-authorization + + + org.eclipse.che.multiuser + che-multiuser-machine-authentication-shared + + + org.eclipse.che.multiuser + che-multiuser-machine-authentication-shared org.everrest @@ -121,6 +129,21 @@ org.slf4j slf4j-api + + org.eclipse.che.multiuser + che-multiuser-api-permission + provided + + + org.eclipse.che.multiuser + che-multiuser-permission-workspace + provided + + + com.jayway.restassured + rest-assured + test + org.eclipse.che.core che-core-commons-test @@ -218,18 +241,18 @@ - org.eclipse.che.machine.authentication.shared.dto + org.eclipse.che.multiuser.machine.authentication.shared.dto ${dto-generator-out-directory} - org.eclipse.che.machine.authentication.server.dto.DtoServerImpls + org.eclipse.che.multiuser.machine.authentication.server.DtoServerImpls server - org.eclipse.che.core - che-machine-authentication-shared + org.eclipse.che.multiuser + che-multiuser-machine-authentication-shared ${project.version} diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/AuthWsAgentHealthChecker.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/AuthWsAgentHealthChecker.java similarity index 94% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/AuthWsAgentHealthChecker.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/AuthWsAgentHealthChecker.java index daf09fd600..92ce68d11f 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/AuthWsAgentHealthChecker.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/AuthWsAgentHealthChecker.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import java.io.IOException; import javax.inject.Inject; @@ -23,7 +23,7 @@ import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.model.machine.Machine; import org.eclipse.che.api.core.rest.HttpJsonRequest; import org.eclipse.che.api.core.rest.HttpJsonRequestFactory; -import org.eclipse.che.machine.authentication.shared.dto.MachineTokenDto; +import org.eclipse.che.multiuser.machine.authentication.shared.dto.MachineTokenDto; /** @author Max Shaposhnik (mshaposhnik@redhat.com) */ @Singleton diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineAuthLinksInjector.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineAuthLinksInjector.java similarity index 96% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineAuthLinksInjector.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineAuthLinksInjector.java index 278b0493ff..efebe1422a 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineAuthLinksInjector.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineAuthLinksInjector.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import static org.eclipse.che.api.core.util.LinksHelper.createLink; import static org.eclipse.che.api.machine.shared.Constants.EXEC_AGENT_REFERENCE; @@ -29,7 +29,7 @@ import org.eclipse.che.api.core.rest.shared.dto.Link; import org.eclipse.che.api.environment.server.MachineLinksInjector; import org.eclipse.che.api.machine.shared.dto.MachineDto; import org.eclipse.che.api.machine.shared.dto.ServerDto; -import org.eclipse.che.machine.authentication.shared.dto.MachineTokenDto; +import org.eclipse.che.multiuser.machine.authentication.shared.dto.MachineTokenDto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineLoginFilter.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineLoginFilter.java similarity index 87% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineLoginFilter.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineLoginFilter.java index 42d7a720d5..1b2c627888 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineLoginFilter.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineLoginFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import static com.google.common.base.Strings.nullToEmpty; @@ -32,6 +32,8 @@ import org.eclipse.che.commons.auth.token.RequestTokenExtractor; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.commons.subject.SubjectImpl; +import org.eclipse.che.multiuser.api.permission.server.AuthorizedSubject; +import org.eclipse.che.multiuser.api.permission.server.PermissionChecker; /** @author Max Shaposhnik (mshaposhnik@codenvy.com) */ @Singleton @@ -43,6 +45,8 @@ public class MachineLoginFilter implements Filter { @Inject private UserManager userManager; + @Inject private PermissionChecker permissionChecker; + @Override public void init(FilterConfig filterConfig) throws ServletException {} @@ -66,7 +70,9 @@ public class MachineLoginFilter implements Filter { throw new ServletException("Cannot find user by machine token."); } - final Subject subject = new SubjectImpl(user.getName(), user.getId(), tokenString, false); + final Subject subject = + new AuthorizedSubject( + new SubjectImpl(user.getName(), user.getId(), tokenString, false), permissionChecker); try { EnvironmentContext.getCurrent().setSubject(subject); diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineSessionInvalidator.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineSessionInvalidator.java similarity index 95% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineSessionInvalidator.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineSessionInvalidator.java index 5a85906031..0499124b75 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineSessionInvalidator.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineSessionInvalidator.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import com.google.common.annotations.VisibleForTesting; import javax.annotation.PostConstruct; diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenPermissionsFilter.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenPermissionsFilter.java similarity index 87% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenPermissionsFilter.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenPermissionsFilter.java index 9c935e0256..d3eec7f81b 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenPermissionsFilter.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenPermissionsFilter.java @@ -8,10 +8,10 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.USE; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.USE; import javax.ws.rs.Path; import org.eclipse.che.api.core.ApiException; diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenRegistry.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenRegistry.java similarity index 98% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenRegistry.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenRegistry.java index 1466a1a5f6..ca5faf7ec4 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenRegistry.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenRegistry.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import static java.lang.String.format; import static org.eclipse.che.commons.lang.NameGenerator.generate; diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenService.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenService.java similarity index 95% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenService.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenService.java index a6c9414740..6d0d8ade21 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/MachineTokenService.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenService.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import static org.eclipse.che.dto.server.DtoFactory.newDto; @@ -25,7 +25,7 @@ import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.rest.HttpJsonRequestFactory; import org.eclipse.che.api.user.shared.dto.UserDto; import org.eclipse.che.commons.env.EnvironmentContext; -import org.eclipse.che.machine.authentication.shared.dto.MachineTokenDto; +import org.eclipse.che.multiuser.machine.authentication.shared.dto.MachineTokenDto; /** * Machine security token service. Allows user to retrieve token to access to the particular diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/WorkspaceServiceAuthLinksInjector.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/WorkspaceServiceAuthLinksInjector.java similarity index 98% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/WorkspaceServiceAuthLinksInjector.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/WorkspaceServiceAuthLinksInjector.java index 30b811f20c..f9cdb51fde 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/WorkspaceServiceAuthLinksInjector.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/WorkspaceServiceAuthLinksInjector.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import static com.google.common.base.MoreObjects.firstNonNull; import static org.eclipse.che.api.core.model.workspace.WorkspaceStatus.RUNNING; @@ -39,7 +39,7 @@ import org.eclipse.che.api.workspace.server.WorkspaceService; import org.eclipse.che.api.workspace.server.WorkspaceServiceLinksInjector; import org.eclipse.che.api.workspace.shared.dto.WorkspaceDto; import org.eclipse.che.api.workspace.shared.dto.WorkspaceRuntimeDto; -import org.eclipse.che.machine.authentication.shared.dto.MachineTokenDto; +import org.eclipse.che.multiuser.machine.authentication.shared.dto.MachineTokenDto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/interceptor/InterceptorModule.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/InterceptorModule.java similarity index 93% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/interceptor/InterceptorModule.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/InterceptorModule.java index ffcde53a9b..41d8fab99e 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/interceptor/InterceptorModule.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/InterceptorModule.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server.interceptor; +package org.eclipse.che.multiuser.machine.authentication.server.interceptor; import static com.google.inject.matcher.Matchers.subclassesOf; import static org.eclipse.che.inject.Matchers.names; diff --git a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/interceptor/MachineTokenInterceptor.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/MachineTokenInterceptor.java similarity index 89% rename from wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/interceptor/MachineTokenInterceptor.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/MachineTokenInterceptor.java index 62a0bde7f0..50da0f8603 100644 --- a/wsmaster/che-machine-authentication/src/main/java/org/eclipse/che/machine/authentication/server/interceptor/MachineTokenInterceptor.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/MachineTokenInterceptor.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server.interceptor; +package org.eclipse.che.multiuser.machine.authentication.server.interceptor; import javax.inject.Inject; import javax.inject.Singleton; @@ -16,7 +16,7 @@ import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.eclipse.che.api.core.model.workspace.Workspace; import org.eclipse.che.commons.env.EnvironmentContext; -import org.eclipse.che.machine.authentication.server.MachineTokenRegistry; +import org.eclipse.che.multiuser.machine.authentication.server.MachineTokenRegistry; /** * Intercepts calls to workspace start/stop methods and creates machine authorization token in the diff --git a/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineServiceAuthLinksInjectorTest.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineServiceAuthLinksInjectorTest.java similarity index 97% rename from wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineServiceAuthLinksInjectorTest.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineServiceAuthLinksInjectorTest.java index ac63b79157..fe495d9b5f 100644 --- a/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineServiceAuthLinksInjectorTest.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineServiceAuthLinksInjectorTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import static org.eclipse.che.api.machine.shared.Constants.TERMINAL_REFERENCE; import static org.mockito.Matchers.anyString; @@ -32,7 +32,7 @@ import org.eclipse.che.api.machine.shared.dto.MachineRuntimeInfoDto; import org.eclipse.che.api.machine.shared.dto.ServerDto; import org.eclipse.che.commons.test.mockito.answer.SelfReturningAnswer; import org.eclipse.che.dto.server.DtoFactory; -import org.eclipse.che.machine.authentication.shared.dto.MachineTokenDto; +import org.eclipse.che.multiuser.machine.authentication.shared.dto.MachineTokenDto; import org.everrest.core.impl.uri.UriBuilderImpl; import org.mockito.Mock; import org.mockito.testng.MockitoTestNGListener; diff --git a/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenPermissionsFilterTest.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenPermissionsFilterTest.java new file mode 100644 index 0000000000..3910a785ac --- /dev/null +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenPermissionsFilterTest.java @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.machine.authentication.server; + +import static com.jayway.restassured.RestAssured.given; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.USE; +import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; +import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; +import static org.everrest.assured.JettyHttpServer.SECURE_PATH; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.testng.AssertJUnit.assertEquals; + +import com.jayway.restassured.response.Response; +import org.eclipse.che.api.core.ForbiddenException; +import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.commons.subject.Subject; +import org.everrest.assured.EverrestJetty; +import org.everrest.core.Filter; +import org.everrest.core.GenericContainerRequest; +import org.everrest.core.RequestFilter; +import org.everrest.core.resource.GenericResourceMethod; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.testng.MockitoTestNGListener; +import org.testng.annotations.Listeners; +import org.testng.annotations.Test; + +/** + * Tests for {@link MachineTokenPermissionsFilter}. + * + * @author Max Shaposhnik + */ +@Listeners(value = {EverrestJetty.class, MockitoTestNGListener.class}) +public class MachineTokenPermissionsFilterTest { + + @SuppressWarnings("unused") + private static final EnvironmentFilter FILTER = new EnvironmentFilter(); + + @SuppressWarnings("unused") + @InjectMocks + MachineTokenPermissionsFilter permissionsFilter; + + @Mock private static Subject subject; + + @Mock MachineTokenService service; + + @Test + public void shouldCheckPermissionsOnGettingMachineById() throws Exception { + + when(subject.hasPermission(eq(DOMAIN_ID), eq("workspace123"), eq(USE))).thenReturn(true); + + final Response response = + given() + .auth() + .basic(ADMIN_USER_NAME, ADMIN_USER_PASSWORD) + .when() + .get(SECURE_PATH + "/machine/token/workspace123"); + + assertEquals(response.getStatusCode(), 204); + verify(service).getMachineToken(eq("workspace123")); + verify(subject).checkPermission(DOMAIN_ID, "workspace123", USE); + } + + @Test + public void shouldSkipGetUserMethod() throws Exception { + + final Response response = + given() + .auth() + .basic(ADMIN_USER_NAME, ADMIN_USER_PASSWORD) + .when() + .get(SECURE_PATH + "/machine/token/user/user123"); + + verify(subject, never()).checkPermission(anyString(), anyString(), anyString()); + } + + @Test + public void shouldThrowExceptionWhenUpdatingNotOwnedWorkspace() throws Exception { + + when(subject.hasPermission(eq(DOMAIN_ID), eq("workspace123"), eq(USE))).thenReturn(false); + doThrow( + new ForbiddenException( + "The user does not have permission to " + + USE + + " workspace with id 'workspace123'")) + .when(subject) + .checkPermission(anyString(), anyString(), anyString()); + + final Response response = + given() + .auth() + .basic(ADMIN_USER_NAME, ADMIN_USER_PASSWORD) + .when() + .get(SECURE_PATH + "/machine/token/workspace123"); + + assertEquals(response.getStatusCode(), 403); + } + + @Test(expectedExceptions = ForbiddenException.class) + public void shouldThrowExceptionWhenCallingUnlistedMethod() throws Exception { + + GenericResourceMethod genericResourceMethod = Mockito.mock(GenericResourceMethod.class); + when(genericResourceMethod.getMethod()) + .thenReturn( + this.getClass().getDeclaredMethod("shouldThrowExceptionWhenCallingUnlistedMethod")); + Object[] argument = new Object[0]; + permissionsFilter.filter(genericResourceMethod, argument); + } + + @Filter + public static class EnvironmentFilter implements RequestFilter { + public void doFilter(GenericContainerRequest request) { + EnvironmentContext.getCurrent().setSubject(subject); + } + } +} diff --git a/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineTokenRegistryTest.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenRegistryTest.java similarity index 96% rename from wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineTokenRegistryTest.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenRegistryTest.java index 7500e57b1a..3e06ff387d 100644 --- a/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineTokenRegistryTest.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenRegistryTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server; +package org.eclipse.che.multiuser.machine.authentication.server; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; diff --git a/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/interceptor/MachineTokenInterceptorTest.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/MachineTokenInterceptorTest.java similarity index 96% rename from wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/interceptor/MachineTokenInterceptorTest.java rename to multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/MachineTokenInterceptorTest.java index 150727393e..5bdd378299 100644 --- a/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/interceptor/MachineTokenInterceptorTest.java +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/test/java/org/eclipse/che/multiuser/machine/authentication/server/interceptor/MachineTokenInterceptorTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.machine.authentication.server.interceptor; +package org.eclipse.che.multiuser.machine.authentication.server.interceptor; import static com.google.inject.matcher.Matchers.subclassesOf; import static org.eclipse.che.inject.Matchers.names; @@ -37,7 +37,7 @@ import org.eclipse.che.api.workspace.server.spi.WorkspaceDao; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.commons.subject.SubjectImpl; -import org.eclipse.che.machine.authentication.server.MachineTokenRegistry; +import org.eclipse.che.multiuser.machine.authentication.server.MachineTokenRegistry; import org.mockito.Mock; import org.mockito.testng.MockitoTestNGListener; import org.testng.annotations.BeforeMethod; diff --git a/multiuser/machine-auth/pom.xml b/multiuser/machine-auth/pom.xml new file mode 100644 index 0000000000..1bc8ba6901 --- /dev/null +++ b/multiuser/machine-auth/pom.xml @@ -0,0 +1,31 @@ + + + + 4.0.0 + + che-multiuser-parent + org.eclipse.che.multiuser + 5.18.0-SNAPSHOT + ../pom.xml + + che-multiuser-machine-auth + pom + Che Multiuser :: Machine Auth Parent + + che-multiuser-machine-authentication-shared + che-multiuser-machine-authentication + che-multiuser-machine-authentication-ide + che-multiuser-machine-authentication-agent + + diff --git a/wsmaster/che-core-api-account-permission/pom.xml b/multiuser/permission/che-multiuser-permission-account/pom.xml similarity index 91% rename from wsmaster/che-core-api-account-permission/pom.xml rename to multiuser/permission/che-multiuser-permission-account/pom.xml index 5661e8d6b3..60a77744cb 100644 --- a/wsmaster/che-core-api-account-permission/pom.xml +++ b/multiuser/permission/che-multiuser-permission-account/pom.xml @@ -14,12 +14,12 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-permission + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-core-api-account-permission - Che Core :: API :: Account Permission + che-multiuser-permission-account + Che Multiuser :: Account Permission javax.inject @@ -30,8 +30,8 @@ che-core-api-core - org.eclipse.che.core - che-core-api-permission + org.eclipse.che.multiuser + che-multiuser-api-permission ch.qos.logback diff --git a/wsmaster/che-core-api-account-permission/src/main/java/org/eclipse/che/account/permission/PersonalAccountPermissionsChecker.java b/multiuser/permission/che-multiuser-permission-account/src/main/java/org/eclipse/che/multiuser/permission/account/PersonalAccountPermissionsChecker.java similarity index 85% rename from wsmaster/che-core-api-account-permission/src/main/java/org/eclipse/che/account/permission/PersonalAccountPermissionsChecker.java rename to multiuser/permission/che-multiuser-permission-account/src/main/java/org/eclipse/che/multiuser/permission/account/PersonalAccountPermissionsChecker.java index 33f0aff6c5..580b07b64b 100644 --- a/wsmaster/che-core-api-account-permission/src/main/java/org/eclipse/che/account/permission/PersonalAccountPermissionsChecker.java +++ b/multiuser/permission/che-multiuser-permission-account/src/main/java/org/eclipse/che/multiuser/permission/account/PersonalAccountPermissionsChecker.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.account.permission; +package org.eclipse.che.multiuser.permission.account; import javax.inject.Singleton; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.server.account.AccountOperation; -import org.eclipse.che.api.permission.server.account.AccountPermissionsChecker; import org.eclipse.che.api.user.server.UserManager; import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.multiuser.api.permission.server.account.AccountOperation; +import org.eclipse.che.multiuser.api.permission.server.account.AccountPermissionsChecker; /** * Defines permissions checking for personal accounts. diff --git a/multiuser/permission/che-multiuser-permission-factory/pom.xml b/multiuser/permission/che-multiuser-permission-factory/pom.xml new file mode 100644 index 0000000000..3b532ca6c0 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-factory/pom.xml @@ -0,0 +1,162 @@ + + + + 4.0.0 + + che-multiuser-permission + org.eclipse.che.multiuser + 5.18.0-SNAPSHOT + + che-multiuser-permission-factory + Che Multiuser :: Factory Permissions + + false + + + + javax.ws.rs + javax.ws.rs-api + + + org.eclipse.che.core + che-core-api-core + + + org.eclipse.che.core + che-core-api-factory + + + org.eclipse.che.core + che-core-commons-test + + + org.everrest + everrest-core + + + com.google.inject.extensions + guice-persist + provided + + + org.eclipse.che.core + che-core-db + provided + + + org.eclipse.che.multiuser + che-multiuser-api-permission + provided + + + org.eclipse.che.multiuser + che-multiuser-permission-workspace + provided + + + org.eclipse.persistence + javax.persistence + provided + + + com.google.code.gson + gson + test + + + com.h2database + h2 + test + + + com.jayway.restassured + rest-assured + test + + + org.eclipse.che.core + che-core-commons-inject + test + + + org.eclipse.che.core + che-core-commons-json + test + + + org.eclipse.che.core + che-core-db-vendor-h2 + test + + + org.eclipse.che.core + che-core-sql-schema + test + + + org.eclipse.persistence + eclipselink + test + + + org.everrest + everrest-assured + test + + + org.flywaydb + flyway-core + test + + + + org.mockito + mockito-core + test + + + + org.mockitong + mockitong + test + + + + org.testng + testng + test + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + **/spi/tck/*.* + + + + + + + + diff --git a/wsmaster/che-core-api-factory/src/main/java/org/eclipse/che/api/factory/server/permissions/FactoryPermissionsFilter.java b/multiuser/permission/che-multiuser-permission-factory/src/main/java/org/eclipse/che/multiuser/permission/factory/FactoryPermissionsFilter.java similarity index 92% rename from wsmaster/che-core-api-factory/src/main/java/org/eclipse/che/api/factory/server/permissions/FactoryPermissionsFilter.java rename to multiuser/permission/che-multiuser-permission-factory/src/main/java/org/eclipse/che/multiuser/permission/factory/FactoryPermissionsFilter.java index fa2520dc91..7eddf1f597 100644 --- a/wsmaster/che-core-api-factory/src/main/java/org/eclipse/che/api/factory/server/permissions/FactoryPermissionsFilter.java +++ b/multiuser/permission/che-multiuser-permission-factory/src/main/java/org/eclipse/che/multiuser/permission/factory/FactoryPermissionsFilter.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.factory.server.permissions; +package org.eclipse.che.multiuser.permission.factory; import javax.ws.rs.Path; import org.eclipse.che.api.core.ApiException; -import org.eclipse.che.api.workspace.server.WorkspaceDomain; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; diff --git a/wsmaster/che-core-api-factory/src/test/java/org/eclipse/che/api/factory/server/permissions/FactoryPermissionsFilterTest.java b/multiuser/permission/che-multiuser-permission-factory/src/test/java/org/eclipse/che/multiuser/permission/factory/FactoryPermissionsFilterTest.java similarity index 93% rename from wsmaster/che-core-api-factory/src/test/java/org/eclipse/che/api/factory/server/permissions/FactoryPermissionsFilterTest.java rename to multiuser/permission/che-multiuser-permission-factory/src/test/java/org/eclipse/che/multiuser/permission/factory/FactoryPermissionsFilterTest.java index 9263f79737..6f88b4fa65 100644 --- a/wsmaster/che-core-api-factory/src/test/java/org/eclipse/che/api/factory/server/permissions/FactoryPermissionsFilterTest.java +++ b/multiuser/permission/che-multiuser-permission-factory/src/test/java/org/eclipse/che/multiuser/permission/factory/FactoryPermissionsFilterTest.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.factory.server.permissions; +package org.eclipse.che.multiuser.permission.factory; import static com.jayway.restassured.RestAssured.given; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.READ; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.READ; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; diff --git a/multiuser/permission/che-multiuser-permission-machine/pom.xml b/multiuser/permission/che-multiuser-permission-machine/pom.xml new file mode 100644 index 0000000000..e175fccb1a --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-machine/pom.xml @@ -0,0 +1,206 @@ + + + + 4.0.0 + + che-multiuser-permission + org.eclipse.che.multiuser + 5.18.0-SNAPSHOT + + che-multiuser-permission-machine + Che Multiuser :: Machine Permissions + + false + + + + com.google.guava + guava + + + com.google.inject + guice + + + com.google.inject.extensions + guice-multibindings + + + javax.annotation + javax.annotation-api + + + javax.inject + javax.inject + + + javax.ws.rs + javax.ws.rs-api + + + org.eclipse.che.core + che-core-api-account + + + org.eclipse.che.core + che-core-api-core + + + org.eclipse.che.core + che-core-api-dto + + + org.eclipse.che.core + che-core-api-machine + + + org.eclipse.che.core + che-core-api-machine-shared + + + org.eclipse.che.core + che-core-api-model + + + org.eclipse.che.core + che-core-api-user + + + org.eclipse.che.core + che-core-commons-annotations + + + org.eclipse.che.core + che-core-commons-test + + + org.everrest + everrest-core + + + com.google.inject.extensions + guice-persist + provided + + + org.eclipse.che.core + che-core-db + provided + + + org.eclipse.che.multiuser + che-multiuser-api-permission + provided + + + org.eclipse.che.multiuser + che-multiuser-api-permission-shared + provided + + + org.eclipse.persistence + javax.persistence + provided + + + com.google.code.gson + gson + test + + + com.h2database + h2 + test + + + com.jayway.restassured + rest-assured + test + + + org.eclipse.che.core + che-core-commons-inject + test + + + org.eclipse.che.core + che-core-commons-json + test + + + org.eclipse.che.core + che-core-db-vendor-h2 + test + + + org.eclipse.che.core + che-core-sql-schema + test + + + org.eclipse.persistence + eclipselink + test + + + org.everrest + everrest-assured + test + + + org.flywaydb + flyway-core + test + + + + org.mockito + mockito-core + test + + + + org.mockitong + mockitong + test + + + + org.testng + testng + test + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + **/spi/tck/*.* + + + + + + + + diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/filters/RecipePermissionsFilter.java b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/filters/RecipePermissionsFilter.java similarity index 83% rename from wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/filters/RecipePermissionsFilter.java rename to multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/filters/RecipePermissionsFilter.java index c13142d676..7dd9b1f22e 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/filters/RecipePermissionsFilter.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/filters/RecipePermissionsFilter.java @@ -8,18 +8,17 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.filters; +package org.eclipse.che.multiuser.permission.machine.filters; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.DELETE; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.DOMAIN_ID; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.READ; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.SEARCH; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.UPDATE; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.DELETE; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.READ; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.SEARCH; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.UPDATE; import javax.ws.rs.Path; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.machine.server.recipe.RecipeService; import org.eclipse.che.api.machine.shared.dto.recipe.RecipeUpdate; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/JpaRecipePermissionsDao.java b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDao.java similarity index 95% rename from wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/JpaRecipePermissionsDao.java rename to multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDao.java index a15b226698..c9e9149c94 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/JpaRecipePermissionsDao.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDao.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.jpa; +package org.eclipse.che.multiuser.permission.machine.jpa; import static com.google.common.base.Preconditions.checkArgument; import static java.lang.String.format; @@ -29,11 +29,11 @@ import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.notification.EventService; import org.eclipse.che.api.machine.server.event.BeforeRecipeRemovedEvent; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.jpa.AbstractJpaPermissionsDao; import org.eclipse.che.commons.annotation.Nullable; import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.jpa.AbstractJpaPermissionsDao; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; /** * JPA based implementation of recipe permissions DAO. diff --git a/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDao.java b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDao.java new file mode 100644 index 0000000000..beee24bcd0 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDao.java @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.machine.jpa; + +import com.google.inject.persist.Transactional; +import java.util.List; +import javax.inject.Inject; +import javax.inject.Provider; +import javax.inject.Singleton; +import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Expression; +import javax.persistence.criteria.Join; +import javax.persistence.criteria.JoinType; +import javax.persistence.criteria.ParameterExpression; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import org.eclipse.che.api.core.ServerException; +import org.eclipse.che.api.machine.server.jpa.JpaRecipeDao; +import org.eclipse.che.api.machine.server.recipe.RecipeImpl; +import org.eclipse.che.api.machine.server.spi.RecipeDao; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; + +/** + * Implementation of {@link RecipeDao}. + * + * @author Anton Korneta + */ +@Singleton +public class MultiuserJpaRecipeDao extends JpaRecipeDao { + + @Inject private Provider managerProvider; + + /** + * Translated query should look like: + * + *
+   * SELECT recipe.ID,
+   *        recipe.CREATOR,
+   *        recipe.DESCRIPTION,
+   *        recipe.NAME,
+   *        recipe.SCRIPT,
+   *        recipe.TYPE
+   * FROM  RECIPEPERMISSIONS permission
+   * LEFT OUTER JOIN RECIPE recipe ON (recipe.ID = permission.RECIPEID)
+   * LEFT OUTER JOIN Recipe_TAGS tag ON (tag.Recipe_ID = recipe.ID),
+   *     RECIPEPERMISSIONS_ACTIONS permissionActions
+   * WHERE ((tag.tag IN (?))
+   *     AND ((? IS NULL)
+   *           OR (recipe.TYPE = ?))
+   *     AND ((permission.USERID IS NULL)
+   *           OR (permission.USERID = ?))
+   *     AND (permissionActions.actions = ?)
+   *     AND (permissionActions.RECIPEPERMISSIONS_ID = permission.ID))
+   * GROUP BY recipe.ID
+   * HAVING (COUNT(tag.tag) = ?)
+   * 
+ */ + @Override + @Transactional + public List search( + String userId, List tags, String type, int skipCount, int maxItems) + throws ServerException { + try { + final EntityManager em = managerProvider.get(); + final CriteriaBuilder cb = em.getCriteriaBuilder(); + final CriteriaQuery query = cb.createQuery(RecipeImpl.class); + final Root perm = query.from(RecipePermissionsImpl.class); + final Join rwp = perm.join("recipe", JoinType.LEFT); + final Expression> acts = perm.get("actions"); + final ParameterExpression typeParam = cb.parameter(String.class, "recipeType"); + final Predicate checkType = cb.or(cb.isNull(typeParam), cb.equal(rwp.get("type"), typeParam)); + final Predicate userIdCheck = + cb.or( + cb.isNull(perm.get("userId")), + cb.equal(perm.get("userId"), cb.parameter(String.class, "userId"))); + final Predicate searchActionCheck = + cb.isMember(cb.parameter(String.class, "actionParam"), acts); + final Predicate shareCheck = cb.and(checkType, userIdCheck, searchActionCheck); + final TypedQuery typedQuery; + if (tags != null && !tags.isEmpty()) { + final Join tag = rwp.join("tags", JoinType.LEFT); + query + .select(cb.construct(RecipeImpl.class, rwp)) + .where(cb.and(tag.in(tags), shareCheck)) + .groupBy(rwp.get("id")) + .having(cb.equal(cb.count(tag), tags.size())); + typedQuery = em.createQuery(query).setParameter("tags", tags); + } else { + typedQuery = + em.createQuery(query.select(cb.construct(RecipeImpl.class, rwp)).where(shareCheck)); + } + return typedQuery + .setParameter("userId", userId) + .setParameter("recipeType", type) + .setParameter("actionParam", "search") + .setFirstResult(skipCount) + .setMaxResults(maxItems) + .getResultList(); + } catch (RuntimeException ex) { + throw new ServerException(ex.getLocalizedMessage(), ex); + } + } +} diff --git a/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserMachineJpaModule.java b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserMachineJpaModule.java new file mode 100644 index 0000000000..981daf1e03 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserMachineJpaModule.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.machine.jpa; + +import com.google.inject.AbstractModule; +import com.google.inject.TypeLiteral; +import com.google.inject.multibindings.Multibinder; +import org.eclipse.che.api.machine.server.jpa.JpaSnapshotDao; +import org.eclipse.che.api.machine.server.spi.RecipeDao; +import org.eclipse.che.api.machine.server.spi.SnapshotDao; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.permission.machine.jpa.listener.RemoveRecipeOnLastUserRemovedEventSubscriber; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; + +/** @author Yevhenii Voevodin */ +public class MultiuserMachineJpaModule extends AbstractModule { + + @Override + protected void configure() { + bind(RecipeDao.class).to(MultiuserJpaRecipeDao.class); + bind(SnapshotDao.class).to(JpaSnapshotDao.class); + bind(new TypeLiteral>() {}) + .to(RecipeDomain.class); + + final Multibinder> daos = + Multibinder.newSetBinder( + binder(), new TypeLiteral>() {}); + daos.addBinding().to(JpaRecipePermissionsDao.class); + + bind(new TypeLiteral>() {}) + .to(RecipeDomain.class); + bind(JpaRecipePermissionsDao.RemovePermissionsBeforeRecipeRemovedEventSubscriber.class) + .asEagerSingleton(); + bind(RemoveRecipeOnLastUserRemovedEventSubscriber.class).asEagerSingleton(); + } +} diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/listener/RemoveRecipeOnLastUserRemovedEventSubscriber.java b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/listener/RemoveRecipeOnLastUserRemovedEventSubscriber.java similarity index 81% rename from wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/listener/RemoveRecipeOnLastUserRemovedEventSubscriber.java rename to multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/listener/RemoveRecipeOnLastUserRemovedEventSubscriber.java index ff58a586c4..15740421bc 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/listener/RemoveRecipeOnLastUserRemovedEventSubscriber.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/jpa/listener/RemoveRecipeOnLastUserRemovedEventSubscriber.java @@ -8,15 +8,15 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.jpa.listener; +package org.eclipse.che.multiuser.permission.machine.jpa.listener; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.machine.server.jpa.JpaRecipeDao; -import org.eclipse.che.api.machine.server.jpa.JpaRecipePermissionsDao; -import org.eclipse.che.api.permission.server.jpa.listener.RemovePermissionsOnLastUserRemovedEventSubscriber; import org.eclipse.che.api.user.server.model.impl.UserImpl; +import org.eclipse.che.multiuser.api.permission.server.jpa.listener.RemovePermissionsOnLastUserRemovedEventSubscriber; +import org.eclipse.che.multiuser.permission.machine.jpa.JpaRecipePermissionsDao; /** * Listens for {@link UserImpl} removal events, and checks if the removing user is the last who have diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeCreatorPermissionsProvider.java b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeCreatorPermissionsProvider.java similarity index 93% rename from wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeCreatorPermissionsProvider.java rename to multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeCreatorPermissionsProvider.java index b632997298..5b010855c7 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeCreatorPermissionsProvider.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeCreatorPermissionsProvider.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.recipe; +package org.eclipse.che.multiuser.permission.machine.recipe; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; @@ -16,10 +16,10 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.che.api.core.notification.EventService; import org.eclipse.che.api.machine.server.event.RecipePersistedEvent; -import org.eclipse.che.api.permission.server.PermissionsManager; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; /** * Adds recipe permissions for current subject, if there is no subject present in {@link diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeDomain.java b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeDomain.java similarity index 90% rename from wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeDomain.java rename to multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeDomain.java index 0f3a5bb5b8..3ca8ccbccd 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeDomain.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeDomain.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.recipe; +package org.eclipse.che.multiuser.permission.machine.recipe; import com.google.common.collect.ImmutableList; import java.util.List; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; /** * Domain for storing recipes' permissions diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipePermissionsImpl.java b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipePermissionsImpl.java similarity index 92% rename from wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipePermissionsImpl.java rename to multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipePermissionsImpl.java index 9e2f7c63a6..f5d2ed4230 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipePermissionsImpl.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/main/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipePermissionsImpl.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.recipe; +package org.eclipse.che.multiuser.permission.machine.recipe; import java.util.ArrayList; import java.util.List; @@ -22,8 +22,9 @@ import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.shared.model.Permissions; +import org.eclipse.che.api.machine.server.recipe.RecipeImpl; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Recipe permissions data object. diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/filters/RecipePermissionsFilterTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/filters/RecipePermissionsFilterTest.java similarity index 96% rename from wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/filters/RecipePermissionsFilterTest.java rename to multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/filters/RecipePermissionsFilterTest.java index 7c0d2b42bd..8297f92329 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/filters/RecipePermissionsFilterTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/filters/RecipePermissionsFilterTest.java @@ -8,12 +8,12 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.filters; +package org.eclipse.che.multiuser.permission.machine.filters; import static com.jayway.restassured.RestAssured.given; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.DELETE; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.READ; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.UPDATE; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.DELETE; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.READ; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.UPDATE; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaRecipePermissionsDaoTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDaoTest.java similarity index 97% rename from wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaRecipePermissionsDaoTest.java rename to multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDaoTest.java index 1bd551ba86..e6a0245a28 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaRecipePermissionsDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDaoTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.jpa; +package org.eclipse.che.multiuser.permission.machine.jpa; import static java.util.Arrays.asList; import static org.testng.Assert.assertTrue; @@ -19,9 +19,9 @@ import com.google.inject.Injector; import java.util.List; import javax.persistence.EntityManager; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.db.H2TestHelper; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; @@ -59,7 +59,7 @@ public class JpaRecipePermissionsDaoTest { new RecipeImpl("recipe2", "rc2", null, null, null, null, null) }; - Injector injector = Guice.createInjector(new JpaTestModule(), new MachineJpaModule()); + Injector injector = Guice.createInjector(new JpaTestModule(), new MultiuserMachineJpaModule()); manager = injector.getInstance(EntityManager.class); dao = injector.getInstance(JpaRecipePermissionsDao.class); } diff --git a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTckModule.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTckModule.java new file mode 100644 index 0000000000..cdd47cae84 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTckModule.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.machine.jpa; + +import com.google.inject.TypeLiteral; +import java.util.Collection; +import java.util.stream.Collectors; +import org.eclipse.che.account.spi.AccountImpl; +import org.eclipse.che.api.core.model.workspace.Workspace; +import org.eclipse.che.api.machine.server.jpa.JpaSnapshotDao; +import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; +import org.eclipse.che.api.machine.server.recipe.RecipeImpl; +import org.eclipse.che.api.machine.server.spi.RecipeDao; +import org.eclipse.che.api.machine.server.spi.SnapshotDao; +import org.eclipse.che.api.user.server.model.impl.UserImpl; +import org.eclipse.che.commons.test.db.H2DBTestServer; +import org.eclipse.che.commons.test.db.H2JpaCleaner; +import org.eclipse.che.commons.test.db.PersistTestModuleBuilder; +import org.eclipse.che.commons.test.tck.TckModule; +import org.eclipse.che.commons.test.tck.TckResourcesCleaner; +import org.eclipse.che.commons.test.tck.repository.JpaTckRepository; +import org.eclipse.che.commons.test.tck.repository.TckRepository; +import org.eclipse.che.commons.test.tck.repository.TckRepositoryException; +import org.eclipse.che.core.db.DBInitializer; +import org.eclipse.che.core.db.h2.jpa.eclipselink.H2ExceptionHandler; +import org.eclipse.che.core.db.schema.SchemaInitializer; +import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; +import org.eclipse.che.multiuser.permission.machine.spi.tck.RecipePermissionsDaoTest; +import org.h2.Driver; + +/** @author Anton Korneta */ +public class JpaTckModule extends TckModule { + + @Override + protected void configure() { + H2DBTestServer server = H2DBTestServer.startDefault(); + install( + new PersistTestModuleBuilder() + .setDriver(Driver.class) + .runningOn(server) + .addEntityClasses( + UserImpl.class, + RecipeImpl.class, + SnapshotImpl.class, + AccountImpl.class, + AbstractPermissions.class, + RecipePermissionsImpl.class, + TestWorkspaceEntity.class) + .setExceptionHandler(H2ExceptionHandler.class) + .build()); + bind(DBInitializer.class).asEagerSingleton(); + bind(SchemaInitializer.class) + .toInstance(new FlywaySchemaInitializer(server.getDataSource(), "che-schema")); + bind(TckResourcesCleaner.class).toInstance(new H2JpaCleaner(server)); + + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(UserImpl.class)); + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(RecipeImpl.class)); + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(SnapshotImpl.class)); + bind(new TypeLiteral>() {}) + .toInstance(new TestWorkspacesTckRepository()); + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(AccountImpl.class)); + + bind(new TypeLiteral>() {}) + .to(RecipePermissionsDaoTest.TestDomain.class); + bind(new TypeLiteral>() {}) + .to(JpaRecipePermissionsDao.class); + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(RecipePermissionsImpl.class)); + + bind(RecipeDao.class).to(MultiuserJpaRecipeDao.class); + bind(SnapshotDao.class).to(JpaSnapshotDao.class); + } + + private static class TestWorkspacesTckRepository extends JpaTckRepository { + + public TestWorkspacesTckRepository() { + super(TestWorkspaceEntity.class); + } + + @Override + public void createAll(Collection entities) throws TckRepositoryException { + super.createAll(entities.stream().map(TestWorkspaceEntity::new).collect(Collectors.toList())); + } + } +} diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaTestModule.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTestModule.java similarity index 90% rename from wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaTestModule.java rename to multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTestModule.java index 650781103c..9b93fd334d 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaTestModule.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTestModule.java @@ -8,14 +8,12 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.jpa; +package org.eclipse.che.multiuser.permission.machine.jpa; import com.google.inject.AbstractModule; import org.eclipse.che.account.spi.AccountImpl; import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.commons.test.db.H2JpaCleaner; @@ -25,6 +23,8 @@ import org.eclipse.che.core.db.DBInitializer; import org.eclipse.che.core.db.h2.jpa.eclipselink.H2ExceptionHandler; import org.eclipse.che.core.db.schema.SchemaInitializer; import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.h2.Driver; /** @author Max Shaposhnik (mshaposh@redhat.com) */ diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaRecipeDaoTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDaoTest.java similarity index 94% rename from wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaRecipeDaoTest.java rename to multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDaoTest.java index c24e0b3b83..c19e2569a3 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaRecipeDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDaoTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.jpa; +package org.eclipse.che.multiuser.permission.machine.jpa; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; @@ -21,10 +21,11 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.EntityManager; +import org.eclipse.che.api.machine.server.jpa.JpaRecipeDao; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.db.H2TestHelper; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; @@ -32,7 +33,7 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** @author Max Shaposhnik */ -public class JpaRecipeDaoTest { +public class MultiuserJpaRecipeDaoTest { private EntityManager manager; private JpaRecipeDao dao; @@ -71,9 +72,9 @@ public class JpaRecipeDaoTest { "recipe_ubuntu", "DEBIAN_JDK8", "test", "test", null, asList("ubuntu", "tag1"), null) }; - Injector injector = Guice.createInjector(new JpaTestModule(), new MachineJpaModule()); + Injector injector = Guice.createInjector(new JpaTestModule(), new MultiuserMachineJpaModule()); manager = injector.getInstance(EntityManager.class); - dao = injector.getInstance(JpaRecipeDao.class); + dao = injector.getInstance(MultiuserJpaRecipeDao.class); } @BeforeMethod diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java similarity index 90% rename from wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java rename to multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java index 20696b81c1..56d47637f6 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.jpa; +package org.eclipse.che.multiuser.permission.machine.jpa; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; @@ -18,11 +18,12 @@ import com.google.inject.Guice; import com.google.inject.Injector; import java.util.stream.Stream; import javax.persistence.EntityManager; -import org.eclipse.che.api.machine.server.jpa.JpaRecipePermissionsDao.RemovePermissionsBeforeRecipeRemovedEventSubscriber; +import org.eclipse.che.api.machine.server.jpa.JpaRecipeDao; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.db.H2TestHelper; +import org.eclipse.che.multiuser.permission.machine.jpa.JpaRecipePermissionsDao.RemovePermissionsBeforeRecipeRemovedEventSubscriber; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; @@ -66,7 +67,7 @@ public class RemovePermissionsBeforeRecipeRemovedEventSubscriberTest { new RecipePermissionsImpl(users[i].getId(), recipe.getId(), asList("read", "update")); } - Injector injector = Guice.createInjector(new MachineJpaModule(), new JpaTestModule()); + Injector injector = Guice.createInjector(new MultiuserMachineJpaModule(), new JpaTestModule()); manager = injector.getInstance(EntityManager.class); recipeDao = injector.getInstance(JpaRecipeDao.class); diff --git a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/TestWorkspaceEntity.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/TestWorkspaceEntity.java new file mode 100644 index 0000000000..87394cc259 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/TestWorkspaceEntity.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.machine.jpa; + +import java.util.Collections; +import java.util.Map; +import java.util.Objects; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import org.eclipse.che.api.core.model.workspace.Workspace; +import org.eclipse.che.api.core.model.workspace.WorkspaceConfig; +import org.eclipse.che.api.core.model.workspace.WorkspaceRuntime; +import org.eclipse.che.api.core.model.workspace.WorkspaceStatus; + +/** + * Test implementation of {@link Workspace}, default one can't be used due to circular dependency. + * + * @author Yevhenii Voevodin + */ +@Entity(name = "Workspace") +@Table(name = "workspace") +public class TestWorkspaceEntity implements Workspace { + + @Id + @Column(name = "id") + private String id; + + @Column(name = "accountid") + private String accountId; + + public TestWorkspaceEntity() {} + + public TestWorkspaceEntity(Workspace workspace) { + this(workspace.getId(), workspace.getNamespace()); + } + + public TestWorkspaceEntity(String id, String accountId) { + this.id = id; + this.accountId = accountId; + } + + public String getId() { + return id; + } + + @Override + public String getNamespace() { + return "placeholder"; + } + + @Override + public WorkspaceStatus getStatus() { + return WorkspaceStatus.STOPPED; + } + + @Override + public Map getAttributes() { + return Collections.emptyMap(); + } + + @Override + public boolean isTemporary() { + return false; + } + + @Override + public WorkspaceConfig getConfig() { + return null; + } + + @Override + public WorkspaceRuntime getRuntime() { + return null; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof TestWorkspaceEntity)) { + return false; + } + final TestWorkspaceEntity that = (TestWorkspaceEntity) obj; + return Objects.equals(id, that.id) && Objects.equals(accountId, that.accountId); + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + Objects.hashCode(id); + hash = 31 * hash + Objects.hashCode(accountId); + return hash; + } + + @Override + public String toString() { + return "TestWorkspaceEntity{" + "id='" + id + '\'' + ", accountId='" + accountId + '\'' + '}'; + } +} diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/recipe/RecipeCreatorPermissionsProviderTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeCreatorPermissionsProviderTest.java similarity index 93% rename from wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/recipe/RecipeCreatorPermissionsProviderTest.java rename to multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeCreatorPermissionsProviderTest.java index 7f10d9e138..06d03f1a09 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/recipe/RecipeCreatorPermissionsProviderTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/recipe/RecipeCreatorPermissionsProviderTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.recipe; +package org.eclipse.che.multiuser.permission.machine.recipe; import static java.util.Arrays.asList; import static org.mockito.Matchers.any; @@ -18,9 +18,10 @@ import static org.testng.Assert.assertEquals; import org.eclipse.che.api.core.notification.EventService; import org.eclipse.che.api.machine.server.event.RecipePersistedEvent; -import org.eclipse.che.api.permission.server.PermissionsManager; +import org.eclipse.che.api.machine.server.recipe.RecipeImpl; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.SubjectImpl; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/spi/tck/RecipePermissionsDaoTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/spi/tck/RecipePermissionsDaoTest.java similarity index 96% rename from wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/spi/tck/RecipePermissionsDaoTest.java rename to multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/spi/tck/RecipePermissionsDaoTest.java index 6be427da65..7f35acf495 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/spi/tck/RecipePermissionsDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/spi/tck/RecipePermissionsDaoTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.machine.server.spi.tck; +package org.eclipse.che.multiuser.permission.machine.spi.tck; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; @@ -23,14 +23,14 @@ import javax.inject.Inject; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.tck.TckListener; import org.eclipse.che.commons.test.tck.repository.TckRepository; import org.eclipse.che.commons.test.tck.repository.TckRepositoryException; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Listeners; diff --git a/multiuser/permission/che-multiuser-permission-machine/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule b/multiuser/permission/che-multiuser-permission-machine/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule new file mode 100644 index 0000000000..47bad16fe5 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule @@ -0,0 +1 @@ +org.eclipse.che.multiuser.permission.machine.jpa.JpaTckModule diff --git a/multiuser/permission/che-multiuser-permission-machine/src/test/resources/logback-test.xml b/multiuser/permission/che-multiuser-permission-machine/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..d5690bc4ad --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/resources/logback-test.xml @@ -0,0 +1,33 @@ + + + + + + %-41(%date[%.15thread]) %-45([%-5level] [%.30logger{30} %L]) - %msg%n%nopex + + + + target/log/test.log + + %-41(%date[%.15thread]) %-45([%-5level] [%.30logger{30} %L]) - %msg%n + + + + + + + + + + diff --git a/multiuser/permission/che-multiuser-permission-system/pom.xml b/multiuser/permission/che-multiuser-permission-system/pom.xml new file mode 100644 index 0000000000..72847381e0 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-system/pom.xml @@ -0,0 +1,166 @@ + + + + 4.0.0 + + che-multiuser-permission + org.eclipse.che.multiuser + 5.18.0-SNAPSHOT + + che-multiuser-permission-system + Che Multiuser :: System Permissions + + false + + + + com.google.guava + guava + + + javax.ws.rs + javax.ws.rs-api + + + org.eclipse.che.core + che-core-api-core + + + org.eclipse.che.core + che-core-api-system + + + org.eclipse.che.core + che-core-commons-test + + + org.everrest + everrest-core + + + com.google.inject.extensions + guice-persist + provided + + + org.eclipse.che.core + che-core-db + provided + + + org.eclipse.che.multiuser + che-multiuser-api-permission + provided + + + org.eclipse.che.multiuser + che-multiuser-permission-workspace + provided + + + org.eclipse.persistence + javax.persistence + provided + + + com.google.code.gson + gson + test + + + com.h2database + h2 + test + + + com.jayway.restassured + rest-assured + test + + + org.eclipse.che.core + che-core-commons-inject + test + + + org.eclipse.che.core + che-core-commons-json + test + + + org.eclipse.che.core + che-core-db-vendor-h2 + test + + + org.eclipse.che.core + che-core-sql-schema + test + + + org.eclipse.persistence + eclipselink + test + + + org.everrest + everrest-assured + test + + + org.flywaydb + flyway-core + test + + + + org.mockito + mockito-core + test + + + + org.mockitong + mockitong + test + + + + org.testng + testng + test + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + **/spi/tck/*.* + + + + + + + + diff --git a/wsmaster/che-core-api-system/src/main/java/org/eclipse/che/api/system/server/SystemServicePermissionsFilter.java b/multiuser/permission/che-multiuser-permission-system/src/main/java/org/eclipse/che/multiuser/permission/system/SystemServicePermissionsFilter.java similarity index 89% rename from wsmaster/che-core-api-system/src/main/java/org/eclipse/che/api/system/server/SystemServicePermissionsFilter.java rename to multiuser/permission/che-multiuser-permission-system/src/main/java/org/eclipse/che/multiuser/permission/system/SystemServicePermissionsFilter.java index 53389e91e7..9c1f3822ad 100644 --- a/wsmaster/che-core-api-system/src/main/java/org/eclipse/che/api/system/server/SystemServicePermissionsFilter.java +++ b/multiuser/permission/che-multiuser-permission-system/src/main/java/org/eclipse/che/multiuser/permission/system/SystemServicePermissionsFilter.java @@ -8,14 +8,15 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.system.server; +package org.eclipse.che.multiuser.permission.system; import javax.ws.rs.Path; import org.eclipse.che.api.core.ApiException; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.server.SystemDomain; +import org.eclipse.che.api.system.server.SystemService; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; diff --git a/wsmaster/che-core-api-system/src/test/java/org/eclipse/che/api/system/server/SystemServicePermissionsFilterTest.java b/multiuser/permission/che-multiuser-permission-system/src/test/java/org/eclipse/che/multiuser/permission/system/SystemServicePermissionsFilterTest.java similarity index 97% rename from wsmaster/che-core-api-system/src/test/java/org/eclipse/che/api/system/server/SystemServicePermissionsFilterTest.java rename to multiuser/permission/che-multiuser-permission-system/src/test/java/org/eclipse/che/multiuser/permission/system/SystemServicePermissionsFilterTest.java index 464c66e36f..5f75c73e91 100644 --- a/wsmaster/che-core-api-system/src/test/java/org/eclipse/che/api/system/server/SystemServicePermissionsFilterTest.java +++ b/multiuser/permission/che-multiuser-permission-system/src/test/java/org/eclipse/che/multiuser/permission/system/SystemServicePermissionsFilterTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.system.server; +package org.eclipse.che.multiuser.permission.system; import static com.jayway.restassured.RestAssured.given; import static java.lang.String.format; @@ -30,9 +30,10 @@ import java.util.HashSet; import java.util.Set; import java.util.stream.Collectors; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.server.SystemDomain; +import org.eclipse.che.api.system.server.SystemService; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; import org.everrest.assured.EverrestJetty; import org.everrest.core.Filter; import org.everrest.core.GenericContainerRequest; diff --git a/wsmaster/che-core-api-user-permission/pom.xml b/multiuser/permission/che-multiuser-permission-user/pom.xml similarity index 94% rename from wsmaster/che-core-api-user-permission/pom.xml rename to multiuser/permission/che-multiuser-permission-user/pom.xml index 2c9358cf70..4ee5a3fa8c 100644 --- a/wsmaster/che-core-api-user-permission/pom.xml +++ b/multiuser/permission/che-multiuser-permission-user/pom.xml @@ -14,12 +14,12 @@ 4.0.0 - che-master-parent - org.eclipse.che.core + che-multiuser-permission + org.eclipse.che.multiuser 5.18.0-SNAPSHOT - che-core-api-user-permission - Che Core :: API :: User Permissions + che-multiuser-permission-user + Che Multiuser :: User Permissions false @@ -63,12 +63,12 @@
org.eclipse.che.core - che-core-api-permission + che-core-db provided - org.eclipse.che.core - che-core-db + org.eclipse.che.multiuser + che-multiuser-api-permission provided diff --git a/wsmaster/che-core-api-user-permission/src/main/java/org/eclipse/che/api/user/server/permissions/UserProfileServicePermissionsFilter.java b/multiuser/permission/che-multiuser-permission-user/src/main/java/org/eclipse/che/multiuser/permission/user/UserProfileServicePermissionsFilter.java similarity index 81% rename from wsmaster/che-core-api-user-permission/src/main/java/org/eclipse/che/api/user/server/permissions/UserProfileServicePermissionsFilter.java rename to multiuser/permission/che-multiuser-permission-user/src/main/java/org/eclipse/che/multiuser/permission/user/UserProfileServicePermissionsFilter.java index 0e3aa0424d..0a35fea65e 100644 --- a/wsmaster/che-core-api-user-permission/src/main/java/org/eclipse/che/api/user/server/permissions/UserProfileServicePermissionsFilter.java +++ b/multiuser/permission/che-multiuser-permission-user/src/main/java/org/eclipse/che/multiuser/permission/user/UserProfileServicePermissionsFilter.java @@ -8,16 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.user.server.permissions; - -import static org.eclipse.che.api.user.server.permissions.UserServicePermissionsFilter.MANAGE_USERS_ACTION; +package org.eclipse.che.multiuser.permission.user; import javax.ws.rs.Path; import org.eclipse.che.api.core.ApiException; -import org.eclipse.che.api.permission.server.SystemDomain; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; @@ -36,7 +34,8 @@ public class UserProfileServicePermissionsFilter extends CheMethodInvokerFilter final Subject subject = EnvironmentContext.getCurrent().getSubject(); switch (methodName) { case "updateAttributesById": - subject.checkPermission(SystemDomain.DOMAIN_ID, null, MANAGE_USERS_ACTION); + subject.checkPermission( + SystemDomain.DOMAIN_ID, null, UserServicePermissionsFilter.MANAGE_USERS_ACTION); break; default: //public methods diff --git a/wsmaster/che-core-api-user-permission/src/main/java/org/eclipse/che/api/user/server/permissions/UserServicePermissionsFilter.java b/multiuser/permission/che-multiuser-permission-user/src/main/java/org/eclipse/che/multiuser/permission/user/UserServicePermissionsFilter.java similarity index 96% rename from wsmaster/che-core-api-user-permission/src/main/java/org/eclipse/che/api/user/server/permissions/UserServicePermissionsFilter.java rename to multiuser/permission/che-multiuser-permission-user/src/main/java/org/eclipse/che/multiuser/permission/user/UserServicePermissionsFilter.java index 0de1834a76..a8e7b99539 100644 --- a/wsmaster/che-core-api-user-permission/src/main/java/org/eclipse/che/api/user/server/permissions/UserServicePermissionsFilter.java +++ b/multiuser/permission/che-multiuser-permission-user/src/main/java/org/eclipse/che/multiuser/permission/user/UserServicePermissionsFilter.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.user.server.permissions; +package org.eclipse.che.multiuser.permission.user; import static org.eclipse.che.api.user.server.UserService.USER_SELF_CREATION_ALLOWED; @@ -17,11 +17,11 @@ import javax.inject.Named; import javax.ws.rs.Path; import org.eclipse.che.api.core.ApiException; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.server.SystemDomain; import org.eclipse.che.api.user.server.UserService; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; diff --git a/wsmaster/che-core-api-user-permission/src/test/java/org/eclipse/che/api/user/server/permissions/UserProfileServicePermissionsFilterTest.java b/multiuser/permission/che-multiuser-permission-user/src/test/java/org/eclipse/che/multiuser/permission/user/UserProfileServicePermissionsFilterTest.java similarity index 88% rename from wsmaster/che-core-api-user-permission/src/test/java/org/eclipse/che/api/user/server/permissions/UserProfileServicePermissionsFilterTest.java rename to multiuser/permission/che-multiuser-permission-user/src/test/java/org/eclipse/che/multiuser/permission/user/UserProfileServicePermissionsFilterTest.java index 6c1cb7bfbe..2f72697a3f 100644 --- a/wsmaster/che-core-api-user-permission/src/test/java/org/eclipse/che/api/user/server/permissions/UserProfileServicePermissionsFilterTest.java +++ b/multiuser/permission/che-multiuser-permission-user/src/test/java/org/eclipse/che/multiuser/permission/user/UserProfileServicePermissionsFilterTest.java @@ -8,10 +8,9 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.user.server.permissions; +package org.eclipse.che.multiuser.permission.user; import static com.jayway.restassured.RestAssured.given; -import static org.eclipse.che.api.user.server.permissions.UserServicePermissionsFilter.MANAGE_USERS_ACTION; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; @@ -24,12 +23,12 @@ import com.jayway.restassured.response.Response; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.rest.ApiExceptionMapper; import org.eclipse.che.api.core.rest.shared.dto.ServiceError; -import org.eclipse.che.api.permission.server.SystemDomain; import org.eclipse.che.api.user.server.ProfileService; import org.eclipse.che.api.user.server.UserManager; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; import org.everrest.assured.EverrestJetty; import org.everrest.core.Filter; import org.everrest.core.GenericContainerRequest; @@ -77,14 +76,17 @@ public class UserProfileServicePermissionsFilterTest { .put(SECURE_PATH + "/profile/user123/attributes"); assertEquals(response.getStatusCode(), 204); - verify(subject).checkPermission(SystemDomain.DOMAIN_ID, null, MANAGE_USERS_ACTION); + verify(subject) + .checkPermission( + SystemDomain.DOMAIN_ID, null, UserServicePermissionsFilter.MANAGE_USERS_ACTION); } @Test public void shouldThrowExceptionWhenUserDoesNotHavePermissionsToUpdateProfile() throws Exception { doThrow(new ForbiddenException("User is not authorized")) .when(subject) - .checkPermission(SystemDomain.DOMAIN_ID, null, MANAGE_USERS_ACTION); + .checkPermission( + SystemDomain.DOMAIN_ID, null, UserServicePermissionsFilter.MANAGE_USERS_ACTION); final Response response = given() @@ -96,7 +98,9 @@ public class UserProfileServicePermissionsFilterTest { assertEquals(response.getStatusCode(), 403); assertEquals(unwrapError(response), "User is not authorized"); - verify(subject).checkPermission(SystemDomain.DOMAIN_ID, null, MANAGE_USERS_ACTION); + verify(subject) + .checkPermission( + SystemDomain.DOMAIN_ID, null, UserServicePermissionsFilter.MANAGE_USERS_ACTION); verifyZeroInteractions(service); } diff --git a/wsmaster/che-core-api-user-permission/src/test/java/org/eclipse/che/api/user/server/permissions/UserServicePermissionsFilterTest.java b/multiuser/permission/che-multiuser-permission-user/src/test/java/org/eclipse/che/multiuser/permission/user/UserServicePermissionsFilterTest.java similarity index 91% rename from wsmaster/che-core-api-user-permission/src/test/java/org/eclipse/che/api/user/server/permissions/UserServicePermissionsFilterTest.java rename to multiuser/permission/che-multiuser-permission-user/src/test/java/org/eclipse/che/multiuser/permission/user/UserServicePermissionsFilterTest.java index aed566a009..7c8c2905a3 100644 --- a/wsmaster/che-core-api-user-permission/src/test/java/org/eclipse/che/api/user/server/permissions/UserServicePermissionsFilterTest.java +++ b/multiuser/permission/che-multiuser-permission-user/src/test/java/org/eclipse/che/multiuser/permission/user/UserServicePermissionsFilterTest.java @@ -8,10 +8,9 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.user.server.permissions; +package org.eclipse.che.multiuser.permission.user; import static com.jayway.restassured.RestAssured.given; -import static org.eclipse.che.api.user.server.permissions.UserServicePermissionsFilter.MANAGE_USERS_ACTION; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; @@ -32,13 +31,13 @@ import java.lang.reflect.Method; import java.util.stream.Stream; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.rest.ApiExceptionMapper; -import org.eclipse.che.api.permission.server.SystemDomain; import org.eclipse.che.api.user.server.UserManager; import org.eclipse.che.api.user.server.UserService; import org.eclipse.che.api.user.shared.dto.UserDto; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; import org.everrest.assured.EverrestJetty; import org.everrest.core.Filter; import org.everrest.core.GenericContainerRequest; @@ -115,7 +114,9 @@ public class UserServicePermissionsFilterTest { assertEquals(response.getStatusCode(), 204); verify(service).create(any(), eq(null), anyBoolean()); - verify(subject).checkPermission(SystemDomain.DOMAIN_ID, null, MANAGE_USERS_ACTION); + verify(subject) + .checkPermission( + SystemDomain.DOMAIN_ID, null, UserServicePermissionsFilter.MANAGE_USERS_ACTION); } @Test @@ -130,7 +131,9 @@ public class UserServicePermissionsFilterTest { assertEquals(response.getStatusCode(), 204); verify(service).remove(eq("user123")); - verify(subject).checkPermission(SystemDomain.DOMAIN_ID, null, MANAGE_USERS_ACTION); + verify(subject) + .checkPermission( + SystemDomain.DOMAIN_ID, null, UserServicePermissionsFilter.MANAGE_USERS_ACTION); } @Test @@ -145,7 +148,9 @@ public class UserServicePermissionsFilterTest { assertEquals(response.getStatusCode(), 204); verify(service).remove(eq(USER_ID)); - verify(subject, never()).checkPermission(SystemDomain.DOMAIN_ID, null, MANAGE_USERS_ACTION); + verify(subject, never()) + .checkPermission( + SystemDomain.DOMAIN_ID, null, UserServicePermissionsFilter.MANAGE_USERS_ACTION); } @Test(dataProvider = "publicMethods") diff --git a/wsmaster/che-core-api-user-permission/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule b/multiuser/permission/che-multiuser-permission-user/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule similarity index 100% rename from wsmaster/che-core-api-user-permission/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule rename to multiuser/permission/che-multiuser-permission-user/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule diff --git a/multiuser/permission/che-multiuser-permission-workspace/pom.xml b/multiuser/permission/che-multiuser-permission-workspace/pom.xml new file mode 100644 index 0000000000..06284eb20f --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/pom.xml @@ -0,0 +1,217 @@ + + + + 4.0.0 + + che-multiuser-permission + org.eclipse.che.multiuser + 5.18.0-SNAPSHOT + + che-multiuser-permission-workspace + Che Multiuser :: Workspace Permissions + + false + + + + com.google.guava + guava + + + com.google.inject + guice + + + com.google.inject.extensions + guice-multibindings + + + javax.annotation + javax.annotation-api + + + javax.inject + javax.inject + + + javax.ws.rs + javax.ws.rs-api + + + org.eclipse.che.core + che-core-api-account + + + org.eclipse.che.core + che-core-api-core + + + org.eclipse.che.core + che-core-api-dto + + + org.eclipse.che.core + che-core-api-machine + + + org.eclipse.che.core + che-core-api-machine-shared + + + org.eclipse.che.core + che-core-api-model + + + org.eclipse.che.core + che-core-api-user + + + org.eclipse.che.core + che-core-api-workspace + + + org.eclipse.che.core + che-core-api-workspace-shared + + + org.eclipse.che.core + che-core-commons-annotations + + + org.eclipse.che.core + che-core-commons-test + + + org.eclipse.che.multiuser + che-multiuser-permission-machine + + + org.everrest + everrest-core + + + org.slf4j + slf4j-api + + + com.google.inject.extensions + guice-persist + provided + + + org.eclipse.che.core + che-core-db + provided + + + org.eclipse.che.multiuser + che-multiuser-api-permission + provided + + + org.eclipse.che.multiuser + che-multiuser-api-permission-shared + provided + + + org.eclipse.persistence + javax.persistence + provided + + + com.h2database + h2 + test + + + com.jayway.restassured + rest-assured + test + + + org.eclipse.che.core + che-core-commons-inject + test + + + org.eclipse.che.core + che-core-commons-json + test + + + org.eclipse.che.core + che-core-db-vendor-h2 + test + + + org.eclipse.che.core + che-core-sql-schema + test + + + org.eclipse.persistence + eclipselink + test + + + org.everrest + everrest-assured + test + + + org.flywaydb + flyway-core + test + + + + org.mockito + mockito-core + test + + + + org.mockitong + mockitong + test + + + + org.testng + testng + test + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + **/spi/tck/*.* + + + + + + + + diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceApiPermissionsModule.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceApiPermissionsModule.java similarity index 54% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceApiPermissionsModule.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceApiPermissionsModule.java index fb42b8ffb7..1601e2b796 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceApiPermissionsModule.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceApiPermissionsModule.java @@ -8,27 +8,29 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server; +package org.eclipse.che.multiuser.permission.workspace.server; import com.google.inject.AbstractModule; import com.google.inject.multibindings.MapBinder; import com.google.inject.multibindings.Multibinder; import com.google.inject.name.Names; -import org.eclipse.che.api.machine.server.filters.RecipePermissionsFilter; -import org.eclipse.che.api.machine.server.recipe.RecipeCreatorPermissionsProvider; -import org.eclipse.che.api.machine.server.recipe.RecipeDomain; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; -import org.eclipse.che.api.permission.server.filter.check.RemovePermissionsChecker; -import org.eclipse.che.api.permission.server.filter.check.SetPermissionsChecker; -import org.eclipse.che.api.permission.shared.model.PermissionsDomain; -import org.eclipse.che.api.workspace.server.filters.PublicPermissionsRemoveChecker; -import org.eclipse.che.api.workspace.server.filters.RecipeDomainSetPermissionsChecker; -import org.eclipse.che.api.workspace.server.filters.RecipeScriptDownloadPermissionFilter; -import org.eclipse.che.api.workspace.server.filters.StackDomainSetPermissionsChecker; -import org.eclipse.che.api.workspace.server.filters.StackPermissionsFilter; -import org.eclipse.che.api.workspace.server.filters.WorkspacePermissionsFilter; -import org.eclipse.che.api.workspace.server.stack.StackCreatorPermissionsProvider; -import org.eclipse.che.api.workspace.server.stack.StackDomain; +import org.eclipse.che.api.workspace.server.stack.StackLoader; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.RemovePermissionsChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.SetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.shared.model.PermissionsDomain; +import org.eclipse.che.multiuser.permission.machine.filters.RecipePermissionsFilter; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipeCreatorPermissionsProvider; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain; +import org.eclipse.che.multiuser.permission.workspace.server.filters.PublicPermissionsRemoveChecker; +import org.eclipse.che.multiuser.permission.workspace.server.filters.RecipeDomainSetPermissionsChecker; +import org.eclipse.che.multiuser.permission.workspace.server.filters.RecipeScriptDownloadPermissionFilter; +import org.eclipse.che.multiuser.permission.workspace.server.filters.StackDomainSetPermissionsChecker; +import org.eclipse.che.multiuser.permission.workspace.server.filters.StackPermissionsFilter; +import org.eclipse.che.multiuser.permission.workspace.server.filters.WorkspacePermissionsFilter; +import org.eclipse.che.multiuser.permission.workspace.server.stack.MultiuserStackLoader; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackCreatorPermissionsProvider; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain; /** @author Sergii Leschenko */ public class WorkspaceApiPermissionsModule extends AbstractModule { @@ -42,6 +44,7 @@ public class WorkspaceApiPermissionsModule extends AbstractModule { bind(WorkspaceCreatorPermissionsProvider.class).asEagerSingleton(); bind(StackCreatorPermissionsProvider.class).asEagerSingleton(); bind(RecipeCreatorPermissionsProvider.class).asEagerSingleton(); + bind(StackLoader.class).to(MultiuserStackLoader.class); Multibinder.newSetBinder( binder(), diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceCreatorPermissionsProvider.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceCreatorPermissionsProvider.java similarity index 90% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceCreatorPermissionsProvider.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceCreatorPermissionsProvider.java index de96f634e9..64351fcae6 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceCreatorPermissionsProvider.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceCreatorPermissionsProvider.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server; +package org.eclipse.che.multiuser.permission.workspace.server; import java.util.ArrayList; import javax.annotation.PostConstruct; @@ -19,9 +19,9 @@ import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.notification.EventService; import org.eclipse.che.api.core.notification.EventSubscriber; import org.eclipse.che.api.workspace.server.event.WorkspaceCreatedEvent; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; -import org.eclipse.che.api.workspace.server.spi.WorkerDao; import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.WorkerDao; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceDomain.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceDomain.java similarity index 83% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceDomain.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceDomain.java index 6bffcfb812..4e875eb634 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/WorkspaceDomain.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/WorkspaceDomain.java @@ -8,12 +8,12 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server; +package org.eclipse.che.multiuser.permission.workspace.server; import com.google.common.collect.ImmutableList; import java.util.List; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; /** * Domain for storing workspaces' permissions diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/PublicPermissionsRemoveChecker.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/PublicPermissionsRemoveChecker.java similarity index 74% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/PublicPermissionsRemoveChecker.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/PublicPermissionsRemoveChecker.java index 59fc9eb086..445859f17e 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/PublicPermissionsRemoveChecker.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/PublicPermissionsRemoveChecker.java @@ -8,10 +8,10 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; -import static org.eclipse.che.api.permission.server.SystemDomain.DOMAIN_ID; -import static org.eclipse.che.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; +import static org.eclipse.che.multiuser.api.permission.server.SystemDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; import java.util.HashSet; import java.util.Set; @@ -19,12 +19,12 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.che.api.core.ApiException; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.machine.server.recipe.RecipeDomain; -import org.eclipse.che.api.permission.server.PermissionsManager; -import org.eclipse.che.api.permission.server.filter.check.DefaultRemovePermissionsChecker; -import org.eclipse.che.api.permission.server.filter.check.RemovePermissionsChecker; -import org.eclipse.che.api.workspace.server.stack.StackDomain; import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DefaultRemovePermissionsChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.RemovePermissionsChecker; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain; /** * Recipe and Stack domains remove permissions checker. diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/RecipeDomainSetPermissionsChecker.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeDomainSetPermissionsChecker.java similarity index 71% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/RecipeDomainSetPermissionsChecker.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeDomainSetPermissionsChecker.java index fe20f16685..316e28fd69 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/RecipeDomainSetPermissionsChecker.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeDomainSetPermissionsChecker.java @@ -8,24 +8,24 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import static java.util.stream.Collectors.toList; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.DOMAIN_ID; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.READ; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.SEARCH; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.getActions; -import static org.eclipse.che.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; +import static org.eclipse.che.multiuser.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.READ; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.SEARCH; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.getActions; import java.util.HashSet; import java.util.Set; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.server.filter.check.DefaultSetPermissionsChecker; -import org.eclipse.che.api.permission.server.filter.check.SetPermissionsChecker; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DefaultSetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.SetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Recipe domain specific remove permission checker. diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/RecipeScriptDownloadPermissionFilter.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeScriptDownloadPermissionFilter.java similarity index 82% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/RecipeScriptDownloadPermissionFilter.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeScriptDownloadPermissionFilter.java index 37827b4db6..390e99eb3c 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/RecipeScriptDownloadPermissionFilter.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeScriptDownloadPermissionFilter.java @@ -8,10 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; - -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.USE; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import javax.ws.rs.Path; import org.eclipse.che.api.core.ApiException; @@ -19,6 +16,8 @@ import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain; +import org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; @@ -45,12 +44,12 @@ public class RecipeScriptDownloadPermissionFilter extends CheMethodInvokerFilter case "getRecipeScript": { workspaceId = ((String) arguments[0]); - action = USE; + action = WorkspaceDomain.USE; break; } default: throw new ForbiddenException("The user does not have permission to perform this operation"); } - currentSubject.checkPermission(DOMAIN_ID, workspaceId, action); + currentSubject.checkPermission(RecipeDomain.DOMAIN_ID, workspaceId, action); } } diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/StackDomainSetPermissionsChecker.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackDomainSetPermissionsChecker.java similarity index 70% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/StackDomainSetPermissionsChecker.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackDomainSetPermissionsChecker.java index 271e91ba23..d913bcaa7b 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/StackDomainSetPermissionsChecker.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackDomainSetPermissionsChecker.java @@ -8,24 +8,24 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import static java.util.stream.Collectors.toList; -import static org.eclipse.che.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.READ; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.SEARCH; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.getActions; +import static org.eclipse.che.multiuser.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.READ; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.SEARCH; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.getActions; import java.util.HashSet; import java.util.Set; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.server.filter.check.DefaultSetPermissionsChecker; -import org.eclipse.che.api.permission.server.filter.check.SetPermissionsChecker; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DefaultSetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.server.filter.check.SetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Stack domain specific set permission checker. diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/StackPermissionsFilter.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackPermissionsFilter.java similarity index 86% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/StackPermissionsFilter.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackPermissionsFilter.java index 7e8e528060..4490be5f68 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/StackPermissionsFilter.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackPermissionsFilter.java @@ -8,13 +8,13 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.DELETE; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.READ; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.SEARCH; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.UPDATE; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.DELETE; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.READ; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.SEARCH; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.UPDATE; import com.google.common.annotations.VisibleForTesting; import com.google.inject.Inject; @@ -23,13 +23,13 @@ import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.PermissionsManager; -import org.eclipse.che.api.permission.server.SystemDomain; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; import org.eclipse.che.api.workspace.server.stack.StackService; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/WorkspacePermissionsFilter.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/WorkspacePermissionsFilter.java similarity index 88% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/WorkspacePermissionsFilter.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/WorkspacePermissionsFilter.java index 18203d70a2..3834ba473c 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/filters/WorkspacePermissionsFilter.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/filters/WorkspacePermissionsFilter.java @@ -8,16 +8,16 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import static java.util.function.Function.identity; import static java.util.stream.Collectors.toMap; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.CONFIGURE; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.DELETE; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.READ; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.RUN; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.USE; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.CONFIGURE; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.DELETE; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.READ; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.RUN; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.USE; import java.util.Map; import java.util.Set; @@ -28,15 +28,15 @@ import org.eclipse.che.account.shared.model.Account; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; -import org.eclipse.che.api.permission.server.account.AccountOperation; -import org.eclipse.che.api.permission.server.account.AccountPermissionsChecker; import org.eclipse.che.api.workspace.server.WorkspaceManager; import org.eclipse.che.api.workspace.server.WorkspaceService; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.everrest.CheMethodInvokerFilter; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; +import org.eclipse.che.multiuser.api.permission.server.account.AccountOperation; +import org.eclipse.che.multiuser.api.permission.server.account.AccountPermissionsChecker; import org.everrest.core.Filter; import org.everrest.core.resource.GenericResourceMethod; diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserWorkspaceJpaModule.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserWorkspaceJpaModule.java new file mode 100644 index 0000000000..abd8014d91 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserWorkspaceJpaModule.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.workspace.server.jpa; + +import com.google.inject.AbstractModule; +import com.google.inject.TypeLiteral; +import com.google.inject.multibindings.Multibinder; +import org.eclipse.che.api.workspace.server.jpa.JpaWorkspaceDao.RemoveSnapshotsBeforeWorkspaceRemovedEventSubscriber; +import org.eclipse.che.api.workspace.server.jpa.JpaWorkspaceDao.RemoveWorkspaceBeforeAccountRemovedEventSubscriber; +import org.eclipse.che.api.workspace.server.spi.StackDao; +import org.eclipse.che.api.workspace.server.spi.WorkspaceDao; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.jpa.listener.RemovePermissionsOnLastUserRemovedEventSubscriber; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain; +import org.eclipse.che.multiuser.permission.workspace.server.jpa.listener.RemoveStackOnLastUserRemovedEventSubscriber; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.WorkerDao; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaStackPermissionsDao; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaWorkerDao; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.MultiuserJpaStackDao; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.MultiuserJpaWorkspaceDao; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; + +/** @author Yevhenii Voevodin */ +public class MultiuserWorkspaceJpaModule extends AbstractModule { + + @Override + protected void configure() { + bind(StackDao.class).to(MultiuserJpaStackDao.class); + bind(WorkerDao.class).to(JpaWorkerDao.class); + bind(WorkspaceDao.class).to(MultiuserJpaWorkspaceDao.class); + bind(RemoveWorkspaceBeforeAccountRemovedEventSubscriber.class).asEagerSingleton(); + bind(RemoveSnapshotsBeforeWorkspaceRemovedEventSubscriber.class).asEagerSingleton(); + + bind(JpaWorkerDao.RemoveWorkersBeforeWorkspaceRemovedEventSubscriber.class).asEagerSingleton(); + bind(JpaWorkerDao.RemoveWorkersBeforeUserRemovedEventSubscriber.class).asEagerSingleton(); + + bind(new TypeLiteral< + RemovePermissionsOnLastUserRemovedEventSubscriber>() {}) + .to(RemoveStackOnLastUserRemovedEventSubscriber.class); + bind(JpaStackPermissionsDao.RemovePermissionsBeforeStackRemovedEventSubscriber.class) + .asEagerSingleton(); + + bind(new TypeLiteral>() {}) + .to(StackDomain.class); + bind(new TypeLiteral>() {}).to(WorkspaceDomain.class); + + Multibinder> daos = + Multibinder.newSetBinder( + binder(), new TypeLiteral>() {}); + daos.addBinding().to(JpaWorkerDao.class); + daos.addBinding().to(JpaStackPermissionsDao.class); + } +} diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/listener/RemoveStackOnLastUserRemovedEventSubscriber.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/listener/RemoveStackOnLastUserRemovedEventSubscriber.java similarity index 79% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/listener/RemoveStackOnLastUserRemovedEventSubscriber.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/listener/RemoveStackOnLastUserRemovedEventSubscriber.java index d2c6aa7f17..122afbee7c 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/listener/RemoveStackOnLastUserRemovedEventSubscriber.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/listener/RemoveStackOnLastUserRemovedEventSubscriber.java @@ -8,15 +8,15 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.jpa.listener; +package org.eclipse.che.multiuser.permission.workspace.server.jpa.listener; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.jpa.listener.RemovePermissionsOnLastUserRemovedEventSubscriber; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.jpa.JpaStackDao; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaStackPermissionsDao; +import org.eclipse.che.multiuser.api.permission.server.jpa.listener.RemovePermissionsOnLastUserRemovedEventSubscriber; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaStackPermissionsDao; /** * Listens for {@link UserImpl} removal events, and checks if the removing user is the last who have diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/Worker.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/model/Worker.java similarity index 91% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/Worker.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/model/Worker.java index 71df8f4fe1..16c5a81200 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/Worker.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/model/Worker.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.model; +package org.eclipse.che.multiuser.permission.workspace.server.model; import java.util.List; diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/impl/WorkerImpl.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/model/impl/WorkerImpl.java similarity index 88% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/impl/WorkerImpl.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/model/impl/WorkerImpl.java index 0e71c3749f..02df483c85 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/impl/WorkerImpl.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/model/impl/WorkerImpl.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.model.impl; +package org.eclipse.che.multiuser.permission.workspace.server.model.impl; import java.util.ArrayList; import java.util.List; @@ -22,9 +22,10 @@ import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.workspace.server.WorkspaceDomain; -import org.eclipse.che.api.workspace.server.model.Worker; +import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain; +import org.eclipse.che.multiuser.permission.workspace.server.model.Worker; /** * Data object for {@link Worker} diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/WorkerDao.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/WorkerDao.java similarity index 95% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/WorkerDao.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/WorkerDao.java index 8bdee7b1c0..734a03c27a 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/WorkerDao.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/WorkerDao.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.spi; +package org.eclipse.che.multiuser.permission.workspace.server.spi; import java.util.List; import java.util.Optional; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; /** * Defines data access object contract for {@link WorkerImpl}. diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaStackPermissionsDao.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaStackPermissionsDao.java similarity index 95% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaStackPermissionsDao.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaStackPermissionsDao.java index 570d00e146..af0eb7e7fa 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaStackPermissionsDao.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaStackPermissionsDao.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.spi.jpa; +package org.eclipse.che.multiuser.permission.workspace.server.spi.jpa; import static com.google.common.base.Preconditions.checkArgument; import static java.lang.String.format; @@ -28,12 +28,12 @@ import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.notification.EventService; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.jpa.AbstractJpaPermissionsDao; import org.eclipse.che.api.workspace.server.event.BeforeStackRemovedEvent; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.annotation.Nullable; import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.jpa.AbstractJpaPermissionsDao; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; /** * JPA based implementation of stack permissions DAO. diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaWorkerDao.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaWorkerDao.java similarity index 94% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaWorkerDao.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaWorkerDao.java index 233f4a0b09..ec70451c8e 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaWorkerDao.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaWorkerDao.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.spi.jpa; +package org.eclipse.che.multiuser.permission.workspace.server.spi.jpa; import static com.google.common.base.Preconditions.checkArgument; import static java.lang.String.format; @@ -28,14 +28,14 @@ import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.notification.EventService; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.jpa.AbstractJpaPermissionsDao; import org.eclipse.che.api.user.server.event.BeforeUserRemovedEvent; import org.eclipse.che.api.workspace.server.event.BeforeWorkspaceRemovedEvent; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; -import org.eclipse.che.api.workspace.server.spi.WorkerDao; import org.eclipse.che.commons.annotation.Nullable; import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.jpa.AbstractJpaPermissionsDao; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.WorkerDao; /** * JPA based implementation of worker DAO. diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/MultiuserJpaStackDao.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/MultiuserJpaStackDao.java new file mode 100644 index 0000000000..7d2379431d --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/MultiuserJpaStackDao.java @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.workspace.server.spi.jpa; + +import static java.lang.String.format; +import static java.util.Objects.requireNonNull; + +import com.google.inject.persist.Transactional; +import java.util.List; +import java.util.stream.Collectors; +import javax.inject.Inject; +import javax.inject.Provider; +import javax.inject.Singleton; +import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import org.eclipse.che.api.core.ApiException; +import org.eclipse.che.api.core.ConflictException; +import org.eclipse.che.api.core.NotFoundException; +import org.eclipse.che.api.core.ServerException; +import org.eclipse.che.api.core.notification.EventService; +import org.eclipse.che.api.workspace.server.event.BeforeStackRemovedEvent; +import org.eclipse.che.api.workspace.server.event.StackPersistedEvent; +import org.eclipse.che.api.workspace.server.model.impl.ProjectConfigImpl; +import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; +import org.eclipse.che.api.workspace.server.spi.StackDao; +import org.eclipse.che.commons.annotation.Nullable; +import org.eclipse.che.core.db.jpa.DuplicateKeyException; + +/** + * JPA based implementation of {@link StackDao}. + * + * @author Yevhenii Voevodin + */ +@Singleton +public class MultiuserJpaStackDao implements StackDao { + + @Inject private Provider managerProvider; + + @Inject private EventService eventService; + + private static final String findByPermissionsQuery = + " SELECT stack FROM StackPermissions perm " + + " LEFT JOIN perm.stack stack " + + " WHERE (perm.userId IS NULL OR perm.userId = :userId) " + + " AND 'search' MEMBER OF perm.actions"; + + private static final String findByPermissionsAndTagsQuery = + " SELECT stack FROM StackPermissions perm " + + " LEFT JOIN perm.stack stack " + + " LEFT JOIN stack.tags tag " + + " WHERE (perm.userId IS NULL OR perm.userId = :userId) " + + " AND 'search' MEMBER OF perm.actions" + + " AND tag IN :tags " + + " GROUP BY stack.id HAVING COUNT(tag) = :tagsSize"; + + @Override + public void create(StackImpl stack) throws ConflictException, ServerException { + requireNonNull(stack, "Required non-null stack"); + try { + doCreate(stack); + } catch (DuplicateKeyException x) { + throw new ConflictException( + format("Stack with id '%s' or name '%s' already exists", stack.getId(), stack.getName())); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + @Transactional + public StackImpl getById(String id) throws NotFoundException, ServerException { + requireNonNull(id, "Required non-null id"); + try { + final StackImpl stack = managerProvider.get().find(StackImpl.class, id); + if (stack == null) { + throw new NotFoundException(format("Stack with id '%s' doesn't exist", id)); + } + return new StackImpl(stack); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + public void remove(String id) throws ServerException { + requireNonNull(id, "Required non-null id"); + try { + doRemove(id); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + public StackImpl update(StackImpl update) + throws NotFoundException, ServerException, ConflictException { + requireNonNull(update, "Required non-null update"); + try { + return new StackImpl(doUpdate(update)); + } catch (DuplicateKeyException x) { + throw new ConflictException(format("Stack with name '%s' already exists", update.getName())); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + @Transactional + public List searchStacks( + @Nullable String userId, @Nullable List tags, int skipCount, int maxItems) + throws ServerException { + final TypedQuery query; + if (tags == null || tags.isEmpty()) { + query = managerProvider.get().createQuery(findByPermissionsQuery, StackImpl.class); + } else { + query = + managerProvider + .get() + .createQuery(findByPermissionsAndTagsQuery, StackImpl.class) + .setParameter("tags", tags) + .setParameter("tagsSize", tags.size()); + } + try { + return query + .setParameter("userId", userId) + .setMaxResults(maxItems) + .setFirstResult(skipCount) + .getResultList() + .stream() + .map(StackImpl::new) + .collect(Collectors.toList()); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Transactional(rollbackOn = {RuntimeException.class, ApiException.class}) + protected void doCreate(StackImpl stack) throws ConflictException, ServerException { + if (stack.getWorkspaceConfig() != null) { + stack.getWorkspaceConfig().getProjects().forEach(ProjectConfigImpl::prePersistAttributes); + } + EntityManager manager = managerProvider.get(); + manager.persist(stack); + manager.flush(); + eventService.publish(new StackPersistedEvent(stack)).propagateException(); + } + + @Transactional(rollbackOn = {RuntimeException.class, ServerException.class}) + protected void doRemove(String id) throws ServerException { + final EntityManager manager = managerProvider.get(); + final StackImpl stack = manager.find(StackImpl.class, id); + if (stack != null) { + eventService.publish(new BeforeStackRemovedEvent(new StackImpl(stack))).propagateException(); + manager.remove(stack); + manager.flush(); + } + } + + @Transactional + protected StackImpl doUpdate(StackImpl update) throws NotFoundException { + final EntityManager manager = managerProvider.get(); + if (manager.find(StackImpl.class, update.getId()) == null) { + throw new NotFoundException(format("Workspace with id '%s' doesn't exist", update.getId())); + } + if (update.getWorkspaceConfig() != null) { + update.getWorkspaceConfig().getProjects().forEach(ProjectConfigImpl::prePersistAttributes); + } + StackImpl merged = manager.merge(update); + manager.flush(); + return merged; + } +} diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/MultiuserJpaWorkspaceDao.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/MultiuserJpaWorkspaceDao.java new file mode 100644 index 0000000000..b32a915d45 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/MultiuserJpaWorkspaceDao.java @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.workspace.server.spi.jpa; + +import static com.google.common.base.Preconditions.checkArgument; +import static java.lang.String.format; +import static java.util.Objects.requireNonNull; +import static java.util.stream.Collectors.toList; + +import com.google.inject.persist.Transactional; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.inject.Inject; +import javax.inject.Provider; +import javax.inject.Singleton; +import javax.persistence.EntityManager; +import javax.persistence.NoResultException; +import org.eclipse.che.account.event.BeforeAccountRemovedEvent; +import org.eclipse.che.api.core.ConflictException; +import org.eclipse.che.api.core.NotFoundException; +import org.eclipse.che.api.core.ServerException; +import org.eclipse.che.api.core.notification.EventService; +import org.eclipse.che.api.workspace.server.WorkspaceManager; +import org.eclipse.che.api.workspace.server.event.BeforeWorkspaceRemovedEvent; +import org.eclipse.che.api.workspace.server.event.WorkspaceRemovedEvent; +import org.eclipse.che.api.workspace.server.model.impl.ProjectConfigImpl; +import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; +import org.eclipse.che.api.workspace.server.spi.WorkspaceDao; +import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; +import org.eclipse.che.core.db.jpa.DuplicateKeyException; + +/** + * JPA based implementation of {@link WorkspaceDao}. + * + * @author Yevhenii Voevodin + */ +@Singleton +public class MultiuserJpaWorkspaceDao implements WorkspaceDao { + + @Inject private EventService eventService; + @Inject private Provider managerProvider; + + private static final String findByWorkerQuery = + "SELECT ws FROM Worker worker " + + " LEFT JOIN worker.workspace ws " + + " WHERE worker.userId = :userId " + + " AND 'read' MEMBER OF worker.actions"; + + @Override + public WorkspaceImpl create(WorkspaceImpl workspace) throws ConflictException, ServerException { + requireNonNull(workspace, "Required non-null workspace"); + try { + doCreate(workspace); + } catch (DuplicateKeyException dkEx) { + throw new ConflictException( + format( + "Workspace with id '%s' or name '%s' in namespace '%s' already exists", + workspace.getId(), workspace.getConfig().getName(), workspace.getNamespace())); + } catch (RuntimeException x) { + throw new ServerException(x.getMessage(), x); + } + return new WorkspaceImpl(workspace); + } + + @Override + public WorkspaceImpl update(WorkspaceImpl update) + throws NotFoundException, ConflictException, ServerException { + requireNonNull(update, "Required non-null update"); + try { + return new WorkspaceImpl(doUpdate(update)); + } catch (DuplicateKeyException dkEx) { + throw new ConflictException( + format( + "Workspace with name '%s' in namespace '%s' already exists", + update.getConfig().getName(), update.getNamespace())); + } catch (RuntimeException x) { + throw new ServerException(x.getMessage(), x); + } + } + + @Override + public void remove(String id) throws ServerException { + requireNonNull(id, "Required non-null id"); + try { + Optional workspaceOpt = doRemove(id); + workspaceOpt.ifPresent( + workspace -> eventService.publish(new WorkspaceRemovedEvent(workspace))); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + @Transactional + public WorkspaceImpl get(String id) throws NotFoundException, ServerException { + requireNonNull(id, "Required non-null id"); + try { + final WorkspaceImpl workspace = managerProvider.get().find(WorkspaceImpl.class, id); + if (workspace == null) { + throw new NotFoundException(format("Workspace with id '%s' doesn't exist", id)); + } + return new WorkspaceImpl(workspace); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + @Transactional + public WorkspaceImpl get(String name, String namespace) + throws NotFoundException, ServerException { + requireNonNull(name, "Required non-null name"); + requireNonNull(namespace, "Required non-null namespace"); + try { + return new WorkspaceImpl( + managerProvider + .get() + .createNamedQuery("Workspace.getByName", WorkspaceImpl.class) + .setParameter("namespace", namespace) + .setParameter("name", name) + .getSingleResult()); + } catch (NoResultException noResEx) { + throw new NotFoundException( + format("Workspace with name '%s' in namespace '%s' doesn't exist", name, namespace)); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + @Transactional + public List getByNamespace(String namespace) throws ServerException { + requireNonNull(namespace, "Required non-null namespace"); + try { + return managerProvider + .get() + .createNamedQuery("Workspace.getByNamespace", WorkspaceImpl.class) + .setParameter("namespace", namespace) + .getResultList() + .stream() + .map(WorkspaceImpl::new) + .collect(Collectors.toList()); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + @Transactional + public List getWorkspaces(String userId) throws ServerException { + + try { + return managerProvider + .get() + .createQuery(findByWorkerQuery, WorkspaceImpl.class) + .setParameter("userId", userId) + .getResultList(); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Override + @Transactional + public List getWorkspaces(boolean isTemporary, int skipCount, int maxItems) + throws ServerException { + checkArgument(maxItems >= 0, "The number of items to return can't be negative."); + checkArgument( + skipCount >= 0, + "The number of items to skip can't be negative or greater than " + Integer.MAX_VALUE); + try { + return managerProvider + .get() + .createNamedQuery("Workspace.getByTemporary", WorkspaceImpl.class) + .setParameter("temporary", isTemporary) + .setMaxResults(maxItems) + .setFirstResult(skipCount) + .getResultList() + .stream() + .map(WorkspaceImpl::new) + .collect(toList()); + } catch (RuntimeException x) { + throw new ServerException(x.getLocalizedMessage(), x); + } + } + + @Transactional + protected void doCreate(WorkspaceImpl workspace) { + if (workspace.getConfig() != null) { + workspace.getConfig().getProjects().forEach(ProjectConfigImpl::prePersistAttributes); + } + EntityManager manager = managerProvider.get(); + manager.persist(workspace); + manager.flush(); + } + + @Transactional(rollbackOn = {RuntimeException.class, ServerException.class}) + protected Optional doRemove(String id) throws ServerException { + final WorkspaceImpl workspace = managerProvider.get().find(WorkspaceImpl.class, id); + if (workspace == null) { + return Optional.empty(); + } + final EntityManager manager = managerProvider.get(); + eventService + .publish(new BeforeWorkspaceRemovedEvent(new WorkspaceImpl(workspace))) + .propagateException(); + manager.remove(workspace); + manager.flush(); + return Optional.of(workspace); + } + + @Transactional + protected WorkspaceImpl doUpdate(WorkspaceImpl update) throws NotFoundException { + EntityManager manager = managerProvider.get(); + if (manager.find(WorkspaceImpl.class, update.getId()) == null) { + throw new NotFoundException(format("Workspace with id '%s' doesn't exist", update.getId())); + } + if (update.getConfig() != null) { + update.getConfig().getProjects().forEach(ProjectConfigImpl::prePersistAttributes); + } + WorkspaceImpl merged = manager.merge(update); + manager.flush(); + return merged; + } + + @Singleton + public static class RemoveWorkspaceBeforeAccountRemovedEventSubscriber + extends CascadeEventSubscriber { + + @Inject private EventService eventService; + @Inject private WorkspaceManager workspaceManager; + + @PostConstruct + public void subscribe() { + eventService.subscribe(this, BeforeAccountRemovedEvent.class); + } + + @PreDestroy + public void unsubscribe() { + eventService.unsubscribe(this, BeforeAccountRemovedEvent.class); + } + + @Override + public void onCascadeEvent(BeforeAccountRemovedEvent event) throws Exception { + for (WorkspaceImpl workspace : + workspaceManager.getByNamespace(event.getAccount().getName(), false)) { + workspaceManager.removeWorkspace(workspace.getId()); + } + } + } + + @Singleton + public static class RemoveSnapshotsBeforeWorkspaceRemovedEventSubscriber + extends CascadeEventSubscriber { + @Inject private EventService eventService; + @Inject private WorkspaceManager workspaceManager; + + @PostConstruct + public void subscribe() { + eventService.subscribe(this, BeforeWorkspaceRemovedEvent.class); + } + + @PreDestroy + public void unsubscribe() { + eventService.unsubscribe(this, BeforeWorkspaceRemovedEvent.class); + } + + @Override + public void onCascadeEvent(BeforeWorkspaceRemovedEvent event) throws Exception { + workspaceManager.removeSnapshots(event.getWorkspace().getId()); + } + } +} diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/MultiuserStackLoader.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/MultiuserStackLoader.java new file mode 100644 index 0000000000..29e418cda5 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/MultiuserStackLoader.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.workspace.server.stack; + +import static java.lang.String.format; +import static java.util.Collections.singletonList; + +import java.nio.file.Path; +import java.util.Map; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; +import org.eclipse.che.api.core.ConflictException; +import org.eclipse.che.api.core.NotFoundException; +import org.eclipse.che.api.core.ServerException; +import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; +import org.eclipse.che.api.workspace.server.spi.StackDao; +import org.eclipse.che.api.workspace.server.stack.StackLoader; +import org.eclipse.che.api.workspace.server.stack.image.StackIcon; +import org.eclipse.che.api.workspace.shared.stack.Stack; +import org.eclipse.che.core.db.DBInitializer; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaStackPermissionsDao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Class for loading list predefined {@link Stack} to the {@link StackDao} and set {@link StackIcon} + * to the predefined stack. + * + * @author Alexander Andrienko + * @author Sergii Leshchenko + * @author Anton Korneta + */ +@Singleton +public class MultiuserStackLoader extends StackLoader { + + public static final String CHE_PREDEFINED_STACKS = "che.predefined.stacks"; + + private static final Logger LOG = LoggerFactory.getLogger(MultiuserStackLoader.class); + + private final JpaStackPermissionsDao permissionsDao; + + @Inject + @SuppressWarnings("unused") + public MultiuserStackLoader( + @Named("che.predefined.stacks.reload_on_start") boolean reloadStacksOnStart, + @Named(CHE_PREDEFINED_STACKS) Map stacks2images, + StackDao stackDao, + JpaStackPermissionsDao permissionsDao, + DBInitializer dbInitializer) { + super(reloadStacksOnStart, stacks2images, stackDao, dbInitializer); + this.permissionsDao = permissionsDao; + } + + protected void loadStack(StackImpl stack, Path imagePath) { + setIconData(stack, imagePath); + try { + try { + stackDao.update(stack); + } catch (NotFoundException ignored) { + stackDao.create(stack); + } + permissionsDao.store( + new StackPermissionsImpl("*", stack.getId(), singletonList(StackDomain.SEARCH))); + } catch (ServerException | ConflictException ex) { + LOG.warn(format("Failed to load stack with id '%s' ", stack.getId()), ex.getMessage()); + } + } +} diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackCreatorPermissionsProvider.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackCreatorPermissionsProvider.java similarity index 92% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackCreatorPermissionsProvider.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackCreatorPermissionsProvider.java index 65277d7233..4987fd46ad 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackCreatorPermissionsProvider.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackCreatorPermissionsProvider.java @@ -8,18 +8,18 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.stack; +package org.eclipse.che.multiuser.permission.workspace.server.stack; import com.google.inject.Inject; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.inject.Singleton; import org.eclipse.che.api.core.notification.EventService; -import org.eclipse.che.api.permission.server.PermissionsManager; import org.eclipse.che.api.workspace.server.event.StackPersistedEvent; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; /** * Grants access to stack which is created by user who is {@link EnvironmentContext#getSubject() diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackDomain.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackDomain.java similarity index 90% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackDomain.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackDomain.java index 75be36a3d6..59579b8aa5 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackDomain.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackDomain.java @@ -8,11 +8,11 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.stack; +package org.eclipse.che.multiuser.permission.workspace.server.stack; import com.google.common.collect.ImmutableList; import java.util.List; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; /** * Domain for storing stacks' permissions diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackPermissionsImpl.java b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackPermissionsImpl.java similarity index 93% rename from wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackPermissionsImpl.java rename to multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackPermissionsImpl.java index 1b781d7450..36f3117792 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackPermissionsImpl.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/main/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackPermissionsImpl.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.stack; +package org.eclipse.che.multiuser.permission.workspace.server.stack; import java.util.ArrayList; import java.util.List; @@ -23,9 +23,9 @@ import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; /** * Stack permissions data object. diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/PublicPermissionsRemoveCheckerTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/PublicPermissionsRemoveCheckerTest.java similarity index 88% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/PublicPermissionsRemoveCheckerTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/PublicPermissionsRemoveCheckerTest.java index 31c8dd4916..ef82675eb6 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/PublicPermissionsRemoveCheckerTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/PublicPermissionsRemoveCheckerTest.java @@ -8,10 +8,10 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import static java.util.Collections.singletonList; -import static org.eclipse.che.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; +import static org.eclipse.che.multiuser.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.never; @@ -21,14 +21,14 @@ import static org.mockito.Mockito.when; import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.machine.server.recipe.RecipeDomain; -import org.eclipse.che.api.permission.server.PermissionsManager; -import org.eclipse.che.api.permission.server.SystemDomain; -import org.eclipse.che.api.permission.server.filter.check.DefaultRemovePermissionsChecker; -import org.eclipse.che.api.workspace.server.stack.StackDomain; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DefaultRemovePermissionsChecker; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; import org.mockito.Mock; import org.mockito.testng.MockitoTestNGListener; import org.testng.annotations.AfterMethod; diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/RecipeDomainSetPermissionsCheckerTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeDomainSetPermissionsCheckerTest.java similarity index 87% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/RecipeDomainSetPermissionsCheckerTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeDomainSetPermissionsCheckerTest.java index d7eb806f98..3b950aa14c 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/RecipeDomainSetPermissionsCheckerTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/RecipeDomainSetPermissionsCheckerTest.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import static java.util.Collections.singletonList; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.DELETE; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.DOMAIN_ID; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.READ; -import static org.eclipse.che.api.machine.server.recipe.RecipeDomain.SEARCH; -import static org.eclipse.che.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; +import static org.eclipse.che.multiuser.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.DELETE; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.READ; +import static org.eclipse.che.multiuser.permission.machine.recipe.RecipeDomain.SEARCH; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.never; @@ -25,11 +25,11 @@ import static org.mockito.Mockito.when; import com.google.common.collect.ImmutableList; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; -import org.eclipse.che.api.permission.server.filter.check.DefaultSetPermissionsChecker; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DefaultSetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.mockito.Mock; import org.mockito.testng.MockitoTestNGListener; import org.testng.annotations.AfterMethod; @@ -38,7 +38,7 @@ import org.testng.annotations.Listeners; import org.testng.annotations.Test; /** - * Tests {@link org.eclipse.che.api.workspace.server.filters.RecipeDomainSetPermissionsChecker}. + * Tests {@link RecipeDomainSetPermissionsChecker}. * * @author Anton Korneta */ diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/StackDomainSetPermissionsCheckerTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackDomainSetPermissionsCheckerTest.java similarity index 86% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/StackDomainSetPermissionsCheckerTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackDomainSetPermissionsCheckerTest.java index 3c73d29a2a..49668a5e92 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/StackDomainSetPermissionsCheckerTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackDomainSetPermissionsCheckerTest.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import static java.util.Collections.singletonList; -import static org.eclipse.che.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.DELETE; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.READ; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.SEARCH; +import static org.eclipse.che.multiuser.api.permission.server.SystemDomain.MANAGE_SYSTEM_ACTION; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.DELETE; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.READ; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.SEARCH; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.never; @@ -25,11 +25,11 @@ import static org.mockito.Mockito.when; import com.google.common.collect.ImmutableList; import org.eclipse.che.api.core.ForbiddenException; -import org.eclipse.che.api.permission.server.filter.check.DefaultSetPermissionsChecker; -import org.eclipse.che.api.permission.shared.model.Permissions; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; +import org.eclipse.che.multiuser.api.permission.server.filter.check.DefaultSetPermissionsChecker; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; import org.mockito.Mock; import org.mockito.testng.MockitoTestNGListener; import org.testng.annotations.AfterMethod; @@ -38,7 +38,7 @@ import org.testng.annotations.Listeners; import org.testng.annotations.Test; /** - * Tests {@link org.eclipse.che.api.workspace.server.filters.StackDomainSetPermissionsChecker}. + * Tests {@link StackDomainSetPermissionsChecker}. * * @author Anton Korneta */ diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/StackPermissionsFilterTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackPermissionsFilterTest.java similarity index 95% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/StackPermissionsFilterTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackPermissionsFilterTest.java index 26c9b1f828..e73d1971d6 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/StackPermissionsFilterTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/StackPermissionsFilterTest.java @@ -8,14 +8,14 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import static com.jayway.restassured.RestAssured.given; import static java.util.Arrays.asList; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.DELETE; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.READ; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.UPDATE; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.DELETE; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.READ; +import static org.eclipse.che.multiuser.permission.workspace.server.stack.StackDomain.UPDATE; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; @@ -44,14 +44,14 @@ import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.rest.ApiExceptionMapper; import org.eclipse.che.api.core.rest.shared.dto.ServiceError; -import org.eclipse.che.api.permission.server.PermissionsManager; -import org.eclipse.che.api.permission.server.SystemDomain; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; import org.eclipse.che.api.workspace.server.WorkspaceService; import org.eclipse.che.api.workspace.server.stack.StackService; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; +import org.eclipse.che.multiuser.api.permission.server.SystemDomain; +import org.eclipse.che.multiuser.api.permission.server.model.impl.AbstractPermissions; import org.everrest.assured.EverrestJetty; import org.everrest.core.Filter; import org.everrest.core.GenericContainerRequest; @@ -68,7 +68,7 @@ import org.testng.annotations.Listeners; import org.testng.annotations.Test; /** - * Tests for {@link org.eclipse.che.api.workspace.server.filters.StackPermissionsFilter} + * Tests for {@link StackPermissionsFilter} * * @author Sergii Leschenko * @author Mykola Morhun diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/WorkspacePermissionsFilterTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/WorkspacePermissionsFilterTest.java similarity index 94% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/WorkspacePermissionsFilterTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/WorkspacePermissionsFilterTest.java index 1407b4d23f..8db08c15b6 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/filters/WorkspacePermissionsFilterTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/filters/WorkspacePermissionsFilterTest.java @@ -8,12 +8,9 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.filters; +package org.eclipse.che.multiuser.permission.workspace.server.filters; import static com.jayway.restassured.RestAssured.given; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.CONFIGURE; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.READ; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.RUN; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; @@ -42,15 +39,16 @@ import org.eclipse.che.api.core.ForbiddenException; import org.eclipse.che.api.core.model.user.User; import org.eclipse.che.api.core.rest.ApiExceptionMapper; import org.eclipse.che.api.core.rest.shared.dto.ServiceError; -import org.eclipse.che.api.permission.server.SuperPrivilegesChecker; -import org.eclipse.che.api.permission.server.account.AccountOperation; -import org.eclipse.che.api.permission.server.account.AccountPermissionsChecker; import org.eclipse.che.api.workspace.server.WorkspaceManager; import org.eclipse.che.api.workspace.server.WorkspaceService; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.dto.server.DtoFactory; +import org.eclipse.che.multiuser.api.permission.server.SuperPrivilegesChecker; +import org.eclipse.che.multiuser.api.permission.server.account.AccountOperation; +import org.eclipse.che.multiuser.api.permission.server.account.AccountPermissionsChecker; +import org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain; import org.everrest.assured.EverrestJetty; import org.everrest.core.Filter; import org.everrest.core.GenericContainerRequest; @@ -639,21 +637,21 @@ public class WorkspacePermissionsFilterTest { @DataProvider(name = "coveredPaths") public Object[][] pathsProvider() { return new Object[][] { - {"/workspace/workspace123", "get", READ}, - {"/workspace/workspace123", "put", CONFIGURE}, - {"/workspace/workspace123/runtime", "post", RUN}, - {"/workspace/workspace123/runtime", "delete", RUN}, - {"/workspace/workspace123/snapshot", "post", RUN}, - {"/workspace/workspace123/snapshot", "get", READ}, - {"/workspace/workspace123/command", "post", CONFIGURE}, - {"/workspace/workspace123/command/run-application", "put", CONFIGURE}, - {"/workspace/workspace123/command/run-application", "delete", CONFIGURE}, - {"/workspace/workspace123/environment", "post", CONFIGURE}, - {"/workspace/workspace123/environment/myEnvironment", "put", CONFIGURE}, - {"/workspace/workspace123/environment/myEnvironment", "delete", CONFIGURE}, - {"/workspace/workspace123/project", "post", CONFIGURE}, - {"/workspace/workspace123/project/spring", "put", CONFIGURE}, - {"/workspace/workspace123/project/spring", "delete", CONFIGURE}, + {"/workspace/workspace123", "get", WorkspaceDomain.READ}, + {"/workspace/workspace123", "put", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/runtime", "post", WorkspaceDomain.RUN}, + {"/workspace/workspace123/runtime", "delete", WorkspaceDomain.RUN}, + {"/workspace/workspace123/snapshot", "post", WorkspaceDomain.RUN}, + {"/workspace/workspace123/snapshot", "get", WorkspaceDomain.READ}, + {"/workspace/workspace123/command", "post", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/command/run-application", "put", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/command/run-application", "delete", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/environment", "post", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/environment/myEnvironment", "put", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/environment/myEnvironment", "delete", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/project", "post", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/project/spring", "put", WorkspaceDomain.CONFIGURE}, + {"/workspace/workspace123/project/spring", "delete", WorkspaceDomain.CONFIGURE}, }; } diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaStackDaoTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackDaoTest.java similarity index 84% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaStackDaoTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackDaoTest.java index 92dc9d2fbc..e1c67ae5c0 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaStackDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackDaoTest.java @@ -8,27 +8,22 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.jpa; +package org.eclipse.che.multiuser.permission.workspace.server.jpa; -import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; -import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; -import com.google.inject.persist.jpa.JpaPersistModule; import java.util.Arrays; import java.util.Collections; import java.util.List; import javax.persistence.EntityManager; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.test.db.H2TestHelper; -import org.eclipse.che.core.db.DBInitializer; -import org.eclipse.che.core.db.schema.SchemaInitializer; -import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.MultiuserJpaStackDao; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; @@ -39,7 +34,7 @@ import org.testng.annotations.Test; public class JpaStackDaoTest { private EntityManager manager; - private JpaStackDao dao; + private MultiuserJpaStackDao dao; private StackPermissionsImpl[] permissions; private UserImpl[] users; @@ -92,7 +87,7 @@ public class JpaStackDaoTest { Injector injector = Guice.createInjector(new WorkspaceTckModule()); manager = injector.getInstance(EntityManager.class); - dao = injector.getInstance(JpaStackDao.class); + dao = injector.getInstance(MultiuserJpaStackDao.class); } @BeforeMethod @@ -164,15 +159,4 @@ public class JpaStackDaoTest { dao.searchStacks(users[0].getId(), Collections.singletonList("unexisted_tag2"), 0, 0); assertTrue(results.isEmpty()); } - - private class TestModule extends AbstractModule { - - @Override - protected void configure() { - install(new JpaPersistModule("main")); - bind(SchemaInitializer.class) - .toInstance(new FlywaySchemaInitializer(inMemoryDefault(), "che-schema")); - bind(DBInitializer.class).asEagerSingleton(); - } - } } diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaStackPermissionsDaoTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackPermissionsDaoTest.java similarity index 95% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaStackPermissionsDaoTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackPermissionsDaoTest.java index 3f3e4e0225..f57f282a32 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaStackPermissionsDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackPermissionsDaoTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.jpa; +package org.eclipse.che.multiuser.permission.workspace.server.jpa; import static java.util.Arrays.asList; import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; @@ -22,16 +22,16 @@ import com.google.inject.persist.jpa.JpaPersistModule; import java.util.List; import javax.persistence.EntityManager; import org.eclipse.che.api.core.Page; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.event.BeforeStackRemovedEvent; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaStackPermissionsDao; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.test.db.H2TestHelper; import org.eclipse.che.core.db.DBInitializer; import org.eclipse.che.core.db.schema.SchemaInitializer; import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaStackPermissionsDao; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/PermissionsJpaWorkspaceDaoTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserJpaWorkspaceDaoTest.java similarity index 81% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/PermissionsJpaWorkspaceDaoTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserJpaWorkspaceDaoTest.java index dba231c486..4a15dea544 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/PermissionsJpaWorkspaceDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserJpaWorkspaceDaoTest.java @@ -8,28 +8,23 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.jpa; +package org.eclipse.che.multiuser.permission.workspace.server.jpa; -import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; -import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; -import com.google.inject.persist.jpa.JpaPersistModule; import java.util.Arrays; import java.util.List; import javax.persistence.EntityManager; import org.eclipse.che.account.spi.AccountImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; import org.eclipse.che.commons.test.db.H2TestHelper; -import org.eclipse.che.core.db.DBInitializer; -import org.eclipse.che.core.db.schema.SchemaInitializer; -import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.MultiuserJpaWorkspaceDao; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; @@ -37,9 +32,9 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** @author Max Shaposhnik */ -public class PermissionsJpaWorkspaceDaoTest { +public class MultiuserJpaWorkspaceDaoTest { private EntityManager manager; - private JpaWorkspaceDao dao; + private MultiuserJpaWorkspaceDao dao; private AccountImpl account; private WorkerImpl[] workers; @@ -75,7 +70,7 @@ public class PermissionsJpaWorkspaceDaoTest { }; Injector injector = Guice.createInjector(new WorkspaceTckModule()); manager = injector.getInstance(EntityManager.class); - dao = injector.getInstance(JpaWorkspaceDao.class); + dao = injector.getInstance(MultiuserJpaWorkspaceDao.class); } @BeforeMethod @@ -137,14 +132,4 @@ public class PermissionsJpaWorkspaceDaoTest { assertTrue(results.contains(workspaces[0])); assertTrue(results.contains(workspaces[1])); } - - private class TestModule extends AbstractModule { - @Override - protected void configure() { - install(new JpaPersistModule("main")); - bind(SchemaInitializer.class) - .toInstance(new FlywaySchemaInitializer(inMemoryDefault(), "che-schema")); - bind(DBInitializer.class).asEagerSingleton(); - } - } } diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/WorkspaceTckModule.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/WorkspaceTckModule.java new file mode 100644 index 0000000000..4ccb5db30f --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/WorkspaceTckModule.java @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.workspace.server.jpa; + +import com.google.inject.TypeLiteral; +import java.util.Collection; +import org.eclipse.che.account.spi.AccountImpl; +import org.eclipse.che.api.machine.server.model.impl.CommandImpl; +import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; +import org.eclipse.che.api.machine.server.recipe.RecipeImpl; +import org.eclipse.che.api.user.server.model.impl.UserImpl; +import org.eclipse.che.api.workspace.server.jpa.JpaStackDao; +import org.eclipse.che.api.workspace.server.jpa.JpaWorkspaceDao; +import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl; +import org.eclipse.che.api.workspace.server.model.impl.EnvironmentRecipeImpl; +import org.eclipse.che.api.workspace.server.model.impl.ExtendedMachineImpl; +import org.eclipse.che.api.workspace.server.model.impl.ProjectConfigImpl; +import org.eclipse.che.api.workspace.server.model.impl.ServerConf2Impl; +import org.eclipse.che.api.workspace.server.model.impl.SourceStorageImpl; +import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; +import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; +import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; +import org.eclipse.che.api.workspace.server.spi.StackDao; +import org.eclipse.che.api.workspace.server.spi.WorkspaceDao; +import org.eclipse.che.commons.test.db.H2DBTestServer; +import org.eclipse.che.commons.test.db.H2JpaCleaner; +import org.eclipse.che.commons.test.db.PersistTestModuleBuilder; +import org.eclipse.che.commons.test.tck.TckModule; +import org.eclipse.che.commons.test.tck.TckResourcesCleaner; +import org.eclipse.che.commons.test.tck.repository.JpaTckRepository; +import org.eclipse.che.commons.test.tck.repository.TckRepository; +import org.eclipse.che.commons.test.tck.repository.TckRepositoryException; +import org.eclipse.che.core.db.DBInitializer; +import org.eclipse.che.core.db.h2.jpa.eclipselink.H2ExceptionHandler; +import org.eclipse.che.core.db.schema.SchemaInitializer; +import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.WorkerDao; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaStackPermissionsDao; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaWorkerDao; +import org.eclipse.che.multiuser.permission.workspace.server.spi.tck.StackPermissionsDaoTest; +import org.eclipse.che.multiuser.permission.workspace.server.spi.tck.WorkerDaoTest; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; +import org.h2.Driver; + +/** @author Yevhenii Voevodin */ +public class WorkspaceTckModule extends TckModule { + + @Override + protected void configure() { + H2DBTestServer server = H2DBTestServer.startDefault(); + install( + new PersistTestModuleBuilder() + .setDriver(Driver.class) + .runningOn(server) + .addEntityClasses( + AccountImpl.class, + UserImpl.class, + WorkspaceImpl.class, + WorkspaceConfigImpl.class, + ProjectConfigImpl.class, + EnvironmentImpl.class, + EnvironmentRecipeImpl.class, + RecipePermissionsImpl.class, + StackPermissionsImpl.class, + WorkerImpl.class, + ExtendedMachineImpl.class, + SourceStorageImpl.class, + ServerConf2Impl.class, + StackImpl.class, + CommandImpl.class, + SnapshotImpl.class, + RecipeImpl.class) + .addEntityClass( + "org.eclipse.che.api.workspace.server.model.impl.ProjectConfigImpl$Attribute") + .setExceptionHandler(H2ExceptionHandler.class) + .build()); + bind(DBInitializer.class).asEagerSingleton(); + bind(SchemaInitializer.class) + .toInstance(new FlywaySchemaInitializer(server.getDataSource(), "che-schema")); + bind(TckResourcesCleaner.class).toInstance(new H2JpaCleaner(server)); + + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(AccountImpl.class)); + bind(new TypeLiteral>() {}).toInstance(new WorkspaceRepository()); + bind(new TypeLiteral>() {}).toInstance(new StackRepository()); + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(UserImpl.class)); + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(WorkerImpl.class)); + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(RecipePermissionsImpl.class)); + bind(new TypeLiteral>() {}) + .toInstance(new JpaTckRepository<>(StackPermissionsImpl.class)); + + bind(new TypeLiteral>() {}) + .to(JpaStackPermissionsDao.class); + + bind(new TypeLiteral>() {}) + .to(WorkerDaoTest.TestDomain.class); + bind(new TypeLiteral>() {}) + .to(StackPermissionsDaoTest.TestDomain.class); + + bind(WorkerDao.class).to(JpaWorkerDao.class); + bind(WorkspaceDao.class).to(JpaWorkspaceDao.class); + bind(StackDao.class).to(JpaStackDao.class); + } + + private static class WorkspaceRepository extends JpaTckRepository { + public WorkspaceRepository() { + super(WorkspaceImpl.class); + } + + @Override + public void createAll(Collection entities) + throws TckRepositoryException { + for (WorkspaceImpl entity : entities) { + entity.getConfig().getProjects().forEach(ProjectConfigImpl::prePersistAttributes); + } + super.createAll(entities); + } + } + + private static class StackRepository extends JpaTckRepository { + public StackRepository() { + super(StackImpl.class); + } + + @Override + public void createAll(Collection entities) throws TckRepositoryException { + for (StackImpl stack : entities) { + stack.getWorkspaceConfig().getProjects().forEach(ProjectConfigImpl::prePersistAttributes); + } + super.createAll(entities); + } + } +} diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaTckModule.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaTckModule.java similarity index 86% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaTckModule.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaTckModule.java index 54ac4d929e..e7a7d7a57a 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/JpaTckModule.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaTckModule.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.spi.jpa; +package org.eclipse.che.multiuser.permission.workspace.server.spi.jpa; import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; @@ -17,9 +17,6 @@ import org.eclipse.che.account.spi.AccountImpl; import org.eclipse.che.api.machine.server.model.impl.CommandImpl; import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl; import org.eclipse.che.api.workspace.server.model.impl.EnvironmentRecipeImpl; @@ -27,14 +24,9 @@ import org.eclipse.che.api.workspace.server.model.impl.ExtendedMachineImpl; import org.eclipse.che.api.workspace.server.model.impl.ProjectConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.ServerConf2Impl; import org.eclipse.che.api.workspace.server.model.impl.SourceStorageImpl; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; -import org.eclipse.che.api.workspace.server.spi.WorkerDao; -import org.eclipse.che.api.workspace.server.spi.tck.StackPermissionsDaoTest; -import org.eclipse.che.api.workspace.server.spi.tck.WorkerDaoTest; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.commons.test.db.H2JpaCleaner; import org.eclipse.che.commons.test.db.PersistTestModuleBuilder; @@ -46,6 +38,14 @@ import org.eclipse.che.core.db.DBInitializer; import org.eclipse.che.core.db.h2.jpa.eclipselink.H2ExceptionHandler; import org.eclipse.che.core.db.schema.SchemaInitializer; import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.WorkerDao; +import org.eclipse.che.multiuser.permission.workspace.server.spi.tck.StackPermissionsDaoTest; +import org.eclipse.che.multiuser.permission.workspace.server.spi.tck.WorkerDaoTest; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; import org.h2.Driver; /** @author Yevhenii Voevodin */ diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java similarity index 90% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java index 72817e373d..e8a65efa3f 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.spi.jpa; +package org.eclipse.che.multiuser.permission.workspace.server.spi.jpa; import static java.util.Arrays.asList; import static org.testng.AssertJUnit.assertEquals; @@ -19,14 +19,14 @@ import java.util.List; import java.util.stream.Stream; import javax.persistence.EntityManager; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.jpa.JpaStackDao; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaStackPermissionsDao.RemovePermissionsBeforeStackRemovedEventSubscriber; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.test.db.H2TestHelper; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaStackPermissionsDao.RemovePermissionsBeforeStackRemovedEventSubscriber; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java new file mode 100644 index 0000000000..1241a31b39 --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.permission.workspace.server.spi.jpa; + +import static org.testng.AssertJUnit.assertEquals; + +import com.google.inject.Guice; +import com.google.inject.Injector; +import java.util.Arrays; +import java.util.stream.Stream; +import javax.persistence.EntityManager; +import org.eclipse.che.account.shared.model.Account; +import org.eclipse.che.account.spi.AccountImpl; +import org.eclipse.che.api.user.server.model.impl.UserImpl; +import org.eclipse.che.api.workspace.server.jpa.JpaWorkspaceDao; +import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; +import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; +import org.eclipse.che.commons.test.db.H2TestHelper; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaWorkerDao.RemoveWorkersBeforeWorkspaceRemovedEventSubscriber; +import org.testng.annotations.AfterClass; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +/** + * Tests for {@link RemoveWorkersBeforeWorkspaceRemovedEventSubscriber} + * + * @author Sergii Leschenko + */ +public class RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest { + private EntityManager manager; + private JpaWorkerDao workerDao; + private JpaWorkspaceDao workspaceDao; + + private RemoveWorkersBeforeWorkspaceRemovedEventSubscriber subscriber; + + private WorkspaceImpl workspace; + private WorkerImpl[] workers; + private UserImpl[] users; + private Account account; + + @BeforeClass + public void setupEntities() throws Exception { + account = new AccountImpl("account1", "accountName", "test"); + + users = + new UserImpl[] { + new UserImpl("user1", "user1@com.com", "usr1"), + new UserImpl("user2", "user2@com.com", "usr2") + }; + + workspace = + new WorkspaceImpl( + "ws1", account, new WorkspaceConfigImpl("", "", "cfg1", null, null, null)); + + workers = + new WorkerImpl[] { + new WorkerImpl("ws1", "user1", Arrays.asList("read", "use", "run")), + new WorkerImpl("ws1", "user2", Arrays.asList("read", "use")) + }; + + Injector injector = Guice.createInjector(new JpaTckModule()); + + manager = injector.getInstance(EntityManager.class); + workerDao = injector.getInstance(JpaWorkerDao.class); + workspaceDao = injector.getInstance(JpaWorkspaceDao.class); + subscriber = injector.getInstance(RemoveWorkersBeforeWorkspaceRemovedEventSubscriber.class); + subscriber.subscribe(); + } + + @BeforeMethod + public void setUp() throws Exception { + manager.getTransaction().begin(); + manager.persist(account); + manager.persist(workspace); + Stream.of(users).forEach(manager::persist); + Stream.of(workers).forEach(manager::persist); + manager.getTransaction().commit(); + manager.clear(); + } + + @AfterMethod + public void cleanup() { + manager.getTransaction().begin(); + + manager + .createQuery("SELECT e FROM Worker e", WorkerImpl.class) + .getResultList() + .forEach(manager::remove); + + manager + .createQuery("SELECT w FROM Workspace w", WorkspaceImpl.class) + .getResultList() + .forEach(manager::remove); + + manager + .createQuery("SELECT u FROM Usr u", UserImpl.class) + .getResultList() + .forEach(manager::remove); + + manager + .createQuery("SELECT a FROM Account a", AccountImpl.class) + .getResultList() + .forEach(manager::remove); + manager.getTransaction().commit(); + } + + @AfterClass + public void shutdown() throws Exception { + subscriber.unsubscribe(); + manager.getEntityManagerFactory().close(); + H2TestHelper.shutdownDefault(); + } + + @Test + public void shouldRemoveAllWorkersWhenWorkspaceIsRemoved() throws Exception { + workspaceDao.remove(workspace.getId()); + + assertEquals(workerDao.getWorkers(workspace.getId(), 1, 0).getTotalItemsCount(), 0); + } + + @Test + public void shouldRemoveAllWorkersWhenPageSizeEqualsToOne() throws Exception { + subscriber.removeWorkers(workspace.getId(), 1); + + assertEquals(workerDao.getWorkers(workspace.getId(), 1, 0).getTotalItemsCount(), 0); + } +} diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/StackPermissionsDaoTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/tck/StackPermissionsDaoTest.java similarity index 96% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/StackPermissionsDaoTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/tck/StackPermissionsDaoTest.java index b2d191a749..7dd67c468d 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/StackPermissionsDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/tck/StackPermissionsDaoTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.spi.tck; +package org.eclipse.che.multiuser.permission.workspace.server.spi.tck; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; @@ -22,16 +22,16 @@ import java.util.stream.Stream; import javax.inject.Inject; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; -import org.eclipse.che.api.permission.shared.model.Permissions; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.test.tck.TckListener; import org.eclipse.che.commons.test.tck.repository.TckRepository; import org.eclipse.che.commons.test.tck.repository.TckRepositoryException; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.api.permission.server.spi.PermissionsDao; +import org.eclipse.che.multiuser.api.permission.shared.model.Permissions; +import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Listeners; diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/WorkerDaoTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/tck/WorkerDaoTest.java similarity index 96% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/WorkerDaoTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/tck/WorkerDaoTest.java index 91faf3aef6..5f49b12c3e 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/WorkerDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/tck/WorkerDaoTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.spi.tck; +package org.eclipse.che.multiuser.permission.workspace.server.spi.tck; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; @@ -24,15 +24,15 @@ import org.eclipse.che.account.spi.AccountImpl; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; import org.eclipse.che.api.user.server.model.impl.UserImpl; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; -import org.eclipse.che.api.workspace.server.spi.WorkerDao; import org.eclipse.che.commons.test.tck.TckListener; import org.eclipse.che.commons.test.tck.repository.TckRepository; import org.eclipse.che.commons.test.tck.repository.TckRepositoryException; +import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; +import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; +import org.eclipse.che.multiuser.permission.workspace.server.spi.WorkerDao; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/stack/StackCreatorPermissionsProviderTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackCreatorPermissionsProviderTest.java similarity index 95% rename from wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/stack/StackCreatorPermissionsProviderTest.java rename to multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackCreatorPermissionsProviderTest.java index 30afa5ca77..be6e11f5eb 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/stack/StackCreatorPermissionsProviderTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/stack/StackCreatorPermissionsProviderTest.java @@ -8,7 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ -package org.eclipse.che.api.workspace.server.stack; +package org.eclipse.che.multiuser.permission.workspace.server.stack; import static org.mockito.Matchers.any; import static org.mockito.Mockito.never; @@ -16,11 +16,11 @@ import static org.mockito.Mockito.verify; import static org.testng.Assert.assertEquals; import org.eclipse.che.api.core.notification.EventService; -import org.eclipse.che.api.permission.server.PermissionsManager; import org.eclipse.che.api.workspace.server.event.StackPersistedEvent; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.SubjectImpl; +import org.eclipse.che.multiuser.api.permission.server.PermissionsManager; import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule b/multiuser/permission/che-multiuser-permission-workspace/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule new file mode 100644 index 0000000000..21a216704b --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule @@ -0,0 +1 @@ +org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaTckModule diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/resources/logback-test.xml b/multiuser/permission/che-multiuser-permission-workspace/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..d5690bc4ad --- /dev/null +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/resources/logback-test.xml @@ -0,0 +1,33 @@ + + + + + + %-41(%date[%.15thread]) %-45([%-5level] [%.30logger{30} %L]) - %msg%n%nopex + + + + target/log/test.log + + %-41(%date[%.15thread]) %-45([%-5level] [%.30logger{30} %L]) - %msg%n + + + + + + + + + + diff --git a/multiuser/permission/pom.xml b/multiuser/permission/pom.xml new file mode 100644 index 0000000000..4552994e2f --- /dev/null +++ b/multiuser/permission/pom.xml @@ -0,0 +1,33 @@ + + + + 4.0.0 + + che-multiuser-parent + org.eclipse.che.multiuser + 5.18.0-SNAPSHOT + ../pom.xml + + che-multiuser-permission + pom + Che Multiuser :: Permissions Parent + + che-multiuser-permission-account + che-multiuser-permission-user + che-multiuser-permission-machine + che-multiuser-permission-workspace + che-multiuser-permission-factory + che-multiuser-permission-system + + diff --git a/multiuser/pom.xml b/multiuser/pom.xml new file mode 100644 index 0000000000..f2a49572ff --- /dev/null +++ b/multiuser/pom.xml @@ -0,0 +1,32 @@ + + + + 4.0.0 + + che-parent + org.eclipse.che + 5.18.0-SNAPSHOT + ../pom.xml + + org.eclipse.che.multiuser + che-multiuser-parent + pom + Che Multiuser :: Parent + + api + permission + keycloak + machine-auth + + diff --git a/plugins/plugin-activity/che-plugin-activity-wsmaster/pom.xml b/plugins/plugin-activity/che-plugin-activity-wsmaster/pom.xml index ed7bc230bb..50c37ff5c5 100644 --- a/plugins/plugin-activity/che-plugin-activity-wsmaster/pom.xml +++ b/plugins/plugin-activity/che-plugin-activity-wsmaster/pom.xml @@ -71,6 +71,10 @@ org.eclipse.che.core che-core-api-workspace-shared + + org.eclipse.che.core + che-core-api-workspace-shared + org.eclipse.che.core che-core-commons-schedule @@ -87,6 +91,16 @@ org.slf4j slf4j-api + + org.eclipse.che.multiuser + che-multiuser-api-permission + provided + + + org.eclipse.che.multiuser + che-multiuser-permission-workspace + provided + com.jayway.restassured rest-assured diff --git a/plugins/plugin-activity/che-plugin-activity-wsmaster/src/main/java/org/eclipse/che/plugin/activity/ActivityPermissionsFilter.java b/plugins/plugin-activity/che-plugin-activity-wsmaster/src/main/java/org/eclipse/che/plugin/activity/ActivityPermissionsFilter.java index 6378534560..24b0969631 100644 --- a/plugins/plugin-activity/che-plugin-activity-wsmaster/src/main/java/org/eclipse/che/plugin/activity/ActivityPermissionsFilter.java +++ b/plugins/plugin-activity/che-plugin-activity-wsmaster/src/main/java/org/eclipse/che/plugin/activity/ActivityPermissionsFilter.java @@ -10,8 +10,8 @@ */ package org.eclipse.che.plugin.activity; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.USE; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.USE; import javax.ws.rs.Path; import org.eclipse.che.api.core.ApiException; diff --git a/plugins/plugin-activity/che-plugin-activity-wsmaster/src/test/java/org/eclipse/che/plugin/activity/ActivityPermissionsFilterTest.java b/plugins/plugin-activity/che-plugin-activity-wsmaster/src/test/java/org/eclipse/che/plugin/activity/ActivityPermissionsFilterTest.java index dd6faf1dab..843d0f79c7 100644 --- a/plugins/plugin-activity/che-plugin-activity-wsmaster/src/test/java/org/eclipse/che/plugin/activity/ActivityPermissionsFilterTest.java +++ b/plugins/plugin-activity/che-plugin-activity-wsmaster/src/test/java/org/eclipse/che/plugin/activity/ActivityPermissionsFilterTest.java @@ -11,8 +11,8 @@ package org.eclipse.che.plugin.activity; import static com.jayway.restassured.RestAssured.given; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.DOMAIN_ID; -import static org.eclipse.che.api.workspace.server.WorkspaceDomain.USE; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.DOMAIN_ID; +import static org.eclipse.che.multiuser.permission.workspace.server.WorkspaceDomain.USE; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_NAME; import static org.everrest.assured.JettyHttpServer.ADMIN_USER_PASSWORD; import static org.everrest.assured.JettyHttpServer.SECURE_PATH; diff --git a/plugins/plugin-docker/che-plugin-docker-machine-auth/pom.xml b/plugins/plugin-docker/che-plugin-docker-machine-auth/pom.xml index b24bfd496f..0cfaca616d 100644 --- a/plugins/plugin-docker/che-plugin-docker-machine-auth/pom.xml +++ b/plugins/plugin-docker/che-plugin-docker-machine-auth/pom.xml @@ -50,8 +50,8 @@ che-core-commons-lang - org.eclipse.che.core - che-machine-authentication + org.eclipse.che.multiuser + che-multiuser-machine-authentication org.eclipse.che.plugin diff --git a/plugins/plugin-docker/che-plugin-docker-machine-auth/src/main/java/org/eclipse/che/plugin/docker/machine/AuthMachineProviderImpl.java b/plugins/plugin-docker/che-plugin-docker-machine-auth/src/main/java/org/eclipse/che/plugin/docker/machine/AuthMachineProviderImpl.java index 3303d4f5e8..9866fe78da 100644 --- a/plugins/plugin-docker/che-plugin-docker-machine-auth/src/main/java/org/eclipse/che/plugin/docker/machine/AuthMachineProviderImpl.java +++ b/plugins/plugin-docker/che-plugin-docker-machine-auth/src/main/java/org/eclipse/che/plugin/docker/machine/AuthMachineProviderImpl.java @@ -24,7 +24,7 @@ import org.eclipse.che.api.machine.server.spi.Instance; import org.eclipse.che.commons.annotation.Nullable; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.lang.os.WindowsPathEscaper; -import org.eclipse.che.machine.authentication.server.MachineTokenRegistry; +import org.eclipse.che.multiuser.machine.authentication.server.MachineTokenRegistry; import org.eclipse.che.plugin.docker.client.DockerConnectorProvider; import org.eclipse.che.plugin.docker.client.UserSpecificDockerRegistryCredentialsProvider; diff --git a/plugins/pom.xml b/plugins/pom.xml index 95128440b3..f194b37e80 100644 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -55,7 +55,6 @@ plugin-urlfactory plugin-json plugin-composer - plugin-keycloak plugin-zend-debugger plugin-testing plugin-testing-java diff --git a/pom.xml b/pom.xml index 7991872b7e..7470302a6e 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,7 @@ core wsmaster wsagent + multiuser ide agents plugins @@ -123,6 +124,11 @@ ${che.version} war + + org.eclipse.che + che-multiuser-keycloak-shared + ${che.version} + org.eclipse.che exec-agent @@ -233,11 +239,6 @@ ${che.version} tests - - org.eclipse.che.core - che-core-api-account-permission - ${che.version} - org.eclipse.che.core che-core-api-agent @@ -258,16 +259,6 @@ che-core-api-auth-shared ${che.version} - - org.eclipse.che.core - che-core-api-authorization - ${che.version} - - - org.eclipse.che.core - che-core-api-authorization-impl - ${che.version} - org.eclipse.che.core che-core-api-core @@ -371,16 +362,6 @@ che-core-api-oauth ${che.version} - - org.eclipse.che.core - che-core-api-permission - ${che.version} - - - org.eclipse.che.core - che-core-api-permission-shared - ${che.version} - org.eclipse.che.core che-core-api-project @@ -448,11 +429,6 @@ che-core-api-user ${che.version} - - org.eclipse.che.core - che-core-api-user-permission - ${che.version} - org.eclipse.che.core che-core-api-user-shared @@ -589,26 +565,6 @@ che-ide-core ${che.version} - - org.eclipse.che.core - che-machine-authentication - ${che.version} - - - org.eclipse.che.core - che-machine-authentication-agent - ${che.version} - - - org.eclipse.che.core - che-machine-authentication-ide - ${che.version} - - - org.eclipse.che.core - che-machine-authentication-shared - ${che.version} - org.eclipse.che.core che-wsagent-core @@ -680,6 +636,101 @@ org-eclipse-jdt-core-repack ${che.lib.version} + + org.eclipse.che.multiuser + che-multiuser-api-authorization + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-api-authorization-impl + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-api-permission + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-api-permission-shared + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-keycloak-ide + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-keycloak-server + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-keycloak-shared + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-keycloak-token-provider + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-keycloak-valve + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-machine-authentication + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-machine-authentication-agent + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-machine-authentication-ide + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-machine-authentication-shared + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-permission-account + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-permission-factory + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-permission-machine + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-permission-system + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-permission-user + ${che.version} + + + org.eclipse.che.multiuser + che-multiuser-permission-workspace + ${che.version} + org.eclipse.che.plugin che-plugin-activity-ide @@ -905,31 +956,6 @@ che-plugin-keybinding-eclipse-ide ${che.version} - - org.eclipse.che.plugin - che-plugin-keycloak-ide - ${che.version} - - - org.eclipse.che.plugin - che-plugin-keycloak-server - ${che.version} - - - org.eclipse.che.plugin - che-plugin-keycloak-shared - ${che.version} - - - org.eclipse.che.plugin - che-plugin-keycloak-token-provider - ${che.version} - - - org.eclipse.che.plugin - che-plugin-keycloak-valve - ${che.version} - org.eclipse.che.plugin che-plugin-languageserver-ide diff --git a/wsagent/che-core-api-languageserver-shared/pom.xml b/wsagent/che-core-api-languageserver-shared/pom.xml index 0660cc3273..c24ec63fbd 100644 --- a/wsagent/che-core-api-languageserver-shared/pom.xml +++ b/wsagent/che-core-api-languageserver-shared/pom.xml @@ -28,7 +28,7 @@ org.eclipse.lsp4j org.eclipse.lsp4j - + junit junit diff --git a/wsagent/pom.xml b/wsagent/pom.xml index e5b1584a00..02d23d88ac 100644 --- a/wsagent/pom.xml +++ b/wsagent/pom.xml @@ -43,6 +43,5 @@ che-core-api-testing-shared wsagent-local che-wsagent-core - che-machine-authentication-agent
diff --git a/wsmaster/che-core-api-machine/pom.xml b/wsmaster/che-core-api-machine/pom.xml index ac80289889..a07c74caf2 100644 --- a/wsmaster/che-core-api-machine/pom.xml +++ b/wsmaster/che-core-api-machine/pom.xml @@ -37,10 +37,6 @@ com.google.inject guice
- - com.google.inject.extensions - guice-multibindings - javax.annotation javax.annotation-api @@ -73,22 +69,6 @@ org.eclipse.che.core che-core-api-model - - org.eclipse.che.core - che-core-api-permission - - - org.eclipse.che.core - che-core-api-permission-shared - - - org.eclipse.che.core - che-core-api-user - - - org.eclipse.che.core - che-core-commons-annotations - org.eclipse.che.core che-core-commons-lang diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/JpaRecipeDao.java b/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/JpaRecipeDao.java index 3b6ba43f04..72dbd1e422 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/JpaRecipeDao.java +++ b/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/JpaRecipeDao.java @@ -22,9 +22,7 @@ import javax.persistence.EntityManager; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Expression; import javax.persistence.criteria.Join; -import javax.persistence.criteria.JoinType; import javax.persistence.criteria.ParameterExpression; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; @@ -36,7 +34,6 @@ import org.eclipse.che.api.core.notification.EventService; import org.eclipse.che.api.machine.server.event.BeforeRecipeRemovedEvent; import org.eclipse.che.api.machine.server.event.RecipePersistedEvent; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; import org.eclipse.che.api.machine.server.spi.RecipeDao; import org.eclipse.che.core.db.jpa.DuplicateKeyException; import org.eclipse.che.core.db.jpa.IntegrityConstraintViolationException; @@ -104,69 +101,33 @@ public class JpaRecipeDao implements RecipeDao { } } - /** - * Translated query should look like: - * - *
-   * SELECT recipe.ID,
-   *        recipe.CREATOR,
-   *        recipe.DESCRIPTION,
-   *        recipe.NAME,
-   *        recipe.SCRIPT,
-   *        recipe.TYPE
-   * FROM  RECIPEPERMISSIONS permission
-   * LEFT OUTER JOIN RECIPE recipe ON (recipe.ID = permission.RECIPEID)
-   * LEFT OUTER JOIN Recipe_TAGS tag ON (tag.Recipe_ID = recipe.ID),
-   *     RECIPEPERMISSIONS_ACTIONS permissionActions
-   * WHERE ((tag.tag IN (?))
-   *     AND ((? IS NULL)
-   *           OR (recipe.TYPE = ?))
-   *     AND ((permission.USERID IS NULL)
-   *           OR (permission.USERID = ?))
-   *     AND (permissionActions.actions = ?)
-   *     AND (permissionActions.RECIPEPERMISSIONS_ID = permission.ID))
-   * GROUP BY recipe.ID
-   * HAVING (COUNT(tag.tag) = ?)
-   * 
- */ @Override @Transactional public List search( - String userId, List tags, String type, int skipCount, int maxItems) + String user, List tags, String type, int skipCount, int maxItems) throws ServerException { try { - final EntityManager em = managerProvider.get(); - final CriteriaBuilder cb = em.getCriteriaBuilder(); + final EntityManager manager = managerProvider.get(); + final CriteriaBuilder cb = manager.getCriteriaBuilder(); final CriteriaQuery query = cb.createQuery(RecipeImpl.class); - final Root perm = query.from(RecipePermissionsImpl.class); - final Join rwp = perm.join("recipe", JoinType.LEFT); - final Expression> acts = perm.get("actions"); + final Root fromRecipe = query.from(RecipeImpl.class); final ParameterExpression typeParam = cb.parameter(String.class, "recipeType"); - final Predicate checkType = cb.or(cb.isNull(typeParam), cb.equal(rwp.get("type"), typeParam)); - final Predicate userIdCheck = - cb.or( - cb.isNull(perm.get("userId")), - cb.equal(perm.get("userId"), cb.parameter(String.class, "userId"))); - final Predicate searchActionCheck = - cb.isMember(cb.parameter(String.class, "actionParam"), acts); - final Predicate shareCheck = cb.and(checkType, userIdCheck, searchActionCheck); + final Predicate checkType = + cb.or(cb.isNull(typeParam), cb.equal(fromRecipe.get("type"), typeParam)); final TypedQuery typedQuery; if (tags != null && !tags.isEmpty()) { - final Join tag = rwp.join("tags", JoinType.LEFT); + final Join tag = fromRecipe.join("tags"); query - .select(cb.construct(RecipeImpl.class, rwp)) - .where(cb.and(tag.in(tags), shareCheck)) - .groupBy(rwp.get("id")) + .select(cb.construct(RecipeImpl.class, tag.getParent())) + .where(cb.and(checkType, tag.in(tags))) + .groupBy(fromRecipe.get("id")) .having(cb.equal(cb.count(tag), tags.size())); - typedQuery = em.createQuery(query).setParameter("tags", tags); + typedQuery = manager.createQuery(query).setParameter("tags", tags); } else { - typedQuery = - em.createQuery(query.select(cb.construct(RecipeImpl.class, rwp)).where(shareCheck)); + typedQuery = manager.createQuery(query.where(checkType)); } return typedQuery - .setParameter("userId", userId) .setParameter("recipeType", type) - .setParameter("actionParam", "search") .setFirstResult(skipCount) .setMaxResults(maxItems) .getResultList(); diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/MachineJpaModule.java b/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/MachineJpaModule.java index 0f3db08dd1..4ce11123ac 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/MachineJpaModule.java +++ b/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/jpa/MachineJpaModule.java @@ -11,16 +11,8 @@ package org.eclipse.che.api.machine.server.jpa; import com.google.inject.AbstractModule; -import com.google.inject.TypeLiteral; -import com.google.inject.multibindings.Multibinder; -import org.eclipse.che.api.machine.server.jpa.listener.RemoveRecipeOnLastUserRemovedEventSubscriber; -import org.eclipse.che.api.machine.server.recipe.RecipeDomain; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; import org.eclipse.che.api.machine.server.spi.RecipeDao; import org.eclipse.che.api.machine.server.spi.SnapshotDao; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; /** @author Yevhenii Voevodin */ public class MachineJpaModule extends AbstractModule { @@ -29,18 +21,5 @@ public class MachineJpaModule extends AbstractModule { protected void configure() { bind(RecipeDao.class).to(JpaRecipeDao.class); bind(SnapshotDao.class).to(JpaSnapshotDao.class); - bind(new TypeLiteral>() {}) - .to(RecipeDomain.class); - - final Multibinder> daos = - Multibinder.newSetBinder( - binder(), new TypeLiteral>() {}); - daos.addBinding().to(JpaRecipePermissionsDao.class); - - bind(new TypeLiteral>() {}) - .to(RecipeDomain.class); - bind(JpaRecipePermissionsDao.RemovePermissionsBeforeRecipeRemovedEventSubscriber.class) - .asEagerSingleton(); - bind(RemoveRecipeOnLastUserRemovedEventSubscriber.class).asEagerSingleton(); } } diff --git a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeLoader.java b/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeLoader.java index 32a69a3eee..6531f95fd5 100644 --- a/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeLoader.java +++ b/wsmaster/che-core-api-machine/src/main/java/org/eclipse/che/api/machine/server/recipe/RecipeLoader.java @@ -10,8 +10,6 @@ */ package org.eclipse.che.api.machine.server.recipe; -import static java.util.Collections.singletonList; - import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -30,7 +28,6 @@ import javax.inject.Singleton; import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; -import org.eclipse.che.api.machine.server.jpa.JpaRecipePermissionsDao; import org.eclipse.che.api.machine.server.spi.RecipeDao; import org.eclipse.che.commons.lang.IoUtil; import org.eclipse.che.core.db.DBInitializer; @@ -57,17 +54,14 @@ public class RecipeLoader { private final Set predefinedRecipes; private final DBInitializer dbInitializer; - private final JpaRecipePermissionsDao permissionsDao; @Inject public RecipeLoader( @Named(CHE_PREDEFINED_RECIPES) Set predefinedRecipes, RecipeDao recipeDao, - JpaRecipePermissionsDao permissionsDao, DBInitializer dbInitializer) { this.predefinedRecipes = predefinedRecipes; this.recipeDao = recipeDao; - this.permissionsDao = permissionsDao; this.dbInitializer = dbInitializer; } @@ -88,9 +82,8 @@ public class RecipeLoader { } catch (NotFoundException ex) { recipeDao.create(recipe); } - permissionsDao.store(new RecipePermissionsImpl("*", recipe.getId(), singletonList("search"))); } catch (ServerException | ConflictException ex) { - LOG.error("Failed to store recipe {} cause: {}", recipe.getId(), ex.getLocalizedMessage()); + LOG.error("Failed to store recipe {} ", recipe.getId(), ex.getMessage()); } } diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaTckModule.java b/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaTckModule.java index dcd3bed57f..1c661f2350 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaTckModule.java +++ b/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/jpa/JpaTckModule.java @@ -17,14 +17,8 @@ import org.eclipse.che.account.spi.AccountImpl; import org.eclipse.che.api.core.model.workspace.Workspace; import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; import org.eclipse.che.api.machine.server.spi.RecipeDao; import org.eclipse.che.api.machine.server.spi.SnapshotDao; -import org.eclipse.che.api.machine.server.spi.tck.RecipePermissionsDaoTest; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; -import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.commons.test.db.H2JpaCleaner; import org.eclipse.che.commons.test.db.PersistTestModuleBuilder; @@ -50,13 +44,7 @@ public class JpaTckModule extends TckModule { .setDriver(Driver.class) .runningOn(server) .addEntityClasses( - UserImpl.class, - RecipeImpl.class, - SnapshotImpl.class, - AccountImpl.class, - AbstractPermissions.class, - RecipePermissionsImpl.class, - TestWorkspaceEntity.class) + RecipeImpl.class, SnapshotImpl.class, AccountImpl.class, TestWorkspaceEntity.class) .setExceptionHandler(H2ExceptionHandler.class) .build()); bind(DBInitializer.class).asEagerSingleton(); @@ -64,8 +52,6 @@ public class JpaTckModule extends TckModule { .toInstance(new FlywaySchemaInitializer(server.getDataSource(), "che-schema")); bind(TckResourcesCleaner.class).toInstance(new H2JpaCleaner(server)); - bind(new TypeLiteral>() {}) - .toInstance(new JpaTckRepository<>(UserImpl.class)); bind(new TypeLiteral>() {}) .toInstance(new JpaTckRepository<>(RecipeImpl.class)); bind(new TypeLiteral>() {}) @@ -75,13 +61,6 @@ public class JpaTckModule extends TckModule { bind(new TypeLiteral>() {}) .toInstance(new JpaTckRepository<>(AccountImpl.class)); - bind(new TypeLiteral>() {}) - .to(RecipePermissionsDaoTest.TestDomain.class); - bind(new TypeLiteral>() {}) - .to(JpaRecipePermissionsDao.class); - bind(new TypeLiteral>() {}) - .toInstance(new JpaTckRepository<>(RecipePermissionsImpl.class)); - bind(RecipeDao.class).to(JpaRecipeDao.class); bind(SnapshotDao.class).to(JpaSnapshotDao.class); } diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/recipe/RecipeLoaderTest.java b/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/recipe/RecipeLoaderTest.java index 8703f3c6ea..b1ad05503d 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/recipe/RecipeLoaderTest.java +++ b/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/recipe/RecipeLoaderTest.java @@ -21,7 +21,6 @@ import static org.mockito.internal.verification.VerificationModeFactory.times; import com.google.common.collect.ImmutableSet; import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.NotFoundException; -import org.eclipse.che.api.machine.server.jpa.JpaRecipePermissionsDao; import org.eclipse.che.api.machine.server.spi.RecipeDao; import org.eclipse.che.core.db.DBInitializer; import org.mockito.Mock; @@ -42,15 +41,12 @@ public class RecipeLoaderTest { @Mock private RecipeDao recipeDao; - @Mock private JpaRecipePermissionsDao permissionsDao; - @Mock private DBInitializer dbInitializer; @BeforeMethod public void startup() throws Exception { when(dbInitializer.isBareInit()).thenReturn(true); - recipeLoader = - new RecipeLoader(ImmutableSet.of("recipes.json"), recipeDao, permissionsDao, dbInitializer); + recipeLoader = new RecipeLoader(ImmutableSet.of("recipes.json"), recipeDao, dbInitializer); } @Test @@ -63,8 +59,7 @@ public class RecipeLoaderTest { @Test public void shouldNotThrowExceptionWhenLoadPredefinedRecipesFromInvalidJson() throws Exception { recipeLoader = - new RecipeLoader( - ImmutableSet.of("invalid-recipes.json"), recipeDao, permissionsDao, dbInitializer); + new RecipeLoader(ImmutableSet.of("invalid-recipes.json"), recipeDao, dbInitializer); recipeLoader.start(); } @@ -82,9 +77,7 @@ public class RecipeLoaderTest { @Test public void doNotThrowExceptionWhenFileWithRecipesBySpecifiedPathIsNotExist() throws Exception { - recipeLoader = - new RecipeLoader( - ImmutableSet.of("non-existing-file"), recipeDao, permissionsDao, dbInitializer); + recipeLoader = new RecipeLoader(ImmutableSet.of("non-existing-file"), recipeDao, dbInitializer); recipeLoader.start(); diff --git a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/spi/tck/RecipeDaoTest.java b/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/spi/tck/RecipeDaoTest.java index f8edc5157d..4df51f8676 100644 --- a/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/spi/tck/RecipeDaoTest.java +++ b/wsmaster/che-core-api-machine/src/test/java/org/eclipse/che/api/machine/server/spi/tck/RecipeDaoTest.java @@ -11,7 +11,6 @@ package org.eclipse.che.api.machine.server.spi.tck; import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doCallRealMethod; import static org.mockito.Mockito.doThrow; @@ -33,7 +32,6 @@ import org.eclipse.che.api.core.notification.EventService; import org.eclipse.che.api.machine.server.event.BeforeRecipeRemovedEvent; import org.eclipse.che.api.machine.server.event.RecipePersistedEvent; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; import org.eclipse.che.api.machine.server.spi.RecipeDao; import org.eclipse.che.commons.lang.NameGenerator; import org.eclipse.che.commons.test.tck.TckListener; @@ -60,32 +58,23 @@ public class RecipeDaoTest { private List recipes; - private List recipePermissions; - @Inject private RecipeDao recipeDao; @Inject private TckRepository tckRepository; - @Inject private TckRepository tckPermissionsRepository; - @Inject private EventService eventService; @BeforeMethod public void setUp() throws Exception { recipes = new ArrayList<>(5); - recipePermissions = new ArrayList<>(5); for (int i = 0; i < ENTRY_COUNT; i++) { - RecipeImpl tmp = createRecipe(i); - recipes.add(tmp); - recipePermissions.add(new RecipePermissionsImpl("*", tmp.getId(), singletonList("search"))); + recipes.add(createRecipe(i)); } tckRepository.createAll(recipes); - tckPermissionsRepository.createAll(recipePermissions); } @AfterMethod public void cleanUp() throws Exception { - tckPermissionsRepository.removeAll(); tckRepository.removeAll(); } @@ -165,7 +154,7 @@ public class RecipeDaoTest { ) public void shouldRemoveRecipe() throws Exception { final String existedId = recipes.get(0).getId(); - tckPermissionsRepository.removeAll(); //to avoid constraint violation + recipeDao.remove(existedId); recipeDao.getById(existedId); } diff --git a/wsmaster/che-core-api-permission/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule b/wsmaster/che-core-api-permission/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule deleted file mode 100644 index d7570afd1a..0000000000 --- a/wsmaster/che-core-api-permission/src/test/resources/META-INF/services/org.eclipse.che.commons.test.tck.TckModule +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.che.api.permission.server.jpa.SystemPermissionsTckModule diff --git a/wsmaster/che-core-api-system/pom.xml b/wsmaster/che-core-api-system/pom.xml index 43221815a8..16568da0da 100644 --- a/wsmaster/che-core-api-system/pom.xml +++ b/wsmaster/che-core-api-system/pom.xml @@ -82,10 +82,6 @@ org.eclipse.che.core che-core-commons-lang
- - org.everrest - everrest-core - org.slf4j slf4j-api diff --git a/wsmaster/che-core-api-workspace/pom.xml b/wsmaster/che-core-api-workspace/pom.xml index 5e6c66afb8..ec12195d0b 100644 --- a/wsmaster/che-core-api-workspace/pom.xml +++ b/wsmaster/che-core-api-workspace/pom.xml @@ -37,10 +37,6 @@ com.google.inject guice - - com.google.inject.extensions - guice-multibindings - commons-fileupload commons-fileupload @@ -93,19 +89,6 @@ org.eclipse.che.core che-core-api-model - - - org.eclipse.che.core - che-core-api-permission - - - org.eclipse.che.core - che-core-api-permission-shared - - - org.eclipse.che.core - che-core-api-user - org.eclipse.che.core che-core-api-workspace-shared diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/JpaStackDao.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/JpaStackDao.java index f6567577ed..b338a1e9e7 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/JpaStackDao.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/JpaStackDao.java @@ -46,21 +46,6 @@ public class JpaStackDao implements StackDao { @Inject private EventService eventService; - private static final String findByPermissionsQuery = - " SELECT stack FROM StackPermissions perm " - + " LEFT JOIN perm.stack stack " - + " WHERE (perm.userId IS NULL OR perm.userId = :userId) " - + " AND 'search' MEMBER OF perm.actions"; - - private static final String findByPermissionsAndTagsQuery = - " SELECT stack FROM StackPermissions perm " - + " LEFT JOIN perm.stack stack " - + " LEFT JOIN stack.tags tag " - + " WHERE (perm.userId IS NULL OR perm.userId = :userId) " - + " AND 'search' MEMBER OF perm.actions" - + " AND tag IN :tags " - + " GROUP BY stack.id HAVING COUNT(tag) = :tagsSize"; - @Override public void create(StackImpl stack) throws ConflictException, ServerException { requireNonNull(stack, "Required non-null stack"); @@ -115,22 +100,21 @@ public class JpaStackDao implements StackDao { @Override @Transactional public List searchStacks( - @Nullable String userId, @Nullable List tags, int skipCount, int maxItems) + @Nullable String user, @Nullable List tags, int skipCount, int maxItems) throws ServerException { final TypedQuery query; if (tags == null || tags.isEmpty()) { - query = managerProvider.get().createQuery(findByPermissionsQuery, StackImpl.class); + query = managerProvider.get().createNamedQuery("Stack.getAll", StackImpl.class); } else { query = managerProvider .get() - .createQuery(findByPermissionsAndTagsQuery, StackImpl.class) + .createNamedQuery("Stack.getByTags", StackImpl.class) .setParameter("tags", tags) .setParameter("tagsSize", tags.size()); } try { return query - .setParameter("userId", userId) .setMaxResults(maxItems) .setFirstResult(skipCount) .getResultList() diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/JpaWorkspaceDao.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/JpaWorkspaceDao.java index a3ce2e9423..e9de575cf4 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/JpaWorkspaceDao.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/JpaWorkspaceDao.java @@ -51,12 +51,6 @@ public class JpaWorkspaceDao implements WorkspaceDao { @Inject private EventService eventService; @Inject private Provider managerProvider; - private static final String findByWorkerQuery = - "SELECT ws FROM Worker worker " - + " LEFT JOIN worker.workspace ws " - + " WHERE worker.userId = :userId " - + " AND 'read' MEMBER OF worker.actions"; - @Override public WorkspaceImpl create(WorkspaceImpl workspace) throws ConflictException, ServerException { requireNonNull(workspace, "Required non-null workspace"); @@ -159,13 +153,14 @@ public class JpaWorkspaceDao implements WorkspaceDao { @Override @Transactional public List getWorkspaces(String userId) throws ServerException { - try { return managerProvider .get() - .createQuery(findByWorkerQuery, WorkspaceImpl.class) - .setParameter("userId", userId) - .getResultList(); + .createNamedQuery("Workspace.getAll", WorkspaceImpl.class) + .getResultList() + .stream() + .map(WorkspaceImpl::new) + .collect(Collectors.toList()); } catch (RuntimeException x) { throw new ServerException(x.getLocalizedMessage(), x); } diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/WorkspaceJpaModule.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/WorkspaceJpaModule.java index 7626e788ca..b0d492b1ce 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/WorkspaceJpaModule.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/jpa/WorkspaceJpaModule.java @@ -11,24 +11,10 @@ package org.eclipse.che.api.workspace.server.jpa; import com.google.inject.AbstractModule; -import com.google.inject.TypeLiteral; -import com.google.inject.multibindings.Multibinder; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.jpa.listener.RemovePermissionsOnLastUserRemovedEventSubscriber; -import org.eclipse.che.api.permission.server.model.impl.AbstractPermissions; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; -import org.eclipse.che.api.workspace.server.WorkspaceDomain; import org.eclipse.che.api.workspace.server.jpa.JpaWorkspaceDao.RemoveSnapshotsBeforeWorkspaceRemovedEventSubscriber; import org.eclipse.che.api.workspace.server.jpa.JpaWorkspaceDao.RemoveWorkspaceBeforeAccountRemovedEventSubscriber; -import org.eclipse.che.api.workspace.server.jpa.listener.RemoveStackOnLastUserRemovedEventSubscriber; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; import org.eclipse.che.api.workspace.server.spi.StackDao; -import org.eclipse.che.api.workspace.server.spi.WorkerDao; import org.eclipse.che.api.workspace.server.spi.WorkspaceDao; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaStackPermissionsDao; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaWorkerDao; -import org.eclipse.che.api.workspace.server.stack.StackDomain; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; /** @author Yevhenii Voevodin */ public class WorkspaceJpaModule extends AbstractModule { @@ -36,28 +22,8 @@ public class WorkspaceJpaModule extends AbstractModule { @Override protected void configure() { bind(StackDao.class).to(JpaStackDao.class); - bind(WorkerDao.class).to(JpaWorkerDao.class); bind(WorkspaceDao.class).to(JpaWorkspaceDao.class); bind(RemoveWorkspaceBeforeAccountRemovedEventSubscriber.class).asEagerSingleton(); bind(RemoveSnapshotsBeforeWorkspaceRemovedEventSubscriber.class).asEagerSingleton(); - - bind(JpaWorkerDao.RemoveWorkersBeforeWorkspaceRemovedEventSubscriber.class).asEagerSingleton(); - bind(JpaWorkerDao.RemoveWorkersBeforeUserRemovedEventSubscriber.class).asEagerSingleton(); - - bind(new TypeLiteral< - RemovePermissionsOnLastUserRemovedEventSubscriber>() {}) - .to(RemoveStackOnLastUserRemovedEventSubscriber.class); - bind(JpaStackPermissionsDao.RemovePermissionsBeforeStackRemovedEventSubscriber.class) - .asEagerSingleton(); - - bind(new TypeLiteral>() {}) - .to(StackDomain.class); - bind(new TypeLiteral>() {}).to(WorkspaceDomain.class); - - Multibinder> daos = - Multibinder.newSetBinder( - binder(), new TypeLiteral>() {}); - daos.addBinding().to(JpaWorkerDao.class); - daos.addBinding().to(JpaStackPermissionsDao.class); } } diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackLoader.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackLoader.java index bb8fee824a..5179a545ee 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackLoader.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/stack/StackLoader.java @@ -12,8 +12,6 @@ package org.eclipse.che.api.workspace.server.stack; import static com.google.common.base.Strings.isNullOrEmpty; import static java.lang.String.format; -import static java.util.Collections.singletonList; -import static org.eclipse.che.api.workspace.server.stack.StackDomain.SEARCH; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -35,7 +33,6 @@ import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; import org.eclipse.che.api.workspace.server.spi.StackDao; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaStackPermissionsDao; import org.eclipse.che.api.workspace.server.stack.image.StackIcon; import org.eclipse.che.api.workspace.shared.stack.Stack; import org.eclipse.che.commons.lang.IoUtil; @@ -64,7 +61,6 @@ public class StackLoader { private final Map stacks2images; private final DBInitializer dbInitializer; private final Boolean reloadStacksOnStart; - private final JpaStackPermissionsDao permissionsDao; @Inject @SuppressWarnings("unused") @@ -72,13 +68,11 @@ public class StackLoader { @Named("che.predefined.stacks.reload_on_start") boolean reloadStacksOnStart, @Named(CHE_PREDEFINED_STACKS) Map stacks2images, StackDao stackDao, - JpaStackPermissionsDao permissionsDao, DBInitializer dbInitializer) { this.reloadStacksOnStart = reloadStacksOnStart; this.stacks2images = stacks2images; this.stackDao = stackDao; this.dbInitializer = dbInitializer; - this.permissionsDao = permissionsDao; GSON = new GsonBuilder().create(); } @@ -112,15 +106,15 @@ public class StackLoader { protected void loadStack(StackImpl stack, Path imagePath) { setIconData(stack, imagePath); + try { + stackDao.update(stack); + } catch (NotFoundException | ConflictException | ServerException e) { try { - stackDao.update(stack); - } catch (NotFoundException ignored) { stackDao.create(stack); + } catch (Exception ex) { + LOG.error(format("Failed to load stack with id '%s' ", stack.getId()), ex); } - permissionsDao.store(new StackPermissionsImpl("*", stack.getId(), singletonList(SEARCH))); - } catch (ServerException | ConflictException ex) { - LOG.warn(format("Failed to load stack with id '%s' ", stack.getId()), ex.getMessage()); } } diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/WorkspaceTckModule.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/WorkspaceTckModule.java index 2fa98b69b0..f8bd744a8a 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/WorkspaceTckModule.java +++ b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/WorkspaceTckModule.java @@ -16,28 +16,17 @@ import org.eclipse.che.account.spi.AccountImpl; import org.eclipse.che.api.machine.server.model.impl.CommandImpl; import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; -import org.eclipse.che.api.permission.server.AbstractPermissionsDomain; -import org.eclipse.che.api.permission.server.spi.PermissionsDao; -import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.model.impl.EnvironmentImpl; import org.eclipse.che.api.workspace.server.model.impl.EnvironmentRecipeImpl; import org.eclipse.che.api.workspace.server.model.impl.ExtendedMachineImpl; import org.eclipse.che.api.workspace.server.model.impl.ProjectConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.ServerConf2Impl; import org.eclipse.che.api.workspace.server.model.impl.SourceStorageImpl; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; import org.eclipse.che.api.workspace.server.spi.StackDao; -import org.eclipse.che.api.workspace.server.spi.WorkerDao; import org.eclipse.che.api.workspace.server.spi.WorkspaceDao; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaStackPermissionsDao; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaWorkerDao; -import org.eclipse.che.api.workspace.server.spi.tck.StackPermissionsDaoTest; -import org.eclipse.che.api.workspace.server.spi.tck.WorkerDaoTest; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.commons.test.db.H2JpaCleaner; import org.eclipse.che.commons.test.db.PersistTestModuleBuilder; @@ -64,15 +53,11 @@ public class WorkspaceTckModule extends TckModule { .runningOn(server) .addEntityClasses( AccountImpl.class, - UserImpl.class, WorkspaceImpl.class, WorkspaceConfigImpl.class, ProjectConfigImpl.class, EnvironmentImpl.class, EnvironmentRecipeImpl.class, - RecipePermissionsImpl.class, - StackPermissionsImpl.class, - WorkerImpl.class, ExtendedMachineImpl.class, SourceStorageImpl.class, ServerConf2Impl.class, @@ -93,24 +78,7 @@ public class WorkspaceTckModule extends TckModule { .toInstance(new JpaTckRepository<>(AccountImpl.class)); bind(new TypeLiteral>() {}).toInstance(new WorkspaceRepository()); bind(new TypeLiteral>() {}).toInstance(new StackRepository()); - bind(new TypeLiteral>() {}) - .toInstance(new JpaTckRepository<>(UserImpl.class)); - bind(new TypeLiteral>() {}) - .toInstance(new JpaTckRepository<>(WorkerImpl.class)); - bind(new TypeLiteral>() {}) - .toInstance(new JpaTckRepository<>(RecipePermissionsImpl.class)); - bind(new TypeLiteral>() {}) - .toInstance(new JpaTckRepository<>(StackPermissionsImpl.class)); - bind(new TypeLiteral>() {}) - .to(JpaStackPermissionsDao.class); - - bind(new TypeLiteral>() {}) - .to(WorkerDaoTest.TestDomain.class); - bind(new TypeLiteral>() {}) - .to(StackPermissionsDaoTest.TestDomain.class); - - bind(WorkerDao.class).to(JpaWorkerDao.class); bind(WorkspaceDao.class).to(JpaWorkspaceDao.class); bind(StackDao.class).to(JpaStackDao.class); } diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java deleted file mode 100644 index af4e604cb0..0000000000 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2012-2017 Red Hat, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Red Hat, Inc. - initial API and implementation - */ -package org.eclipse.che.api.workspace.server.spi.jpa; - -import org.eclipse.che.api.workspace.server.spi.jpa.JpaWorkerDao.RemoveWorkersBeforeWorkspaceRemovedEventSubscriber; - -/** - * Tests for {@link RemoveWorkersBeforeWorkspaceRemovedEventSubscriber} - * - * @author Sergii Leschenko - */ -public class RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest { - // private EntityManager manager; - // private JpaWorkerDao workerDao; - // private JpaWorkspaceDao workspaceDao; - // - // private RemoveWorkersBeforeWorkspaceRemovedEventSubscriber subscriber; - // - // private WorkspaceImpl workspace; - // private WorkerImpl[] workers; - // private UserImpl[] users; - // private Account account; - // - // @BeforeClass - // public void setupEntities() throws Exception { - // account = new AccountImpl("account1", "accountName", "test"); - // - // users = - // new UserImpl[] { - // new UserImpl("user1", "user1@com.com", "usr1"), - // new UserImpl("user2", "user2@com.com", "usr2") - // }; - // - // workspace = - // new WorkspaceImpl( - // "ws1", account, new WorkspaceConfigImpl("", "", "cfg1", null, null, null)); - // - // workers = - // new WorkerImpl[] { - // new WorkerImpl("ws1", "user1", Arrays.asList("read", "use", "run")), - // new WorkerImpl("ws1", "user2", Arrays.asList("read", "use")) - // }; - // - // Injector injector = Guice.createInjector(new JpaTckModule()); - // - // manager = injector.getInstance(EntityManager.class); - // workerDao = injector.getInstance(JpaWorkerDao.class); - // workspaceDao = injector.getInstance(JpaWorkspaceDao.class); - // subscriber = injector.getInstance(RemoveWorkersBeforeWorkspaceRemovedEventSubscriber.class); - // subscriber.subscribe(); - // } - // - // @BeforeMethod - // public void setUp() throws Exception { - // manager.getTransaction().begin(); - // manager.persist(account); - // manager.persist(workspace); - // Stream.of(users).forEach(manager::persist); - // Stream.of(workers).forEach(manager::persist); - // manager.getTransaction().commit(); - // manager.clear(); - // } - // - // @AfterMethod - // public void cleanup() { - // manager.getTransaction().begin(); - // - // manager - // .createQuery("SELECT e FROM Worker e", WorkerImpl.class) - // .getResultList() - // .forEach(manager::remove); - // - // manager - // .createQuery("SELECT w FROM Workspace w", WorkspaceImpl.class) - // .getResultList() - // .forEach(manager::remove); - // - // manager - // .createQuery("SELECT u FROM Usr u", UserImpl.class) - // .getResultList() - // .forEach(manager::remove); - // - // manager - // .createQuery("SELECT a FROM Account a", AccountImpl.class) - // .getResultList() - // .forEach(manager::remove); - // manager.getTransaction().commit(); - // } - // - // @AfterClass - // public void shutdown() throws Exception { - // subscriber.unsubscribe(); - // manager.getEntityManagerFactory().close(); - // H2TestHelper.shutdownDefault(); - // } - // - // @Test - // public void shouldRemoveAllWorkersWhenWorkspaceIsRemoved() throws Exception { - // workspaceDao.remove(workspace.getId()); - // - // assertEquals(workerDao.getWorkers(workspace.getId(), 1, 0).getTotalItemsCount(), 0); - // } - // - // @Test - // public void shouldRemoveAllWorkersWhenPageSizeEqualsToOne() throws Exception { - // subscriber.removeWorkers(workspace.getId(), 1); - // - // assertEquals(workerDao.getWorkers(workspace.getId(), 1, 0).getTotalItemsCount(), 0); - // } -} diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/StackDaoTest.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/StackDaoTest.java index e1cbb1948c..263c2a282b 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/StackDaoTest.java +++ b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/tck/StackDaoTest.java @@ -11,7 +11,7 @@ package org.eclipse.che.api.workspace.server.spi.tck; import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; +import static java.util.stream.Collectors.toList; import static org.eclipse.che.api.workspace.server.spi.tck.WorkspaceDaoTest.createWorkspaceConfig; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doCallRealMethod; @@ -22,11 +22,10 @@ import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import com.google.inject.Inject; -import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.stream.Collectors; +import java.util.stream.Stream; import org.eclipse.che.api.core.ConflictException; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.ServerException; @@ -39,7 +38,6 @@ import org.eclipse.che.api.workspace.server.model.impl.stack.StackComponentImpl; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; import org.eclipse.che.api.workspace.server.model.impl.stack.StackSourceImpl; import org.eclipse.che.api.workspace.server.spi.StackDao; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.api.workspace.server.stack.image.StackIcon; import org.eclipse.che.commons.test.tck.TckListener; import org.eclipse.che.commons.test.tck.repository.TckRepository; @@ -64,40 +62,31 @@ public class StackDaoTest { private static final int STACKS_SIZE = 5; - private List stacks; - - private List stackPermissions; + private StackImpl[] stacks; @Inject private TckRepository stackRepo; - @Inject private TckRepository tckPermissionsRepository; - @Inject private StackDao stackDao; @Inject private EventService eventService; @BeforeMethod private void createStacks() throws TckRepositoryException { - stacks = new ArrayList<>(STACKS_SIZE); - stackPermissions = new ArrayList<>(STACKS_SIZE); + stacks = new StackImpl[STACKS_SIZE]; for (int i = 0; i < STACKS_SIZE; i++) { - StackImpl tmp = createStack("stack-" + i, "name-" + i); - stacks.add(tmp); - stackPermissions.add(new StackPermissionsImpl("*", tmp.getId(), singletonList("search"))); + stacks[i] = createStack("stack-" + i, "name-" + i); } - stackRepo.createAll(stacks.stream().map(StackImpl::new).collect(Collectors.toList())); - tckPermissionsRepository.createAll(stackPermissions); + stackRepo.createAll(Stream.of(stacks).map(StackImpl::new).collect(toList())); } @AfterMethod private void removeStacks() throws TckRepositoryException { - tckPermissionsRepository.removeAll(); stackRepo.removeAll(); } @Test public void shouldGetById() throws Exception { - final StackImpl stack = stacks.get(0); + final StackImpl stack = stacks[0]; assertEquals(stackDao.getById(stack.getId()), stack); } @@ -145,7 +134,7 @@ public class StackDaoTest { @Test(expectedExceptions = ConflictException.class) public void shouldThrowConflictExceptionWhenCreatingStackWithIdThatAlreadyExists() throws Exception { - final StackImpl stack = createStack(stacks.get(0).getId(), "new-name"); + final StackImpl stack = createStack(stacks[0].getId(), "new-name"); stackDao.create(stack); } @@ -153,7 +142,7 @@ public class StackDaoTest { @Test(expectedExceptions = ConflictException.class) public void shouldThrowConflictExceptionWhenCreatingStackWithNameThatAlreadyExists() throws Exception { - final StackImpl stack = createStack("new-stack-id", stacks.get(0).getName()); + final StackImpl stack = createStack("new-stack-id", stacks[0].getName()); stackDao.create(stack); } @@ -168,8 +157,8 @@ public class StackDaoTest { dependsOnMethods = "shouldThrowNotFoundExceptionWhenGettingNonExistingStack" ) public void shouldRemoveStack() throws Exception { - final StackImpl stack = stacks.get(0); - tckPermissionsRepository.removeAll(); //to avoid constraint violation + final StackImpl stack = stacks[0]; + stackDao.remove(stack.getId()); // Should throw an exception @@ -178,7 +167,7 @@ public class StackDaoTest { @Test(dependsOnMethods = "shouldGetById") public void shouldNotRemoveStackWhenSubscriberThrowsExceptionOnStackRemoving() throws Exception { - final StackImpl stack = stacks.get(0); + final StackImpl stack = stacks[0]; CascadeEventSubscriber subscriber = mockCascadeEventSubscriber(); doThrow(new ServerException("error")).when(subscriber).onCascadeEvent(any()); eventService.subscribe(subscriber, BeforeStackRemovedEvent.class); @@ -205,7 +194,7 @@ public class StackDaoTest { @Test(dependsOnMethods = "shouldGetById") public void shouldUpdateStack() throws Exception { - final StackImpl stack = stacks.get(0); + final StackImpl stack = stacks[0]; stack.setName("new-name"); stack.setCreator("new-creator"); @@ -240,8 +229,8 @@ public class StackDaoTest { @Test(expectedExceptions = ConflictException.class) public void shouldNotUpdateStackIfNewNameIsReserved() throws Exception { - final StackImpl stack = stacks.get(0); - stack.setName(stacks.get(1).getName()); + final StackImpl stack = stacks[0]; + stack.setName(stacks[1].getName()); stackDao.update(stack); } @@ -256,12 +245,12 @@ public class StackDaoTest { stackDao.update(null); } - @Test + @Test(dependsOnMethods = "shouldUpdateStack") public void shouldFindStacksWithSpecifiedTags() throws Exception { - stacks.get(0).getTags().addAll(asList("search-tag1", "search-tag2")); - stacks.get(1).getTags().addAll(asList("search-tag1", "non-search-tag")); - stacks.get(2).getTags().addAll(asList("non-search-tag", "search-tag2")); - stacks.get(3).getTags().addAll(asList("search-tag1", "search-tag2", "another-tag")); + stacks[0].getTags().addAll(asList("search-tag1", "search-tag2")); + stacks[1].getTags().addAll(asList("search-tag1", "non-search-tag")); + stacks[2].getTags().addAll(asList("non-search-tag", "search-tag2")); + stacks[3].getTags().addAll(asList("search-tag1", "search-tag2", "another-tag")); updateAll(); final List found = @@ -271,7 +260,7 @@ public class StackDaoTest { Collections.sort(stack.getTags()); } - assertEquals(new HashSet<>(found), new HashSet<>(asList(stacks.get(0), stacks.get(3)))); + assertEquals(new HashSet<>(found), new HashSet<>(asList(stacks[0], stacks[3]))); } @Test @@ -282,7 +271,7 @@ public class StackDaoTest { Collections.sort(stack.getTags()); } - assertEquals(new HashSet<>(found), new HashSet<>(stacks)); + assertEquals(new HashSet<>(found), new HashSet<>(asList(stacks))); } @Test diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/stack/StackLoaderTest.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/stack/StackLoaderTest.java index 2a319356b9..63b32ff1fc 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/stack/StackLoaderTest.java +++ b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/stack/StackLoaderTest.java @@ -28,11 +28,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.che.api.core.NotFoundException; +import org.eclipse.che.api.core.ServerException; import org.eclipse.che.api.core.rest.shared.dto.Link; import org.eclipse.che.api.machine.shared.dto.CommandDto; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; import org.eclipse.che.api.workspace.server.spi.StackDao; -import org.eclipse.che.api.workspace.server.spi.jpa.JpaStackPermissionsDao; import org.eclipse.che.api.workspace.shared.dto.EnvironmentDto; import org.eclipse.che.api.workspace.shared.dto.EnvironmentRecipeDto; import org.eclipse.che.api.workspace.shared.dto.ExtendedMachineDto; @@ -63,8 +63,6 @@ public class StackLoaderTest { @Mock private DBInitializer dbInitializer; - @Mock private JpaStackPermissionsDao permissionsDao; - private StackLoader stackLoader; @BeforeMethod @@ -72,11 +70,7 @@ public class StackLoaderTest { when(dbInitializer.isBareInit()).thenReturn(true); stackLoader = new StackLoader( - false, - ImmutableMap.of("stacks.json", "stack_img"), - stackDao, - permissionsDao, - dbInitializer); + false, ImmutableMap.of("stacks.json", "stack_img"), stackDao, dbInitializer); } @Test @@ -97,6 +91,16 @@ public class StackLoaderTest { verify(stackDao, times(5)).create(any()); } + @Test + public void predefinedStackWithValidJsonShouldBeCreated2() throws Exception { + doThrow(new ServerException("Internal server error")).when(stackDao).update(any()); + + stackLoader.start(); + + verify(stackDao, times(5)).update(any()); + verify(stackDao, times(5)).create(any()); + } + @Test public void shouldNotLoadStackWhenDBAlreadyInitialized() throws Exception { when(dbInitializer.isBareInit()).thenReturn(false); diff --git a/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineTokenPermissionsFilterTest.java b/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineTokenPermissionsFilterTest.java deleted file mode 100644 index 15869c1991..0000000000 --- a/wsmaster/che-machine-authentication/src/test/java/org/eclipse/che/machine/authentication/server/MachineTokenPermissionsFilterTest.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2012-2017 Red Hat, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Red Hat, Inc. - initial API and implementation - */ -package org.eclipse.che.machine.authentication.server; - -import org.eclipse.che.commons.env.EnvironmentContext; -import org.eclipse.che.commons.subject.Subject; -import org.everrest.assured.EverrestJetty; -import org.everrest.core.Filter; -import org.everrest.core.GenericContainerRequest; -import org.everrest.core.RequestFilter; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.testng.MockitoTestNGListener; -import org.testng.annotations.Listeners; - -/** - * Tests for {@link MachineTokenPermissionsFilter}. - * - * @author Max Shaposhnik - */ -@Listeners(value = {EverrestJetty.class, MockitoTestNGListener.class}) -public class MachineTokenPermissionsFilterTest { - - @SuppressWarnings("unused") - private static final EnvironmentFilter FILTER = new EnvironmentFilter(); - - @SuppressWarnings("unused") - @InjectMocks - MachineTokenPermissionsFilter permissionsFilter; - - @Mock private static Subject subject; - - @Mock MachineTokenService service; - - /* - @Test - public void shouldCheckPermissionsOnGettingMachineById() throws Exception { - - when(subject.hasPermission(eq(DOMAIN_ID), eq("workspace123"), eq(USE))).thenReturn(true); - - final Response response = given().auth() - .basic(ADMIN_USER_NAME, ADMIN_USER_PASSWORD) - .when() - .get(SECURE_PATH + "/machine/token/workspace123"); - - assertEquals(response.getStatusCode(), 204); - verify(service).getMachineToken(eq("workspace123")); - verify(subject).checkPermission(DOMAIN_ID, "workspace123", USE); - } - - @Test - public void shouldSkipGetUserMethod() throws Exception { - - final Response response = given().auth() - .basic(ADMIN_USER_NAME, ADMIN_USER_PASSWORD) - .when() - .get(SECURE_PATH + "/machine/token/user/user123"); - - verify(subject, never()).checkPermission(anyString(), anyString(), anyString()); - } - - @Test - public void shouldThrowExceptionWhenUpdatingNotOwnedWorkspace() throws Exception { - - when(subject.hasPermission(eq(DOMAIN_ID), eq("workspace123"), eq(USE))).thenReturn(false); - doThrow(new ForbiddenException("The user does not have permission to " + USE + " workspace with id 'workspace123'")) - .when(subject).checkPermission(anyString(), anyString(), anyString()); - - final Response response = given().auth() - .basic(ADMIN_USER_NAME, ADMIN_USER_PASSWORD) - .when() - .get(SECURE_PATH + "/machine/token/workspace123"); - - assertEquals(response.getStatusCode(), 403); - } - - - - @Test(expectedExceptions = ForbiddenException.class) - public void shouldThrowExceptionWhenCallingUnlistedMethod() throws Exception { - - GenericResourceMethod genericResourceMethod = Mockito.mock(GenericResourceMethod.class); - when(genericResourceMethod.getMethod()).thenReturn(this.getClass().getDeclaredMethod("shouldThrowExceptionWhenCallingUnlistedMethod")); - Object[] argument = new Object[0]; - permissionsFilter.filter(genericResourceMethod, argument); - } - */ - @Filter - public static class EnvironmentFilter implements RequestFilter { - public void doFilter(GenericContainerRequest request) { - EnvironmentContext.getCurrent().setSubject(subject); - } - } -} diff --git a/wsmaster/integration-tests/cascade-removal/src/test/java/org/eclipse/che/core/db/jpa/CascadeRemovalTest.java b/wsmaster/integration-tests/cascade-removal/src/test/java/org/eclipse/che/core/db/jpa/CascadeRemovalTest.java index 6e4f8dd273..9eb7c60696 100644 --- a/wsmaster/integration-tests/cascade-removal/src/test/java/org/eclipse/che/core/db/jpa/CascadeRemovalTest.java +++ b/wsmaster/integration-tests/cascade-removal/src/test/java/org/eclipse/che/core/db/jpa/CascadeRemovalTest.java @@ -49,7 +49,6 @@ import org.eclipse.che.api.machine.server.jpa.MachineJpaModule; import org.eclipse.che.api.machine.server.model.impl.CommandImpl; import org.eclipse.che.api.machine.server.model.impl.SnapshotImpl; import org.eclipse.che.api.machine.server.recipe.RecipeImpl; -import org.eclipse.che.api.machine.server.recipe.RecipePermissionsImpl; import org.eclipse.che.api.machine.server.spi.SnapshotDao; import org.eclipse.che.api.ssh.server.jpa.JpaSshDao.RemoveSshKeysBeforeUserRemovedEventSubscriber; import org.eclipse.che.api.ssh.server.jpa.SshJpaModule; @@ -77,12 +76,10 @@ import org.eclipse.che.api.workspace.server.model.impl.ExtendedMachineImpl; import org.eclipse.che.api.workspace.server.model.impl.ProjectConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.ServerConf2Impl; import org.eclipse.che.api.workspace.server.model.impl.SourceStorageImpl; -import org.eclipse.che.api.workspace.server.model.impl.WorkerImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; import org.eclipse.che.api.workspace.server.spi.WorkspaceDao; -import org.eclipse.che.api.workspace.server.stack.StackPermissionsImpl; import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.commons.test.db.PersistTestModuleBuilder; import org.eclipse.che.core.db.DBInitializer; @@ -172,12 +169,9 @@ public class CascadeRemovalTest { EnvironmentImpl.class, EnvironmentRecipeImpl.class, ExtendedMachineImpl.class, - StackPermissionsImpl.class, - RecipePermissionsImpl.class, SourceStorageImpl.class, ServerConf2Impl.class, StackImpl.class, - WorkerImpl.class, CommandImpl.class, SnapshotImpl.class, RecipeImpl.class, diff --git a/wsmaster/integration-tests/postgresql-tck/src/test/java/PostgreSqlTckModule.java b/wsmaster/integration-tests/postgresql-tck/src/test/java/PostgreSqlTckModule.java index 4648db17b3..b9be55f714 100644 --- a/wsmaster/integration-tests/postgresql-tck/src/test/java/PostgreSqlTckModule.java +++ b/wsmaster/integration-tests/postgresql-tck/src/test/java/PostgreSqlTckModule.java @@ -8,6 +8,7 @@ * Contributors: * Red Hat, Inc. - initial API and implementation */ + import com.google.inject.TypeLiteral; import com.google.inject.persist.Transactional; import java.sql.Connection; diff --git a/wsmaster/pom.xml b/wsmaster/pom.xml index a382539eaf..f70fc19ed4 100644 --- a/wsmaster/pom.xml +++ b/wsmaster/pom.xml @@ -26,10 +26,6 @@ che-core-api-auth-shared che-core-api-auth - che-core-api-permission-shared - che-core-api-permission - che-core-api-authorization - che-core-api-authorization-impl che-core-api-project-templates-shared che-core-api-project-templates che-core-api-machine-shared @@ -38,9 +34,7 @@ che-core-api-workspace che-core-api-user-shared che-core-api-account - che-core-api-account-permission che-core-api-user - che-core-api-user-permission che-core-api-factory-shared che-core-api-factory che-core-api-ssh @@ -50,8 +44,5 @@ integration-tests che-core-api-system che-core-api-system-shared - che-machine-authentication-shared - che-machine-authentication - che-machine-authentication-ide