Skip to content

Commit ddfef84

Browse files
Andrii Parfonovskabashnyuk
authored andcommitted
Mechanism to configure Che with configs from different sources (eclipse-che#2175)
* helper class for set and restore system properties * override configuration properties from system properties with "che." prefix of environment variables with "CHE_" prefix * fix bug report warnings, typo and avoid unneeded compilations of Pattern * Removed ApiEndpointProvider to avoid duplication with environment binding
1 parent fdf85c2 commit ddfef84

12 files changed

Lines changed: 723 additions & 375 deletions

File tree

assembly/assembly-wsagent-war/src/main/java/org/eclipse/che/wsagent/server/WsAgentModule.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import com.google.inject.name.Names;
1717

1818
import org.eclipse.che.ApiEndpointAccessibilityChecker;
19-
import org.eclipse.che.ApiEndpointProvider;
2019
import org.eclipse.che.EventBusURLProvider;
2120
import org.eclipse.che.UriApiEndpointProvider;
2221
import org.eclipse.che.UserTokenProvider;
@@ -39,9 +38,9 @@
3938
import org.eclipse.che.api.core.util.FileCleaner.FileCleanerModule;
4039
import org.eclipse.che.api.core.websocket.WebSocketMessageReceiver;
4140
import org.eclipse.che.api.core.websocket.WebSocketMessageTransmitter;
41+
import org.eclipse.che.api.core.websocket.impl.BasicWebSocketMessageTransmitter;
4242
import org.eclipse.che.api.core.websocket.impl.BasicWebSocketTransmissionValidator;
4343
import org.eclipse.che.api.core.websocket.impl.GuiceInjectorEndpointConfigurator;
44-
import org.eclipse.che.api.core.websocket.impl.BasicWebSocketMessageTransmitter;
4544
import org.eclipse.che.api.core.websocket.impl.WebSocketTransmissionValidator;
4645
import org.eclipse.che.api.git.GitConnectionFactory;
4746
import org.eclipse.che.api.git.GitUserResolver;
@@ -86,7 +85,6 @@ protected void configure() {
8685
bind(GitUserResolver.class).to(LocalGitUserResolver.class);
8786
bind(GitConnectionFactory.class).to(JGitConnectionFactory.class);
8887

89-
bind(String.class).annotatedWith(Names.named("api.endpoint")).toProvider(ApiEndpointProvider.class);
9088
bind(URI.class).annotatedWith(Names.named("api.endpoint")).toProvider(UriApiEndpointProvider.class);
9189
bind(String.class).annotatedWith(Names.named("user.token")).toProvider(UserTokenProvider.class);
9290
bind(WSocketEventBusClient.class).asEagerSingleton();

core/commons/che-core-commons-inject/pom.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,22 @@
7575
<scope>test</scope>
7676
</dependency>
7777
<dependency>
78+
<groupId>org.eclipse.che.core</groupId>
79+
<artifactId>che-core-commons-test</artifactId>
80+
<scope>test</scope>
81+
</dependency>
82+
<dependency>
83+
<groupId>org.mockito</groupId>
84+
<artifactId>mockito-all</artifactId>
85+
<version>${org.mockito.version}</version>
86+
<scope>test</scope>
87+
</dependency>
88+
<dependency>
89+
<groupId>org.mockito</groupId>
90+
<artifactId>mockito-core</artifactId>
91+
<version>${org.mockito.version}</version>
92+
<scope>test</scope>
93+
</dependency> <dependency>
7894
<groupId>org.testng</groupId>
7995
<artifactId>testng</artifactId>
8096
<scope>test</scope>
@@ -88,6 +104,7 @@
88104
<configuration>
89105
<environmentVariables>
90106
<CHE_LOCAL_CONF_DIR>${project.build.directory}/conf</CHE_LOCAL_CONF_DIR>
107+
<CHE_SOME_OTHER_NAME>che_underscore_environment_variable_value</CHE_SOME_OTHER_NAME>
91108
</environmentVariables>
92109
</configuration>
93110
</plugin>

core/commons/che-core-commons-inject/src/main/java/org/eclipse/che/inject/CheBootstrap.java

Lines changed: 185 additions & 58 deletions
Large diffs are not rendered by default.

core/commons/che-core-commons-inject/src/main/java/org/eclipse/che/inject/ConfigurationException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
package org.eclipse.che.inject;
1212

1313
/**
14-
* Exception happen during guice configuration faze.
14+
* Exception happen during guice configuration phase.
1515
*
1616
* @author Sergii Kabashniuk
1717
*/

core/commons/che-core-commons-inject/src/main/java/org/eclipse/che/inject/ModuleScanner.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
*******************************************************************************/
1111
package org.eclipse.che.inject;
1212

13+
import com.google.common.annotations.VisibleForTesting;
1314
import com.google.inject.Module;
1415

1516
import org.slf4j.Logger;
@@ -28,7 +29,8 @@
2829
public class ModuleScanner implements ServletContainerInitializer {
2930
private static final Logger LOG = LoggerFactory.getLogger(ModuleScanner.class);
3031

31-
private static final List<Module> modules = new ArrayList<>();
32+
@VisibleForTesting
33+
static final List<Module> modules = new ArrayList<>();
3234

3335
public static List<Module> findModules() {
3436
return new ArrayList<>(modules);

core/commons/che-core-commons-inject/src/main/java/org/eclipse/che/inject/StringArrayConverter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@
2121

2222
/** @author andrew00x */
2323
public class StringArrayConverter extends AbstractModule implements TypeConverter {
24+
private static final Pattern PATTERN = Pattern.compile(" *, *");
25+
2426
@Override
2527
public Object convert(String value, TypeLiteral<?> toType) {
26-
return Iterables.toArray(Splitter.on(Pattern.compile(" *, *")).split(value), String.class);
28+
return Iterables.toArray(Splitter.on(PATTERN).split(value), String.class);
2729
}
2830

2931
@Override

0 commit comments

Comments
 (0)