blob: 2d21e13bb6101fe3e2cfeb7e2a8d1d309f581b80 [file] [log] [blame]
/*******************************************************************************
* 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);
}
}