diff --git a/assembly/assembly-wsmaster-war/pom.xml b/assembly/assembly-wsmaster-war/pom.xml
index e3fb5f38f0..f27cac8697 100644
--- a/assembly/assembly-wsmaster-war/pom.xml
+++ b/assembly/assembly-wsmaster-war/pom.xml
@@ -59,10 +59,6 @@
com.google.inject.extensions
guice-servlet
-
- com.h2database
- h2
-
io.jaegertracing
jaeger-client
@@ -207,14 +203,6 @@
org.eclipse.che.core
che-core-db
-
- org.eclipse.che.core
- che-core-db-vendor-h2
-
-
- org.eclipse.che.core
- che-core-db-vendor-mysql
-
org.eclipse.che.core
che-core-db-vendor-postgresql
@@ -243,10 +231,6 @@
org.eclipse.che.core
che-core-tracing-web
-
- org.eclipse.che.core
- wsmaster-local
-
org.eclipse.che.infrastructure
infrastructure-distributed
@@ -474,8 +458,6 @@
org.slf4j:log4j-over-slf4j
ch.qos.logback:logback-classic
net.logstash.logback:logstash-logback-encoder
- com.h2database:h2
- org.eclipse.che.core:che-core-db-vendor-mysql
org.eclipse.che.core:che-core-sql-schema
org.eclipse.che.core:che-core-api-ssh-shared
org.eclipse.che.multiuser:che-multiuser-sql-schema
diff --git a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/CommonJndiDataSourceFactory.java b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/CommonJndiDataSourceFactory.java
deleted file mode 100644
index e32dadd3ed..0000000000
--- a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/CommonJndiDataSourceFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2012-2018 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api;
-
-import java.util.Hashtable;
-import javax.naming.Context;
-import javax.naming.Name;
-import javax.naming.spi.ObjectFactory;
-import org.eclipse.che.core.db.h2.H2SQLJndiDataSourceFactory;
-import org.eclipse.che.core.db.postgresql.PostgreSQLJndiDataSourceFactory;
-
-/**
- * Creates appropriate JNDI data source factory instance depending on system variable.
- *
- * @author Max Shaposhnik (mshaposh@redhat.com)
- */
-public class CommonJndiDataSourceFactory implements ObjectFactory {
-
- private final ObjectFactory delegate;
-
- public CommonJndiDataSourceFactory() throws Exception {
- delegate =
- Boolean.valueOf(System.getenv("CHE_MULTIUSER"))
- ? new PostgreSQLJndiDataSourceFactory()
- : new H2SQLJndiDataSourceFactory();
- }
-
- @Override
- public Object getObjectInstance(Object o, Name name, Context context, Hashtable, ?> hashtable)
- throws Exception {
- return delegate.getObjectInstance(o, name, context, hashtable);
- }
-}
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 d33094764f..649aacaac8 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
@@ -47,6 +47,7 @@ import org.eclipse.che.api.infraproxy.server.InfraProxyModule;
import org.eclipse.che.api.metrics.WsMasterMetricsModule;
import org.eclipse.che.api.system.server.ServiceTermination;
import org.eclipse.che.api.system.server.SystemModule;
+import org.eclipse.che.api.user.server.NotImplementedTokenValidator;
import org.eclipse.che.api.user.server.TokenValidator;
import org.eclipse.che.api.user.server.jpa.JpaPreferenceDao;
import org.eclipse.che.api.user.server.jpa.JpaProfileDao;
@@ -75,7 +76,6 @@ import org.eclipse.che.api.workspace.server.spi.provision.env.ProjectsRootEnvVar
import org.eclipse.che.api.workspace.server.spi.provision.env.WorkspaceIdEnvVarProvider;
import org.eclipse.che.api.workspace.server.spi.provision.env.WorkspaceNameEnvVarProvider;
import org.eclipse.che.api.workspace.server.spi.provision.env.WorkspaceNamespaceNameEnvVarProvider;
-import org.eclipse.che.api.workspace.server.token.MachineTokenProvider;
import org.eclipse.che.api.workspace.server.wsplugins.ChePluginsApplier;
import org.eclipse.che.commons.observability.deploy.ExecutorWrapperModule;
import org.eclipse.che.core.db.DBTermination;
@@ -280,11 +280,7 @@ public class WsMasterModule extends AbstractModule {
installDefaultSecureServerExposer(infrastructure);
install(new org.eclipse.che.security.oauth1.BitbucketModule());
- if (Boolean.valueOf(System.getenv("CHE_MULTIUSER"))) {
- configureMultiUserMode(persistenceProperties, infrastructure);
- } else {
- configureSingleUserMode(persistenceProperties, infrastructure);
- }
+ configureMultiUserMode(persistenceProperties, infrastructure);
install(
new com.google.inject.persist.jpa.JpaPersistModule("main")
@@ -321,43 +317,6 @@ public class WsMasterModule extends AbstractModule {
install(new OpenShiftOAuthModule());
}
- private void configureSingleUserMode(
- Map persistenceProperties, String infrastructure) {
- persistenceProperties.put(
- PersistenceUnitProperties.EXCEPTION_HANDLER_CLASS,
- "org.eclipse.che.core.db.h2.jpa.eclipselink.H2ExceptionHandler");
- bind(TokenValidator.class).to(org.eclipse.che.api.local.DummyTokenValidator.class);
- bind(MachineTokenProvider.class).to(MachineTokenProvider.EmptyMachineTokenProvider.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());
- install(new org.eclipse.che.api.devfile.server.jpa.UserDevfileJpaModule());
-
- bind(org.eclipse.che.api.user.server.CheUserCreator.class);
-
- bindConstant().annotatedWith(Names.named("che.agents.auth_enabled")).to(false);
-
- bind(org.eclipse.che.security.oauth.shared.OAuthTokenProvider.class)
- .to(org.eclipse.che.security.oauth.OAuthAuthenticatorTokenProvider.class);
- bind(OAuthAPI.class).to(EmbeddedOAuthAPI.class);
-
- bind(RemoteSubscriptionStorage.class)
- .to(org.eclipse.che.api.core.notification.InmemoryRemoteSubscriptionStorage.class);
- bind(WorkspaceLockService.class)
- .to(org.eclipse.che.api.workspace.server.DefaultWorkspaceLockService.class);
- bind(WorkspaceStatusCache.class)
- .to(org.eclipse.che.api.workspace.server.DefaultWorkspaceStatusCache.class);
-
- install(new org.eclipse.che.api.workspace.activity.inject.WorkspaceActivityModule());
-
- // In single user mode jwtproxy provisioner isn't actually bound at all, but since
- // it is the new default, we need to "fake it" by binding the passthrough provisioner
- // as the jwtproxy impl.
- configureImpostorJwtProxySecureProvisioner(infrastructure);
- }
-
private void configureMultiUserMode(
Map persistenceProperties, String infrastructure) {
if (OpenShiftInfrastructure.NAME.equals(infrastructure)
@@ -436,7 +395,7 @@ public class WsMasterModule extends AbstractModule {
install(new OrganizationJpaModule());
if (Boolean.parseBoolean(System.getenv("CHE_AUTH_NATIVEUSER"))) {
- bind(TokenValidator.class).to(org.eclipse.che.api.local.DummyTokenValidator.class);
+ bind(TokenValidator.class).to(NotImplementedTokenValidator.class);
bind(JwtParser.class).to(DefaultJwtParser.class);
bind(ProfileDao.class).to(JpaProfileDao.class);
bind(OAuthAPI.class).to(EmbeddedOAuthAPI.class);
diff --git a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterServletModule.java b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterServletModule.java
index a497176a8e..52ca9dde48 100644
--- a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterServletModule.java
+++ b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/WsMasterServletModule.java
@@ -45,16 +45,12 @@ public class WsMasterServletModule extends ServletModule {
serveRegex("^(?!/websocket.?)(.*)").with(GuiceEverrestServlet.class);
install(new org.eclipse.che.swagger.deploy.BasicSwaggerConfigurationModule());
- if (Boolean.valueOf(System.getenv("CHE_MULTIUSER"))) {
- if (Boolean.parseBoolean(System.getenv("CHE_AUTH_NATIVEUSER"))) {
- LOG.info("Running in native-user mode ...");
- configureNativeUserMode();
- } else {
- LOG.info("Running in classic multi-user mode ...");
- configureMultiUserMode();
- }
+ if (Boolean.parseBoolean(System.getenv("CHE_AUTH_NATIVEUSER"))) {
+ LOG.info("Running in native-user mode ...");
+ configureNativeUserMode();
} else {
- configureSingleUserMode();
+ LOG.info("Running in classic multi-user mode ...");
+ configureMultiUserMode();
}
if (Boolean.valueOf(System.getenv("CHE_METRICS_ENABLED"))) {
@@ -72,10 +68,6 @@ public class WsMasterServletModule extends ServletModule {
}
}
- private void configureSingleUserMode() {
- filter("/*").through(org.eclipse.che.api.local.filters.EnvironmentInitializationFilter.class);
- }
-
private void configureMultiUserMode() {
filterRegex(".*").through(MachineLoginFilter.class);
install(new KeycloakServletModule());
diff --git a/assembly/assembly-wsmaster-war/src/main/webapp/META-INF/context.xml b/assembly/assembly-wsmaster-war/src/main/webapp/META-INF/context.xml
index 4c142919b6..e1fe34a086 100644
--- a/assembly/assembly-wsmaster-war/src/main/webapp/META-INF/context.xml
+++ b/assembly/assembly-wsmaster-war/src/main/webapp/META-INF/context.xml
@@ -16,5 +16,5 @@
+ factory="org.eclipse.che.core.db.postgresql.PostgreSQLJndiDataSourceFactory"/>
diff --git a/assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties b/assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
index b4cb69a43e..5b3228fc0b 100644
--- a/assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
+++ b/assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
@@ -15,9 +15,6 @@
### {prod-short} server
-# Folder where {prod-short} stores internal data objects.
-che.database=${che.home}/storage
-
# API service. Browsers initiate REST communications to {prod-short} server with this URL.
che.api=http://${CHE_HOST}:${CHE_PORT}/api
diff --git a/core/che-core-db-vendor-h2/src/main/java/org/eclipse/che/core/db/h2/H2DataSourceProvider.java b/core/che-core-db-vendor-h2/src/main/java/org/eclipse/che/core/db/h2/H2DataSourceProvider.java
deleted file mode 100644
index 9d90d76997..0000000000
--- a/core/che-core-db-vendor-h2/src/main/java/org/eclipse/che/core/db/h2/H2DataSourceProvider.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2012-2018 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.core.db.h2;
-
-import java.nio.file.Paths;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Provider;
-import javax.sql.DataSource;
-import org.eclipse.che.core.db.JndiDataSourceProvider;
-
-/**
- * Provides data source for h2 database.
- *
- * @author Yevhenii Voevodin
- */
-public class H2DataSourceProvider implements Provider {
-
- @Inject
- @Named("che.database")
- private String storageRoot;
-
- @Inject private JndiDataSourceProvider jndiDataSourceProvider;
-
- @Override
- public DataSource get() {
- System.setProperty("h2.baseDir", Paths.get(storageRoot).resolve("db").toString());
- return jndiDataSourceProvider.get();
- }
-}
diff --git a/core/che-core-db-vendor-h2/src/main/java/org/eclipse/che/core/db/h2/H2SQLJndiDataSourceFactory.java b/core/che-core-db-vendor-h2/src/main/java/org/eclipse/che/core/db/h2/H2SQLJndiDataSourceFactory.java
deleted file mode 100644
index 34a4f5abee..0000000000
--- a/core/che-core-db-vendor-h2/src/main/java/org/eclipse/che/core/db/h2/H2SQLJndiDataSourceFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2012-2018 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.core.db.h2;
-
-import static com.google.common.base.MoreObjects.firstNonNull;
-
-import org.eclipse.che.core.db.JNDIDataSourceFactory;
-
-/**
- * Environment params based JNDI data source factory for H2SQL.
- *
- * @author Sergii Kabashniuk
- */
-public class H2SQLJndiDataSourceFactory extends JNDIDataSourceFactory {
-
- private static final String DEFAULT_USERNAME = "";
- private static final String DEFAULT_PASSWORD = "";
- private static final String DEFAULT_URL = "jdbc:h2:che";
- private static final String DEFAULT_DRIVER__CLASS__NAME = "org.h2.Driver";
- private static final String DEFAULT_MAX__TOTAL = "8";
- private static final String DEFAULT_MAX__IDLE = "2";
- private static final String DEFAULT_MAX__WAIT__MILLIS = "-1";
-
- public H2SQLJndiDataSourceFactory() throws Exception {
- super(
- firstNonNull(
- nullStringToNullReference(System.getenv("CHE_JDBC_USERNAME")), DEFAULT_USERNAME),
- firstNonNull(
- nullStringToNullReference(System.getenv("CHE_JDBC_PASSWORD")), DEFAULT_PASSWORD),
- firstNonNull(nullStringToNullReference(System.getenv("CHE_JDBC_URL")), DEFAULT_URL),
- firstNonNull(
- nullStringToNullReference(System.getenv("CHE_JDBC_DRIVER__CLASS__NAME")),
- DEFAULT_DRIVER__CLASS__NAME),
- firstNonNull(
- nullStringToNullReference(System.getenv("CHE_JDBC_MAX__TOTAL")), DEFAULT_MAX__TOTAL),
- firstNonNull(
- nullStringToNullReference(System.getenv("CHE_JDBC_MAX__IDLE")), DEFAULT_MAX__IDLE),
- firstNonNull(
- nullStringToNullReference(System.getenv("CHE_JDBC_MAX__WAIT__MILLIS")),
- DEFAULT_MAX__WAIT__MILLIS));
- }
-}
diff --git a/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/DummyTokenValidator.java b/wsmaster/che-core-api-user/src/main/java/org/eclipse/che/api/user/server/NotImplementedTokenValidator.java
similarity index 53%
rename from wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/DummyTokenValidator.java
rename to wsmaster/che-core-api-user/src/main/java/org/eclipse/che/api/user/server/NotImplementedTokenValidator.java
index ada33c3110..009d313643 100644
--- a/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/DummyTokenValidator.java
+++ b/wsmaster/che-core-api-user/src/main/java/org/eclipse/che/api/user/server/NotImplementedTokenValidator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2018 Red Hat, Inc.
+ * Copyright (c) 2012-2021 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -9,25 +9,17 @@
* Contributors:
* Red Hat, Inc. - initial API and implementation
*/
-package org.eclipse.che.api.local;
+package org.eclipse.che.api.user.server;
import javax.inject.Singleton;
import org.eclipse.che.api.core.ConflictException;
import org.eclipse.che.api.core.model.user.User;
-import org.eclipse.che.api.user.server.TokenValidator;
-import org.eclipse.che.api.user.server.model.impl.UserImpl;
-/**
- * Dummy implementation of {@link org.eclipse.che.api.user.server.TokenValidator}.
- *
- * @author Ann Shumilova
- * @author Dmitry Shnurenko
- */
@Singleton
-public class DummyTokenValidator implements TokenValidator {
+public class NotImplementedTokenValidator implements TokenValidator {
@Override
public User validateToken(String token) throws ConflictException {
- return new UserImpl("che", "che", "che@eclipse.org");
+ throw new ConflictException("Token validation do not implemented");
}
}
diff --git a/wsmaster/pom.xml b/wsmaster/pom.xml
index 15e11b908f..b80d11ee3f 100644
--- a/wsmaster/pom.xml
+++ b/wsmaster/pom.xml
@@ -45,7 +45,6 @@
che-core-api-factory-bitbucket-server
che-core-api-ssh
che-core-api-ssh-shared
- wsmaster-local
che-core-sql-schema
che-core-api-system
che-core-api-system-shared
diff --git a/wsmaster/wsmaster-local/pom.xml b/wsmaster/wsmaster-local/pom.xml
deleted file mode 100644
index f337c198a7..0000000000
--- a/wsmaster/wsmaster-local/pom.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-
-
-
- 4.0.0
-
- che-master-parent
- org.eclipse.che.core
- 7.37.0-SNAPSHOT
-
- wsmaster-local
- Che Core :: API :: Impl Local
-
- false
-
-
-
- io.opentracing
- opentracing-api
-
-
- javax.inject
- javax.inject
-
-
- org.eclipse.che.core
- che-core-api-core
-
-
- org.eclipse.che.core
- che-core-api-model
-
-
- org.eclipse.che.core
- che-core-api-user
-
-
- org.eclipse.che.core
- che-core-commons-tracing
-
-
- javax.servlet
- javax.servlet-api
- provided
-
-
- org.eclipse.che.core
- che-core-api-workspace-shared
- provided
-
-
- ch.qos.logback
- logback-classic
- test
-
-
- com.google.inject.extensions
- guice-persist
- test
-
-
- com.h2database
- h2
- test
-
-
- org.eclipse.che.core
- che-core-commons-test
- test
-
-
- org.eclipse.che.core
- che-core-db
- test
-
-
- org.eclipse.che.core
- che-core-db-vendor-h2
- test
-
-
- org.eclipse.che.core
- che-core-sql-schema
- test
-
-
- org.eclipse.persistence
- javax.persistence
- test
-
-
- org.eclipse.persistence
- org.eclipse.persistence.core
- test
-
-
- org.everrest
- everrest-assured
- test
-
-
- org.mockito
- mockito-core
- test
-
-
- org.mockito
- mockito-testng
- test
-
-
- org.testng
- testng
- test
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- resource-dependencies
- process-test-resources
-
- unpack-dependencies
-
-
- che-core-sql-schema
- che-schema/
- ${project.build.directory}
-
-
-
-
-
-
-
diff --git a/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/filters/EnvironmentInitializationFilter.java b/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/filters/EnvironmentInitializationFilter.java
deleted file mode 100644
index 942628f049..0000000000
--- a/wsmaster/wsmaster-local/src/main/java/org/eclipse/che/api/local/filters/EnvironmentInitializationFilter.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2012-2021 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.che.api.local.filters;
-
-import io.opentracing.Span;
-import io.opentracing.Tracer;
-import java.io.IOException;
-import java.security.Principal;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-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.commons.tracing.TracingTags;
-
-/**
- * Fills environment context with information about current subject.
- *
- * @author Dmitry Shnurenko
- */
-@Singleton
-public class EnvironmentInitializationFilter implements Filter {
-
- @Inject Tracer tracer;
-
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {}
-
- @Override
- public final void doFilter(
- ServletRequest request, ServletResponse response, FilterChain filterChain)
- throws IOException, ServletException {
- final HttpServletRequest httpRequest = (HttpServletRequest) request;
- Subject subject = new SubjectImpl("che", "che", "dummy_token", false);
- final EnvironmentContext environmentContext = EnvironmentContext.getCurrent();
- try {
- environmentContext.setSubject(subject);
- Span activeSpan = tracer.activeSpan();
- if (activeSpan != null) {
- TracingTags.USER_ID.set(tracer.activeSpan(), subject.getUserId());
- }
- filterChain.doFilter(addUserInRequest(httpRequest, subject), response);
- } finally {
- EnvironmentContext.reset();
- }
- }
-
- private HttpServletRequest addUserInRequest(
- final HttpServletRequest httpRequest, final Subject subject) {
- return new HttpServletRequestWrapper(httpRequest) {
- @Override
- public String getRemoteUser() {
- return subject.getUserName();
- }
-
- @Override
- public Principal getUserPrincipal() {
- return () -> subject.getUserName();
- }
- };
- }
-
- @Override
- public void destroy() {}
-}