1 package org.apache.archiva.metadata.repository.cassandra;
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.configuration.ArchivaConfiguration;
23 import org.apache.archiva.metadata.model.MetadataFacetFactory;
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.springframework.context.ApplicationContext;
29 import org.springframework.stereotype.Service;
30
31 import javax.annotation.PostConstruct;
32 import javax.inject.Inject;
33 import javax.inject.Named;
34 import java.util.HashMap;
35 import java.util.Map;
36
37
38
39
40
41 @Service("repositorySessionFactory#cassandra")
42 public class CassandraRepositorySessionFactory
43 implements RepositorySessionFactory
44 {
45
46 private Map<String, MetadataFacetFactory> metadataFacetFactories;
47
48 @Inject
49 @Named(value = "archivaConfiguration#default")
50 private ArchivaConfiguration configuration;
51
52 @Inject
53 private MetadataResolver metadataResolver;
54
55 @Inject
56 private ApplicationContext applicationContext;
57
58 @Inject
59 private CassandraArchivaManager cassandraArchivaManager;
60
61 @PostConstruct
62 public void initialize()
63 {
64 Map<String, MetadataFacetFactory> tmpMetadataFacetFactories =
65 applicationContext.getBeansOfType( MetadataFacetFactory.class );
66
67
68 metadataFacetFactories = new HashMap<>( tmpMetadataFacetFactories.size() );
69
70 for ( Map.Entry<String, MetadataFacetFactory> entry : tmpMetadataFacetFactories.entrySet() )
71 {
72 metadataFacetFactories.put( StringUtils.substringAfterLast( entry.getKey(), "#" ), entry.getValue() );
73 }
74 }
75
76
77 @Override
78 public RepositorySession createSession()
79 {
80 CassandraMetadataRepository metadataRepository =
81 new CassandraMetadataRepository( metadataFacetFactories, configuration, cassandraArchivaManager );
82 return new RepositorySession( metadataRepository, metadataResolver );
83 }
84
85 }