blob: e400adf4029fa45dbc6421415ca549374b278967 [file] [log] [blame]
/*******************************************************************************
* 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();
}
}