blob: 01430e9ee764d6a6ab1406047cc2c3a17bc6fd40 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2006 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
*******************************************************************************/
/**
* Parses feature.xml, plugin.xml, and fragment.xml files
*
*/
package org.eclipse.releng;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.util.Vector;
import java.io.File;
import org.apache.tools.ant.BuildException;
public class ElementParser extends DefaultHandler {
private SAXParser parser;
private Vector plugins;
private Vector features;
public Vector getPlugins(){return plugins;}
public Vector getFeatures(){return features;}
public ElementParser() {
// Create a Xerces SAX Parser
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
try {
parser = saxParserFactory.newSAXParser();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
// instantiate vectors that will hold lists of plugins and features read from feature.xml
plugins = new Vector();
features = new Vector();
}
public void parse(String xmlFile){
// Parse the Document
try {
parser.parse(xmlFile,this);
} catch (SAXException e) {
System.err.println (e);
} catch (IOException e) {
System.err.println (e);
}
}
public void parse(String install, String type, String id){
String xmlFile=null;
if (type.equals("feature"))
xmlFile=install+"/features/"+id+"/"+"feature.xml";
if (type.equals("plugin"))
xmlFile=install+"/plugins/"+id+"/"+"plugin.xml";
if (type.equals("fragment"))
xmlFile=install+"/plugins/"+"/"+id+"/"+"fragment.xml";
if (new File(xmlFile).exists())
parse(xmlFile);
else{
throw new BuildException("The following "+type+" "+id+" did not get fetched.");
}
}
// Start Element Event Handler
public void startElement (String uri, String local,
String qName, Attributes atts) {
if (local.equals("plugin")||local.equals("fragment"))
add(atts.getValue("id"), plugins);
if (local.equals("feature"))
add(atts.getValue("id")+"-feature", features);
}
public void add(String element, Vector v){
if (!v.contains(element))
v.add(element);
}
// Test
public static void main (String[] args) {
ElementParser xmlParser = new ElementParser();
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.win32-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.linux.motif-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.linux.gtk-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.solaris.motif-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.aix.motif-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.qnx.photon-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.jdt-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.pde-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.sdk.examples-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.sdk.tests-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.source-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.win32.source-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.linux.motif.source-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.linux.gtk.source-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.solaris.motif.source-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.aix.motif.source-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.platform.qnx.photon.source-feature");
xmlParser.parse("l:/vabase/team/sonia", "feature", "org.eclipse.jdt.source-feature");
System.out.println(xmlParser.plugins);
System.out.println(xmlParser.features);
System.out.println(xmlParser.plugins.size()+" plugins expected");
System.out.println(xmlParser.features.size()+" features expected");
}
}