Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.ote.runtimeManager/src/org/eclipse/osee/ote/runtimemanager/SafeWorkspaceTracker.java')
-rw-r--r--plugins/org.eclipse.osee.ote.runtimeManager/src/org/eclipse/osee/ote/runtimemanager/SafeWorkspaceTracker.java259
1 files changed, 0 insertions, 259 deletions
diff --git a/plugins/org.eclipse.osee.ote.runtimeManager/src/org/eclipse/osee/ote/runtimemanager/SafeWorkspaceTracker.java b/plugins/org.eclipse.osee.ote.runtimeManager/src/org/eclipse/osee/ote/runtimemanager/SafeWorkspaceTracker.java
deleted file mode 100644
index f21b1c80c65..00000000000
--- a/plugins/org.eclipse.osee.ote.runtimeManager/src/org/eclipse/osee/ote/runtimemanager/SafeWorkspaceTracker.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 Boeing.
- * 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:
- * Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osee.ote.runtimemanager;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Set;
-import java.util.jar.JarFile;
-import java.util.jar.Manifest;
-import java.util.logging.Level;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.osee.framework.core.operation.AbstractOperation;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.util.Jobs;
-import org.eclipse.osee.framework.ui.plugin.workspace.SafeWorkspaceAccess;
-import org.eclipse.osee.framework.ui.workspacebundleloader.JarChangeResourceListener;
-import org.eclipse.osee.ote.core.BundleInfo;
-import org.eclipse.osee.ote.core.OteBundleLocator;
-import org.eclipse.osee.ote.runtimemanager.container.OteClasspathContainer;
-import org.eclipse.osee.ote.runtimemanager.internal.ProjectChangeResourceListener;
-import org.eclipse.osee.ote.runtimemanager.internal.RuntimeBundleServer;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * @author Robert A. Fisher
- * @author Andrew M. Finkbeiner
- */
-public class SafeWorkspaceTracker extends ServiceTracker implements OteBundleLocator {
-
- private JarChangeResourceListener<OteSystemLibsNature> systemLibResourceListener;
- private JarChangeResourceListener<OteUserLibsNature> userLibResourceListener;
- private LibJarListener<OteSystemLibsNature> systemLibListener;
- private LibJarListener<OteUserLibsNature> userLibListener;
- private ProjectChangeResourceListener projectChangeResourceListener;
- private RuntimeBundleServer bundleServer;
- private SafeWorkspaceAccess service;
- private final BundleContext context;
-
- public SafeWorkspaceTracker(BundleContext context) {
- super(context, SafeWorkspaceAccess.class.getName(), null);
- this.context = context;
- }
-
- @Override
- public Object addingService(ServiceReference reference) {
- this.systemLibListener = new LibJarListener<>();
- this.userLibListener = new LibJarListener<>();
- this.systemLibResourceListener =
- new JarChangeResourceListener<OteSystemLibsNature>(OteSystemLibsNature.NATURE_ID, systemLibListener);
- this.userLibResourceListener =
- new JarChangeResourceListener<OteUserLibsNature>(OteUserLibsNature.NATURE_ID, userLibListener);
- this.projectChangeResourceListener = new ProjectChangeResourceListener();
- service = (SafeWorkspaceAccess) context.getService(reference);
- slowLoadingJars();
-
- return super.addingService(reference);
- }
-
- private void slowLoadingJars() {
- Jobs.runInJob(new LocateWorkspaceBundles("Locating Workspace Bundles", RuntimeManager.BUNDLE_ID), false);
-
- }
-
- private class LocateWorkspaceBundles extends AbstractOperation {
- public LocateWorkspaceBundles(String operationName, String pluginId) {
- super(operationName, pluginId);
- }
-
- @SuppressWarnings("rawtypes")
- @Override
- protected void doWork(IProgressMonitor monitor) throws Exception {
- IWorkspace workspace = service.getWorkspace();
- try {
- scrapeAllLibs();
- } catch (CoreException ex) {
- OseeLog.log(RuntimeManager.class, Level.SEVERE, ex);
- }
- workspace.addResourceChangeListener(systemLibResourceListener);
- workspace.addResourceChangeListener(userLibResourceListener);
-
- SafeWorkspaceTracker.this.bundleServer = new RuntimeBundleServer(SafeWorkspaceTracker.this);
-
- context.registerService(OteBundleLocator.class.getName(), SafeWorkspaceTracker.this, new Hashtable());
- OteClasspathContainer.refreshAll();
- }
- }
-
- private void scrapeAllLibs() throws CoreException {
- for (OteSystemLibsNature nature : OteSystemLibsNature.getWorkspaceProjects()) {
- for (URL url : nature.getBundles()) {
- systemLibListener.handleBundleAdded(url);
- }
-
- projectChangeResourceListener.addProject(nature.getProject());
- }
- for (OteUserLibsNature nature : OteUserLibsNature.getWorkspaceProjects()) {
- for (URL url : nature.getBundles()) {
- userLibListener.handleBundleAdded(url);
- }
-
- projectChangeResourceListener.addProject(nature.getProject());
- }
- }
-
- @Override
- public synchronized void close() {
- IWorkspace workspace = service.getWorkspace();
- if (workspace != null) {
- workspace.removeResourceChangeListener(systemLibResourceListener);
- workspace.removeResourceChangeListener(userLibResourceListener);
- }
- super.close();
- }
-
- /**
- * Returns a list of URL's to workspace jars to be used for the test server. The collection returned is a combination
- * of all the user libraries and any system libraries that weren't already supplied in the user libraries. The
- * workspace is considered to have runtime libraries only if there are system libraries present. Subsequently, if no
- * system libraries are in the workspace then this method will return an empty collection.
- *
- * @return runtime library bundle infos
- */
- @Override
- public Collection<BundleInfo> getRuntimeLibs() throws IOException, CoreException {
- Collection<URL> userLibUrls = getUserLibUrls();
- Collection<URL> systemLibUrls = getSystemLibUrls();
- // If there are no system libs, then claim no runtime libs
- if (!systemLibUrls.isEmpty()) {
- return getRuntimeLibs(systemLibUrls, userLibUrls);
- } else {
- return Collections.emptyList();
- }
- }
-
- private Collection<BundleInfo> getRuntimeLibs(Collection<URL> systemLibUrls, Collection<URL> userLibUrls) throws IOException {
- Map<String, BundleInfo> runtimeMap = new HashMap<>();
- Collection<BundleInfo> runtimeInfos = new LinkedList<>();
-
- // First add all of the system libraries to the map
- for (URL url : systemLibUrls) {
- String symbolicName = getBundleNameFromJar(url);
-
- runtimeMap.put(symbolicName, new BundleInfo(url, bundleServer.getClassServerPath(), true));
- }
-
- // Now add the user libraries so any system library with the same name
- // gets replaced
- for (URL url : userLibUrls) {
- String symbolicName = getBundleNameFromJar(url);
-
- runtimeMap.put(symbolicName, new BundleInfo(url, bundleServer.getClassServerPath(), false));
- }
-
- runtimeInfos.addAll(runtimeMap.values());
-
- return runtimeInfos;
- }
-
- /**
- * Returns a list of URL's to all system libraries in the workspace regardless of ones that are supplied in user
- * libraries.
- *
- * @return system library URL's
- */
- public Collection<URL> getSystemLibUrls() throws CoreException {
- Collection<URL> libs = new LinkedList<>();
- for (OteSystemLibsNature systemNature : OteSystemLibsNature.getWorkspaceProjects()) {
- libs.addAll(systemNature.getBundles());
- }
-
- return libs;
- }
-
- /**
- * Returns a list of URL's to all user libraries in the workspace.
- *
- * @return user library URL's
- */
- public Collection<URL> getUserLibUrls() throws CoreException {
- Collection<URL> libs = new LinkedList<>();
- for (OteUserLibsNature userNature : OteUserLibsNature.getWorkspaceProjects()) {
- libs.addAll(userNature.getBundles());
- }
-
- return libs;
- }
-
- private String getBundleNameFromJar(URL url) throws IOException {
- File file;
- try {
- file = new File(url.toURI());
- } catch (URISyntaxException ex) {
- file = new File(url.getPath());
- }
-
- JarFile jarFile = new JarFile(file);
- Manifest jarManifest = jarFile.getManifest();
- return BundleInfo.generateBundleName(jarManifest);
- }
-
- /**
- * Returns a list of all bundles that have been modified since the last time this was called.
- */
- @Override
- public Collection<BundleInfo> consumeModifiedLibs() throws IOException {
- // Collection<BundleInfo> modifiedLibs = new LinkedList<>();
-
- Set<URL> sysNewBundles = systemLibListener.consumeNewBundles();
- Set<URL> sysChangedBundles = systemLibListener.consumeChangedBundles();
- // Set<URL> sysRemovedBundles =
- systemLibListener.consumeRemovedBundles();
-
- Set<URL> userNewBundles = userLibListener.consumeNewBundles();
- Set<URL> userChangedBundles = userLibListener.consumeChangedBundles();
- // Set<URL> userRemovedBundles =
- userLibListener.consumeRemovedBundles();
-
- Collection<URL> sysNewModLibs = new ArrayList<>(sysNewBundles.size() + sysChangedBundles.size());
- sysNewModLibs.addAll(sysNewBundles);
- sysNewModLibs.addAll(sysChangedBundles);
-
- Collection<URL> userNewModLibs = new ArrayList<>(userNewBundles.size() + userChangedBundles.size());
- userNewModLibs.addAll(userNewBundles);
- userNewModLibs.addAll(userChangedBundles);
-
- // TODO what about removed libs?
- return getRuntimeLibs(sysNewModLibs, userNewModLibs);
-
- // // For now, return all user libs
- // for (BundleInfo info : getRuntimeLibs()) {
- // if (!info.isSystemLibrary()) {
- // modifiedLibs.add(info);
- // }
- // }
- //
- // return modifiedLibs;
- }
-}

Back to the top