blob: f37279a69878288a607be7e5eb1146d7693a02fa [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 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.update.core;
import java.net.URL;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.update.core.model.FeatureModel;
import org.eclipse.update.core.model.FeatureModelFactory;
import org.eclipse.update.core.model.ImportModel;
import org.eclipse.update.core.model.IncludedFeatureReferenceModel;
import org.eclipse.update.core.model.InstallHandlerEntryModel;
import org.eclipse.update.core.model.NonPluginEntryModel;
import org.eclipse.update.core.model.PluginEntryModel;
import org.eclipse.update.core.model.URLEntryModel;
/**
* Base implementation of a feature factory.
* The factory is responsible for constructing the correct
* concrete implementation of the model objects for each particular
* feature type. This class creates model objects that correspond
* to the concrete implementation classes provided in this package.
* The actual feature creation method is subclass responsibility.
* <p>
* This class must be subclassed by clients.
* </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.IFeatureFactory
* @see org.eclipse.update.core.model.FeatureModelFactory
* @since 2.0
* @deprecated The org.eclipse.update component has been replaced by Equinox p2. This
* provisional API was never promoted to stable API, and may be removed from a future release of the platform.
*/
public abstract class BaseFeatureFactory extends FeatureModelFactory implements IFeatureFactory {
/**
*
* @deprecated implement createFeature(URL, ISite, IProgressMonitor) instead
* @see IFeatureFactory#createFeature(URL,ISite)
* @since 2.0
*/
public IFeature createFeature(URL url, ISite site) throws CoreException {
return createFeature(url, site, null);
}
/**
* Create feature. Implementation of this method must be provided by
* subclass
*
* @see IFeatureFactory#createFeature(URL,ISite,IProgressMonitor)
* @since 2.0
*/
public abstract IFeature createFeature(URL url, ISite site, IProgressMonitor monitor) throws CoreException;
/**
* Create a concrete implementation of feature model.
*
* @see Feature
* @return feature model
* @since 2.0
*/
public FeatureModel createFeatureModel() {
return new Feature();
}
/**
* Create a concrete implementation of included feature reference model.
*
* @see IncludedFeatureReference
* @return feature model
* @since 2.1
*/
public IncludedFeatureReferenceModel createIncludedFeatureReferenceModel() {
return new IncludedFeatureReference();
}
/**
* Create a concrete implementation of install handler model.
*
* @see InstallHandlerEntry
* @return install handler entry model
* @since 2.0
*/
public InstallHandlerEntryModel createInstallHandlerEntryModel() {
return new InstallHandlerEntry();
}
/**
* Create a concrete implementation of import dependency model.
*
* @see Import
* @return import dependency model
* @since 2.0
*/
public ImportModel createImportModel() {
return new Import();
}
/**
* Create a concrete implementation of plug-in entry model.
*
* @see PluginEntry
* @return plug-in entry model
* @since 2.0
*/
public PluginEntryModel createPluginEntryModel() {
return new PluginEntry();
}
/**
* Create a concrete implementation of non-plug-in entry model.
*
* @see NonPluginEntry
* @return non-plug-in entry model
* @since 2.0
*/
public NonPluginEntryModel createNonPluginEntryModel() {
return new NonPluginEntry();
}
/**
* Create a concrete implementation of annotated URL model.
*
* @see URLEntry
* @return annotated URL model
* @since 2.0
*/
public URLEntryModel createURLEntryModel() {
return new URLEntry();
}
}