]> source.dussan.org Git - archiva.git/blob
1cb3ada90ebdcd5079639884a8fc63e4389f56d9
[archiva.git] /
1 package org.apache.maven.archiva.repository.layout;
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.archiva.model.ArchivaArtifact;
23 import org.apache.maven.archiva.model.ArtifactReference;
24 import org.apache.maven.archiva.model.VersionedReference;
25
26 /**
27  * BidirectionalRepositoryLayout - Similar in scope to ArtifactRepositoryLayout, but does
28  * the both the Path to Artifact, and Artifact to Path conversions.
29  *
30  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
31  * @version $Id$
32  */
33 public interface BidirectionalRepositoryLayout
34 {
35     /**
36      * Get the identifier for this layout.
37      *
38      * @return the identifier for this layout.
39      */
40     public String getId();
41
42     /**
43      * Given a repository relative path, return <code>true</code> if the path is valid
44      * according to the repository layout.
45      */
46     public boolean isValidPath( String path );
47
48     /**
49      * Given an ArchivaArtifact, return the relative path to the artifact.
50      *
51      * @param artifact the artifact to use.
52      * @return the relative path to the artifact.
53      */
54     public String toPath( ArchivaArtifact artifact );
55
56     /**
57      * Given an ArtifactReference, return the relative path to the artifact.
58      *
59      * @param reference the artifact reference to use.
60      * @return the relative path to the artifact.
61      */
62     public String toPath( ArtifactReference reference );
63
64     /**
65      * Given a repository relative path to a filename, return the {@link ArchivaArtifact} object suitable for the path.
66      *
67      * @param path the path relative to the repository base dir for the artifact.
68      * @return the {@link ArchivaArtifact} representing the path. (or null if path cannot be converted to
69      *         an {@link ArchivaArtifact})
70      * @throws LayoutException if there was a problem converting the path to an artifact.
71      */
72     public ArchivaArtifact toArtifact( String path )
73         throws LayoutException;
74
75     /**
76      * Given a repository relative path to a filename, return the {@link VersionedReference} object suitable for the path.
77      *
78      * @param path the path relative to the repository base dir for the artifact.
79      * @return the {@link ArtifactReference} representing the path.  (or null if path cannot be converted to
80      *         a {@link ArtifactReference})
81      * @throws LayoutException if there was a problem converting the path to an artifact.
82      */
83     public ArtifactReference toArtifactReference( String path )
84         throws LayoutException;
85 }