]> source.dussan.org Git - archiva.git/blob
1d3b88ebf87811fb84dccc503716d71a1e2e4a8b
[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     MetadataFacet getMetadataFacet( String repositoryId, String facetId, String name )
58         throws MetadataRepositoryException;
59
60     void addMetadataFacet( String repositoryId, MetadataFacet metadataFacet )
61         throws MetadataRepositoryException;
62
63     void removeMetadataFacets( String repositoryId, String facetId )
64         throws MetadataRepositoryException;
65
66     void removeMetadataFacet( String repositoryId, String facetId, String name )
67         throws MetadataRepositoryException;
68
69     List<ArtifactMetadata> getArtifactsByDateRange( String repositoryId, Date startTime, Date endTime )
70         throws MetadataRepositoryException;
71
72     // TODO: remove from API, just use configuration
73     Collection<String> getRepositories()
74         throws MetadataRepositoryException;
75
76     List<ArtifactMetadata> getArtifactsByChecksum( String repositoryId, String checksum )
77         throws MetadataRepositoryException;
78
79     void removeArtifact( String repositoryId, String namespace, String project, String version, String id )
80         throws MetadataRepositoryException;
81
82     void removeArtifact( ArtifactMetadata artifactMetadata, String baseVersion )
83         throws MetadataRepositoryException;
84
85     /**
86      * @param repositoryId
87      * @param namespace
88      * @param project
89      * @param version
90      * @param metadataFacet will remove artifacts which have this {@link MetadataFacet} using equals
91      * @throws MetadataRepositoryException
92      * @since 1.4-M3
93      */
94     void removeArtifact( String repositoryId, String namespace, String project, String version,
95                          MetadataFacet metadataFacet )
96         throws MetadataRepositoryException;
97
98     /**
99      * Delete a repository's metadata. This includes all associated metadata facets.
100      *
101      * @param repositoryId the repository to delete
102      */
103     void removeRepository( String repositoryId )
104         throws MetadataRepositoryException;
105
106     List<ArtifactMetadata> getArtifacts( String repositoryId )
107         throws MetadataRepositoryException;
108
109     ProjectMetadata getProject( String repoId, String namespace, String projectId )
110         throws MetadataResolutionException;
111
112     ProjectVersionMetadata getProjectVersion( String repoId, String namespace, String projectId, String projectVersion )
113         throws MetadataResolutionException;
114
115     Collection<String> getArtifactVersions( String repoId, String namespace, String projectId, String projectVersion )
116         throws MetadataResolutionException;
117
118     /**
119      * Retrieve project references from the metadata repository. Note that this is not built into the content model for
120      * a project version as a reference may be present (due to reverse-lookup of dependencies) before the actual
121      * project is, and we want to avoid adding a stub model to the content repository.
122      *
123      * @param repoId         the repository ID to look within
124      * @param namespace      the namespace of the project to get references to
125      * @param projectId      the identifier of the project to get references to
126      * @param projectVersion the version of the project to get references to
127      * @return a list of project references
128      */
129     Collection<ProjectVersionReference> getProjectReferences( String repoId, String namespace, String projectId,
130                                                               String projectVersion )
131         throws MetadataResolutionException;
132
133     Collection<String> getRootNamespaces( String repoId )
134         throws MetadataResolutionException;
135
136     Collection<String> getNamespaces( String repoId, String namespace )
137         throws MetadataResolutionException;
138
139     Collection<String> getProjects( String repoId, String namespace )
140         throws MetadataResolutionException;
141
142     Collection<String> getProjectVersions( String repoId, String namespace, String projectId )
143         throws MetadataResolutionException;
144
145     Collection<ArtifactMetadata> getArtifacts( String repoId, String namespace, String projectId,
146                                                String projectVersion )
147         throws MetadataResolutionException;
148
149     void save();
150
151     void close()
152         throws MetadataRepositoryException;
153
154     void revert();
155
156     boolean canObtainAccess( Class<?> aClass );
157
158     Object obtainAccess( Class<?> aClass )
159         throws MetadataRepositoryException;
160 }