use of org.eclipse.pde.core.target.ITargetPlatformService in project dsl-devkit by dsldevkit.
the class TargetDefinitionSetup method initializeTargetPlatform.
/**
* If necessary, creates and loads a new target platform. Waits until the new platform has been loaded.
*
* @throws IOException
* if locating bundle file fails
*/
public static void initializeTargetPlatform() throws IOException {
// The work-around is creating a new target platform adding the parent folders of the bundles
try {
final ITargetPlatformService targetPlatformService = TargetPlatformService.getDefault();
final ITargetHandle workspaceTargetHandle = targetPlatformService.getWorkspaceTargetHandle();
if (workspaceTargetHandle == null || !TARGET_PLATFORM_NAME.equals(workspaceTargetHandle.getTargetDefinition().getName())) {
final ITargetDefinition targetDefinition = targetPlatformService.newTarget();
targetDefinition.setName(TARGET_PLATFORM_NAME);
final List<ITargetLocation> bundleContainers = new ArrayList<ITargetLocation>();
final Set<String> dirs = new HashSet<String>();
for (final Bundle bundle : Platform.getBundle("org.eclipse.core.runtime").getBundleContext().getBundles()) {
// $NON-NLS-1$
final File file = FileLocator.getBundleFile(bundle);
final File folder = file.getParentFile();
final String path = folder.getAbsolutePath();
if (dirs.add(path)) {
ITargetLocation newDirectoryLocation = targetPlatformService.newDirectoryLocation(path);
bundleContainers.add(newDirectoryLocation);
}
}
targetDefinition.setTargetLocations(bundleContainers.toArray(new ITargetLocation[bundleContainers.size()]));
targetDefinition.setArch(Platform.getOSArch());
targetDefinition.setOS(Platform.getOS());
targetDefinition.setWS(Platform.getWS());
targetDefinition.setNL(Platform.getNL());
targetPlatformService.saveTargetDefinition(targetDefinition);
final CountDownLatch platformLoaded = new CountDownLatch(1);
LoadTargetDefinitionJob.load(targetDefinition, new JobChangeAdapter() {
@Override
public void done(final IJobChangeEvent event) {
platformLoaded.countDown();
}
});
platformLoaded.await();
}
} catch (final CoreException coreException) {
// Nothing
} catch (InterruptedException e) {
// Restore interrupted status
Thread.currentThread().interrupt();
}
}
use of org.eclipse.pde.core.target.ITargetPlatformService in project xtext-eclipse by eclipse.
the class TargetPlatformUtil method setTargetPlatform.
/**
* Sets the target platform for tests (to be used in tycho mainly)
* @param context any class of the test bundle to be able to determine the test bundle
* @since 2.14
*/
public static void setTargetPlatform(Class<?> context) throws Exception {
if (isPdeLaunch()) {
return;
}
Bundle currentBundle = FrameworkUtil.getBundle(context);
ITargetPlatformService tpService = TargetPlatformService.getDefault();
ITargetDefinition targetDef = tpService.newTarget();
targetDef.setName("Tycho platform");
Bundle[] bundles = FrameworkUtil.getBundle(Platform.class).getBundleContext().getBundles();
List<ITargetLocation> bundleContainers = new ArrayList<ITargetLocation>();
Set<File> dirs = new HashSet<File>();
for (Bundle bundle : bundles) {
if (bundle.equals(currentBundle)) {
// errors during our tests.
continue;
}
EquinoxBundle bundleImpl = (EquinoxBundle) bundle;
Generation generation = (Generation) bundleImpl.getModule().getCurrentRevision().getRevisionInfo();
File file = generation.getBundleFile().getBaseFile();
File folder = file.getParentFile();
if ((file.isFile() || Platform.inDevelopmentMode()) && !dirs.contains(folder)) {
dirs.add(folder);
bundleContainers.add(tpService.newDirectoryLocation(folder.getAbsolutePath()));
}
}
targetDef.setTargetLocations(bundleContainers.toArray(new ITargetLocation[bundleContainers.size()]));
targetDef.setArch(Platform.getOSArch());
targetDef.setOS(Platform.getOS());
targetDef.setWS(Platform.getWS());
targetDef.setNL(Platform.getNL());
// targetDef.setJREContainer()
tpService.saveTargetDefinition(targetDef);
Job job = new LoadTargetDefinitionJob(targetDef);
job.schedule();
job.join();
}
use of org.eclipse.pde.core.target.ITargetPlatformService in project xtext-eclipse by eclipse.
the class TargetPlatformUtil method setTargetPlatform.
/**
* Sets the target platform for tests (to be used in tycho mainly)
* @param context any class of the test bundle to be able to determine the test bundle
* @since 2.14
*/
public static void setTargetPlatform(Class<?> context) throws Exception {
if (isPdeLaunch()) {
return;
}
Bundle currentBundle = FrameworkUtil.getBundle(context);
ITargetPlatformService tpService = TargetPlatformService.getDefault();
ITargetDefinition targetDef = tpService.newTarget();
targetDef.setName("Tycho platform");
Bundle[] bundles = FrameworkUtil.getBundle(Platform.class).getBundleContext().getBundles();
List<ITargetLocation> bundleContainers = new ArrayList<ITargetLocation>();
Set<File> dirs = new HashSet<File>();
for (Bundle bundle : bundles) {
if (bundle.equals(currentBundle)) {
// errors during our tests.
continue;
}
EquinoxBundle bundleImpl = (EquinoxBundle) bundle;
Generation generation = (Generation) bundleImpl.getModule().getCurrentRevision().getRevisionInfo();
File file = generation.getBundleFile().getBaseFile();
File folder = file.getParentFile();
if (!dirs.contains(folder)) {
dirs.add(folder);
bundleContainers.add(tpService.newDirectoryLocation(folder.getAbsolutePath()));
}
}
targetDef.setTargetLocations(bundleContainers.toArray(new ITargetLocation[bundleContainers.size()]));
targetDef.setArch(Platform.getOSArch());
targetDef.setOS(Platform.getOS());
targetDef.setWS(Platform.getWS());
targetDef.setNL(Platform.getNL());
// targetDef.setJREContainer()
tpService.saveTargetDefinition(targetDef);
Job job = new LoadTargetDefinitionJob(targetDef);
job.schedule();
job.join();
}
Aggregations