001 package org.apache.maven.artifact.repository.metadata;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import org.apache.maven.artifact.repository.ArtifactRepository;
023 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
024
025 /**
026 * Describes repository directory metadata.
027 *
028 * @author <a href="mailto:brett@apache.org">Brett Porter</a>
029 * @todo not happy about the store method - they use "this"
030 */
031 public interface RepositoryMetadata
032 extends org.apache.maven.artifact.metadata.ArtifactMetadata
033 {
034
035 int RELEASE = 1;
036
037 int SNAPSHOT = 2;
038
039 int RELEASE_OR_SNAPSHOT = RELEASE | SNAPSHOT;
040
041 /**
042 * Get the repository the metadata was located in.
043 *
044 * @return the repository
045 */
046 ArtifactRepository getRepository();
047
048 /**
049 * Set the repository the metadata was located in.
050 *
051 * @param remoteRepository the repository
052 */
053 void setRepository( ArtifactRepository remoteRepository );
054
055 /**
056 * Get the repository metadata associated with this marker.
057 *
058 * @return the metadata, or <code>null</code> if none loaded
059 */
060 Metadata getMetadata();
061
062 /**
063 * Set the metadata contents.
064 *
065 * @param metadata the metadata
066 */
067 void setMetadata( Metadata metadata );
068
069 /**
070 * Whether this represents a snapshot.
071 *
072 * @return if it is a snapshot
073 */
074 boolean isSnapshot();
075
076 /**
077 * Gets the artifact quality this metadata refers to. One of {@link #RELEASE}, {@link #SNAPSHOT} or
078 * {@link #RELEASE_OR_SNAPSHOT}.
079 *
080 * @return The artifact quality this metadata refers to.
081 */
082 int getNature();
083
084 /**
085 * Gets the policy that applies to this metadata regarding the specified repository.
086 *
087 * @param repository The repository for which to determine the policy, must not be {@code null}.
088 * @return The policy, never {@code null}.
089 */
090 ArtifactRepositoryPolicy getPolicy( ArtifactRepository repository );
091
092 }