aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/maven/apache-maven-3.3.3/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
blob: 9ef30387b3b022be56103c40e39ecded5869f3f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package org.apache.maven.artifact.repository;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

import java.util.List;

import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.repository.Proxy;

/**
 * Abstraction of an artifact repository. Artifact repositories can be remote, local, or even build reactor or
 * IDE workspace.
 */
public interface ArtifactRepository
{
    String pathOf( Artifact artifact );

    String pathOfRemoteRepositoryMetadata( ArtifactMetadata artifactMetadata );

    String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository );

    String getUrl();

    void setUrl( String url );

    String getBasedir();

    String getProtocol();

    String getId();

    void setId( String id );

    ArtifactRepositoryPolicy getSnapshots();

    void setSnapshotUpdatePolicy( ArtifactRepositoryPolicy policy );

    ArtifactRepositoryPolicy getReleases();

    void setReleaseUpdatePolicy( ArtifactRepositoryPolicy policy );

    ArtifactRepositoryLayout getLayout();

    void setLayout( ArtifactRepositoryLayout layout );

    String getKey();

    @Deprecated
    boolean isUniqueVersion();

    @Deprecated
    boolean isBlacklisted();

    @Deprecated
    void setBlacklisted( boolean blackListed );

    //
    // New interface methods for the repository system.
    //
    /**
     *
     * @param artifact
     * @return
     * @since 3.0-alpha-3
     */
    Artifact find( Artifact artifact );

    /**
     * Finds the versions of the specified artifact that are available in this repository.
     *
     * @param artifact The artifact whose available versions should be determined, must not be {@code null}.
     * @return The available versions of the artifact or an empty list if none, never {@code null}.
     * @since 3.0-alpha-3
     */
    List<String> findVersions( Artifact artifact );

    /**
     * Indicates whether this repository is backed by actual projects. For instance, the build reactor or IDE workspace
     * are examples of such repositories.
     *
     * @return {@code true} if the repository is backed by actual projects, {@code false} otherwise.
     * @since 3.0-beta-1
     */
    boolean isProjectAware();

    /**
     * @since 3.0-alpha-3
     */
    void setAuthentication( Authentication authentication );
    /**
     * @since 3.0-alpha-3
     */
    Authentication getAuthentication();

    /**
     * @since 3.0-alpha-3
     */
    void setProxy( Proxy proxy );
    /**
     * @since 3.0-alpha-3
     */
    Proxy getProxy();

    /**
     * @since 3.0.3
     * @return the repositories mirrored by the actual one
     */
    List<ArtifactRepository> getMirroredRepositories();

    /**
     * @since 3.0.3
     * @param mirroredRepositories the repositories that the actual one mirrors
     */
    void setMirroredRepositories( List<ArtifactRepository> mirroredRepositories );

}