1 package org.apache.archiva.reports;
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.ProjectVersionMetadata;
23 import org.apache.archiva.metadata.model.facets.RepositoryProblemFacet;
24 import org.apache.archiva.metadata.repository.MetadataRepository;
25 import org.apache.archiva.metadata.repository.MetadataRepositoryException;
26 import org.apache.archiva.metadata.repository.RepositorySession;
27 import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataException;
28 import org.apache.archiva.repository.events.RepositoryListener;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31 import org.springframework.stereotype.Service;
32
33
34
35
36
37 @Service( "repositoryListener#problem-reports" )
38 public class RepositoryProblemEventListener
39 implements RepositoryListener
40 {
41 private Logger log = LoggerFactory.getLogger( RepositoryProblemEventListener.class );
42
43
44 @Override
45 public void deleteArtifact( MetadataRepository metadataRepository, String repositoryId, String namespace,
46 String project, String version, String id )
47 {
48 String name = RepositoryProblemFacet.createName( namespace, project, version, id );
49
50 try
51 {
52 metadataRepository.removeMetadataFacet( repositoryId, RepositoryProblemFacet.FACET_ID, name );
53 }
54 catch ( MetadataRepositoryException e )
55 {
56 log.warn( "Unable to remove metadata facet as part of delete event: {}", e.getMessage(), e );
57 }
58 }
59
60 @Override
61 public void addArtifact( RepositorySession session, String repoId, String namespace, String projectId,
62 ProjectVersionMetadata metadata )
63 {
64
65
66 String name = RepositoryProblemFacet.createName( namespace, projectId, metadata.getId(), null );
67 try
68 {
69 MetadataRepository metadataRepository = session.getRepository();
70 metadataRepository.removeMetadataFacet( repoId, RepositoryProblemFacet.FACET_ID, name );
71 session.markDirty();
72 }
73 catch ( MetadataRepositoryException e )
74 {
75 log.warn( "Unable to remove repository problem facets for the version being corrected in the repository: {}",
76 e.getMessage(), e );
77 }
78 }
79
80 @Override
81 public void addArtifactProblem( RepositorySession session, String repoId, String namespace, String projectId,
82 String projectVersion, RepositoryStorageMetadataException exception )
83 {
84 RepositoryProblemFacet problem = new RepositoryProblemFacet();
85 problem.setMessage( exception.getMessage() );
86 problem.setProject( projectId );
87 problem.setNamespace( namespace );
88 problem.setRepositoryId( repoId );
89 problem.setVersion( projectVersion );
90 problem.setProblem( exception.getId() );
91
92 try
93 {
94 session.getRepository().addMetadataFacet( repoId, problem );
95 session.markDirty();
96 }
97 catch ( MetadataRepositoryException e )
98 {
99 log.warn( "Unable to add repository problem facets for the version being removed: {}", e.getMessage(), e );
100 }
101 }
102
103 }