1 package org.apache.archiva.metadata.repository.file;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.archiva.metadata.model.MetadataFacetFactory;
23 import org.apache.archiva.metadata.repository.MetadataRepository;
24 import org.apache.archiva.metadata.repository.MetadataResolver;
25 import org.apache.archiva.metadata.repository.RepositorySession;
26 import org.apache.archiva.metadata.repository.RepositorySessionFactory;
27 import org.apache.commons.lang.StringUtils;
28 import org.apache.archiva.configuration.ArchivaConfiguration;
29 import org.springframework.context.ApplicationContext;
30 import org.springframework.stereotype.Service;
31
32 import javax.annotation.PostConstruct;
33 import javax.inject.Inject;
34 import javax.inject.Named;
35 import java.util.HashMap;
36 import java.util.Map;
37
38
39
40
41 @Service( "repositorySessionFactory#file" )
42 public class FileRepositorySessionFactory
43 implements RepositorySessionFactory
44 {
45
46
47
48 private Map<String, MetadataFacetFactory> metadataFacetFactories;
49
50
51
52
53 @Inject
54 @Named( value = "archivaConfiguration#default" )
55 private ArchivaConfiguration configuration;
56
57
58
59
60 @Inject
61 private MetadataResolver metadataResolver;
62
63 @Inject
64 private ApplicationContext applicationContext;
65
66 @PostConstruct
67 public void initialize()
68 {
69 Map<String, MetadataFacetFactory> tmpMetadataFacetFactories =
70 applicationContext.getBeansOfType( MetadataFacetFactory.class );
71
72
73 metadataFacetFactories = new HashMap<>( tmpMetadataFacetFactories.size() );
74
75 for ( Map.Entry<String, MetadataFacetFactory> entry : tmpMetadataFacetFactories.entrySet() )
76 {
77 metadataFacetFactories.put( StringUtils.substringAfterLast( entry.getKey(), "#" ), entry.getValue() );
78 }
79
80
81 }
82
83 @Override
84 public RepositorySession createSession()
85 {
86 MetadataRepository metadataRepository = new FileMetadataRepository( metadataFacetFactories, configuration );
87
88 return new RepositorySession( metadataRepository, metadataResolver );
89 }
90 }