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 import org.apache.maven.api.Session;
25 import org.apache.maven.bridge.MavenRepositorySystem;
26 import org.apache.maven.execution.MavenSession;
27 import org.apache.maven.rtinfo.RuntimeInformation;
28 import org.codehaus.plexus.PlexusContainer;
29 import org.eclipse.aether.RepositorySystem;
30 import org.eclipse.aether.SessionData;
31
32 @Singleton
33 @Named
34 public class DefaultSessionFactory {
35 private final RepositorySystem repositorySystem;
36 private final MavenRepositorySystem mavenRepositorySystem;
37 private final PlexusContainer plexusContainer;
38 private final RuntimeInformation runtimeInformation;
39
40 @Inject
41 @SuppressWarnings("checkstyle:ParameterNumber")
42 public DefaultSessionFactory(
43 RepositorySystem repositorySystem,
44 MavenRepositorySystem mavenRepositorySystem,
45 PlexusContainer plexusContainer,
46 RuntimeInformation runtimeInformation) {
47 this.repositorySystem = repositorySystem;
48 this.mavenRepositorySystem = mavenRepositorySystem;
49 this.plexusContainer = plexusContainer;
50 this.runtimeInformation = runtimeInformation;
51 }
52
53 public Session getSession(MavenSession mavenSession) {
54 SessionData data = mavenSession.getRepositorySession().getData();
55 return (Session) data.computeIfAbsent(DefaultSession.class, () -> newSession(mavenSession));
56 }
57
58 private Session newSession(MavenSession mavenSession) {
59 return new DefaultSession(
60 mavenSession, repositorySystem, null, mavenRepositorySystem, plexusContainer, runtimeInformation);
61 }
62 }