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 java.nio.file.Path;
27
28 import org.apache.maven.api.LocalRepository;
29 import org.apache.maven.api.RemoteRepository;
30 import org.apache.maven.api.services.RepositoryFactory;
31 import org.apache.maven.api.model.Repository;
32 import org.eclipse.aether.RepositorySystem;
33 import org.eclipse.aether.repository.RepositoryPolicy;
34
35 @Named
36 @Singleton
37 public class DefaultRepositoryFactory implements RepositoryFactory
38 {
39
40 private final RepositorySystem repositorySystem;
41
42 @Inject
43 public DefaultRepositoryFactory( RepositorySystem repositorySystem )
44 {
45 this.repositorySystem = repositorySystem;
46 }
47
48 @Override
49 public LocalRepository createLocal( Path path )
50 {
51 return new DefaultLocalRepository( new org.eclipse.aether.repository.LocalRepository( path.toFile() ) );
52 }
53
54 @Override
55 public RemoteRepository createRemote( String id, String url )
56 {
57 return new DefaultRemoteRepository(
58 new org.eclipse.aether.repository.RemoteRepository.Builder( id, "default", url )
59 .build() );
60 }
61
62 @Override
63 public RemoteRepository createRemote( Repository repository )
64 throws IllegalArgumentException
65 {
66 return new DefaultRemoteRepository(
67 new org.eclipse.aether.repository.RemoteRepository.Builder(
68 repository.getId(), repository.getLayout(), repository.getUrl() )
69 .setReleasePolicy( buildRepositoryPolicy( repository.getReleases() ) )
70 .setSnapshotPolicy( buildRepositoryPolicy( repository.getSnapshots() ) )
71 .build() );
72 }
73
74 public static org.eclipse.aether.repository.RepositoryPolicy buildRepositoryPolicy(
75 org.apache.maven.api.model.RepositoryPolicy policy )
76 {
77 boolean enabled = true;
78 String updatePolicy = RepositoryPolicy.UPDATE_POLICY_DAILY;
79 String checksumPolicy = RepositoryPolicy.CHECKSUM_POLICY_FAIL;
80 if ( policy != null )
81 {
82 enabled = policy.isEnabled();
83 if ( policy.getUpdatePolicy() != null )
84 {
85 updatePolicy = policy.getUpdatePolicy();
86 }
87 if ( policy.getChecksumPolicy() != null )
88 {
89 checksumPolicy = policy.getChecksumPolicy();
90 }
91 }
92 return new org.eclipse.aether.repository.RepositoryPolicy(
93 enabled, updatePolicy, checksumPolicy );
94 }
95 }