]> source.dussan.org Git - archiva.git/blob
7d54c9b4e363ccd9fbe6ac52da1245c9c17a766c
[archiva.git] /
1 package org.apache.maven.repository.proxy.configuration;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import org.apache.maven.artifact.repository.ArtifactRepository;
20 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
21 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
22 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
23 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
24 import org.apache.maven.repository.proxy.repository.ProxyRepository;
25
26 import java.util.ArrayList;
27 import java.util.Collections;
28 import java.util.List;
29
30 /**
31  * Class to represent the configuration file for the proxy
32  *
33  * @author Edwin Punzalan
34  * @plexus.component role="org.apache.maven.repository.proxy.configuration.ProxyConfiguration"
35  */
36 public class ProxyConfiguration
37 {
38     public static final String ROLE = ProxyConfiguration.class.getName();
39
40     /**
41      * @plexus.requirement
42      */
43     private ArtifactRepositoryFactory artifactRepositoryFactory;
44
45     private boolean browsable;
46
47     private ArtifactRepository repoCache;
48     private List repositories = new ArrayList();
49
50     /**
51      * Method to set/unset the web-view of the repository cache
52      *
53      * @param browsable set to true to enable the web-view of the proxy repository cache
54      */
55     public void setBrowsable( boolean browsable )
56     {
57         this.browsable = browsable;
58     }
59
60     /**
61      * Used to determine if the repsented configuration allows web view of the repository cache
62      *
63      * @return true if the repository cache is configured for web view.
64      */
65     public boolean isBrowsable()
66     {
67         return browsable;
68     }
69
70     /**
71      * Used to set the location where the proxy should cache the configured repositories
72      *
73      * @param repoCacheURL
74      */
75     public void setRepositoryCachePath( String repoCacheURL )
76     {
77         ArtifactRepositoryPolicy standardPolicy;
78         standardPolicy = new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS,
79                                                        ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
80
81         ArtifactRepositoryLayout layout = new DefaultRepositoryLayout();
82
83         repoCache = artifactRepositoryFactory.createArtifactRepository( "localCache", repoCacheURL, layout,
84                                                                         standardPolicy, standardPolicy );
85     }
86
87     /**
88      * Used to retrieve an ArtifactRepository Object of the proxy cache
89      *
90      * @return the ArtifactRepository representation of the proxy cache
91      */
92     public ArtifactRepository getRepositoryCache()
93     {
94         return repoCache;
95     }
96
97     /**
98      * Used to retrieved the absolute path of the repository cache
99      *
100      * @return path to the proxy cache
101      */
102     public String getRepositoryCachePath()
103     {
104         return repoCache.getBasedir();
105     }
106
107     /**
108      * Used to add proxied repositories.
109      *
110      * @param repository the repository to be proxied
111      */
112     public void addRepository( ProxyRepository repository )
113     {
114         repositories.add( repository );
115     }
116
117     /**
118      * Used to retrieve an unmodifyable list of proxied repositories. They returned list determines the search sequence
119      * for retrieving artifacts.
120      *
121      * @return a list of ProxyRepository objects representing proxied repositories
122      */
123     public List getRepositories()
124     {
125         return Collections.unmodifiableList( repositories );
126     }
127
128     /**
129      * Used to set the list of repositories to be proxied.  This replaces any repositories already added to this
130      * configuraion instance.  Useful for re-arranging an existing proxied list.
131      *
132      * @param repositories
133      */
134     public void setRepositories( List repositories )
135     {
136         this.repositories = repositories;
137     }
138 }