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( getArtifactId() );
61 buf.append( "-" ).append( artifact.getVersion() );
62 if ( isPom )
63 {
64 buf.append( ".pom" );
65 }
66 else
67 {
68 if ( artifact.getClassifier() != null && !"".equals( artifact.getClassifier() ) )
69 {
70 buf.append( "-" ).append( artifact.getClassifier() );
71 }
72 buf.append( "." ).append( artifact.getType() );
73 }
74 buf.append( ".asc" );
75 return buf.toString();
76 }
77
78 public String getLocalFilename( ArtifactRepository repository )
79 {
80 return getFilename();
81 }
82
83 public String getRemoteFilename()
84 {
85 return getFilename();
86 }
87
88 public void merge( ArtifactMetadata metadata )
89 {
90 AscArtifactMetadata m = (AscArtifactMetadata) metadata;
91 if ( !m.file.equals( file ) )
92 {
93 throw new IllegalStateException( "Cannot add two different pieces of metadata for: " + getKey() );
94 }
95 }
96
97 public void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
98 throws RepositoryMetadataStoreException
99 {
100 File destination =
101 new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( this,
102 remoteRepository ) );
103
104 try
105 {
106 FileUtils.copyFile( file, destination );
107 }
108 catch ( IOException e )
109 {
110 throw new RepositoryMetadataStoreException( "Error copying ASC to the local repository.", e );
111 }
112 }
113
114 public boolean storedInArtifactVersionDirectory()
115 {
116 return true;
117 }
118
119 public String toString()
120 {
121 return getFilename();
122 }
123
124 }