1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.internal.impl;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import org.apache.maven.api.Session;
26 import org.apache.maven.bridge.MavenRepositorySystem;
27 import org.apache.maven.execution.MavenSession;
28 import org.apache.maven.rtinfo.RuntimeInformation;
29 import org.codehaus.plexus.PlexusContainer;
30 import org.eclipse.aether.RepositorySystem;
31 import org.eclipse.aether.SessionData;
32
33 @Singleton
34 @Named
35 public class DefaultSessionFactory {
36 private final RepositorySystem repositorySystem;
37 private final MavenRepositorySystem mavenRepositorySystem;
38 private final PlexusContainer plexusContainer;
39 private final RuntimeInformation runtimeInformation;
40
41 @Inject
42 @SuppressWarnings("checkstyle:ParameterNumber")
43 public DefaultSessionFactory(
44 RepositorySystem repositorySystem,
45 MavenRepositorySystem mavenRepositorySystem,
46 PlexusContainer plexusContainer,
47 RuntimeInformation runtimeInformation) {
48 this.repositorySystem = repositorySystem;
49 this.mavenRepositorySystem = mavenRepositorySystem;
50 this.plexusContainer = plexusContainer;
51 this.runtimeInformation = runtimeInformation;
52 }
53
54 public Session getSession(MavenSession mavenSession) {
55 SessionData data = mavenSession.getRepositorySession().getData();
56 return (Session) data.computeIfAbsent(DefaultSession.class, () -> newSession(mavenSession));
57 }
58
59 private Session newSession(MavenSession mavenSession) {
60 return new DefaultSession(
61 mavenSession, repositorySystem, null, mavenRepositorySystem, plexusContainer, runtimeInformation);
62 }
63 }