Skip to content

Commit 92aa45c

Browse files
committed
Cleanup the ResolverConfigrationIO
- basedir should not be stored as it is computed dynamically - do not init dynamic basedir twice
1 parent bdd99e1 commit 92aa45c

File tree

3 files changed

+25
-15
lines changed

3 files changed

+25
-15
lines changed

org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/embedder/MavenProperties.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@
3131
import org.slf4j.Logger;
3232
import org.slf4j.LoggerFactory;
3333

34+
import org.eclipse.core.resources.IResource;
3435
import org.eclipse.core.resources.IWorkspace;
3536
import org.eclipse.core.resources.ResourcesPlugin;
37+
import org.eclipse.core.runtime.IPath;
3638

3739
import org.apache.maven.cli.MavenCli;
3840
import org.apache.maven.shared.utils.StringUtils;
@@ -138,6 +140,17 @@ public static void setProperties(Properties properties) {
138140
}
139141
}
140142

143+
public static File computeMultiModuleProjectDirectory(IResource resource) {
144+
if(resource == null) {
145+
return null;
146+
}
147+
IPath location = resource.getLocation();
148+
if(location == null) {
149+
return null;
150+
}
151+
return computeMultiModuleProjectDirectory(location.toFile());
152+
}
153+
141154
/**
142155
* @param file a base file or directory, may be <code>null</code>
143156
* @return the value for `maven.multiModuleProjectDirectory` as defined in Maven launcher

org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ResolverConfigurationIO.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.eclipse.core.runtime.preferences.IScopeContext;
3434

3535
import org.eclipse.m2e.core.internal.IMavenConstants;
36+
import org.eclipse.m2e.core.internal.embedder.MavenProperties;
3637
import org.eclipse.m2e.core.project.IProjectConfiguration;
3738
import org.eclipse.m2e.core.project.ResolverConfiguration;
3839

@@ -95,13 +96,6 @@ public static boolean saveResolverConfiguration(IProject project, IProjectConfig
9596
} else {
9697
projectNode.remove(P_LIFECYCLE_MAPPING_ID);
9798
}
98-
File directory = configuration.getMultiModuleProjectDirectory();
99-
if(directory != null) {
100-
projectNode.put(P_BASEDIR, directory.getAbsolutePath());
101-
} else {
102-
projectNode.remove(P_BASEDIR);
103-
}
104-
10599
if(configuration.getConfigurationProperties() != null && !configuration.getConfigurationProperties().isEmpty()) {
106100
projectNode.put(P_PROPERTIES, propertiesAsString(configuration.getConfigurationProperties()));
107101
} else {
@@ -122,27 +116,31 @@ public static boolean saveResolverConfiguration(IProject project, IProjectConfig
122116
public static IProjectConfiguration readResolverConfiguration(IProject project) {
123117
IScopeContext projectScope = new ProjectScope(project);
124118
IEclipsePreferences projectNode = projectScope.getNode(IMavenConstants.PLUGIN_ID);
125-
ResolverConfiguration configuration = new ResolverConfiguration(project);
126119
if(projectNode == null) {
127-
return configuration;
120+
return new ResolverConfiguration(project);
128121
}
129-
130122
String version = projectNode.get(P_VERSION, null);
131123
if(version == null) { // migrate from old config
132-
return configuration;
124+
return new ResolverConfiguration(project);
133125
}
126+
ResolverConfiguration configuration = new ResolverConfiguration();
134127
configuration.setResolveWorkspaceProjects(projectNode.getBoolean(P_RESOLVE_WORKSPACE_PROJECTS, false));
135128
configuration.setSelectedProfiles(projectNode.get(P_SELECTED_PROFILES, "")); //$NON-NLS-1$
136129
configuration.setLifecycleMappingId(projectNode.get(P_LIFECYCLE_MAPPING_ID, (String) null));
137130
configuration.setProperties(stringAsProperties(projectNode.get(P_PROPERTIES, null)));
131+
configuration.setMultiModuleProjectDirectory(getBasedir(projectNode, project));
132+
return configuration;
133+
}
134+
135+
private static File getBasedir(IEclipsePreferences projectNode, IProject project) {
138136
String basedirSetting = projectNode.get(P_BASEDIR, null);
139137
if(basedirSetting != null) {
140138
File directory = new File(basedirSetting);
141139
if(directory.isDirectory()) {
142-
configuration.setMultiModuleProjectDirectory(directory);
140+
return directory;
143141
}
144142
}
145-
return configuration;
143+
return MavenProperties.computeMultiModuleProjectDirectory(project);
146144
}
147145

148146
private static String propertiesAsString(Map<?, ?> properties) {

org.eclipse.m2e.core/src/org/eclipse/m2e/core/project/ResolverConfiguration.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ public ResolverConfiguration() {
5353
}
5454

5555
public ResolverConfiguration(IProject project) {
56-
setMultiModuleProjectDirectory(
57-
MavenProperties.computeMultiModuleProjectDirectory(project.getLocation().toFile()));
56+
setMultiModuleProjectDirectory(MavenProperties.computeMultiModuleProjectDirectory(project));
5857
}
5958

6059
/**

0 commit comments

Comments
 (0)