]> source.dussan.org Git - archiva.git/blob
2942c2348820dc3ba4eebcac430afd0cb18c8ec6
[archiva.git] /
1 package org.apache.archiva.repository.content.maven2;
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.ArtifactReference;
23 import org.apache.archiva.model.RepositoryURL;
24 import org.apache.archiva.repository.RemoteRepository;
25 import org.apache.archiva.repository.RemoteRepositoryContent;
26 import org.apache.archiva.repository.layout.LayoutException;
27 import org.springframework.context.annotation.Scope;
28 import org.springframework.stereotype.Service;
29
30 /**
31  * RemoteDefaultRepositoryContent
32  */
33 @Service( "remoteRepositoryContent#maven" )
34 @Scope( "prototype" )
35 public class RemoteDefaultRepositoryContent
36     extends AbstractDefaultRepositoryContent
37     implements RemoteRepositoryContent
38 {
39     private RemoteRepository repository;
40
41     @Override
42     public String getId( )
43     {
44         return repository.getId( );
45     }
46
47     @Override
48     public RemoteRepository getRepository( )
49     {
50         return repository;
51     }
52
53     @Override
54     public RepositoryURL getURL( )
55     {
56         try
57         {
58             return new RepositoryURL( repository.getLocation( ).toString( ) );
59         }
60         catch ( Exception e )
61         {
62             log.error( "Could not convert location url {}", repository.getLocation( ) );
63             return new RepositoryURL( "" );
64         }
65     }
66
67     @Override
68     public void setRepository( RemoteRepository repository )
69     {
70         this.repository = repository;
71     }
72
73     /**
74      * Convert a path to an artifact reference.
75      *
76      * @param path the path to convert. (relative or full url path)
77      * @throws org.apache.archiva.repository.layout.LayoutException if the path cannot be converted to an artifact reference.
78      */
79     @Override
80     public ArtifactReference toArtifactReference( String path )
81         throws LayoutException
82     {
83
84         if ( ( path != null ) && repository.getLocation()!=null && path.startsWith( repository.getLocation().toString() ) )
85         {
86             return super.toArtifactReference( path.substring( repository.getLocation().toString().length( ) ) );
87         }
88
89         return super.toArtifactReference( path );
90     }
91
92     @Override
93     public RepositoryURL toURL( ArtifactReference reference )
94     {
95         String url = repository.getLocation( ) + toPath( reference );
96         return new RepositoryURL( url );
97     }
98 }