blob: dac15729622477dcbd6b4303361cb83e909db311 [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.indigo.tests;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.osgi.framework.log.FrameworkLog;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.packageadmin.PackageAdmin;
public class TestActivator implements BundleActivator {
public static final String PI_PROV_TESTS = "org.eclipse.equinox.p2.test";
public static BundleContext context;
private static PackageAdmin packageAdmin = null;
private static ServiceReference packageAdminRef = null;
public static String TEST_DATA_PATH = "testData"; //$NON-NLS-1$
public static BundleContext getContext() {
return context;
}
/*
* Return a file handle to the framework log file, or null if it is not available.
*/
public static File getLogFile() {
FrameworkLog log = (FrameworkLog) ServiceHelper.getService(context, FrameworkLog.class.getName());
return log == null ? null : log.getFile();
}
public void start(BundleContext context) throws Exception {
TestActivator.context = context;
packageAdminRef = context.getServiceReference(PackageAdmin.class.getName());
packageAdmin = (PackageAdmin) context.getService(packageAdminRef);
}
public void stop(BundleContext context) throws Exception {
TestActivator.context = null;
}
public static File getTestDataFolder() {
try {
URL url = context.getBundle().getEntry(TestActivator.TEST_DATA_PATH);
return new File(FileLocator.resolve(url).getFile());
}
catch (IOException e) {
return null;
}
}
public static Bundle getBundle(String symbolicName) {
if (packageAdmin == null) {
return null;
}
Bundle[] bundles = packageAdmin.getBundles(symbolicName, null);
if (bundles == null) {
return null;
}
//Return the first bundle that is not installed or uninstalled
for (int i = 0; i < bundles.length; i++) {
if ((bundles[i].getState() & (Bundle.INSTALLED | Bundle.UNINSTALLED)) == 0) {
return bundles[i];
}
}
return null;
}
}