]> source.dussan.org Git - archiva.git/blob
c209c38651e6d1bfed5fa3666e85496a7be2fabd
[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.model.ArchivaArtifact;
23 import org.apache.archiva.model.ArtifactReference;
24 import org.apache.archiva.model.ProjectReference;
25 import org.apache.archiva.model.VersionedReference;
26 import org.apache.archiva.repository.layout.LayoutException;
27
28 import java.nio.file.Path;
29 import java.util.Set;
30
31 /**
32  * ManagedRepositoryContent interface for interacting with a managed repository in an abstract way,
33  * without the need for processing based on filesystem paths, or working with the database.
34  */
35 public interface ManagedRepositoryContent
36 {
37     /**
38      * Delete from the managed repository all files / directories associated with the
39      * provided version reference.
40      *
41      * @param reference the version reference to delete.
42      * @throws ContentNotFoundException
43      */
44     void deleteVersion( VersionedReference reference )
45         throws ContentNotFoundException;
46
47     /**
48      * delete a specified artifact from the repository
49      *
50      * @param artifactReference
51      * @throws ContentNotFoundException
52      */
53     void deleteArtifact( ArtifactReference artifactReference )
54         throws ContentNotFoundException;
55
56     /**
57      * @param groupId
58      * @throws ContentNotFoundException
59      * @since 1.4-M3
60      */
61     void deleteGroupId( String groupId )
62         throws ContentNotFoundException;
63
64     /**
65      *
66      * @param namespace groupId for maven
67      * @param projectId artifactId for maven
68      * @throws ContentNotFoundException
69      */
70     void deleteProject( String namespace, String projectId )
71         throws RepositoryException;
72
73     /**
74      * <p>
75      * Convenience method to get the repository id.
76      * </p>
77      * <p>
78      * Equivalent to calling <code>.getRepository().getId()</code>
79      * </p>
80      *
81      * @return the repository id.
82      */
83     String getId();
84
85     /**
86      * <p>
87      * Gather up the list of related artifacts to the ArtifactReference provided.
88      * This typically inclues the pom files, and those things with
89      * classifiers (such as doc, source code, test libs, etc...)
90      * </p>
91      * <p>
92      * <strong>NOTE:</strong> Some layouts (such as maven 1 "legacy") are not compatible with this query.
93      * </p>
94      *
95      * @param reference the reference to work off of.
96      * @return the set of ArtifactReferences for related artifacts.
97      * @throws ContentNotFoundException if the initial artifact reference does not exist within the repository.
98      */
99     Set<ArtifactReference> getRelatedArtifacts( ArtifactReference reference )
100         throws ContentNotFoundException;
101
102     /**
103      * <p>
104      * Convenience method to get the repository (on disk) root directory.
105      * </p>
106      * <p>
107      * Equivalent to calling <code>.getRepository().getLocation()</code>
108      * </p>
109      *
110      * @return the repository (on disk) root directory.
111      */
112     String getRepoRoot();
113
114     /**
115      * Get the repository configuration associated with this
116      * repository content.
117      *
118      * @return the repository that is associated with this repository content.
119      */
120     org.apache.archiva.repository.ManagedRepository getRepository();
121
122     /**
123      * Given a specific {@link ProjectReference}, return the list of available versions for
124      * that project reference.
125      *
126      * @param reference the project reference to work off of.
127      * @return the list of versions found for that project reference.
128      * @throws ContentNotFoundException if the project reference does nto exist within the repository.
129      * @throws LayoutException
130      */
131     Set<String> getVersions( ProjectReference reference )
132         throws ContentNotFoundException, LayoutException;
133
134     /**
135      * <p>
136      * Given a specific {@link VersionedReference}, return the list of available versions for that
137      * versioned reference.
138      * </p>
139      * <p>
140      * <strong>NOTE:</strong> This is really only useful when working with SNAPSHOTs.
141      * </p>
142      *
143      * @param reference the versioned reference to work off of.
144      * @return the set of versions found.
145      * @throws ContentNotFoundException if the versioned reference does not exist within the repository.
146      */
147     Set<String> getVersions( VersionedReference reference )
148         throws ContentNotFoundException;
149
150     /**
151      * Determines if the artifact referenced exists in the repository.
152      *
153      * @param reference the artifact reference to check for.
154      * @return true if the artifact referenced exists.
155      */
156     boolean hasContent( ArtifactReference reference );
157
158     /**
159      * Determines if the project referenced exists in the repository.
160      *
161      * @param reference the project reference to check for.
162      * @return true it the project referenced exists.
163      */
164     boolean hasContent( ProjectReference reference );
165
166     /**
167      * Determines if the version reference exists in the repository.
168      *
169      * @param reference the version reference to check for.
170      * @return true if the version referenced exists.
171      */
172     boolean hasContent( VersionedReference reference );
173
174     /**
175      * Set the repository configuration to associate with this
176      * repository content.
177      *
178      * @param repo the repository to associate with this repository content.
179      */
180     void setRepository( org.apache.archiva.repository.ManagedRepository repo );
181
182     /**
183      * Given a repository relative path to a filename, return the {@link VersionedReference} object suitable for the path.
184      *
185      * @param path the path relative to the repository base dir for the artifact.
186      * @return the {@link ArtifactReference} representing the path.  (or null if path cannot be converted to
187      *         a {@link ArtifactReference})
188      * @throws LayoutException if there was a problem converting the path to an artifact.
189      */
190     ArtifactReference toArtifactReference( String path )
191         throws LayoutException;
192
193     /**
194      * Given an {@link ArtifactReference}, return the file reference to the artifact.
195      *
196      * @param reference the artifact reference to use.
197      * @return the relative path to the artifact.
198      */
199     Path toFile( ArtifactReference reference );
200
201     /**
202      * Given an {@link ArchivaArtifact}, return the file reference to the artifact.
203      *
204      * @param reference the archiva artifact to use.
205      * @return the relative path to the artifact.
206      */
207     Path toFile( ArchivaArtifact reference );
208
209     /**
210      * Given a {@link ProjectReference}, return the path to the metadata for
211      * the project.
212      *
213      * @param reference the reference to use.
214      * @return the path to the metadata file, or null if no metadata is appropriate.
215      */
216     String toMetadataPath( ProjectReference reference );
217
218     /**
219      * Given a {@link VersionedReference}, return the path to the metadata for
220      * the specific version of the project.
221      *
222      * @param reference the reference to use.
223      * @return the path to the metadata file, or null if no metadata is appropriate.
224      */
225     String toMetadataPath( VersionedReference reference );
226
227     /**
228      * Given an {@link ArtifactReference}, return the relative path to the artifact.
229      *
230      * @param reference the artifact reference to use.
231      * @return the relative path to the artifact.
232      */
233     String toPath( ArtifactReference reference );
234
235     /**
236      * Given an {@link ArchivaArtifact}, return the relative path to the artifact.
237      *
238      * @param reference the archiva artifact to use.
239      * @return the relative path to the artifact.
240      */
241     String toPath( ArchivaArtifact reference );
242 }