]> source.dussan.org Git - archiva.git/blob
131aad664d7c672358373053eff14f513281cced
[archiva.git] /
1 package org.apache.archiva.repository;
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
23 import org.apache.commons.lang.StringUtils;
24
25 import java.nio.file.Path;
26 import java.nio.file.Paths;
27 import java.time.Duration;
28 import java.util.Collections;
29 import java.util.HashMap;
30 import java.util.Locale;
31 import java.util.Map;
32
33 /**
34  * Abstract implementation of a remote repository. Abstract classes must implement the
35  * features and capabilities by themselves.
36  */
37 public abstract class AbstractRemoteRepository extends AbstractRepository implements EditableRemoteRepository
38 {
39
40     private RepositoryCredentials credentials;
41     private String checkPath;
42     private Map<String,String> extraParameters = new HashMap<>(  );
43     private Map<String,String> uExtraParameters = Collections.unmodifiableMap( extraParameters );
44     private Map<String,String> extraHeaders = new HashMap<>(  );
45     private Map<String,String> uExtraHeaders = Collections.unmodifiableMap( extraHeaders );
46     private Duration timeout = Duration.ofSeconds( 60 );
47     private String proxyId;
48     private RemoteRepositoryContent content;
49
50     public AbstractRemoteRepository( RepositoryType type, String id, String name , Path repositoryBase)
51     {
52         super( type, id, name, repositoryBase );
53     }
54
55     public AbstractRemoteRepository( Locale primaryLocale, RepositoryType type, String id, String name, Path repositoryBase )
56     {
57         super( primaryLocale, type, id, name, repositoryBase );
58     }
59
60     @Override
61     public void setCredentials( RepositoryCredentials credentials )
62     {
63         this.credentials = credentials;
64     }
65
66     @Override
67     public void setCheckPath( String path )
68     {
69         this.checkPath = path;
70     }
71
72     @Override
73     public void setExtraParameters( Map<String, String> params )
74     {
75         this.extraParameters.clear();
76         this.extraParameters.putAll(params);
77     }
78
79     @Override
80     public void addExtraParameter( String key, String value )
81     {
82         this.extraParameters.put(key, value);
83     }
84
85     @Override
86     public void setExtraHeaders( Map<String, String> headers )
87     {
88         this.extraHeaders.clear();
89         this.extraHeaders.putAll(headers);
90     }
91
92     @Override
93     public void addExtraHeader( String header, String value )
94     {
95         this.extraHeaders.put(header, value);
96     }
97
98     @Override
99     public void setTimeout( Duration duration )
100     {
101         this.timeout = duration;
102     }
103
104     @Override
105     public RemoteRepositoryContent getContent( )
106     {
107         return content;
108     }
109
110     @Override
111     public void setContent(RemoteRepositoryContent content) {
112         this.content = content;
113     }
114
115     @Override
116     public RepositoryCredentials getLoginCredentials( )
117     {
118         return credentials;
119     }
120
121     @Override
122     public String getCheckPath( )
123     {
124         return checkPath;
125     }
126
127     @Override
128     public Map<String, String> getExtraParameters( )
129     {
130         return uExtraParameters;
131     }
132
133     @Override
134     public Map<String, String> getExtraHeaders( )
135     {
136         return uExtraHeaders;
137     }
138
139     @Override
140     public Duration getTimeout( )
141     {
142         return timeout;
143     }
144
145     /**
146      * Remote repositories resolve always relative to the base directory.
147      * @return
148      */
149     @Override
150     public Path getLocalPath() {
151         return repositoryBase.resolve(getId());
152     }
153
154 }