]> source.dussan.org Git - archiva.git/blob
0a913c4bba0a0ef08b3b31a2ddf3ee108b5452d7
[archiva.git] /
1 package org.apache.archiva.metadata.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.metadata.model.ArtifactMetadata;
23 import org.apache.archiva.metadata.model.MetadataFacet;
24 import org.apache.archiva.metadata.model.ProjectMetadata;
25 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
26 import org.apache.archiva.metadata.model.ProjectVersionReference;
27
28 import java.util.Collection;
29 import java.util.Date;
30 import java.util.List;
31
32 public interface MetadataRepository
33 {
34     /**
35      * Update metadata for a particular project in the metadata repository, or create it if it does not already exist.
36      *
37      * @param repositoryId the repository the project is in
38      * @param project      the project metadata to create or update
39      */
40     void updateProject( String repositoryId, ProjectMetadata project )
41         throws MetadataRepositoryException;
42
43     void updateArtifact( String repositoryId, String namespace, String projectId, String projectVersion,
44                          ArtifactMetadata artifactMeta )
45         throws MetadataRepositoryException;
46
47     void updateProjectVersion( String repositoryId, String namespace, String projectId,
48                                ProjectVersionMetadata versionMetadata )
49         throws MetadataRepositoryException;
50
51     void updateNamespace( String repositoryId, String namespace )
52         throws MetadataRepositoryException;
53
54     List<String> getMetadataFacets( String repositoryId, String facetId )
55         throws MetadataRepositoryException;
56
57     /**
58      *
59      * @param repositoryId
60      * @param facetId
61      * @return true if the repository datas for this facetId
62      * @since 1.4-M4
63      * @throws MetadataRepositoryException
64      */
65     boolean hasMetadataFacet( String repositoryId, String facetId )
66         throws MetadataRepositoryException;
67
68     MetadataFacet getMetadataFacet( String repositoryId, String facetId, String name )
69         throws MetadataRepositoryException;
70
71     void addMetadataFacet( String repositoryId, MetadataFacet metadataFacet )
72         throws MetadataRepositoryException;
73
74     void removeMetadataFacets( String repositoryId, String facetId )
75         throws MetadataRepositoryException;
76
77     void removeMetadataFacet( String repositoryId, String facetId, String name )
78         throws MetadataRepositoryException;
79
80     List<ArtifactMetadata> getArtifactsByDateRange( String repositoryId, Date startTime, Date endTime )
81         throws MetadataRepositoryException;
82
83     // TODO: remove from API, just use configuration
84     Collection<String> getRepositories()
85         throws MetadataRepositoryException;
86
87     List<ArtifactMetadata> getArtifactsByChecksum( String repositoryId, String checksum )
88         throws MetadataRepositoryException;
89
90     void removeArtifact( String repositoryId, String namespace, String project, String version, String id )
91         throws MetadataRepositoryException;
92
93     /**
94      * used for deleting timestamped version of SNAPSHOT artifacts
95      *
96      * @param artifactMetadata the artifactMetadata with the timestamped version (2.0-20120618.214135-2)
97      * @param baseVersion      the base version of the snapshot (2.0-SNAPSHOT)
98      * @throws MetadataRepositoryException
99      * @since 1.4-M3
100      */
101     void removeArtifact( ArtifactMetadata artifactMetadata, String baseVersion )
102         throws MetadataRepositoryException;
103
104     /**
105      * @param repositoryId
106      * @param namespace
107      * @param project
108      * @param version
109      * @param metadataFacet will remove artifacts which have this {@link MetadataFacet} using equals
110      * @throws MetadataRepositoryException
111      * @since 1.4-M3
112      */
113     void removeArtifact( String repositoryId, String namespace, String project, String version,
114                          MetadataFacet metadataFacet )
115         throws MetadataRepositoryException;
116
117     /**
118      * Delete a repository's metadata. This includes all associated metadata facets.
119      *
120      * @param repositoryId the repository to delete
121      */
122     void removeRepository( String repositoryId )
123         throws MetadataRepositoryException;
124
125     /**
126      * @param repositoryId
127      * @param namespace    (groupId for maven )
128      * @throws MetadataRepositoryException
129      * @since 1.4-M3
130      */
131     void removeNamespace( String repositoryId, String namespace )
132         throws MetadataRepositoryException;
133
134     List<ArtifactMetadata> getArtifacts( String repositoryId )
135         throws MetadataRepositoryException;
136
137     ProjectMetadata getProject( String repoId, String namespace, String projectId )
138         throws MetadataResolutionException;
139
140     ProjectVersionMetadata getProjectVersion( String repoId, String namespace, String projectId, String projectVersion )
141         throws MetadataResolutionException;
142
143     Collection<String> getArtifactVersions( String repoId, String namespace, String projectId, String projectVersion )
144         throws MetadataResolutionException;
145
146     /**
147      * Retrieve project references from the metadata repository. Note that this is not built into the content model for
148      * a project version as a reference may be present (due to reverse-lookup of dependencies) before the actual
149      * project is, and we want to avoid adding a stub model to the content repository.
150      *
151      * @param repoId         the repository ID to look within
152      * @param namespace      the namespace of the project to get references to
153      * @param projectId      the identifier of the project to get references to
154      * @param projectVersion the version of the project to get references to
155      * @return a list of project references
156      */
157     Collection<ProjectVersionReference> getProjectReferences( String repoId, String namespace, String projectId,
158                                                               String projectVersion )
159         throws MetadataResolutionException;
160
161     Collection<String> getRootNamespaces( String repoId )
162         throws MetadataResolutionException;
163
164     Collection<String> getNamespaces( String repoId, String namespace )
165         throws MetadataResolutionException;
166
167     Collection<String> getProjects( String repoId, String namespace )
168         throws MetadataResolutionException;
169
170     Collection<String> getProjectVersions( String repoId, String namespace, String projectId )
171         throws MetadataResolutionException;
172
173     /**
174      * @param repoId
175      * @param namespace
176      * @param projectId
177      * @param projectVersion
178      * @throws MetadataResolutionException
179      * @since 1.4-M4
180      */
181     void removeProjectVersion( String repoId, String namespace, String projectId, String projectVersion )
182         throws MetadataRepositoryException;
183
184     Collection<ArtifactMetadata> getArtifacts( String repoId, String namespace, String projectId,
185                                                String projectVersion )
186         throws MetadataResolutionException;
187
188     /**
189      * remove a project
190      * @param repositoryId
191      * @param namespace
192      * @param projectId
193      * @throws MetadataRepositoryException
194      * @since 1.4-M4
195      */
196     void removeProject( String repositoryId, String namespace, String projectId )
197         throws MetadataRepositoryException;
198
199
200     /**
201      * <b>implementations can throw RuntimeException</b>
202      */
203     void save();
204
205
206     void close()
207         throws MetadataRepositoryException;
208
209     /**
210      * <b>implementations can throw RuntimeException</b>
211      */
212     void revert();
213
214     boolean canObtainAccess( Class<?> aClass );
215
216     Object obtainAccess( Class<?> aClass )
217         throws MetadataRepositoryException;
218 }