1 package org.apache.continuum.purge.repository.content;
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.continuum.model.repository.LocalRepository;
23 import org.apache.maven.archiva.model.ArtifactReference;
24 import org.apache.maven.archiva.model.ProjectReference;
25 import org.apache.maven.archiva.model.VersionedReference;
26 import org.apache.maven.archiva.repository.ContentNotFoundException;
27 import org.apache.maven.archiva.repository.layout.LayoutException;
28
29 import java.io.File;
30 import java.util.Set;
31
32 /**
33 * Taken from Archiva's ManagedRepositoryContent interface and made some few changes.
34 *
35 * @author Maria Catherine Tan
36 * @version $Id: RepositoryManagedContent.java 1372260 2012-08-13 04:29:09Z brett $
37 * @since 25 jul 07
38 */
39 public interface RepositoryManagedContent
40 {
41 /**
42 * Delete from the local repository all files / directories associated with the
43 * provided version reference.
44 *
45 * @param reference the version reference to delete.
46 * @throws ContentNotFoundException
47 */
48 public void deleteVersion( VersionedReference reference )
49 throws ContentNotFoundException;
50
51 /**
52 * <p>
53 * Convenience method to get the repository id.
54 * </p>
55 *
56 * <p>
57 * Equivalent to calling <code>.getRepository().getId()</code>
58 * </p>
59 *
60 * @return the repository id.
61 */
62 public int getId();
63
64 /**
65 * <p>
66 * Gather up the list of related artifacts to the ArtifactReference provided.
67 * This typically inclues the pom files, and those things with
68 * classifiers (such as doc, source code, test libs, etc...)
69 * </p>
70 *
71 * <p>
72 * <strong>NOTE:</strong> Some layouts (such as maven 1 "legacy") are not compatible with this query.
73 * </p>
74 *
75 * @param reference the reference to work off of.
76 * @return the set of ArtifactReferences for related artifacts.
77 * @throws ContentNotFoundException if the initial artifact reference does not exist within the repository.
78 * @throws LayoutException
79 */
80 public Set<ArtifactReference> getRelatedArtifacts( ArtifactReference reference )
81 throws ContentNotFoundException, LayoutException;
82
83 /**
84 * <p>
85 * Convenience method to get the repository (on disk) root directory.
86 * </p>
87 *
88 * <p>
89 * Equivalent to calling <code>.getLocalRepository().getDirectory()</code>
90 * </p>
91 *
92 * @return the repository (on disk) root directory.
93 */
94 public String getRepoRoot();
95
96 /**
97 * Get the local repository associated with this
98 * repository content.
99 *
100 * @return the local repository that is associated with this repository content.
101 */
102 public LocalRepository getRepository();
103
104 /**
105 * Given a specific {@link ProjectReference}, return the list of available versions for
106 * that project reference.
107 *
108 * @param reference the project reference to work off of.
109 * @return the list of versions found for that project reference.
110 * @throws ContentNotFoundException if the project reference does not exist within the repository.
111 * @throws LayoutException
112 */
113 public Set<String> getVersions( ProjectReference reference )
114 throws ContentNotFoundException, LayoutException;
115
116 /**
117 * <p>
118 * Given a specific {@link VersionedReference}, return the list of available versions for that
119 * versioned reference.
120 * </p>
121 *
122 * <p>
123 * <strong>NOTE:</strong> This is really only useful when working with SNAPSHOTs.
124 * </p>
125 *
126 * @param reference the versioned reference to work off of.
127 * @return the set of versions found.
128 * @throws ContentNotFoundException if the versioned reference does not exist within the repository.
129 * @throws LayoutException
130 */
131 public Set<String> getVersions( VersionedReference reference )
132 throws ContentNotFoundException, LayoutException;
133
134 /**
135 * Set the local repository to associate with this
136 * repository content.
137 *
138 * @param repo the repository to associate with this repository content.
139 */
140 public void setRepository( LocalRepository repo );
141
142 /**
143 * Given a repository relative path to a filename, return the {@link VersionedReference} object suitable for the path.
144 *
145 * @param path the path relative to the repository base dir for the artifact.
146 * @return the {@link ArtifactReference} representing the path. (or null if path cannot be converted to
147 * a {@link ArtifactReference})
148 * @throws LayoutException if there was a problem converting the path to an artifact.
149 */
150 public ArtifactReference toArtifactReference( String path )
151 throws LayoutException;
152
153 /**
154 * Given an {@link ArtifactReference}, return the file reference to the artifact.
155 *
156 * @param reference the artifact reference to use.
157 * @return the relative path to the artifact.
158 */
159 public File toFile( ArtifactReference reference );
160
161 /**
162 * Given a {@link ProjectReference}, return the path to the metadata for
163 * the project.
164 *
165 * @param reference the reference to use.
166 * @return the path to the metadata file, or null if no metadata is appropriate.
167 */
168 public String toMetadataPath( ProjectReference reference );
169
170 /**
171 * Given a {@link VersionedReference}, return the path to the metadata for
172 * the specific version of the project.
173 *
174 * @param reference the reference to use.
175 * @return the path to the metadata file, or null if no metadata is appropriate.
176 */
177 public String toMetadataPath( VersionedReference reference );
178
179 /**
180 * Given an {@link ArtifactReference}, return the relative path to the artifact.
181 *
182 * @param reference the artifact reference to use.
183 * @return the relative path to the artifact.
184 */
185 public String toPath( ArtifactReference reference );
186 }