diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java')
-rw-r--r-- | bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java new file mode 100644 index 000000000..69ec21076 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/provisional/p2/repository/IRepositoryManager.java @@ -0,0 +1,207 @@ +/******************************************************************************* + * Copyright (c) 2008, 2009 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.equinox.internal.provisional.p2.repository; + +import java.net.URI; + +/** + * The common base class for metadata and artifact repository managers. + * <p> + * A repository manager keeps track of a set of known repositories, and provides + * caching of these known repositories to avoid unnecessary loading of repositories + * from the disk or network. The manager fires {@link RepositoryEvent}s when the + * set of known repositories changes. + * + * @noimplement This interface is not intended to be implemented by clients. + */ +public interface IRepositoryManager { + /** + * Constant used to indicate that all enabled repositories are of interest. + */ + public static final int REPOSITORIES_ALL = 0; + + /** + * Constant used to indicate that disabled repositories are of interest. + * @see #getKnownRepositories(int) + */ + public static final int REPOSITORIES_DISABLED = 1 << 3; + + /** + * Constant used to indicate that local repositories are of interest. + * @see #getKnownRepositories(int) + */ + public static final int REPOSITORIES_LOCAL = 1 << 2; + + /** + * Constant used to indicate that non-system repositories are of interest. + * @see IRepository#PROP_SYSTEM + * @see #getKnownRepositories(int) + */ + public static final int REPOSITORIES_NON_SYSTEM = 1 << 1; + + /** + * Constant used to indicate that system repositories are of interest. + * @see IRepository#PROP_SYSTEM + * @see #getKnownRepositories(int) + */ + public static final int REPOSITORIES_SYSTEM = 1 << 0; + + /** + * Constant used to indicate that a repository manager should only load the + * repository if the repository is modifiable. + * @see IRepository#isModifiable() + */ + public static final int REPOSITORY_HINT_MODIFIABLE = 1 << 0; + + /** + * Adds the repository at the given location to the list of repositories tracked by + * this repository manager. + * <p> + * If there is a known disabled repository at the given location, it will become + * enabled as a result of this method. Thus the caller can be guaranteed that + * there is a known, enabled repository at the given location when this method returns. + * + * @param location The location of the repository to add + * @see #isEnabled(URI) + */ + public void addRepository(URI location); + + /** + * Returns whether a repository at the given location is in the list of repositories + * tracked by this repository manager. + * + * @param location The location of the repository to look for + * @return <code>true</code> if the repository is known to this manager, + * and <code>false</code> otherwise + */ + public boolean contains(URI location); + + /** + * Returns the artifact repository locations known to the repository manager. + * <p> + * Note that the repository manager does not guarantee that a valid repository + * exists at any of the returned locations at any particular moment in time. + * A subsequent attempt to load a repository at any of the given locations may + * or may not succeed. + * + * @param flags an integer bit-mask indicating which repositories should be + * returned. <code>REPOSITORIES_ALL</code> can be used as the mask when + * all enabled repositories should be returned. + * @return the locations of the repositories managed by this repository manager. + * + * @see #REPOSITORIES_ALL + * @see #REPOSITORIES_SYSTEM + * @see #REPOSITORIES_NON_SYSTEM + * @see #REPOSITORIES_LOCAL + * @see #REPOSITORIES_DISABLED + */ + public URI[] getKnownRepositories(int flags); + + /** + * Returns the property associated with the repository at the given URI, + * without loading the repository. + * <p> + * Note that some properties for a repository can only be + * determined when that repository is loaded. This method will return <code>null</code> + * for such properties. Only values for the properties that are already + * known by a repository manager will be returned. + * <p> + * If a client wishes to retrieve a property value from a repository + * regardless of the cost of retrieving it, the client should load the + * repository and then retrieve the property from the repository itself. + * + * @param location the URI of the repository in question + * @param key the String key of the property desired + * @return the value of the property, or <code>null</code> if the repository + * does not exist, the value does not exist, or the property value + * could not be determined without loading the repository. + * + * @see IRepository#getProperties() + * @see #setRepositoryProperty(URI, String, String) + */ + public String getRepositoryProperty(URI location, String key); + + /** + * Sets the property associated with the repository at the given URI, + * without loading the repository. + * <p> + * This method stores properties in a cache in the repository manager and does + * not write the property to the backing repository. This is useful for making + * repository properties available without incurring the cost of loading the repository. + * When the repository is loaded, it will overwrite any conflicting properties that + * have been set using this method. + * </p> + * <p> + * To persistently set a property on a repository, clients must load + * the repository and call {@link IRepository#setProperty(String, String)}. + * </p> + * + * @param location the URI of the repository in question + * @param key the String key of the property desired + * @param value the value to set the property to + * @see #getRepositoryProperty(URI, String) + * @see IRepository#setProperty(String, String) + */ + public void setRepositoryProperty(URI location, String key, String value); + + /** + * Returns the enablement value of a repository. Disabled repositories are known + * to the repository manager, but are never used in the context of provisioning + * operations. Disabled repositories are useful as a form of bookmark to indicate that a + * repository location is of interest, but not currently used. + * <p> + * Note that enablement is a property of the repository manager and not a property + * of the affected repository. The enablement of the repository is discarded when + * a repository is removed from the repository manager. + * + * @param location The location of the repository whose enablement is requested + * @return <code>true</code> if the repository is enabled, and + * <code>false</code> if it is not enabled, or if the repository location + * is not known to the repository manager. + * @see #REPOSITORIES_DISABLED + * @see #setEnabled(URI, boolean) + */ + public boolean isEnabled(URI location); + + /** + * Removes the repository at the given location from the list of + * repositories known to this repository manager. The underlying + * repository is not deleted. This method has no effect if the given + * repository is not already known to this repository manager. + * + * @param location The location of the repository to remove + * @return <code>true</code> if a repository was removed, and + * <code>false</code> otherwise. + */ + public boolean removeRepository(URI location); + + /** + * Sets the enablement of a repository. Disabled repositories are known + * to the repository manager, but are never used in the context of provisioning + * operation. Disabled repositories are useful as a form of bookmark to indicate that a + * repository location is of interest, but not currently used. + * <p> + * Note that enablement is a property of the repository manager and not a property + * of the affected repository. The enablement of the repository is discarded when + * a repository is removed from the repository manager. + * <p> + * This method has no effect if the given repository location is not known to the + * repository manager. + * + * @param location The location of the repository to enable or disable + * @param enablement <code>true</code>to enable the repository, and + * <code>false</code> to disable the repository + * @see #REPOSITORIES_DISABLED + * @see #isEnabled(URI) + */ + public void setEnabled(URI location, boolean enablement); + +} |