Search in sources :

Example 1 with LoadTargetDefinitionJob

use of org.eclipse.pde.core.target.LoadTargetDefinitionJob 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();
}
Also used : EquinoxBundle(org.eclipse.osgi.internal.framework.EquinoxBundle) EquinoxBundle(org.eclipse.osgi.internal.framework.EquinoxBundle) Bundle(org.osgi.framework.Bundle) ArrayList(java.util.ArrayList) ITargetLocation(org.eclipse.pde.core.target.ITargetLocation) ITargetPlatformService(org.eclipse.pde.core.target.ITargetPlatformService) Generation(org.eclipse.osgi.storage.BundleInfo.Generation) ITargetDefinition(org.eclipse.pde.core.target.ITargetDefinition) LoadTargetDefinitionJob(org.eclipse.pde.core.target.LoadTargetDefinitionJob) Job(org.eclipse.core.runtime.jobs.Job) LoadTargetDefinitionJob(org.eclipse.pde.core.target.LoadTargetDefinitionJob) File(java.io.File) HashSet(java.util.HashSet)

Example 2 with LoadTargetDefinitionJob

use of org.eclipse.pde.core.target.LoadTargetDefinitionJob 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();
}
Also used : EquinoxBundle(org.eclipse.osgi.internal.framework.EquinoxBundle) EquinoxBundle(org.eclipse.osgi.internal.framework.EquinoxBundle) Bundle(org.osgi.framework.Bundle) ArrayList(java.util.ArrayList) ITargetLocation(org.eclipse.pde.core.target.ITargetLocation) ITargetPlatformService(org.eclipse.pde.core.target.ITargetPlatformService) Generation(org.eclipse.osgi.storage.BundleInfo.Generation) ITargetDefinition(org.eclipse.pde.core.target.ITargetDefinition) LoadTargetDefinitionJob(org.eclipse.pde.core.target.LoadTargetDefinitionJob) Job(org.eclipse.core.runtime.jobs.Job) LoadTargetDefinitionJob(org.eclipse.pde.core.target.LoadTargetDefinitionJob) File(java.io.File) HashSet(java.util.HashSet)

Aggregations

File (java.io.File)2 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 Job (org.eclipse.core.runtime.jobs.Job)2 EquinoxBundle (org.eclipse.osgi.internal.framework.EquinoxBundle)2 Generation (org.eclipse.osgi.storage.BundleInfo.Generation)2 ITargetDefinition (org.eclipse.pde.core.target.ITargetDefinition)2 ITargetLocation (org.eclipse.pde.core.target.ITargetLocation)2 ITargetPlatformService (org.eclipse.pde.core.target.ITargetPlatformService)2 LoadTargetDefinitionJob (org.eclipse.pde.core.target.LoadTargetDefinitionJob)2 Bundle (org.osgi.framework.Bundle)2