View Javadoc

1   /**
2    *
3    *  Licensed to the Apache Software Foundation (ASF) under one or more
4    *  contributor license agreements.  See the NOTICE file distributed with
5    *  this work for additional information regarding copyright ownership.
6    *  The ASF licenses this file to You under the Apache License, Version 2.0
7    *  (the "License"); you may not use this file except in compliance with
8    *  the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *  Unless required by applicable law or agreed to in writing, software
13   *  distributed under the License is distributed on an "AS IS" BASIS,
14   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   *  See the License for the specific language governing permissions and
16   *  limitations under the License.
17   */
18  
19  package org.apache.geronimo.kernel.repository;
20  
21  import java.io.File;
22  import java.util.LinkedHashSet;
23  
24  /**
25   * Provides access to things like JARs via a standard API.  This is
26   * a fairly limited read-only type repository.  There are additional
27   * interfaces that a Repository may implement to indicate additional
28   * capabilities.
29   *
30   * @version $Rev: 470597 $ $Date: 2006-11-02 15:30:55 -0800 (Thu, 02 Nov 2006) $
31   */
32  public interface Repository {
33      /**
34       * Checks whether this repository contains an entry for the specified
35       * artifact.  The artifact must be fully resolved (isResolved() == true).
36       */
37      boolean contains(Artifact artifact);
38  
39      /**
40       * Gets the location on disk where the specified artifact is stored.
41       * The artifact must be fully resolved (isResolved() == true).
42       *
43       * @return The location of the artifact, or null if it is not in this
44       *         repository.
45       */
46      File getLocation(Artifact artifact);
47  
48      /**
49       * Loads any dependencies for this artifact declared in
50       * META-INF/geronimo-dependency.xml within the configuration archive.  This
51       * does not do anything special if the artifact is a configuration (which
52       * means it doesn't see dependencies in the ConfigurationData, etc.) so
53       * it's mainly useful for JAR-type artifacts.
54       *
55       * @param artifact A fully-resolved artifact representing the repository
56       *                 entry you're interested in.
57       *
58       * @return a LinkedHashSet (with elements of type Artifact) listing any
59       *         dependencies declared in META-INF/geronimo-dependency.xml for the
60       *         specified artifact.
61       */
62      LinkedHashSet getDependencies(Artifact artifact);
63  }