/******************************************************************************* * Copyright (c) 2007, 2008 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.equinox.internal.simpleconfigurator.utils; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.List; /* * This class was copied from org.eclipse.equinox.internal.frameworkadmin.utils * package of org.eclipse.equinox.frameworkadmin plugin on March 3 2007. * * The reason why it was copied is to make simpleconfigurator dependent on any * bundles(org.eclipse.equinox.framework). */ public class Utils { private final static String PATH_SEP = "/"; //$NON-NLS-1$ public static URL checkFullUrl(URL url, String urlName) throws IllegalArgumentException {//throws ManipulatorException { if (url == null) throw new IllegalArgumentException(urlName + " is null"); if (!url.getProtocol().endsWith("file")) return url; File file = new File(url.getFile()); if (!file.isAbsolute()) throw new IllegalArgumentException(urlName + "(" + url + ") does not have absolute path"); if (file.getAbsolutePath().startsWith(PATH_SEP)) return url; try { return getUrl("file", null, PATH_SEP + file.getAbsolutePath()); } catch (MalformedURLException e) { throw new IllegalArgumentException(urlName + "(" + "file:" + PATH_SEP + file.getAbsolutePath() + ") is not fully quallified"); } } public static void deleteDir(File file) throws IOException { if (file.isFile()) { if (!file.delete()) throw new IOException("Fail to delete File(" + file.getAbsolutePath() + ")"); return; } File[] children = file.listFiles(); for (int i = 0; i < children.length; i++) { deleteDir(children[i]); } if (!file.delete()) throw new IOException("Fail to delete Dir(" + file.getAbsolutePath() + ")"); return; } public static BundleInfo[] getBundleInfosFromList(List list) { if (list == null) return new BundleInfo[0]; BundleInfo[] ret = new BundleInfo[list.size()]; list.toArray(ret); return ret; } public static URL getUrl(String protocol, String host, String file) throws MalformedURLException {// throws ManipulatorException { file = Utils.replaceAll(file, File.separator, "/"); return new URL(protocol, host, file); } public static String removeLastCh(String target, char ch) { while (target.charAt(target.length() - 1) == ch) { target = target.substring(0, target.length() - 1); } return target; } public static String replaceAll(String st, String oldSt, String newSt) { int index = -1; while ((index = st.indexOf(oldSt)) != -1) { st = st.substring(0, index) + newSt + st.substring(index + oldSt.length()); } return st; } public static void log(int level, Object obj, String method, String message, Throwable e) { String msg = ""; if (method == null) { if (obj != null) msg = "(" + obj.getClass().getName() + ")"; } else if (obj == null) msg = "[" + method + "]" + message; else msg = "[" + method + "](" + obj.getClass().getName() + ")"; msg += message; // if (LogService logService = Activator.getLogService(); // if (logService != null) { // logService.log(level, msg, e); // } else { String levelSt = null; if (level == 1) levelSt = "DEBUG"; else if (level == 2) levelSt = "INFO"; else if (level == 3) levelSt = "WARNING"; else if (level == 4) { levelSt = "ERROR"; // useLog = true; } // if (useLog) { System.err.println("[" + levelSt + "]" + msg); if (e != null) e.printStackTrace(); // } } public static URL buildURL(String spec) throws MalformedURLException { if (spec == null) throw new NullPointerException("URL spec is null."); //$NON-NLS-1$ // Construct the URL carefully so as to preserve UNC paths etc. if (spec.startsWith("file:")) { //$NON-NLS-1$ // need to do this for UNC paths File file = new File(spec.substring(5)); if (file.isAbsolute()) return file.toURL(); } return new URL(spec); } }