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