[SCM] eclipse-mylyn - Plug-in for eclipse - Debian package. branch, master, updated. upstream/3.6.4-27-g54a4eea
Jakub Adam
jakub.adam at ktknet.cz
Mon Nov 21 22:42:58 UTC 2011
The following commit has been merged in the master branch:
commit b551a5a7be9601450d53ba7fbc5b7054ebddac80
Author: Jakub Adam <jakub.adam at ktknet.cz>
Date: Mon Nov 21 21:04:25 2011 +0100
Refresh rebuild-prepare-install-profile-job-3-6.patch
diff --git a/debian/patches/rebuild-prepare-install-profile-job-3-6.patch b/debian/patches/rebuild-prepare-install-profile-job-3-6.patch
index a47499f..701865f 100644
--- a/debian/patches/rebuild-prepare-install-profile-job-3-6.patch
+++ b/debian/patches/rebuild-prepare-install-profile-job-3-6.patch
@@ -4,9 +4,11 @@ Subject: rebuild-prepare-install-profile-job-3-6
---
.../build.properties | 8 +-
+ .../ui/PrepareInstallProfileJob_e_3_6.java | 413 --------------------
.../mylyn/internal/discovery/ui/DiscoveryUi.java | 11 +-
- .../ui/PrepareInstallProfileJob_e_3_6.java | 345 ++++++++++++++++++++
- 3 files changed, 347 insertions(+), 17 deletions(-)
+ .../ui/PrepareInstallProfileJob_e_3_6.java | 413 ++++++++++++++++++++
+ 4 files changed, 415 insertions(+), 430 deletions(-)
+ delete mode 100644 org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src-e3.6/org/eclipse/mylyn/internal/discovery/ui/PrepareInstallProfileJob_e_3_6.java
create mode 100644 org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src/org/eclipse/mylyn/internal/discovery/ui/PrepareInstallProfileJob_e_3_6.java
diff --git a/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/build.properties b/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/build.properties
@@ -26,6 +28,425 @@ index ebba0e6..d4b87d9 100644
-customBuildCallbacks=customBuildCallbacks.xml
-customBuildCallbacks.failonerror=true
+src.includes = about.html
+diff --git a/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src-e3.6/org/eclipse/mylyn/internal/discovery/ui/PrepareInstallProfileJob_e_3_6.java b/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src-e3.6/org/eclipse/mylyn/internal/discovery/ui/PrepareInstallProfileJob_e_3_6.java
+deleted file mode 100644
+index 8c3a09b..0000000
+--- a/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src-e3.6/org/eclipse/mylyn/internal/discovery/ui/PrepareInstallProfileJob_e_3_6.java
++++ /dev/null
+@@ -1,413 +0,0 @@
+-/*******************************************************************************
+- * Copyright (c) 2009, 2010 Tasktop Technologies 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:
+- * Tasktop Technologies - initial API and implementation
+- *******************************************************************************/
+-package org.eclipse.mylyn.internal.discovery.ui;
+-
+-import java.lang.reflect.InvocationTargetException;
+-import java.net.MalformedURLException;
+-import java.net.URI;
+-import java.net.URISyntaxException;
+-import java.net.URL;
+-import java.util.ArrayList;
+-import java.util.Arrays;
+-import java.util.HashMap;
+-import java.util.HashSet;
+-import java.util.Iterator;
+-import java.util.List;
+-import java.util.Map;
+-import java.util.Set;
+-
+-import org.eclipse.core.runtime.CoreException;
+-import org.eclipse.core.runtime.IProgressMonitor;
+-import org.eclipse.core.runtime.IStatus;
+-import org.eclipse.core.runtime.OperationCanceledException;
+-import org.eclipse.core.runtime.Status;
+-import org.eclipse.core.runtime.SubMonitor;
+-import org.eclipse.core.runtime.SubProgressMonitor;
+-import org.eclipse.equinox.internal.p2.ui.ProvUI;
+-import org.eclipse.equinox.p2.core.ProvisionException;
+-import org.eclipse.equinox.p2.engine.IProfile;
+-import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+-import org.eclipse.equinox.p2.metadata.Version;
+-import org.eclipse.equinox.p2.operations.InstallOperation;
+-import org.eclipse.equinox.p2.operations.ProvisioningSession;
+-import org.eclipse.equinox.p2.operations.RepositoryTracker;
+-import org.eclipse.equinox.p2.operations.UninstallOperation;
+-import org.eclipse.equinox.p2.query.IQuery;
+-import org.eclipse.equinox.p2.query.IQueryResult;
+-import org.eclipse.equinox.p2.query.QueryUtil;
+-import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
+-import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
+-import org.eclipse.equinox.p2.ui.ProvisioningUI;
+-import org.eclipse.jface.dialogs.MessageDialog;
+-import org.eclipse.mylyn.internal.discovery.core.model.ConnectorDescriptor;
+-import org.eclipse.mylyn.internal.discovery.ui.util.DiscoveryUiUtil;
+-import org.eclipse.mylyn.internal.discovery.ui.wizards.Messages;
+-import org.eclipse.osgi.util.NLS;
+-import org.eclipse.swt.widgets.Display;
+-
+-/**
+- * A job that configures a p2 {@link #getInstallAction() install action} for installing one or more
+- * {@link ConnectorDescriptor connectors}. The bulk of the installation work is done by p2; this class just sets up the
+- * p2 repository meta-data and selects the appropriate features to install. After running the job the
+- * {@link #getInstallAction() install action} must be run to perform the installation.
+- *
+- * @author David Green
+- * @author Steffen Pingel
+- */
+-class PrepareInstallProfileJob_e_3_6 extends AbstractInstallJob {
+-
+- private final List<ConnectorDescriptor> installableConnectors;
+-
+- private final ProvisioningUI provisioningUI;
+-
+- private Set<URI> repositoryLocations;
+-
+- public PrepareInstallProfileJob_e_3_6(List<ConnectorDescriptor> installableConnectors) {
+- if (installableConnectors == null) {
+- throw new IllegalArgumentException();
+- }
+- this.installableConnectors = new ArrayList<ConnectorDescriptor>(installableConnectors);
+- this.provisioningUI = ProvisioningUI.getDefaultUI();
+- }
+-
+- public void run(IProgressMonitor progressMonitor) throws InvocationTargetException, InterruptedException {
+- if (installableConnectors.isEmpty()) {
+- throw new IllegalArgumentException();
+- }
+-
+- try {
+- SubMonitor monitor = SubMonitor.convert(progressMonitor, Messages.InstallConnectorsJob_task_configuring,
+- 100);
+- try {
+- final IInstallableUnit[] ius = computeInstallableUnits(monitor.newChild(50));
+-
+- checkCancelled(monitor);
+-
+- final InstallOperation installOperation = resolveInstall(monitor.newChild(50), ius,
+- repositoryLocations.toArray(new URI[0]));
+-
+- checkCancelled(monitor);
+-
+- Display.getDefault().asyncExec(new Runnable() {
+- public void run() {
+- provisioningUI.openInstallWizard(Arrays.asList(ius), installOperation, null);
+- }
+- });
+- } finally {
+- monitor.done();
+- }
+- } catch (OperationCanceledException e) {
+- throw new InterruptedException();
+- } catch (Exception e) {
+- throw new InvocationTargetException(e);
+- }
+- }
+-
+- @Override
+- public IStatus uninstall(UninstallRequest request, IProgressMonitor progressMonitor)
+- throws InvocationTargetException, InterruptedException {
+- IProfile profile = ProvUI.getProfileRegistry(ProvisioningUI.getDefaultUI().getSession()).getProfile(
+- ProvisioningUI.getDefaultUI().getProfileId());
+- if (profile == null) {
+- throw new IllegalStateException("No valid profile defined");
+- }
+-
+- try {
+- SubMonitor monitor = SubMonitor.convert(progressMonitor, Messages.InstallConnectorsJob_task_configuring,
+- 100);
+- try {
+- repositoryLocations = new HashSet<URI>(Arrays.asList(provisioningUI.getRepositoryTracker()
+- .getKnownRepositories(provisioningUI.getSession())));
+-
+- final List<IInstallableUnit> ius = new ArrayList<IInstallableUnit>();
+- IQueryResult<IInstallableUnit> result = profile.available(QueryUtil.createIUGroupQuery(), monitor);
+- for (Iterator<IInstallableUnit> it = result.iterator(); it.hasNext();) {
+- IInstallableUnit iu = it.next();
+- try {
+- org.osgi.framework.Version version = new org.osgi.framework.Version(iu.getVersion()
+- .getOriginal());
+- InstalledItem<IInstallableUnit> item = new InstalledItem<IInstallableUnit>(iu, iu.getId(),
+- version);
+- if (request.select(item)) {
+- ius.add(iu);
+- }
+- } catch (IllegalArgumentException e) {
+- // ignore
+- }
+- }
+-
+- checkCancelled(monitor);
+-
+- if (ius.size() == 0) {
+- return Status.CANCEL_STATUS;
+- }
+-
+- final UninstallOperation uninstallOperation = resolveUninstall(monitor.newChild(50),
+- ius.toArray(new IInstallableUnit[0]), repositoryLocations.toArray(new URI[0]));
+-
+- checkCancelled(monitor);
+-
+- return uninstallOperation.getProvisioningJob(null).runModal(monitor);
+- } finally {
+- monitor.done();
+- }
+- } catch (OperationCanceledException e) {
+- throw new InterruptedException();
+- } catch (Exception e) {
+- throw new InvocationTargetException(e);
+- }
+- }
+-
+- private void checkCancelled(IProgressMonitor monitor) {
+- if (monitor.isCanceled()) {
+- throw new OperationCanceledException();
+- }
+- }
+-
+- private UninstallOperation resolveUninstall(IProgressMonitor monitor, final IInstallableUnit[] ius,
+- URI[] repositories) throws CoreException {
+- final UninstallOperation uninstallOperation = provisioningUI.getUninstallOperation(Arrays.asList(ius),
+- repositories);
+- IStatus operationStatus = uninstallOperation.resolveModal(new SubProgressMonitor(monitor,
+- installableConnectors.size()));
+- if (operationStatus.getSeverity() > IStatus.WARNING) {
+- throw new CoreException(operationStatus);
+- }
+- return uninstallOperation;
+- }
+-
+- private InstallOperation resolveInstall(IProgressMonitor monitor, final IInstallableUnit[] ius, URI[] repositories)
+- throws CoreException {
+- final InstallOperation installOperation = provisioningUI.getInstallOperation(Arrays.asList(ius), repositories);
+- IStatus operationStatus = installOperation.resolveModal(new SubProgressMonitor(monitor,
+- installableConnectors.size()));
+- if (operationStatus.getSeverity() > IStatus.WARNING) {
+- throw new CoreException(operationStatus);
+- }
+- return installOperation;
+- }
+-
+- public IInstallableUnit[] computeInstallableUnits(SubMonitor monitor) throws CoreException {
+- try {
+- monitor.setWorkRemaining(100);
+- // add repository urls and load meta data
+- List<IMetadataRepository> repositories = addRepositories(monitor.newChild(50));
+- final List<IInstallableUnit> installableUnits = queryInstallableUnits(monitor.newChild(50), repositories);
+- removeOldVersions(installableUnits);
+- checkForUnavailable(installableUnits);
+- return installableUnits.toArray(new IInstallableUnit[installableUnits.size()]);
+-
+-// MultiStatus status = new MultiStatus(DiscoveryUi.ID_PLUGIN, 0, Messages.PrepareInstallProfileJob_ok, null);
+-// ius = installableUnits.toArray(new IInstallableUnit[installableUnits.size()]);
+-// ProfileChangeRequest profileChangeRequest = InstallAction.computeProfileChangeRequest(ius, profileId,
+-// status, new SubProgressMonitor(monitor, installableConnectors.size()));
+-// if (status.getSeverity() > IStatus.WARNING) {
+-// throw new CoreException(status);
+-// }
+-// if (profileChangeRequest == null) {
+-// // failed but no indication as to why
+-// throw new CoreException(new Status(IStatus.ERROR, DiscoveryUi.ID_PLUGIN,
+-// Messages.PrepareInstallProfileJob_computeProfileChangeRequestFailed, null));
+-// }
+-// PlannerResolutionOperation operation = new PlannerResolutionOperation(
+-// Messages.PrepareInstallProfileJob_calculatingRequirements, profileId, profileChangeRequest, null,
+-// status, true);
+-// IStatus operationStatus = operation.execute(new SubProgressMonitor(monitor, installableConnectors.size()));
+-// if (operationStatus.getSeverity() > IStatus.WARNING) {
+-// throw new CoreException(operationStatus);
+-// }
+-//
+-// plannerResolutionOperation = operation;
+-
+- } catch (URISyntaxException e) {
+- // should never happen, since we already validated URLs.
+- throw new CoreException(new Status(IStatus.ERROR, DiscoveryUi.ID_PLUGIN,
+- Messages.InstallConnectorsJob_unexpectedError_url, e));
+- } catch (MalformedURLException e) {
+- // should never happen, since we already validated URLs.
+- throw new CoreException(new Status(IStatus.ERROR, DiscoveryUi.ID_PLUGIN,
+- Messages.InstallConnectorsJob_unexpectedError_url, e));
+- } finally {
+- monitor.done();
+- }
+- }
+-
+- /**
+- * Verifies that we found what we were looking for: it's possible that we have connector descriptors that are no
+- * longer available on their respective sites. In that case we must inform the user. Unfortunately this is the
+- * earliest point at which we can know.
+- */
+- private void checkForUnavailable(final List<IInstallableUnit> installableUnits) throws CoreException {
+- // at least one selected connector could not be found in a repository
+- Set<String> foundIds = new HashSet<String>();
+- for (IInstallableUnit unit : installableUnits) {
+- foundIds.add(unit.getId());
+- }
+-
+- String message = ""; //$NON-NLS-1$
+- String detailedMessage = ""; //$NON-NLS-1$
+- for (ConnectorDescriptor descriptor : installableConnectors) {
+- StringBuilder unavailableIds = null;
+- for (String id : descriptor.getInstallableUnits()) {
+- if (!foundIds.contains(id)) {
+- if (unavailableIds == null) {
+- unavailableIds = new StringBuilder();
+- } else {
+- unavailableIds.append(Messages.InstallConnectorsJob_commaSeparator);
+- }
+- unavailableIds.append(id);
+- }
+- }
+- if (unavailableIds != null) {
+- if (message.length() > 0) {
+- message += Messages.InstallConnectorsJob_commaSeparator;
+- }
+- message += descriptor.getName();
+-
+- if (detailedMessage.length() > 0) {
+- detailedMessage += Messages.InstallConnectorsJob_commaSeparator;
+- }
+- detailedMessage += NLS.bind(Messages.PrepareInstallProfileJob_notFoundDescriptorDetail, new Object[] {
+- descriptor.getName(), unavailableIds.toString(), descriptor.getSiteUrl() });
+- }
+- }
+-
+- if (message.length() > 0) {
+- // instead of aborting here we ask the user if they wish to proceed anyways
+- final boolean[] okayToProceed = new boolean[1];
+- final String finalMessage = message;
+- Display.getDefault().syncExec(new Runnable() {
+- public void run() {
+- okayToProceed[0] = MessageDialog.openQuestion(DiscoveryUiUtil.getShell(),
+- Messages.InstallConnectorsJob_questionProceed,
+- NLS.bind(Messages.InstallConnectorsJob_questionProceed_long, new Object[] { finalMessage }));
+- }
+- });
+- if (!okayToProceed[0]) {
+- throw new CoreException(new Status(IStatus.ERROR, DiscoveryUi.ID_PLUGIN, NLS.bind(
+- Messages.InstallConnectorsJob_connectorsNotAvailable, detailedMessage), null));
+- }
+- }
+- }
+-
+- /**
+- * Filters those installable units that have a duplicate in the list with a higher version number. it's possible
+- * that some repositories will host multiple versions of a particular feature. we assume that the user wants the
+- * highest version.
+- */
+- private void removeOldVersions(final List<IInstallableUnit> installableUnits) {
+- Map<String, Version> symbolicNameToVersion = new HashMap<String, Version>();
+- for (IInstallableUnit unit : installableUnits) {
+- Version version = symbolicNameToVersion.get(unit.getId());
+- if (version == null || version.compareTo(unit.getVersion()) < 0) {
+- symbolicNameToVersion.put(unit.getId(), unit.getVersion());
+- }
+- }
+- if (symbolicNameToVersion.size() != installableUnits.size()) {
+- for (IInstallableUnit unit : new ArrayList<IInstallableUnit>(installableUnits)) {
+- Version version = symbolicNameToVersion.get(unit.getId());
+- if (!version.equals(unit.getVersion())) {
+- installableUnits.remove(unit);
+- }
+- }
+- }
+- }
+-
+- /**
+- * Perform a query to get the installable units. This causes p2 to determine what features are available in each
+- * repository. We select installable units by matching both the feature id and the repository; it is possible though
+- * unlikely that the same feature id is available from more than one of the selected repositories, and we must
+- * ensure that the user gets the one that they asked for.
+- */
+- private List<IInstallableUnit> queryInstallableUnits(SubMonitor monitor, List<IMetadataRepository> repositories)
+- throws URISyntaxException {
+- final List<IInstallableUnit> installableUnits = new ArrayList<IInstallableUnit>();
+-
+- monitor.setWorkRemaining(repositories.size());
+- for (final IMetadataRepository repository : repositories) {
+- checkCancelled(monitor);
+- final Set<String> installableUnitIdsThisRepository = getDescriptorIds(repository);
+- IQuery<IInstallableUnit> query = QueryUtil.createIUGroupQuery();
+- IQueryResult<IInstallableUnit> result = repository.query(query, monitor.newChild(1));
+- for (Iterator<IInstallableUnit> iter = result.iterator(); iter.hasNext();) {
+- IInstallableUnit iu = iter.next();
+- String id = iu.getId();
+- if (installableUnitIdsThisRepository.contains(id)) {
+- installableUnits.add(iu);
+- }
+- }
+- }
+- return installableUnits;
+- }
+-
+- private List<IMetadataRepository> addRepositories(SubMonitor monitor) throws MalformedURLException,
+- URISyntaxException, ProvisionException {
+- // tell p2 that it's okay to use these repositories
+- ProvisioningSession session = ProvisioningUI.getDefaultUI().getSession();
+- RepositoryTracker repositoryTracker = ProvisioningUI.getDefaultUI().getRepositoryTracker();
+- repositoryLocations = new HashSet<URI>();
+- monitor.setWorkRemaining(installableConnectors.size() * 5);
+- for (ConnectorDescriptor descriptor : installableConnectors) {
+- URI uri = new URL(descriptor.getSiteUrl()).toURI();
+- if (repositoryLocations.add(uri)) {
+- checkCancelled(monitor);
+- repositoryTracker.addRepository(uri, null, session);
+-// ProvisioningUtil.addMetaDataRepository(url.toURI(), true);
+-// ProvisioningUtil.addArtifactRepository(url.toURI(), true);
+-// ProvisioningUtil.setColocatedRepositoryEnablement(url.toURI(), true);
+- }
+- monitor.worked(1);
+- }
+-
+- // fetch meta-data for these repositories
+- ArrayList<IMetadataRepository> repositories = new ArrayList<IMetadataRepository>();
+- monitor.setWorkRemaining(repositories.size());
+- IMetadataRepositoryManager manager = (IMetadataRepositoryManager) session.getProvisioningAgent().getService(
+- IMetadataRepositoryManager.SERVICE_NAME);
+- for (URI uri : repositoryLocations) {
+- checkCancelled(monitor);
+- IMetadataRepository repository = manager.loadRepository(uri, monitor.newChild(1));
+- repositories.add(repository);
+- }
+- return repositories;
+- }
+-
+- private Set<String> getDescriptorIds(final IMetadataRepository repository) throws URISyntaxException {
+- final Set<String> installableUnitIdsThisRepository = new HashSet<String>();
+- // determine all installable units for this repository
+- for (ConnectorDescriptor descriptor : installableConnectors) {
+- try {
+- if (repository.getLocation().equals(new URL(descriptor.getSiteUrl()).toURI())) {
+- installableUnitIdsThisRepository.addAll(descriptor.getInstallableUnits());
+- }
+- } catch (MalformedURLException e) {
+- // will never happen, ignore
+- }
+- }
+- return installableUnitIdsThisRepository;
+- }
+-
+- @Override
+- public Set<String> getInstalledFeatures(IProgressMonitor monitor) {
+- Set<String> features = new HashSet<String>();
+- IProfile profile = ProvUI.getProfileRegistry(ProvisioningUI.getDefaultUI().getSession()).getProfile(
+- ProvisioningUI.getDefaultUI().getProfileId());
+- if (profile != null) {
+- IQueryResult<IInstallableUnit> result = profile.available(QueryUtil.createIUGroupQuery(), monitor);
+- for (Iterator<IInstallableUnit> it = result.iterator(); it.hasNext();) {
+- IInstallableUnit unit = it.next();
+- features.add(unit.getId());
+- }
+- }
+- return features;
+- }
+-
+-}
diff --git a/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src/org/eclipse/mylyn/internal/discovery/ui/DiscoveryUi.java b/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src/org/eclipse/mylyn/internal/discovery/ui/DiscoveryUi.java
index 17be5a6..65c8b07 100644
--- a/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src/org/eclipse/mylyn/internal/discovery/ui/DiscoveryUi.java
@@ -50,10 +471,10 @@ index 17be5a6..65c8b07 100644
public static boolean install(List<ConnectorDescriptor> descriptors, IRunnableContext context) {
diff --git a/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src/org/eclipse/mylyn/internal/discovery/ui/PrepareInstallProfileJob_e_3_6.java b/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src/org/eclipse/mylyn/internal/discovery/ui/PrepareInstallProfileJob_e_3_6.java
new file mode 100644
-index 0000000..5f09b46
+index 0000000..8c3a09b
--- /dev/null
+++ b/org.eclipse.mylyn.commons/org.eclipse.mylyn.discovery.ui/src/org/eclipse/mylyn/internal/discovery/ui/PrepareInstallProfileJob_e_3_6.java
-@@ -0,0 +1,345 @@
+@@ -0,0 +1,413 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
@@ -95,6 +516,7 @@ index 0000000..5f09b46
+import org.eclipse.equinox.p2.operations.InstallOperation;
+import org.eclipse.equinox.p2.operations.ProvisioningSession;
+import org.eclipse.equinox.p2.operations.RepositoryTracker;
++import org.eclipse.equinox.p2.operations.UninstallOperation;
+import org.eclipse.equinox.p2.query.IQuery;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.QueryUtil;
@@ -146,7 +568,7 @@ index 0000000..5f09b46
+
+ checkCancelled(monitor);
+
-+ final InstallOperation installOperation = resolve(monitor.newChild(50), ius,
++ final InstallOperation installOperation = resolveInstall(monitor.newChild(50), ius,
+ repositoryLocations.toArray(new URI[0]));
+
+ checkCancelled(monitor);
@@ -166,13 +588,80 @@ index 0000000..5f09b46
+ }
+ }
+
++ @Override
++ public IStatus uninstall(UninstallRequest request, IProgressMonitor progressMonitor)
++ throws InvocationTargetException, InterruptedException {
++ IProfile profile = ProvUI.getProfileRegistry(ProvisioningUI.getDefaultUI().getSession()).getProfile(
++ ProvisioningUI.getDefaultUI().getProfileId());
++ if (profile == null) {
++ throw new IllegalStateException("No valid profile defined");
++ }
++
++ try {
++ SubMonitor monitor = SubMonitor.convert(progressMonitor, Messages.InstallConnectorsJob_task_configuring,
++ 100);
++ try {
++ repositoryLocations = new HashSet<URI>(Arrays.asList(provisioningUI.getRepositoryTracker()
++ .getKnownRepositories(provisioningUI.getSession())));
++
++ final List<IInstallableUnit> ius = new ArrayList<IInstallableUnit>();
++ IQueryResult<IInstallableUnit> result = profile.available(QueryUtil.createIUGroupQuery(), monitor);
++ for (Iterator<IInstallableUnit> it = result.iterator(); it.hasNext();) {
++ IInstallableUnit iu = it.next();
++ try {
++ org.osgi.framework.Version version = new org.osgi.framework.Version(iu.getVersion()
++ .getOriginal());
++ InstalledItem<IInstallableUnit> item = new InstalledItem<IInstallableUnit>(iu, iu.getId(),
++ version);
++ if (request.select(item)) {
++ ius.add(iu);
++ }
++ } catch (IllegalArgumentException e) {
++ // ignore
++ }
++ }
++
++ checkCancelled(monitor);
++
++ if (ius.size() == 0) {
++ return Status.CANCEL_STATUS;
++ }
++
++ final UninstallOperation uninstallOperation = resolveUninstall(monitor.newChild(50),
++ ius.toArray(new IInstallableUnit[0]), repositoryLocations.toArray(new URI[0]));
++
++ checkCancelled(monitor);
++
++ return uninstallOperation.getProvisioningJob(null).runModal(monitor);
++ } finally {
++ monitor.done();
++ }
++ } catch (OperationCanceledException e) {
++ throw new InterruptedException();
++ } catch (Exception e) {
++ throw new InvocationTargetException(e);
++ }
++ }
++
+ private void checkCancelled(IProgressMonitor monitor) {
+ if (monitor.isCanceled()) {
+ throw new OperationCanceledException();
+ }
+ }
+
-+ private InstallOperation resolve(IProgressMonitor monitor, final IInstallableUnit[] ius, URI[] repositories)
++ private UninstallOperation resolveUninstall(IProgressMonitor monitor, final IInstallableUnit[] ius,
++ URI[] repositories) throws CoreException {
++ final UninstallOperation uninstallOperation = provisioningUI.getUninstallOperation(Arrays.asList(ius),
++ repositories);
++ IStatus operationStatus = uninstallOperation.resolveModal(new SubProgressMonitor(monitor,
++ installableConnectors.size()));
++ if (operationStatus.getSeverity() > IStatus.WARNING) {
++ throw new CoreException(operationStatus);
++ }
++ return uninstallOperation;
++ }
++
++ private InstallOperation resolveInstall(IProgressMonitor monitor, final IInstallableUnit[] ius, URI[] repositories)
+ throws CoreException {
+ final InstallOperation installOperation = provisioningUI.getInstallOperation(Arrays.asList(ius), repositories);
+ IStatus operationStatus = installOperation.resolveModal(new SubProgressMonitor(monitor,
--
eclipse-mylyn - Plug-in for eclipse - Debian package.
More information about the pkg-java-commits
mailing list