| /******************************************************************************* |
| * Copyright (c) 2009, 2014 Xored Software Inc 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: |
| * Xored Software Inc - initial API and implementation and/or initial documentation |
| *******************************************************************************/ |
| package org.eclipse.rcptt.internal.launching.ext.ui; |
| |
| import org.eclipse.core.resources.IWorkspaceRunnable; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.core.runtime.jobs.Job; |
| import org.eclipse.debug.core.DebugPlugin; |
| import org.eclipse.debug.core.ILaunchConfiguration; |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.ui.IStartup; |
| |
| import org.eclipse.rcptt.core.workspace.RcpttCore; |
| import org.eclipse.rcptt.internal.launching.aut.LaunchInfoCache; |
| import org.eclipse.rcptt.internal.launching.ext.IBundlePoolConstansts; |
| import org.eclipse.rcptt.internal.launching.ext.Q7TargetPlatformManager; |
| import org.eclipse.rcptt.launching.IQ7Launch; |
| import org.eclipse.rcptt.launching.Q7LaunchUtils; |
| import org.eclipse.rcptt.launching.ext.Q7LaunchingUtil; |
| import org.eclipse.rcptt.launching.target.TargetPlatformManager; |
| |
| public class CleanBundlePoolStartup implements IStartup { |
| |
| private static final String LAST_RUNTIME_VERSION = "last.runtime.version"; |
| |
| public void earlyStartup() { |
| Job job = new Job("Check RCPTT Runtime") { |
| @Override |
| public boolean belongsTo(Object family) { |
| if (IBundlePoolConstansts.CLEAN_BUNDLE_POOL_JOB.equals(family)) { |
| return true; |
| } |
| return false; |
| } |
| |
| @Override |
| protected IStatus run(IProgressMonitor monitor) { |
| String version = RcpttCore.getRuntimeVersion(); |
| |
| IPreferenceStore store = Activator.getDefault() |
| .getPreferenceStore(); |
| String lastRuntimeVersion = store |
| .getString(LAST_RUNTIME_VERSION); |
| if (version == null || !version.equals(lastRuntimeVersion)) { |
| if (version != null) { |
| store.putValue(LAST_RUNTIME_VERSION, version); |
| } |
| try { |
| ResourcesPlugin.getWorkspace().run( |
| new IWorkspaceRunnable() { |
| |
| public void run(IProgressMonitor monitor) |
| throws CoreException { |
| |
| ILaunchConfiguration[] configurations = DebugPlugin |
| .getDefault() |
| .getLaunchManager() |
| .getLaunchConfigurations(); |
| for (ILaunchConfiguration cfg : configurations) { |
| String platform = cfg.getAttribute( |
| IQ7Launch.TARGET_PLATFORM, |
| ""); |
| LaunchInfoCache.remove(cfg); |
| if (platform.length() > 0) { |
| TargetPlatformManager |
| .deleteTargetPlatform(platform); |
| Q7LaunchUtils |
| .deleteConfigFiles(cfg); |
| Q7TargetPlatformManager.clear(); |
| } |
| } |
| |
| Q7LaunchingUtil |
| .cleanBundlePool(monitor); |
| } |
| }, monitor); |
| } catch (CoreException e) { |
| Activator.getDefault().log( |
| "Failed to update RCPTT runtime.", e); |
| } |
| } |
| return Status.OK_STATUS; |
| } |
| }; |
| job.setSystem(true); |
| job.schedule(); |
| } |
| } |