Skip to content

Commit 1fe039a

Browse files
committed
feat(QTDI-2145): disable fallback to user's m2
- initial shot, needs refine for non-regression
1 parent a95a906 commit 1fe039a

File tree

4 files changed

+52
-33
lines changed

4 files changed

+52
-33
lines changed

component-runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/service/MavenRepositoryDefaultResolver.java

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public class MavenRepositoryDefaultResolver implements MavenRepositoryResolver {
5252

5353
private PathHandler handler = new PathHandlerImpl();
5454

55+
private boolean hasFallback = Boolean.getBoolean("talend.component.manager.m2.fallback");
56+
5557
@Override
5658
public Path discover() {
5759
return Stream
@@ -63,8 +65,12 @@ public Path discover() {
6365

6466
@Override
6567
public Path fallback() {
66-
log.debug("[fallback] default to user's default repository.");
67-
return Paths.get(USER_HOME).resolve(M2_REPOSITORY);
68+
log.debug("[fallback::{}] default to user's default repository.", hasFallback);
69+
if (hasFallback) {
70+
return Paths.get(USER_HOME).resolve(M2_REPOSITORY);
71+
} else {
72+
return Paths.get(USER_HOME);
73+
}
6874
}
6975

7076
public Path fromSystemProperties() {
@@ -119,30 +125,38 @@ private static String parseSettings(final Path settings) {
119125
}
120126

121127
public Path fromMavenSettings() {
122-
return Stream.of(
123-
Optional.ofNullable(System.getProperty(TALEND_COMPONENT_MANAGER_M2_SETTINGS))
124-
.map(Paths::get)
125-
.orElse(null), //
126-
Optional.ofNullable(System.getProperty("user.home")).map(it -> Paths.get(it, M2_SETTINGS)).orElse(null),
127-
Optional.ofNullable(System.getenv(MAVEN_HOME)).map(it -> Paths.get(it, CONF_SETTINGS)).orElse(null),
128-
Optional.ofNullable(System.getenv(M2_HOME)).map(it -> Paths.get(it, CONF_SETTINGS)).orElse(null))
129-
.filter(Objects::nonNull)
130-
.filter(Files::exists)
131-
.map(MavenRepositoryDefaultResolver::parseSettings)
132-
.filter(Objects::nonNull)
133-
.map(handler::get)
134-
.filter(Objects::nonNull)
135-
.findFirst()
136-
.orElse(null);
128+
if (hasFallback) {
129+
return Stream.of(
130+
Optional.ofNullable(System.getProperty(TALEND_COMPONENT_MANAGER_M2_SETTINGS))
131+
.map(Paths::get)
132+
.orElse(null), //
133+
Optional.ofNullable(System.getProperty("user.home"))
134+
.map(it -> Paths.get(it, M2_SETTINGS))
135+
.orElse(null),
136+
Optional.ofNullable(System.getenv(MAVEN_HOME)).map(it -> Paths.get(it, CONF_SETTINGS)).orElse(null),
137+
Optional.ofNullable(System.getenv(M2_HOME)).map(it -> Paths.get(it, CONF_SETTINGS)).orElse(null))
138+
.filter(Objects::nonNull)
139+
.filter(Files::exists)
140+
.map(MavenRepositoryDefaultResolver::parseSettings)
141+
.filter(Objects::nonNull)
142+
.map(handler::get)
143+
.filter(Objects::nonNull)
144+
.findFirst()
145+
.orElse(null);
146+
} else {
147+
return null;
148+
}
137149
}
138150

139151
public Path fromEnvironmentVariables() {
140-
final String vm2 = System.getenv(M2_HOME);
141-
log.debug("[fromEnvironmentVariables] M2_HOME={}", vm2);
142-
if (vm2 != null) {
143-
return handler.get(Paths.get(vm2, "repository").toString());
152+
if (hasFallback) {
153+
final String vm2 = System.getenv(M2_HOME);
154+
log.debug("[fromEnvironmentVariables] M2_HOME={}", vm2);
155+
if (vm2 != null) {
156+
return handler.get(Paths.get(vm2, "repository").toString());
157+
}
158+
log.debug("[fromEnvironmentVariables] Could not get m2 from environment.");
144159
}
145-
log.debug("[fromEnvironmentVariables] Could not get m2 from environment.");
146160
return null;
147161
}
148162

component-runtime-manager/src/test/java/org/talend/sdk/component/runtime/manager/ComponentManagerTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@
6060
import javax.management.ReflectionException;
6161

6262
import org.apache.xbean.finder.util.Files;
63+
import org.junit.jupiter.api.AfterAll;
6364
import org.junit.jupiter.api.Assertions;
65+
import org.junit.jupiter.api.BeforeAll;
6466
import org.junit.jupiter.api.Test;
6567
import org.junit.jupiter.api.io.TempDir;
6668
import org.junit.jupiter.params.ParameterizedTest;
@@ -98,6 +100,16 @@ private ComponentManager newManager() {
98100
return newManager(new File("target/test-dependencies"));
99101
}
100102

103+
@BeforeAll
104+
static void setup() {
105+
System.setProperty("talend.component.manager.m2.fallback", "true");
106+
}
107+
108+
@AfterAll
109+
static void teardown() {
110+
System.clearProperty("talend.component.manager.m2.fallback");
111+
}
112+
101113
@Test
102114
void doubleClose() {
103115
final ComponentManager instance = ComponentManager.instance();

component-runtime-manager/src/test/java/org/talend/sdk/component/runtime/manager/service/MavenRepositoryResolverTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public Path get(final String path) {
7070

7171
@BeforeAll
7272
static void setup() throws IOException {
73+
System.setProperty("talend.component.manager.m2.fallback", "true");
7374
final Path repository = Paths.get(new File("target/test-classes").getAbsolutePath());
7475
Files.createDirectories(repository.resolve(M2_REPOSITORY));
7576
}

container/container-core/src/main/java/org/talend/sdk/component/container/ContainerManager.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import java.io.IOException;
3030
import java.io.InputStream;
3131
import java.io.InputStreamReader;
32-
import java.net.URL;
3332
import java.nio.charset.StandardCharsets;
3433
import java.nio.file.Files;
3534
import java.nio.file.Path;
@@ -111,18 +110,11 @@ public ContainerManager(final DependenciesResolutionConfiguration dependenciesRe
111110
this.logInfoLevelMapping = logInfoLevelMapping;
112111
this.containerInitializer = containerInitializer;
113112
this.resolver = dependenciesResolutionConfiguration.getResolver();
113+
this.rootRepositoryLocation = dependenciesResolutionConfiguration.getRootRepositoryLocation();
114114

115-
Path rootRepo = ofNullable(dependenciesResolutionConfiguration.getRootRepositoryLocation())
116-
.filter(Files::exists)
117-
.orElseGet(() -> PathFactory.get(System.getProperty("user.home")).resolve(".m2/repository"));
118-
// if we've defaulted to user home m2 (fallback), we want to check if we're in running in a fatjar
119-
if (PathFactory.get(System.getProperty("user.home")).resolve(".m2/repository").equals(rootRepo)) {
120-
final URL nested = classLoaderConfiguration.getParent().getResource("MAVEN-INF/repository");
121-
if (nested != null) {
122-
rootRepo = PathFactory.get(nested.getFile().replace("file:", ""));
123-
}
115+
if (log.isDebugEnabled()) {
116+
log.debug("Using root repository: " + this.rootRepositoryLocation.toAbsolutePath());
124117
}
125-
this.rootRepositoryLocation = rootRepo;
126118
info("Using root repository: " + this.rootRepositoryLocation.toAbsolutePath());
127119
final String pluginsLocation = System.getProperty("talend.component.manager.plugins.location",
128120
"TALEND-INF/plugins.properties");

0 commit comments

Comments
 (0)