/*******************************************************************************
* Copyright (c) 2004, 2006
* Thomas Hallgren, Kenneth Olwing, Mitch Sonies
* Pontus Rydin, Nils Unden, Peer Torngren
* The code, documentation and other materials contained herein have been
* licensed under the Eclipse Public License - v 1.0 by the individual
* copyright holders listed above, as Initial Contributors under such license.
* The text of such license is available at www.eclipse.org.
*******************************************************************************/
package org.eclipse.buckminster.pde.internal;
import java.io.File;
import java.io.InputStream;
import org.eclipse.buckminster.core.reader.IComponentReader;
import org.eclipse.buckminster.core.reader.IStreamConsumer;
import org.eclipse.buckminster.pde.internal.model.EditableFeatureModel;
import org.eclipse.buckminster.runtime.MonitorUtils;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.pde.internal.core.ifeature.IFeatureModel;
/**
* A CSpec builder that creates a cspec from a Eclipse plugin.xml file.
*
* @author thhal
*/
@SuppressWarnings("restriction")
public class FeatureModelReader implements IStreamConsumer<IFeatureModel> {
public static EditableFeatureModel readEditableFeatureModel(File featureFile) throws CoreException {
EditableFeatureModel featureModel = new EditableFeatureModel(featureFile);
featureModel.load();
return featureModel;
}
public static IFeatureModel readFeatureModel(InputStream stream) throws CoreException {
EditableFeatureModel featureModel = new EditableFeatureModel();
featureModel.load(stream, true);
return featureModel;
}
@Override
public IFeatureModel consumeStream(IComponentReader fileReader, String streamName, InputStream stream, IProgressMonitor monitor)
throws CoreException {
monitor.beginTask(null, 1);
try {
IFeatureModel featureModel = readFeatureModel(stream);
MonitorUtils.worked(monitor, 1);
return featureModel;
} finally {
monitor.done();
}
}
}