Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSusan Franklin2009-04-25 03:37:32 +0000
committerSusan Franklin2009-04-25 03:37:32 +0000
commit9942b85792ec87ee14e615e6df00a08a0ed71d10 (patch)
treea4f84adfad320c1a9450ca778a632a33b28a2bef /bundles
parentf9200d2b7650ad098ed1a09ed78f295dee271453 (diff)
downloadrt.equinox.p2-9942b85792ec87ee14e615e6df00a08a0ed71d10.tar.gz
rt.equinox.p2-9942b85792ec87ee14e615e6df00a08a0ed71d10.tar.xz
rt.equinox.p2-9942b85792ec87ee14e615e6df00a08a0ed71d10.zip
Bug 272336 - [ui] NPE in Profile Registry
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java7
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties2
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/InstalledSoftwarePage.java20
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RevertProfilePage.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/Policy.java10
8 files changed, 52 insertions, 5 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
index 32c595be2..59ce01635 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/PreloadingRepositoryHandler.java
@@ -22,6 +22,7 @@ import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.statushandlers.StatusManager;
/**
* PreloadingRepositoryHandler provides background loading of
@@ -54,6 +55,7 @@ abstract class PreloadingRepositoryHandler extends AbstractHandler {
} catch (ProvisionException e) {
MessageDialog.openInformation(null, ProvSDKMessages.Handler_SDKUpdateUIMessageTitle, ProvSDKMessages.Handler_CannotLaunchUI);
+ ProvUI.handleException(e, null, StatusManager.LOG);
}
return null;
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java
index be43d8bd4..9a1a02d44 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/SDKPolicy.java
@@ -14,7 +14,6 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.internal.p2.ui.sdk.prefs.PreferenceConstants;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
import org.eclipse.equinox.internal.provisional.p2.director.ProvisioningPlan;
-import org.eclipse.equinox.internal.provisional.p2.engine.IProfileRegistry;
import org.eclipse.equinox.internal.provisional.p2.ui.IStatusCodes;
import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI;
import org.eclipse.equinox.internal.provisional.p2.ui.policy.*;
@@ -39,7 +38,7 @@ public class SDKPolicy extends Policy {
return ProvSDKUIActivator.getSelfProfileId();
} catch (ProvisionException e) {
ProvUI.handleException(e, e.getStatus().getMessage(), StatusManager.LOG);
- return IProfileRegistry.SELF;
+ return null;
}
}
});
@@ -88,4 +87,8 @@ public class SDKPolicy extends Policy {
setQueryContext(queryContext);
ProvSDKUIActivator.getDefault().updateWithPreferences(queryContext);
}
+
+ public IStatus getNoProfileChosenStatus() {
+ return ProvSDKUIActivator.getNoSelfProfileStatus();
+ }
}
diff --git a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
index b40a58c6e..eeccf56bb 100644
--- a/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.ui.sdk/src/org/eclipse/equinox/internal/p2/ui/sdk/messages.properties
@@ -11,7 +11,7 @@
Error_Saving_Preferences=Error saving update preferences
-Handler_CannotLaunchUI=Cannot launch the Update UI. This installation has not been configured properly for Software Updates.
+Handler_CannotLaunchUI=Cannot complete the request. This installation has not been configured properly for Software Updates.
Handler_SDKUpdateUIMessageTitle=Software Updates
InstallNewSoftwareHandler_LoadRepositoryJobLabel=Contacting Software Sites
PreferenceInitializer_Error=Error accessing preferences.
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
index 78108b38b..59ac81154 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/ProvUIMessages.java
@@ -42,6 +42,7 @@ public class ProvUIMessages extends NLS {
public static String ColocatedRepositoryManipulator_GotoPrefs;
public static String ColocatedRepositoryManipulator_ManageSites;
public static String ColocatedRepositoryManipulator_RemoveSiteOperationLabel;
+ public static String RevertProfilePage_NoProfile;
public static String RevertProfilePage_RevertLabel;
public static String RevertProfilePage_RevertTooltip;
public static String IUCopyrightPropertyPage_NoCopyright;
@@ -90,6 +91,7 @@ public class ProvUIMessages extends NLS {
public static String ProvisioningOperation_RedoErrorTitle;
public static String ProvisioningOperation_UndoErrorTitle;
public static String ProvisioningOperationRunner_ErrorExecutingOperation;
+ public static String InstalledSoftwarePage_NoProfile;
public static String InstallIUOperationLabel;
public static String InstallIUCommandLabel;
public static String InstallIUCommandTooltip;
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
index 198fd41ff..510c0493b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages.properties
@@ -32,6 +32,7 @@ ProvisioningOperation_ExecuteErrorTitle=Error while executing the "{0}" operatio
ProvisioningOperation_RedoErrorTitle=Error while redoing the "{0}" operation
ProvisioningOperation_UndoErrorTitle=Error while undoing the "{0}" operation
ProvisioningOperationRunner_ErrorExecutingOperation=Unexpected error while trying to run {0}
+InstalledSoftwarePage_NoProfile=This installation has not been configured for showing the installed software. See the error log for details.
InstallIUOperationLabel=Install
InstallIUCommandLabel=&Install...
InstallIUCommandTooltip=Install the selected items
@@ -159,6 +160,7 @@ ColocatedRepositoryManipulator_AddSiteOperationLabel=Add Site
ColocatedRepositoryManipulator_GotoPrefs=Go to the <a>Available Software Sites</a> preferences
ColocatedRepositoryManipulator_ManageSites=&Manage Sites...
ColocatedRepositoryManipulator_RemoveSiteOperationLabel=Remove Site
+RevertProfilePage_NoProfile=This installation has not been configured properly for accessing the installation history. See the error log for details.
RevertProfilePage_RevertLabel=Re&vert
RevertProfilePage_RevertTooltip=Revert to the selected install configuration.
InstallWizardPage_NoCheckboxDescription=Review the items to be installed.
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/InstalledSoftwarePage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/InstalledSoftwarePage.java
index 9bbc42174..c458c12d5 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/InstalledSoftwarePage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/InstalledSoftwarePage.java
@@ -11,6 +11,7 @@
package org.eclipse.equinox.internal.provisional.p2.ui.dialogs;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.equinox.internal.p2.ui.ProvUIMessages;
import org.eclipse.equinox.internal.p2.ui.dialogs.*;
import org.eclipse.equinox.internal.p2.ui.viewers.IUDetailsLabelProvider;
@@ -33,6 +34,7 @@ import org.eclipse.swt.widgets.*;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.about.InstallationPage;
import org.eclipse.ui.menus.AbstractContributionFactory;
+import org.eclipse.ui.statushandlers.StatusManager;
/**
* @since 3.4
@@ -50,6 +52,7 @@ public class InstalledSoftwarePage extends InstallationPage implements ICopyable
AbstractContributionFactory factory;
Text detailsArea;
InstalledIUGroup installedIUGroup;
+ String profileId;
Button updateButton, uninstallButton, propertiesButton;
/* (non-Javadoc)
@@ -59,6 +62,18 @@ public class InstalledSoftwarePage extends InstallationPage implements ICopyable
initializeDialogUnits(parent);
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IProvHelpContextIds.INSTALLED_SOFTWARE);
+ profileId = Policy.getDefault().getProfileChooser().getProfileId(ProvUI.getDefaultParentShell());
+ if (profileId == null) {
+ IStatus status = Policy.getDefault().getNoProfileChosenStatus();
+ if (status != null)
+ ProvUI.reportStatus(status, StatusManager.LOG);
+ Text text = new Text(parent, SWT.WRAP | SWT.READ_ONLY);
+ text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ text.setText(ProvUIMessages.InstalledSoftwarePage_NoProfile);
+ setControl(text);
+ return;
+ }
+
Composite composite = new Composite(parent, SWT.NONE);
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
gd.widthHint = convertHorizontalDLUsToPixels(DEFAULT_WIDTH);
@@ -69,7 +84,7 @@ public class InstalledSoftwarePage extends InstallationPage implements ICopyable
composite.setLayout(layout);
// Table of installed IU's
- installedIUGroup = new InstalledIUGroup(Policy.getDefault(), composite, JFaceResources.getDialogFont(), Policy.getDefault().getProfileChooser().getProfileId(ProvUI.getDefaultParentShell()), getColumnConfig());
+ installedIUGroup = new InstalledIUGroup(Policy.getDefault(), composite, JFaceResources.getDialogFont(), profileId, getColumnConfig());
// we hook selection listeners on the viewer in createPageButtons because we
// rely on the actions we create there getting selection events before we use
// them to update button enablement.
@@ -88,7 +103,8 @@ public class InstalledSoftwarePage extends InstallationPage implements ICopyable
}
public void createPageButtons(Composite parent) {
- final String profileId = Policy.getDefault().getProfileChooser().getProfileId(getShell());
+ if (profileId == null)
+ return;
// For the update action, we create a custom selection provider that will interpret no
// selection as checking for updates to everything.
// We also override the run method to close the containing dialog
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RevertProfilePage.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RevertProfilePage.java
index 995a1cef0..4852b1a2b 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RevertProfilePage.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/dialogs/RevertProfilePage.java
@@ -60,12 +60,24 @@ public class RevertProfilePage extends InstallationPage implements ICopyable {
InstalledIUGroup installedIUGroup;
public void createPageButtons(Composite parent) {
+ if (profileId == null)
+ return;
revertButton = createButton(parent, REVERT_ID, revertAction.getText());
revertButton.setEnabled(revertAction.isEnabled());
}
public void createControl(Composite parent) {
profileId = Policy.getDefault().getProfileChooser().getProfileId(ProvUI.getDefaultParentShell());
+ if (profileId == null) {
+ IStatus status = Policy.getDefault().getNoProfileChosenStatus();
+ if (status != null)
+ ProvUI.reportStatus(status, StatusManager.LOG);
+ Text text = new Text(parent, SWT.WRAP | SWT.READ_ONLY);
+ text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ text.setText(ProvUIMessages.RevertProfilePage_NoProfile);
+ setControl(text);
+ return;
+ }
initializeDialogUnits(parent);
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IProvHelpContextIds.REVERT_CONFIGURATION_WIZARD);
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/Policy.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/Policy.java
index 9907a921c..d39442c42 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/Policy.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/provisional/p2/ui/policy/Policy.java
@@ -276,4 +276,14 @@ public class Policy {
private IUViewQueryContext getDefaultQueryContext() {
return new IUViewQueryContext(IUViewQueryContext.AVAILABLE_VIEW_BY_REPO);
}
+
+ /**
+ * Return a status that can be used to describe the failure to
+ * retrieve a profile.
+ * @return a status describing a failure to retrieve a profile,
+ * or <code>null</code> if there is no such status.
+ */
+ public IStatus getNoProfileChosenStatus() {
+ return null;
+ }
}

Back to the top