Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.ArtifactTypeRegistry;
import org.eclipse.aether.collection.CollectRequest;
import org.eclipse.aether.collection.DependencyGraphTransformer;
Expand Down Expand Up @@ -56,6 +56,7 @@
import org.eclipse.m2e.core.embedder.IMaven;
import org.eclipse.m2e.core.embedder.MavenModelManager;
import org.eclipse.m2e.core.internal.MavenPluginActivator;
import org.eclipse.m2e.internal.maven.compat.RepositorySessionUtil;


@SuppressWarnings("restriction")
Expand All @@ -76,11 +77,11 @@ public synchronized List<File> getResolvedPluginDependencies(MavenSession mavenS

IMaven maven = MavenPlugin.getMaven();

DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(mavenSession.getRepositorySession());
RepositorySystemSession session = RepositorySessionUtil.newSession(mavenSession.getRepositorySession());

DependencyGraphTransformer transformer = new ConflictResolver(new NearestVersionSelector(), new JavaScopeSelector(),
new SimpleOptionalitySelector(), new JavaScopeDeriver());
session.setDependencyGraphTransformer(
RepositorySessionUtil.setDependencyGraphTransformer(session,
new ChainedDependencyGraphTransformer(transformer, new JavaDependencyContextRefiner()));

ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;

import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.ArtifactTypeRegistry;
import org.eclipse.aether.collection.CollectRequest;
Expand Down Expand Up @@ -81,6 +80,7 @@
import org.eclipse.m2e.core.internal.embedder.PlexusContainerManager;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.IMavenProjectRegistry;
import org.eclipse.m2e.internal.maven.compat.RepositorySessionUtil;


/**
Expand Down Expand Up @@ -213,16 +213,16 @@ public synchronized DependencyNode readDependencyTree(IMavenProjectFacade contex

DependencyNode readDependencyTree(RepositorySystemSession repositorySession, MavenProject mavenProject, String scope)
throws CoreException {
DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(repositorySession);
RepositorySystemSession session = RepositorySessionUtil.newSession(repositorySession);

//
// Taken from MavenRepositorySystemSession.newSession()
//
ConflictResolver transformer = new ConflictResolver(new NearestVersionSelector(), new JavaScopeSelector(),
new SimpleOptionalitySelector(), new JavaScopeDeriver());
session.setDependencyGraphTransformer(transformer);
session.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, Boolean.toString(true));
session.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true);
RepositorySessionUtil.setDependencyGraphTransformer(session, transformer);
RepositorySessionUtil.setConfigProperty(session, ConflictResolver.CONFIG_PROP_VERBOSE, Boolean.toString(true));
RepositorySessionUtil.setConfigProperty(session, DependencyManagerUtils.CONFIG_PROP_VERBOSE, true);

ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,12 @@

package org.eclipse.m2e.core.internal.embedder;

import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.SessionData;
import org.eclipse.aether.transfer.TransferListener;

import org.eclipse.m2e.internal.maven.compat.RepositorySessionUtil;


/**
* FilterRepositorySystemSession implementation that allows setting of some/relevant session attributes.
Expand All @@ -27,9 +29,9 @@ class FilterRepositorySystemSession extends org.eclipse.aether.AbstractForwardin

private final String updatePolicy;

private final DefaultRepositorySystemSession session;
private final RepositorySystemSession session;

public FilterRepositorySystemSession(DefaultRepositorySystemSession session, String updatePolicy) {
public FilterRepositorySystemSession(RepositorySystemSession session, String updatePolicy) {
this.session = session;
this.updatePolicy = updatePolicy;
}
Expand All @@ -40,21 +42,15 @@ public String getUpdatePolicy() {
}

public TransferListener setTransferListener(TransferListener transferListener) {
DefaultRepositorySystemSession session = getSession();
TransferListener origTransferListener = session.getTransferListener();
session.setTransferListener(transferListener);
return origTransferListener;
return RepositorySessionUtil.setTransferListener(getSession(), transferListener);
}

public SessionData setData(SessionData data) {
DefaultRepositorySystemSession session = getSession();
SessionData origSessionData = session.getData();
session.setData(data);
return origSessionData;
return RepositorySessionUtil.setData(getSession(), data);
}

@Override
protected DefaultRepositorySystemSession getSession() {
protected RepositorySystemSession getSession() {
return this.session;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import java.util.function.Function;

import org.eclipse.aether.ConfigurationProperties;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.transfer.TransferListener;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
Expand Down Expand Up @@ -60,7 +60,6 @@
import org.apache.maven.lifecycle.internal.LifecycleExecutionPlanCalculator;
import org.apache.maven.lifecycle.internal.MojoExecutor;
import org.apache.maven.plugin.BuildPluginManager;
import org.eclipse.m2e.internal.maven.compat.LifecycleExecutionPlanCalculatorFacade;
import org.apache.maven.plugin.LegacySupport;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.DefaultProjectBuildingRequest;
Expand All @@ -79,7 +78,9 @@
import org.eclipse.m2e.core.embedder.MavenSettingsLocations;
import org.eclipse.m2e.core.internal.MavenPluginActivator;
import org.eclipse.m2e.core.internal.Messages;
import org.eclipse.m2e.internal.maven.compat.LifecycleExecutionPlanCalculatorFacade;
import org.eclipse.m2e.internal.maven.compat.ReadonlyMavenExecutionRequest;
import org.eclipse.m2e.internal.maven.compat.RepositorySessionUtil;



Expand Down Expand Up @@ -593,8 +594,9 @@ public IComponentLookup getComponentLookup() {

static FilterRepositorySystemSession createRepositorySession(MavenExecutionRequest request,
IMavenConfiguration configuration, IComponentLookup lookup) throws CoreException {
DefaultRepositorySystemSession session = (DefaultRepositorySystemSession) ((DefaultMaven) lookup
RepositorySystemSession baseSession = ((DefaultMaven) lookup
.lookup(Maven.class)).newRepositorySession(request);
RepositorySystemSession session = RepositorySessionUtil.newSession(baseSession);
String updatePolicy = configuration.getGlobalUpdatePolicy();
return new FilterRepositorySystemSession(session, request.isUpdateSnapshots() ? null : updatePolicy);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/*******************************************************************************
* Copyright (c) 2025 Christoph Läubrich and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christoph Läubrich - initial API and implementation
*******************************************************************************/

package org.eclipse.m2e.internal.maven.compat;

import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.SessionData;
import org.eclipse.aether.collection.DependencyGraphTransformer;
import org.eclipse.aether.transfer.TransferListener;

/**
* Compatibility layer for RepositorySystemSession to handle Maven 3 and Maven 4 differences.
* This class provides methods to work with session configuration without direct dependencies
* on DefaultRepositorySystemSession.
*/
public class RepositorySessionUtil {

/**
* Creates a new mutable session based on the given session.
*
* @param session the base session to copy from
* @return a new mutable session
*/
public static RepositorySystemSession newSession(RepositorySystemSession session) {
if (session instanceof DefaultRepositorySystemSession) {
return new DefaultRepositorySystemSession(session);
}
throw new IllegalArgumentException("Unsupported session type: " + session.getClass().getName());
}

/**
* Sets the dependency graph transformer on the session.
*
* @param session the session to modify
* @param transformer the transformer to set
*/
public static void setDependencyGraphTransformer(RepositorySystemSession session,
DependencyGraphTransformer transformer) {
if (session instanceof DefaultRepositorySystemSession) {
((DefaultRepositorySystemSession) session).setDependencyGraphTransformer(transformer);
return;
}
throw new IllegalArgumentException("Unsupported session type: " + session.getClass().getName());
}

/**
* Sets a configuration property on the session.
*
* @param session the session to modify
* @param key the configuration key
* @param value the configuration value
*/
public static void setConfigProperty(RepositorySystemSession session, String key, Object value) {
if (session instanceof DefaultRepositorySystemSession) {
((DefaultRepositorySystemSession) session).setConfigProperty(key, value);
return;
}
throw new IllegalArgumentException("Unsupported session type: " + session.getClass().getName());
}

/**
* Sets the transfer listener on the session.
*
* @param session the session to modify
* @param transferListener the transfer listener to set
* @return the previous transfer listener
*/
public static TransferListener setTransferListener(RepositorySystemSession session,
TransferListener transferListener) {
if (session instanceof DefaultRepositorySystemSession) {
DefaultRepositorySystemSession defaultSession = (DefaultRepositorySystemSession) session;
TransferListener previous = defaultSession.getTransferListener();
defaultSession.setTransferListener(transferListener);
return previous;
}
throw new IllegalArgumentException("Unsupported session type: " + session.getClass().getName());
}

/**
* Sets the session data on the session.
*
* @param session the session to modify
* @param data the session data to set
* @return the previous session data
*/
public static SessionData setData(RepositorySystemSession session, SessionData data) {
if (session instanceof DefaultRepositorySystemSession) {
DefaultRepositorySystemSession defaultSession = (DefaultRepositorySystemSession) session;
SessionData previous = defaultSession.getData();
defaultSession.setData(data);
return previous;
}
throw new IllegalArgumentException("Unsupported session type: " + session.getClass().getName());
}
}
Loading