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