]> source.dussan.org Git - archiva.git/blob
6c7f239c8bfc4e564c9bd827600bab8520e79b4b
[archiva.git] /
1 package org.apache.archiva.repository.content.legacy;
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 org.apache.archiva.model.ArchivaArtifact;
23 import org.apache.archiva.model.ArtifactReference;
24 import org.apache.archiva.repository.content.PathParser;
25 import org.apache.archiva.repository.content.maven2.ArtifactExtensionMapping;
26 import org.apache.archiva.repository.layout.LayoutException;
27 import org.apache.commons.lang.StringUtils;
28
29 import javax.inject.Inject;
30 import javax.inject.Named;
31 import java.util.HashMap;
32 import java.util.Map;
33
34 /**
35  * AbstractLegacyRepositoryContent
36  *
37  *
38  */
39 public abstract class AbstractLegacyRepositoryContent
40 {
41     private static final String PATH_SEPARATOR = "/";
42
43     private static final Map<String, String> typeToDirectoryMap;
44
45     static
46     {
47         typeToDirectoryMap = new HashMap<>( 5 );
48         typeToDirectoryMap.put( "ejb-client", "ejb" );
49         typeToDirectoryMap.put( ArtifactExtensionMapping.MAVEN_ONE_PLUGIN, "plugin" );
50         typeToDirectoryMap.put( "distribution-tgz", "distribution" );
51         typeToDirectoryMap.put( "distribution-zip", "distribution" );
52         typeToDirectoryMap.put( "javadoc", "javadoc.jar" );
53     }
54
55     /**
56      *
57      */
58     @Inject
59     @Named( "pathParser#legacy" )
60     private PathParser legacyPathParser;
61
62     public ArtifactReference toArtifactReference( String path )
63         throws LayoutException
64     {
65         return legacyPathParser.toArtifactReference( path );
66     }
67
68     public String toPath( ArchivaArtifact reference )
69     {
70         if ( reference == null )
71         {
72             throw new IllegalArgumentException( "Artifact reference cannot be null" );
73         }
74
75         return toPath( reference.getGroupId(), reference.getArtifactId(), reference.getVersion(),
76                        reference.getClassifier(), reference.getType() );
77     }
78
79     public String toPath( ArtifactReference reference )
80     {
81         if ( reference == null )
82         {
83             throw new IllegalArgumentException( "Artifact reference cannot be null" );
84         }
85
86         return toPath( reference.getGroupId(), reference.getArtifactId(), reference.getVersion(),
87                        reference.getClassifier(), reference.getType() );
88     }
89
90     private String toPath( String groupId, String artifactId, String version, String classifier, String type )
91     {
92         StringBuilder path = new StringBuilder();
93
94         path.append( groupId ).append( PATH_SEPARATOR );
95         path.append( getDirectory( type ) ).append( PATH_SEPARATOR );
96
97         if ( version != null )
98         {
99             path.append( artifactId ).append( '-' ).append( version );
100
101             if ( StringUtils.isNotBlank( classifier ) )
102             {
103                 path.append( '-' ).append( classifier );
104             }
105
106             path.append( '.' ).append( ArtifactExtensionMapping.getExtension( type ) );
107         }
108
109         return path.toString();
110     }
111
112     private String getDirectory( String type )
113     {
114         String dirname = typeToDirectoryMap.get( type );
115
116         if ( dirname != null )
117         {
118             return dirname + "s";
119         }
120
121         // Default process.
122         return type + "s";
123     }
124
125     public void setLegacyPathParser( PathParser parser )
126     {
127         this.legacyPathParser = parser;
128     }
129 }