Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDani Megert2012-06-26 10:58:03 +0000
committerDani Megert2012-06-26 10:58:03 +0000
commit87b0da8e4cc6cdde95c1a6b04d510a697f4bd3fd (patch)
treeeb0e7285cde2a8aca56f548c4cae15bb863070de /update/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java
parent9929312af699fc007e383d22bc7036701393a5f7 (diff)
downloadeclipse.platform-87b0da8e4cc6cdde95c1a6b04d510a697f4bd3fd.tar.gz
eclipse.platform-87b0da8e4cc6cdde95c1a6b04d510a697f4bd3fd.tar.xz
eclipse.platform-87b0da8e4cc6cdde95c1a6b04d510a697f4bd3fd.zip
Diffstat (limited to 'update/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java')
-rw-r--r--update/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java270
1 files changed, 270 insertions, 0 deletions
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java
new file mode 100644
index 000000000..d09f6f1cb
--- /dev/null
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/IFeatureContentProvider.java
@@ -0,0 +1,270 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2010 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.update.core;
+
+import java.net.URL;
+
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * Feature content provider.
+ * A feature content provider is an abstraction of each feature internal
+ * packaging structure. It allows the feature content to be accessed in
+ * a standard way regardless of the internal packaging. All concrete feature
+ * implementations need to implement a feature content provider.
+ * <p>
+ * There are two ways of looking at a feature content:
+ * <ol>
+ * <li>the "logical" view, which is a representation of the actual files that
+ * make up the feature. These include any files that describe the feature
+ * itself, files that are the actual implementation of referenced plug-ins,
+ * and files that are the non-plug-in data files associated with the feature
+ * <li>the "packaged" view, which is a set of related archive files that
+ * contain the "logical" files.
+ * </ol>
+ * It is the responsibility of a feature content provider to manage the
+ * mapping between the "packaged" and "logical" views.
+ * </p>
+ * <p>
+ * Clients may implement this interface. However, in most cases clients should
+ * directly instantiate or subclass the provided implementation of this
+ * interface.
+ * </p>
+ * <p>
+ * <b>Note:</b> This class/interface is part of an interim API that is still under development and expected to
+ * change significantly before reaching stability. It is being made available at this early stage to solicit feedback
+ * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
+ * (repeatedly) as the API evolves.
+ * </p>
+ * @see org.eclipse.update.core.FeatureContentProvider
+ * @since 2.0
+ * @deprecated The org.eclipse.update component has been replaced by Equinox p2.
+ * This API will be deleted in a future release. See bug 311590 for details.
+ */
+public interface IFeatureContentProvider {
+
+ /**
+ * Returns the feature url.
+ * The exact interpretation of this URL is specific to each content
+ * provider. Typically, the URL is a reference to a file that can be
+ * used directly, or indirectly, to determine the content of the feature.
+ *
+ * @return feature url
+ * @since 2.0
+ */
+ public URL getURL();
+
+ /**
+ * Returns a content reference to the feature manifest. The feature manifest
+ * is an xml file, whose format is specified by the platform. Typically
+ * a feature will contain the manifest as one of the packaged files.
+ * For features that do not contain the manifest, or contain a manifest
+ * that does not follow the specified format, this method returns
+ * a reference to a computed manifest in the appropriate platform
+ * format.
+ *
+ * @param monitor progress monitor, can be <code>null</code>
+ * @return feature manifest reference, or <code>null</code> if the manifest cannot be found.
+ * @since 2.0
+ */
+ public ContentReference getFeatureManifestReference(InstallMonitor monitor)
+ throws CoreException;
+
+ /**
+ * Returns an array of content references of all the "packaged"
+ * archives that make up this feature.
+ * <p>
+ * The number of returned references is dependent on each feature
+ * content provider (i.e is dependent on the packaging mechanism used
+ * by the particular feature type).
+ * </p>
+ *
+ * @param monitor progress monitor, can be <code>null</code>
+ * @return an array of references, or an empty array if no references
+ * are found
+ * @exception CoreException
+ * @since 2.0
+ */
+ public ContentReference[] getArchiveReferences(InstallMonitor monitor)
+ throws CoreException;
+
+ /**
+ * Returns an array of content references of the "packaged"
+ * archives that contain the feature descriptive information.
+ * <p>
+ * In general, the feature descriptive information should be packaged
+ * separately from the "bulk" of the actual feature content.
+ * The feature entry archive(s) must be downloaded from an update
+ * site in order to present information about the feature to the
+ * client. Consequently, keeping the number and size of the feature
+ * entry archive(s) to a minimum will speed up the responsiveness of the
+ * user interface.
+ * </p>
+ * <p>
+ * The number of returned references is dependent on each feature
+ * content provider (i.e is dependent on the packaging mechanism used
+ * by the particular feature type).
+ * </p>
+ *
+ * @see IFeatureContentProvider#getFeatureEntryContentReferences(InstallMonitor)
+ * @param monitor progress monitor, can be <code>null</code>
+ * @return an array of references, or an empty array if no references
+ * are found
+ * @exception CoreException
+ * @since 2.0
+ */
+ public ContentReference[] getFeatureEntryArchiveReferences(InstallMonitor monitor)
+ throws CoreException;
+
+ /**
+ * Returns an array of content references of the "packaged"
+ * archives that contain the files for the specified plug-in entry.
+ * <p>
+ * The number of returned references is dependent on each feature
+ * content provider (i.e is dependent on the packaging mechanism used
+ * by the particular feature type).
+ * </p>
+ *
+ * @see IFeatureContentProvider#getPluginEntryContentReferences(IPluginEntry, InstallMonitor)
+ * @param pluginEntry plug-in entry
+ * @param monitor progress monitor, can be <code>null</code>
+ * @return an array of references, or an empty array if no references
+ * are found
+ * @exception CoreException
+ * @since 2.0
+ */
+ public ContentReference[] getPluginEntryArchiveReferences(
+ IPluginEntry pluginEntry,
+ InstallMonitor monitor)
+ throws CoreException;
+
+ /**
+ * Returns an array of content references of the "packaged"
+ * archives that contain the files for the specified non-plug-in entry.
+ * <p>
+ * The number of returned references is dependent on each feature
+ * content provider (i.e is dependent on the packaging mechanism used
+ * by the particular feature type).
+ * </p>
+ * <p>
+ * Note, that the platform does not interpret non-plug-in entries in any
+ * way, other that performing any required downloads. Non-plug-in entries
+ * are handled by custom install handlers that must be specified for
+ * the feature. Consequently, this interface does not make a distinction
+ * between the "logical" and "packaged" views for non-plug-in entries.
+ * The "packaged" view (returning references to the non-plug-in archives)
+ * is the only one supported. It is the responsibility of the custom install
+ * handler to understand the "logical" view of non-plug-in archives.
+ * </p>
+ *
+ * @param monitor progress monitor, can be <code>null</code>
+ * @return an array of references, or an empty array if no references
+ * are found
+ * @exception CoreException
+ * @since 2.0
+ */
+ public ContentReference[] getNonPluginEntryArchiveReferences(
+ INonPluginEntry nonPluginEntry,
+ InstallMonitor monitor)
+ throws CoreException;
+
+ /**
+ * Returns an array of content references to the feature definition files
+ * (i.e the "logical" view of the files defining the feature). These
+ * are the files required to present information about the feature to the
+ * client, and in general, should not contain references to plug-in and
+ * non-plug-in files.
+ *
+ * @see IFeatureContentProvider#getFeatureEntryArchiveReferences(InstallMonitor)
+ * @param monitor progress monitor, can be <code>null</code>
+ * @return an array of ContentReference or an empty array if no references are found
+ * @exception CoreException when an error occurs
+ * @since 2.0
+ */
+ public ContentReference[] getFeatureEntryContentReferences(InstallMonitor monitor)
+ throws CoreException;
+
+ /**
+ * Returns an array of content references to the files implementing
+ * the specified plug-in. (i.e the "logical" view of the plug-in).
+ *
+ * @see IFeatureContentProvider#getPluginEntryArchiveReferences(IPluginEntry, InstallMonitor)
+ * @param monitor progress monitor, can be <code>null</code>
+ * @return an array of ContentReference or an empty array if no references are found
+ * @exception CoreException
+ * @since 2.0
+ */
+ public ContentReference[] getPluginEntryContentReferences(
+ IPluginEntry pluginEntry,
+ InstallMonitor monitor)
+ throws CoreException;
+
+ /**
+ * Returns the total size of all archives required for the
+ * specified plug-in and non-plug-in entries (the "packaging" view).
+ *
+ * @param pluginEntries an array of plug-in entries
+ * @param nonPluginEntries an array of non-plug-in entries
+ * @return total download size, or an indication that size could not be
+ * determined
+ * @see org.eclipse.update.core.model.ContentEntryModel#UNKNOWN_SIZE
+ * @since 2.0
+ */
+ public long getDownloadSizeFor(
+ IPluginEntry[] pluginEntries,
+ INonPluginEntry[] nonPluginEntries);
+
+ /**
+ * Returns the total size of all files required for the
+ * specified plug-in and non-plug-in entries (the "logical" view).
+ *
+ * @param pluginEntries an array of plug-in entries
+ * @param nonPluginEntries an array of non-plug-in entries
+ * @return total download size, or an indication that size could not be
+ * determined
+ * @see org.eclipse.update.core.model.ContentEntryModel#UNKNOWN_SIZE
+ * @since 2.0
+ */
+ public long getInstallSizeFor(
+ IPluginEntry[] pluginEntries,
+ INonPluginEntry[] nonPluginEntries);
+
+ /**
+ * Returns the verifier for this feature.
+ * If provided, the verifier is called at various point during
+ * installation processing to verify downloaded archives. The
+ * type of verification provided is dependent on the content
+ * provider implementation.
+ *
+ * @return verifier
+ * @exception CoreException
+ * @since 2.0
+ */
+ public IVerifier getVerifier() throws CoreException;
+
+ /**
+ * Returns the feature associated with this content provider.
+ *
+ * @return feature for this content provider
+ * @since 2.0
+ */
+ public IFeature getFeature();
+
+ /**
+ * Sets the feature associated with this content provider.
+ * In general, this method should only be called as part of
+ * feature creation. Once set, the feature should not be reset.
+ *
+ * @param feature feature for this content provider
+ * @since 2.0
+ */
+ public void setFeature(IFeature feature);
+}

Back to the top