Skip to content

Commit b2e74c4

Browse files
committed
Do not depend on DefaultRepositorySystemSession directly
Currently FilterRepositorySystemSession assumes that we always have a DefaultRepositorySystemSession but this changes with Maven 4. To prevent immediate failure on Maven 4 this now override the getter methods as well and only forward the setData/TransferListener if we have a DefaultRepositorySystemSession.
1 parent 984447e commit b2e74c4

File tree

2 files changed

+51
-12
lines changed

2 files changed

+51
-12
lines changed

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

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package org.eclipse.m2e.core.internal.embedder;
1515

1616
import org.eclipse.aether.DefaultRepositorySystemSession;
17+
import org.eclipse.aether.RepositorySystemSession;
1718
import org.eclipse.aether.SessionData;
1819
import org.eclipse.aether.transfer.TransferListener;
1920

@@ -27,9 +28,13 @@ class FilterRepositorySystemSession extends org.eclipse.aether.AbstractForwardin
2728

2829
private final String updatePolicy;
2930

30-
private final DefaultRepositorySystemSession session;
31+
private final RepositorySystemSession session;
3132

32-
public FilterRepositorySystemSession(DefaultRepositorySystemSession session, String updatePolicy) {
33+
private TransferListener transferListener;
34+
35+
private SessionData data;
36+
37+
public FilterRepositorySystemSession(RepositorySystemSession session, String updatePolicy) {
3338
this.session = session;
3439
this.updatePolicy = updatePolicy;
3540
}
@@ -39,22 +44,56 @@ public String getUpdatePolicy() {
3944
return updatePolicy != null ? updatePolicy : super.getUpdatePolicy();
4045
}
4146

47+
@Override
48+
public TransferListener getTransferListener() {
49+
if(this.transferListener == null) {
50+
return session.getTransferListener();
51+
}
52+
return transferListener;
53+
}
54+
55+
@Override
56+
public SessionData getData() {
57+
if(this.data == null) {
58+
return session.getData();
59+
}
60+
return this.data;
61+
}
62+
4263
public TransferListener setTransferListener(TransferListener transferListener) {
43-
DefaultRepositorySystemSession session = getSession();
44-
TransferListener origTransferListener = session.getTransferListener();
45-
session.setTransferListener(transferListener);
64+
TransferListener origTransferListener = getTransferListener();
65+
if(session instanceof DefaultRepositorySystemSession def) {
66+
def.setTransferListener(transferListener);
67+
}
68+
if(session instanceof FilterRepositorySystemSession filter) {
69+
filter.setTransferListener(transferListener);
70+
}
71+
if(transferListener == session.getTransferListener()) {
72+
this.transferListener = null;
73+
} else {
74+
this.transferListener = transferListener;
75+
}
4676
return origTransferListener;
4777
}
4878

4979
public SessionData setData(SessionData data) {
50-
DefaultRepositorySystemSession session = getSession();
51-
SessionData origSessionData = session.getData();
52-
session.setData(data);
80+
SessionData origSessionData = getData();
81+
if(session instanceof DefaultRepositorySystemSession def) {
82+
def.setData(data);
83+
}
84+
if(session instanceof FilterRepositorySystemSession filter) {
85+
filter.setData(data);
86+
}
87+
if(data == session.getData()) {
88+
this.data = null;
89+
} else {
90+
this.data = data;
91+
}
5392
return origSessionData;
5493
}
5594

5695
@Override
57-
protected DefaultRepositorySystemSession getSession() {
96+
protected RepositorySystemSession getSession() {
5897
return this.session;
5998
}
6099
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.util.function.Function;
3333

3434
import org.eclipse.aether.ConfigurationProperties;
35-
import org.eclipse.aether.DefaultRepositorySystemSession;
35+
import org.eclipse.aether.RepositorySystemSession;
3636
import org.eclipse.aether.transfer.TransferListener;
3737
import org.eclipse.core.runtime.CoreException;
3838
import org.eclipse.core.runtime.IProgressMonitor;
@@ -60,7 +60,6 @@
6060
import org.apache.maven.lifecycle.internal.LifecycleExecutionPlanCalculator;
6161
import org.apache.maven.lifecycle.internal.MojoExecutor;
6262
import org.apache.maven.plugin.BuildPluginManager;
63-
import org.eclipse.m2e.internal.maven.compat.LifecycleExecutionPlanCalculatorFacade;
6463
import org.apache.maven.plugin.LegacySupport;
6564
import org.apache.maven.plugin.MojoExecution;
6665
import org.apache.maven.project.DefaultProjectBuildingRequest;
@@ -79,6 +78,7 @@
7978
import org.eclipse.m2e.core.embedder.MavenSettingsLocations;
8079
import org.eclipse.m2e.core.internal.MavenPluginActivator;
8180
import org.eclipse.m2e.core.internal.Messages;
81+
import org.eclipse.m2e.internal.maven.compat.LifecycleExecutionPlanCalculatorFacade;
8282
import org.eclipse.m2e.internal.maven.compat.ReadonlyMavenExecutionRequest;
8383

8484

@@ -593,7 +593,7 @@ public IComponentLookup getComponentLookup() {
593593

594594
static FilterRepositorySystemSession createRepositorySession(MavenExecutionRequest request,
595595
IMavenConfiguration configuration, IComponentLookup lookup) throws CoreException {
596-
DefaultRepositorySystemSession session = (DefaultRepositorySystemSession) ((DefaultMaven) lookup
596+
RepositorySystemSession session = ((DefaultMaven) lookup
597597
.lookup(Maven.class)).newRepositorySession(request);
598598
String updatePolicy = configuration.getGlobalUpdatePolicy();
599599
return new FilterRepositorySystemSession(session, request.isUpdateSnapshots() ? null : updatePolicy);

0 commit comments

Comments
 (0)