1 package org.apache.maven.plugin.gpg;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.io.IOException;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.artifact.metadata.AbstractArtifactMetadata;
27 import org.apache.maven.artifact.metadata.ArtifactMetadata;
28 import org.apache.maven.artifact.repository.ArtifactRepository;
29 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataStoreException;
30 import org.codehaus.plexus.util.FileUtils;
31
32 public class AscArtifactMetadata
33 extends AbstractArtifactMetadata
34 {
35
36 File file;
37
38 boolean isPom;
39
40 public AscArtifactMetadata( Artifact artifact, File file, boolean isPom )
41 {
42 super( artifact );
43 this.file = file;
44 this.isPom = isPom;
45 }
46
47 public String getBaseVersion()
48 {
49 return artifact.getBaseVersion();
50 }
51
52 public Object getKey()
53 {
54 return "gpg signature " + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getType()
55 + ":" + artifact.getClassifier() + ( isPom ? ":pom" : "" );
56 }
57
58 private String getFilename()
59 {
60 StringBuffer buf = new StringBuffer( 128 );
61 buf.append( getArtifactId() );
62 buf.append( "-" ).append( artifact.getVersion() );
63 if ( isPom )
64 {
65 buf.append( ".pom" );
66 }
67 else
68 {
69 if ( artifact.getClassifier() != null && !"".equals( artifact.getClassifier() ) )
70 {
71 buf.append( "-" ).append( artifact.getClassifier() );
72 }
73 buf.append( "." ).append( artifact.getArtifactHandler().getExtension() );
74 }
75 buf.append( ".asc" );
76 return buf.toString();
77 }
78
79 public String getLocalFilename( ArtifactRepository repository )
80 {
81 return getFilename();
82 }
83
84 public String getRemoteFilename()
85 {
86 return getFilename();
87 }
88
89 public void merge( ArtifactMetadata metadata )
90 {
91 AscArtifactMetadata m = (AscArtifactMetadata) metadata;
92 if ( !m.file.equals( file ) )
93 {
94 throw new IllegalStateException( "Cannot add two different pieces of metadata for: " + getKey() );
95 }
96 }
97
98 public void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
99 throws RepositoryMetadataStoreException
100 {
101 File destination =
102 new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( this,
103 remoteRepository ) );
104
105 try
106 {
107 FileUtils.copyFile( file, destination );
108 }
109 catch ( IOException e )
110 {
111 throw new RepositoryMetadataStoreException( "Error copying ASC to the local repository.", e );
112 }
113 }
114
115 public boolean storedInArtifactVersionDirectory()
116 {
117 return true;
118 }
119
120 public String toString()
121 {
122 return getFilename();
123 }
124
125 }