| /******************************************************************************* |
| * 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.model; |
| |
| import java.io.IOException; |
| import java.io.InputStream; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.update.core.Utilities; |
| import org.eclipse.update.internal.core.Messages; |
| import org.xml.sax.SAXException; |
| |
| /** |
| * Default feature model factory. |
| * <p> |
| * This class may be instantiated or subclassed by clients. However, in most |
| * cases clients should instead subclass the provided base implementation |
| * of this factory. |
| * </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.BaseFeatureFactory |
| * @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 class FeatureModelFactory { |
| |
| |
| //private static DefaultFeatureParser parser = new DefaultFeatureParser(); |
| |
| /** |
| * Creates a default model factory. |
| * |
| * @since 2.0 |
| */ |
| public FeatureModelFactory() { |
| super(); |
| } |
| |
| /** |
| * Creates and populates a default feature from stream. |
| * The parser assumes the stream contains a default feature manifest |
| * (feature.xml) as documented by the platform. |
| * |
| * @param stream feature stream |
| * @return populated feature model |
| * @exception CoreException |
| * @exception SAXException |
| * @since 2.0 |
| */ |
| public FeatureModel parseFeature(InputStream stream) |
| throws CoreException, SAXException { |
| return parseFeature(stream, null); |
| } |
| |
| /** |
| * Creates and populates a default feature from stream. |
| * The parser assumes the stream contains a default feature manifest |
| * (feature.xml) as documented by the platform. |
| * |
| * @param stream feature stream |
| * @param location feature location |
| * @return populated feature model |
| * @exception CoreException |
| * @exception SAXException |
| * @since 3.1 |
| */ |
| public FeatureModel parseFeature(InputStream stream, String location) |
| throws CoreException, SAXException { |
| DefaultFeatureParser parser = new DefaultFeatureParser(); |
| parser.init(this, location); |
| FeatureModel featureModel = null; |
| try { |
| featureModel = parser.parse(stream); |
| if (parser.getStatus()!=null) { |
| // some internalError were detected |
| IStatus status = parser.getStatus(); |
| throw new CoreException(status); |
| } |
| } catch (IOException e) { |
| throw Utilities.newCoreException(Messages.FeatureModelFactory_ErrorAccesingFeatureStream, e); |
| } |
| return featureModel; |
| } |
| |
| /** |
| * Create a default feature model. |
| * |
| * @see FeatureModel |
| * @return feature model |
| * @since 2.0 |
| */ |
| public FeatureModel createFeatureModel() { |
| return new FeatureModel(); |
| } |
| |
| /** |
| * Create a default included feature reference model. |
| * |
| * @see IncludedFeatureReferenceModel |
| * @return feature model |
| * @since 2.1 |
| */ |
| public IncludedFeatureReferenceModel createIncludedFeatureReferenceModel() { |
| return new IncludedFeatureReferenceModel(); |
| } |
| |
| |
| /** |
| * Create a default install handler model. |
| * |
| * @see InstallHandlerEntryModel |
| * @return install handler entry model |
| * @since 2.0 |
| */ |
| public InstallHandlerEntryModel createInstallHandlerEntryModel() { |
| return new InstallHandlerEntryModel(); |
| } |
| |
| /** |
| * Create a default import dependency model. |
| * |
| * @see ImportModel |
| * @return import dependency model |
| * @since 2.0 |
| */ |
| public ImportModel createImportModel() { |
| return new ImportModel(); |
| } |
| |
| /** |
| * Create a default plug-in entry model. |
| * |
| * @see PluginEntryModel |
| * @return plug-in entry model |
| * @since 2.0 |
| */ |
| public PluginEntryModel createPluginEntryModel() { |
| return new PluginEntryModel(); |
| } |
| |
| /** |
| * Create a default non-plug-in entry model. |
| * |
| * @see NonPluginEntryModel |
| * @return non-plug-in entry model |
| * @since 2.0 |
| */ |
| public NonPluginEntryModel createNonPluginEntryModel() { |
| return new NonPluginEntryModel(); |
| } |
| |
| /** |
| * Create a default annotated URL model. |
| * |
| * @see URLEntryModel |
| * @return annotated URL model |
| * @since 2.0 |
| */ |
| public URLEntryModel createURLEntryModel() { |
| return new URLEntryModel(); |
| } |
| } |