blob: d8dc8764b5855356e8fc8de2c145fa550192b731 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 Alex Panchenko
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Alex Panchenko - initial API and Implementation
*******************************************************************************/
package org.eclipse.dltk.utils;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IContributor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.spi.RegistryContributor;
import org.osgi.framework.Bundle;
public class BundleUtil {
public static Bundle getBundle(IConfigurationElement configElement) {
final IContributor contributor = configElement.getContributor();
if (contributor instanceof RegistryContributor) {
final Bundle bundle = Platform.getBundle(((RegistryContributor) contributor).getActualName());
if (bundle != null) {
return bundle;
}
}
return Platform.getBundle(contributor.getName());
}
public static File getFile(Bundle bundle, String path) throws IOException {
final URL url = FileLocator.toFileURL(bundle.getEntry(path));
try {
// encode spaces - see https://bugs.eclipse.org/bugs/show_bug.cgi?id=145096
return toFile(url);
} catch (URISyntaxException e) {
throw new IOException(e);
} catch (IllegalArgumentException e) {
throw new IOException(e);
}
}
public static File toFile(final URL url) throws URISyntaxException {
final URI u = new URI(url.toString().replace(" ", "%20"));
return new File(u);
}
}