View Javadoc
1   package org.codehaus.mojo.appassembler.repository;
2   
3   /*
4    * The MIT License
5    *
6    * Copyright (c) 2006-2012, The Codehaus
7    *
8    * Permission is hereby granted, free of charge, to any person obtaining a copy of
9    * this software and associated documentation files (the "Software"), to deal in
10   * the Software without restriction, including without limitation the rights to
11   * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
12   * of the Software, and to permit persons to whom the Software is furnished to do
13   * so, subject to the following conditions:
14   *
15   * The above copyright notice and this permission notice shall be included in all
16   * copies or substantial portions of the Software.
17   *
18   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24   * SOFTWARE.
25   */
26  
27  import org.apache.maven.artifact.Artifact;
28  import org.apache.maven.artifact.handler.ArtifactHandler;
29  import org.apache.maven.artifact.metadata.ArtifactMetadata;
30  import org.apache.maven.artifact.repository.ArtifactRepository;
31  import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
32  
33  /**
34   * The code in this class is taken from DefaultRepositorylayout, located at:
35   * http://svn.apache.org/viewvc/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository
36   * /layout/DefaultRepositoryLayout.java
37   *
38   * @version $Id$
39   * @plexus.component role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout" role-hint="flat"
40   */
41  public class FlatRepositoryLayout
42      implements ArtifactRepositoryLayout
43  {
44      private static final char ARTIFACT_SEPARATOR = '-';
45  
46      private static final char GROUP_SEPARATOR = '.';
47  
48      public String pathOf( Artifact artifact )
49      {
50          ArtifactHandler artifactHandler = artifact.getArtifactHandler();
51  
52          StringBuffer path = new StringBuffer();
53  
54          path.append( artifact.getArtifactId() ).append( ARTIFACT_SEPARATOR ).append( artifact.getVersion() );
55  
56          if ( artifact.hasClassifier() )
57          {
58              path.append( ARTIFACT_SEPARATOR ).append( artifact.getClassifier() );
59          }
60  
61          if ( artifactHandler.getExtension() != null && artifactHandler.getExtension().length() > 0 )
62          {
63              path.append( GROUP_SEPARATOR ).append( artifactHandler.getExtension() );
64          }
65  
66          return path.toString();
67      }
68  
69      public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
70      {
71          return pathOfRepositoryMetadata( metadata.getLocalFilename( repository ) );
72      }
73  
74      private String pathOfRepositoryMetadata( String filename )
75      {
76          StringBuffer path = new StringBuffer();
77  
78          path.append( filename );
79  
80          return path.toString();
81      }
82  
83      public String pathOfRemoteRepositoryMetadata( ArtifactMetadata metadata )
84      {
85          return pathOfRepositoryMetadata( metadata.getRemoteFilename() );
86      }
87  }