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