]> source.dussan.org Git - archiva.git/blob
68c00d621c693b5293850146f7314fb91fa6419f
[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 import org.apache.archiva.repository.features.RepositoryFeature;
23
24 import java.net.URI;
25 import java.util.List;
26 import java.util.Locale;
27 import java.util.Set;
28
29 /**
30  *
31  * Base interface for repositories.
32  *
33  * Created by Martin Stockhammer on 21.09.17.
34  */
35 public interface Repository {
36
37     /**
38      * Return the identifier of the repository. Repository identifier should be unique at least
39      * for the same type.
40      * @return The identifier.
41      */
42     String getId();
43
44     /**
45      * This is the display name of the repository. This string is presented in the user interface.
46      *
47      * @return The display name of the repository
48      */
49     String getName();
50
51     /**
52      * Returns the name in the given locale.
53      * @param locale
54      * @return
55      */
56     String getName(Locale locale);
57
58     /**
59      * Returns a description of this repository.
60      * @return The description.
61      */
62     String getDescription();
63
64     /**
65      * Returns the description for the given locale.
66      * @param locale
67      * @return
68      */
69     String getDescription(Locale locale);
70
71     /**
72      * This identifies the type of repository. Archiva does only support certain types of repositories.
73      *
74      * @return A unique identifier for the repository type.
75      */
76     RepositoryType getType();
77
78
79     /**
80      * Returns the location of this repository. For local repositories this might be a file URI, for
81      * remote repositories a http URL or some very repository specific schemes.
82      * Each repository has only one unique location.
83      *
84      * @return The repository location.
85      */
86     URI getLocation();
87
88     /**
89      * This returns the absolute location uri of this repository. Some repository locations may be relative to
90      * the base repository directory or uri. This returns the absolute path of the repository.
91      * If the location is absolute already this method returns the same URI as getLocation().
92      *
93      * @return the absolute uri of the location.
94      */
95     URI getAbsoluteLocation();
96
97     /**
98      * A repository may allow additional locations that can be used, if the primary location is not available.
99      * @return
100      */
101     Set<URI> getFailoverLocations();
102
103     /**
104      * True, if this repository is scanned regularly.
105      */
106     boolean isScanned();
107
108     /**
109      * Returns the definition, when the repository jobs are executed.
110      * This must return a valid a cron string.
111      *
112      * @See http://www.quartz-scheduler.org/api/2.2.1/org/quartz/CronExpression.html
113      *
114      * @return
115      */
116     String getSchedulingDefinition();
117
118     /**
119      * Returns true, if this repository has a index available
120      * @return
121      */
122     boolean hasIndex();
123
124     /**
125      * Returns a layout definition. The returned string may be implementation specific and is not
126      * standardized.
127      *
128      * @return
129      */
130     String getLayout();
131
132
133     /**
134      * Returns the capabilities of the repository implementation.
135      * @return
136      */
137     RepositoryCapabilities getCapabilities();
138
139
140     /**
141      * Extension method that allows to provide different features that are not supported by all
142      * repository types.
143      *
144      * @param clazz The feature class that is requested
145      * @param <T> This is the class of the feature
146      * @return The feature implementation for this repository instance, if it is supported
147      * @throws UnsupportedFeatureException if the feature is not supported by this repository type
148      */
149     <T extends RepositoryFeature<T>> RepositoryFeature<T> getFeature(Class<T> clazz) throws UnsupportedFeatureException;
150
151
152     /**
153      * Returns true, if the requested feature is supported by this repository.
154      *
155      * @param clazz The requested feature class
156      * @param <T> The requested feature class
157      * @return True, if the feature is supported, otherwise false.
158      */
159     <T extends RepositoryFeature<T>> boolean supportsFeature(Class<T> clazz);
160
161
162 }