| /******************************************************************************* |
| * Copyright (c) 2004, 2005 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.wst.sse.unittests.minortools; |
| |
| import java.io.File; |
| import java.io.FileOutputStream; |
| import java.io.IOException; |
| |
| import org.eclipse.wst.xml.core.tests.util.CommonXML; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.NodeList; |
| import org.xml.sax.SAXException; |
| |
| |
| |
| /** |
| * Modifies plugin.xml and fragment.xml files to not require specific versions |
| * of their plugin dependencies. |
| * |
| * @author nitin |
| */ |
| public class VersionRemover { |
| |
| char[] charbuff = new char[2048]; |
| StringBuffer s = null; |
| |
| public VersionRemover() { |
| super(); |
| } |
| |
| |
| |
| public static void main(String[] args) { |
| if (args.length < 1) |
| new VersionRemover().visit(new File("d:/target")); |
| else |
| new VersionRemover().visit(new File(args[0])); |
| } |
| |
| |
| |
| protected void visit(File file) { |
| // Skip directories like org.eclipse.*, org.apache.*, and org.junit.* |
| if (file.isDirectory() && !file.getName().startsWith("org.eclipse.") && !file.getName().startsWith("org.apache") && !file.getName().startsWith("org.junit")) { |
| String[] contents = file.list(); |
| for (int i = 0; i < contents.length; i++) |
| visit(new File(file.getAbsolutePath() + '/' + contents[i])); |
| } |
| else { |
| fixupFile(file); |
| } |
| } |
| |
| protected void fixupFile(File file) { |
| // only load and fixup files named plugin.xml or fragment.xml under eclipse\plugins\XXXXXXX.* |
| if (!(file.getName().equalsIgnoreCase("plugin.xml") || file.getName().equalsIgnoreCase("fragment.xml")) || file.getAbsolutePath().indexOf("eclipse\\plugins\\XXXXXXX.") == -1) |
| return; |
| // System.out.println(file.getAbsolutePath()); |
| try { |
| Document doc = CommonXML.getDocumentBuilder().parse(file); |
| NodeList imports = null; |
| if (file.getName().equalsIgnoreCase("plugin.xml")) |
| imports = doc.getElementsByTagName("import"); |
| else if (file.getName().equalsIgnoreCase("fragment.xml")) |
| imports = doc.getElementsByTagName("fragment"); |
| boolean changed = false; |
| for (int i = 0; i < imports.getLength(); i++) { |
| Node importNode = imports.item(i); |
| if (importNode.getNodeName().equalsIgnoreCase("import") && importNode.getAttributes().getNamedItem("version") != null) { |
| changed = true; |
| importNode.getAttributes().removeNamedItem("version"); |
| } |
| if (importNode.getAttributes().getNamedItem("plugin-version") != null) { |
| changed = true; |
| importNode.getAttributes().removeNamedItem("plugin-version"); |
| } |
| if (importNode.getAttributes().getNamedItem("match") != null) { |
| importNode.getAttributes().removeNamedItem("match"); |
| changed = true; |
| } |
| } |
| if (changed) { |
| FileOutputStream ostream = new FileOutputStream(file.getAbsolutePath()); |
| CommonXML.serialize(doc, ostream); |
| ostream.close(); |
| System.out.println("Modified " + file.getAbsolutePath()); |
| } |
| } |
| catch (SAXException e) { |
| System.err.println(file.getPath() + ": " + e); |
| } |
| catch (IOException e) { |
| System.err.println(file.getPath() + ": " + e); |
| } |
| } |
| } |