1 package org.apache.maven.artifact.metadata;
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.maven.artifact.repository.ArtifactRepository;
23 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataStoreException;
24
25 /**
26 * Contains metadata about an artifact, and methods to retrieve/store it from an artifact repository.
27 *
28 * @author <a href="mailto:brett@apache.org">Brett Porter</a>
29 * @version $Id: ArtifactMetadata.java 495147 2007-01-11 07:47:53Z jvanzyl $
30 * @todo merge with artifactmetadatasource
31 * @todo retrieval exception not appropriate for store
32 */
33 public interface ArtifactMetadata
34 {
35 /**
36 * Whether this metadata should be stored alongside the artifact.
37 */
38 boolean storedInArtifactVersionDirectory();
39
40 /**
41 * Whether this metadata should be stored alongside the group.
42 */
43 boolean storedInGroupDirectory();
44
45 String getGroupId();
46
47 String getArtifactId();
48
49 String getBaseVersion();
50
51 Object getKey();
52
53 /**
54 * Get the filename of this metadata on the local repository.
55 *
56 * @param repository the remote repository it came from
57 * @return the filename
58 */
59 String getLocalFilename( ArtifactRepository repository );
60
61 /**
62 * Get the filename of this metadata on the remote repository.
63 *
64 * @return the filename
65 */
66 String getRemoteFilename();
67
68 /**
69 * Merge a new metadata set into this piece of metadata.
70 *
71 * @param metadata the new metadata
72 * @todo this should only be needed on the repository metadata
73 */
74 void merge( ArtifactMetadata metadata );
75
76 /**
77 * Store the metadata in the local repository.
78 *
79 * @param localRepository the local repository
80 * @param remoteRepository the remote repository it came from
81 * @todo this should only be needed on the repository metadata
82 */
83 void storeInLocalRepository( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
84 throws RepositoryMetadataStoreException;
85
86 String extendedToString();
87 }