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