View Javadoc
1   package org.apache.maven.index.artifact;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.text.ParseException;
23  import java.text.SimpleDateFormat;
24  
25  import org.junit.Test;
26  
27  import static org.junit.Assert.assertEquals;
28  
29  public class M1GavCalculatorTest
30  {
31      private M1GavCalculator gavCalculator = new M1GavCalculator();
32  
33      private SimpleDateFormat formatter = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
34  
35  
36      protected Long parseTimestamp( String timeStamp )
37          throws ParseException
38      {
39          if ( timeStamp == null )
40          {
41              return null;
42          }
43          else
44          {
45              return formatter.parse( timeStamp ).getTime();
46          }
47      }
48  
49      @Test
50      public void testGav()
51          throws Exception
52      {
53          Gav gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0RC1-SNAPSHOT-javadoc.jar" );
54  
55          assertEquals( "org.jruby", gav.getGroupId() );
56          assertEquals( "jruby", gav.getArtifactId() );
57          assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
58          assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
59          assertEquals( "javadoc", gav.getClassifier() );
60          assertEquals( "jar", gav.getExtension() );
61          assertEquals( null, gav.getSnapshotBuildNumber() );
62          assertEquals( null, gav.getSnapshotTimeStamp() );
63          assertEquals( "jruby-1.0RC1-SNAPSHOT-javadoc.jar", gav.getName() );
64          assertEquals( true, gav.isSnapshot() );
65          assertEquals( false, gav.isHash() );
66          assertEquals( null, gav.getHashType() );
67  
68          String path = gavCalculator.gavToPath( gav );
69          assertEquals( "/org.jruby/javadocs/jruby-1.0RC1-SNAPSHOT-javadoc.jar", path );
70  
71          gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar" );
72  
73          assertEquals( "org.jruby", gav.getGroupId() );
74          assertEquals( "jruby", gav.getArtifactId() );
75          assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
76          assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
77          assertEquals( null, gav.getClassifier() );
78          assertEquals( "jar", gav.getExtension() );
79          assertEquals( null, gav.getSnapshotBuildNumber() );
80          assertEquals( null, gav.getSnapshotTimeStamp() );
81          assertEquals( "jruby-1.0RC1-SNAPSHOT.jar", gav.getName() );
82          assertEquals( true, gav.isSnapshot() );
83          assertEquals( false, gav.isHash() );
84          assertEquals( null, gav.getHashType() );
85  
86          path = gavCalculator.gavToPath( gav );
87          assertEquals( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar", path );
88  
89          gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar.md5" );
90  
91          assertEquals( "org.jruby", gav.getGroupId() );
92          assertEquals( "jruby", gav.getArtifactId() );
93          assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
94          assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
95          assertEquals( null, gav.getClassifier() );
96          assertEquals( "jar", gav.getExtension() );
97          assertEquals( null, gav.getSnapshotBuildNumber() );
98          assertEquals( null, gav.getSnapshotTimeStamp() );
99          assertEquals( "jruby-1.0RC1-SNAPSHOT.jar.md5", gav.getName() );
100         assertEquals( true, gav.isSnapshot() );
101         assertEquals( true, gav.isHash() );
102         assertEquals( Gav.HashType.md5, gav.getHashType() );
103 
104         path = gavCalculator.gavToPath( gav );
105         assertEquals( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar.md5", path );
106 
107         gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0-javadoc.jar" );
108 
109         assertEquals( "org.jruby", gav.getGroupId() );
110         assertEquals( "jruby", gav.getArtifactId() );
111         assertEquals( "1.0", gav.getVersion() );
112         assertEquals( "1.0", gav.getBaseVersion() );
113         assertEquals( "javadoc", gav.getClassifier() );
114         assertEquals( "jar", gav.getExtension() );
115         assertEquals( null, gav.getSnapshotBuildNumber() );
116         assertEquals( null, gav.getSnapshotTimeStamp() );
117         assertEquals( "jruby-1.0-javadoc.jar", gav.getName() );
118         assertEquals( false, gav.isSnapshot() );
119         assertEquals( false, gav.isHash() );
120         assertEquals( null, gav.getHashType() );
121 
122         path = gavCalculator.gavToPath( gav );
123         assertEquals( "/org.jruby/javadocs/jruby-1.0-javadoc.jar", path );
124 
125         gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0-javadoc.jar.sha1" );
126 
127         assertEquals( "org.jruby", gav.getGroupId() );
128         assertEquals( "jruby", gav.getArtifactId() );
129         assertEquals( "1.0", gav.getVersion() );
130         assertEquals( "1.0", gav.getBaseVersion() );
131         assertEquals( "javadoc", gav.getClassifier() );
132         assertEquals( "jar", gav.getExtension() );
133         assertEquals( null, gav.getSnapshotBuildNumber() );
134         assertEquals( null, gav.getSnapshotTimeStamp() );
135         assertEquals( "jruby-1.0-javadoc.jar.sha1", gav.getName() );
136         assertEquals( false, gav.isSnapshot() );
137         assertEquals( true, gav.isHash() );
138         assertEquals( Gav.HashType.sha1, gav.getHashType() );
139 
140         path = gavCalculator.gavToPath( gav );
141         assertEquals( "/org.jruby/javadocs/jruby-1.0-javadoc.jar.sha1", path );
142 
143         gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0.jar" );
144 
145         assertEquals( "org.jruby", gav.getGroupId() );
146         assertEquals( "jruby", gav.getArtifactId() );
147         assertEquals( "1.0", gav.getVersion() );
148         assertEquals( "1.0", gav.getBaseVersion() );
149         assertEquals( null, gav.getClassifier() );
150         assertEquals( "jar", gav.getExtension() );
151         assertEquals( null, gav.getSnapshotBuildNumber() );
152         assertEquals( null, gav.getSnapshotTimeStamp() );
153         assertEquals( "jruby-1.0.jar", gav.getName() );
154         assertEquals( false, gav.isSnapshot() );
155         assertEquals( false, gav.isHash() );
156         assertEquals( null, gav.getHashType() );
157 
158         path = gavCalculator.gavToPath( gav );
159         assertEquals( "/org.jruby/jars/jruby-1.0.jar", path );
160 
161         gav = gavCalculator.pathToGav( "/maven/jars/dom4j-1.7-20060614.jar" );
162 
163         assertEquals( "maven", gav.getGroupId() );
164         assertEquals( "dom4j", gav.getArtifactId() );
165         assertEquals( "1.7-20060614", gav.getVersion() );
166         assertEquals( "1.7-20060614", gav.getBaseVersion() );
167         assertEquals( null, gav.getClassifier() );
168         assertEquals( "jar", gav.getExtension() );
169         assertEquals( null, gav.getSnapshotBuildNumber() );
170         assertEquals( null, gav.getSnapshotTimeStamp() );
171         assertEquals( "dom4j-1.7-20060614.jar", gav.getName() );
172         assertEquals( false, gav.isSnapshot() );
173         assertEquals( false, gav.isHash() );
174         assertEquals( null, gav.getHashType() );
175 
176         path = gavCalculator.gavToPath( gav );
177         assertEquals( "/maven/jars/dom4j-1.7-20060614.jar", path );
178 
179         gav = gavCalculator.pathToGav( "maven/java-sources/velocity-1.5-SNAPSHOT-sources.jar" );
180 
181         assertEquals( "maven", gav.getGroupId() );
182         assertEquals( "velocity", gav.getArtifactId() );
183         assertEquals( "1.5-SNAPSHOT", gav.getVersion() );
184         assertEquals( "1.5-SNAPSHOT", gav.getBaseVersion() );
185         assertEquals( "sources", gav.getClassifier() );
186         assertEquals( "jar", gav.getExtension() );
187         assertEquals( null, gav.getSnapshotBuildNumber() );
188         assertEquals( null, gav.getSnapshotTimeStamp() );
189         assertEquals( "velocity-1.5-SNAPSHOT-sources.jar", gav.getName() );
190         assertEquals( true, gav.isSnapshot() );
191         assertEquals( false, gav.isHash() );
192         assertEquals( null, gav.getHashType() );
193 
194         path = gavCalculator.gavToPath( gav );
195         assertEquals( "/maven/java-sources/velocity-1.5-SNAPSHOT-sources.jar", path );
196 
197         gav = gavCalculator.pathToGav( "castor/jars/castor-0.9.9-xml.jar" );
198 
199         assertEquals( "castor", gav.getGroupId() );
200         assertEquals( "castor", gav.getArtifactId() );
201         assertEquals( "0.9.9-xml", gav.getVersion() );
202         assertEquals( "0.9.9-xml", gav.getBaseVersion() );
203         assertEquals( null, gav.getClassifier() );
204         assertEquals( "jar", gav.getExtension() );
205         assertEquals( null, gav.getSnapshotBuildNumber() );
206         assertEquals( null, gav.getSnapshotTimeStamp() );
207         assertEquals( "castor-0.9.9-xml.jar", gav.getName() );
208         assertEquals( false, gav.isSnapshot() );
209         assertEquals( false, gav.isHash() );
210         assertEquals( null, gav.getHashType() );
211 
212         path = gavCalculator.gavToPath( gav );
213         assertEquals( "/castor/jars/castor-0.9.9-xml.jar", path );
214 
215         gav = gavCalculator.pathToGav( "/org.slf4j/poms/slf4j-log4j12-1.4.3.pom" );
216 
217         assertEquals( "org.slf4j", gav.getGroupId() );
218         assertEquals( "slf4j-log4j12", gav.getArtifactId() );
219         assertEquals( "1.4.3", gav.getVersion() );
220         assertEquals( "1.4.3", gav.getBaseVersion() );
221         assertEquals( null, gav.getClassifier() );
222         assertEquals( "pom", gav.getExtension() );
223         assertEquals( null, gav.getSnapshotBuildNumber() );
224         assertEquals( null, gav.getSnapshotTimeStamp() );
225         assertEquals( "slf4j-log4j12-1.4.3.pom", gav.getName() );
226         assertEquals( false, gav.isSnapshot() );
227         assertEquals( false, gav.isHash() );
228         assertEquals( null, gav.getHashType() );
229 
230         path = gavCalculator.gavToPath( gav );
231         assertEquals( "/org.slf4j/poms/slf4j-log4j12-1.4.3.pom", path );
232 
233         // TODO: fix this!
234         /* There is an "Oh" letter at the end, not a zero! */
235         gav = gavCalculator.pathToGav( "/xpp3/poms/xpp3_min-1.1.3.4.O.pom" );
236 
237         assertEquals( "xpp3", gav.getGroupId() );
238         assertEquals( "xpp3_min", gav.getArtifactId() );
239         assertEquals( "1.1.3.4.O", gav.getVersion() );
240         assertEquals( "1.1.3.4.O", gav.getBaseVersion() );
241         assertEquals( null, gav.getClassifier() );
242         assertEquals( "pom", gav.getExtension() );
243         assertEquals( null, gav.getSnapshotBuildNumber() );
244         assertEquals( null, gav.getSnapshotTimeStamp() );
245         assertEquals( "xpp3_min-1.1.3.4.O.pom", gav.getName() );
246         assertEquals( false, gav.isSnapshot() );
247         assertEquals( false, gav.isHash() );
248         assertEquals( null, gav.getHashType() );
249 
250         path = gavCalculator.gavToPath( gav );
251         assertEquals( "/xpp3/poms/xpp3_min-1.1.3.4.O.pom", path );
252     }
253 
254     @Test
255     public void testNEXUS1336()
256         throws Exception
257     {
258         Gav gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar" );
259 
260         assertEquals( "castor", gav.getGroupId() );
261         assertEquals( "castor-ejb", gav.getArtifactId() );
262         assertEquals( "1.0.7-SNAPSHOT", gav.getVersion() );
263         assertEquals( "1.0.7-SNAPSHOT", gav.getBaseVersion() );
264         assertEquals( "client", gav.getClassifier() );
265         assertEquals( "jar", gav.getExtension() );
266         assertEquals( null, gav.getSnapshotBuildNumber() );
267         assertEquals( null, gav.getSnapshotTimeStamp() );
268         assertEquals( "castor-ejb-1.0.7-SNAPSHOT-client.jar", gav.getName() );
269         assertEquals( true, gav.isSnapshot() );
270         assertEquals( false, gav.isHash() );
271         assertEquals( null, gav.getHashType() );
272 
273         String path = gavCalculator.gavToPath( gav );
274         assertEquals( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar", path );
275 
276         gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7.jar" );
277 
278         assertEquals( "castor", gav.getGroupId() );
279         assertEquals( "castor-ejb", gav.getArtifactId() );
280         assertEquals( "1.0.7", gav.getVersion() );
281         assertEquals( "1.0.7", gav.getBaseVersion() );
282         assertEquals( null, gav.getClassifier() );
283         assertEquals( "jar", gav.getExtension() );
284         assertEquals( null, gav.getSnapshotBuildNumber() );
285         assertEquals( null, gav.getSnapshotTimeStamp() );
286         assertEquals( "castor-ejb-1.0.7.jar", gav.getName() );
287         assertEquals( false, gav.isSnapshot() );
288         assertEquals( false, gav.isHash() );
289         assertEquals( null, gav.getHashType() );
290 
291         path = gavCalculator.gavToPath( gav );
292         assertEquals( "/castor/jars/castor-ejb-1.0.7.jar", path );
293 
294         gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1" );
295 
296         assertEquals( "castor", gav.getGroupId() );
297         assertEquals( "castor-ejb", gav.getArtifactId() );
298         assertEquals( "1.0.7-SNAPSHOT", gav.getVersion() );
299         assertEquals( "1.0.7-SNAPSHOT", gav.getBaseVersion() );
300         assertEquals( "client", gav.getClassifier() );
301         assertEquals( "jar", gav.getExtension() );
302         assertEquals( null, gav.getSnapshotBuildNumber() );
303         assertEquals( null, gav.getSnapshotTimeStamp() );
304         assertEquals( "castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1", gav.getName() );
305         assertEquals( true, gav.isSnapshot() );
306         assertEquals( true, gav.isHash() );
307         assertEquals( Gav.HashType.sha1, gav.getHashType() );
308 
309         path = gavCalculator.gavToPath( gav );
310         assertEquals( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1", path );
311 
312         gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-client.jar" );
313 
314         assertEquals( "castor", gav.getGroupId() );
315         assertEquals( "castor-ejb", gav.getArtifactId() );
316         assertEquals( "1.0.7", gav.getVersion() );
317         assertEquals( "1.0.7", gav.getBaseVersion() );
318         assertEquals( "client", gav.getClassifier() );
319         assertEquals( "jar", gav.getExtension() );
320         assertEquals( null, gav.getSnapshotBuildNumber() );
321         assertEquals( null, gav.getSnapshotTimeStamp() );
322         assertEquals( "castor-ejb-1.0.7-client.jar", gav.getName() );
323         assertEquals( false, gav.isSnapshot() );
324         assertEquals( false, gav.isHash() );
325         assertEquals( null, gav.getHashType() );
326 
327         path = gavCalculator.gavToPath( gav );
328         assertEquals( "/castor/ejbs/castor-ejb-1.0.7-client.jar", path );
329     }
330 
331     @Test
332     public void testGavExtreme()
333         throws Exception
334     {
335         Gav gav = gavCalculator.pathToGav( "/" );
336         assertEquals( null, gav );
337 
338         gav = gavCalculator.pathToGav( "/some/stupid/path" );
339         assertEquals( null, gav );
340 
341         gav = gavCalculator.pathToGav( "/some/stupid/path/more/in/it" );
342         assertEquals( null, gav );
343 
344         gav = gavCalculator.pathToGav( "/something/that/looks/" );
345         assertEquals( null, gav );
346 
347         gav = gavCalculator.pathToGav( "/something/that/like-an-artifact.blah" );
348         assertEquals( null, gav );
349         // assertEquals( false, gav.isChecksum() );
350         // assertEquals( false, gav.isPrimary() );
351         // assertEquals( false, gav.isSnapshot() );
352 
353         gav = gavCalculator.pathToGav( "/something/that/like-an-artifact.pom" );
354         assertEquals( null, gav );
355         // assertEquals( false, gav.isChecksum() );
356         // assertEquals( false, gav.isPrimary() );
357         // assertEquals( false, gav.isSnapshot() );
358 
359         gav = gavCalculator.pathToGav( "/something/that/maven-metadata.xml" );
360         assertEquals( null, gav );
361         // assertEquals( false, gav.isChecksum() );
362         // assertEquals( false, gav.isPrimary() );
363         // assertEquals( false, gav.isSnapshot() );
364 
365         gav = gavCalculator.pathToGav( "/something/that/like-SNAPSHOT/maven-metadata.xml" );
366         assertEquals( null, gav );
367 
368     }
369 }