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