Skip to content

Commit f5213b9

Browse files
committed
Migrate AutomaticUpdateScheduler from IStartup to OSGi EventHandler
... for the UIEvents.UILifeCycle.APP_STARTUP_COMPLETE event. This is a less Eclipse specific approach and also prevents the user from disabling the start-up task. The automatic search for updates can still be disabled.
1 parent e55cc8f commit f5213b9

File tree

8 files changed

+34
-19
lines changed

8 files changed

+34
-19
lines changed

.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ bin/
66
pom.tycho
77
.tycho-consumer-pom.xml
88
.flattened-pom.xml
9-
apiAnalyzer-workspace/
9+
apiAnalyzer-workspace/
10+
11+
#Generated OSGi declarative service files
12+
**/OSGI-INF/org.eclipse.*.xml

bundles/org.eclipse.equinox.p2.core/OSGI-INF/.gitignore

-1
This file was deleted.

bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/.project

+5
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
<arguments>
2626
</arguments>
2727
</buildCommand>
28+
<buildCommand>
29+
<name>org.eclipse.pde.ds.core.builder</name>
30+
<arguments>
31+
</arguments>
32+
</buildCommand>
2833
</buildSpec>
2934
<natures>
3035
<nature>org.eclipse.pde.PluginNature</nature>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
dsVersion=V1_4
2+
eclipse.preferences.version=1
3+
enabled=true
4+
generateBundleActivationPolicyLazy=true
5+
path=OSGI-INF
6+
validationErrorLevel=error
7+
validationErrorLevel.missingImplicitUnbindMethod=error

bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/META-INF/MANIFEST.MF

+8-9
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,23 @@ Bundle-Vendor: %providerName
88
Bundle-Localization: plugin
99
Export-Package: org.eclipse.equinox.internal.p2.ui.sdk.scheduler;x-internal:=true,
1010
org.eclipse.equinox.internal.p2.ui.sdk.scheduler.migration;x-internal:=true
11-
Require-Bundle: org.eclipse.ui,
12-
org.eclipse.core.runtime,
11+
Require-Bundle: org.eclipse.core.runtime,
1312
org.eclipse.equinox.p2.updatechecker,
1413
org.eclipse.equinox.p2.ui,
15-
org.eclipse.equinox.p2.repository;bundle-version="2.3.0"
14+
org.eclipse.equinox.p2.repository;bundle-version="2.3.0",
15+
org.eclipse.e4.ui.workbench;bundle-version="[1.15.0,2.0.0)",
16+
org.eclipse.ui.workbench;bundle-version="[3.131.0,4.0.0)",
17+
org.eclipse.jface;bundle-version="[3.33.0,4.0.0)"
18+
Service-Component: OSGI-INF/org.eclipse.equinox.internal.p2.ui.sdk.scheduler.AutomaticUpdateScheduler.xml
1619
Bundle-RequiredExecutionEnvironment: JavaSE-17
1720
Bundle-ActivationPolicy: lazy
1821
Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
1922
org.eclipse.equinox.internal.p2.engine,
20-
org.eclipse.equinox.internal.p2.engine.phases,
2123
org.eclipse.equinox.internal.p2.garbagecollector,
2224
org.eclipse.equinox.internal.p2.metadata.query,
2325
org.eclipse.equinox.internal.p2.touchpoint.eclipse;version="2.0.0",
2426
org.eclipse.equinox.internal.p2.ui,
25-
org.eclipse.equinox.internal.p2.ui.actions,
26-
org.eclipse.equinox.internal.p2.ui.query,
2727
org.eclipse.equinox.internal.provisional.p2.core.eventbus,
28-
org.eclipse.equinox.internal.provisional.p2.repository,
2928
org.eclipse.equinox.internal.provisional.p2.updatechecker,
3029
org.eclipse.equinox.p2.core;version="[2.12.0,3.0.0)",
3130
org.eclipse.equinox.p2.engine;version="[2.0.0,3.0.0)",
@@ -34,8 +33,8 @@ Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
3433
org.eclipse.equinox.p2.operations;version="[2.0.0,3.0.0)",
3534
org.eclipse.equinox.p2.query;version="[2.0.0,3.0.0)",
3635
org.eclipse.equinox.p2.ui;version="[2.0.0,3.0.0)",
37-
org.eclipse.osgi.service.resolver;version="1.1.0",
3836
org.eclipse.osgi.util;version="1.1.0",
3937
org.osgi.framework;version="1.6.0",
40-
org.osgi.service.packageadmin;version="1.2.0"
38+
org.osgi.service.event;version="[1.4.0,2.0.0)",
39+
org.osgi.service.event.propertytypes;version="[1.4.0,2.0.0)"
4140
Automatic-Module-Name: org.eclipse.equinox.p2.ui.sdk.scheduler

bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/build.properties

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
bin.includes = plugin.properties,\
1515
icons/,\
1616
.,\
17+
OSGI-INF/,\
1718
about.html,\
1819
META-INF/,\
1920
plugin.xml

bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/plugin.xml

-5
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55
id="preferences" point="org.eclipse.core.runtime.preferences" name="%automaticUpdatesPrefPage">
66
<initializer class="org.eclipse.equinox.internal.p2.ui.sdk.scheduler.PreferenceInitializer"/>
77
</extension>
8-
<extension
9-
point="org.eclipse.ui.startup">
10-
<startup class="org.eclipse.equinox.internal.p2.ui.sdk.scheduler.AutomaticUpdateScheduler">
11-
</startup>
12-
</extension>
138
<extension
149
point="org.eclipse.ui.preferencePages">
1510
<page

bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/AutomaticUpdateScheduler.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.Random;
2222
import org.eclipse.core.runtime.*;
2323
import org.eclipse.core.runtime.jobs.Job;
24+
import org.eclipse.e4.ui.workbench.UIEvents;
2425
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
2526
import org.eclipse.equinox.internal.p2.garbagecollector.GarbageCollector;
2627
import org.eclipse.equinox.internal.p2.ui.sdk.scheduler.migration.MigrationSupport;
@@ -33,16 +34,21 @@
3334
import org.eclipse.equinox.p2.query.IQuery;
3435
import org.eclipse.equinox.p2.repository.IRepositoryManager;
3536
import org.eclipse.jface.preference.IPreferenceStore;
36-
import org.eclipse.ui.IStartup;
3737
import org.eclipse.ui.PlatformUI;
3838
import org.eclipse.ui.statushandlers.StatusManager;
39+
import org.osgi.service.component.annotations.Component;
40+
import org.osgi.service.event.Event;
41+
import org.osgi.service.event.EventHandler;
42+
import org.osgi.service.event.propertytypes.EventTopics;
3943

4044
/**
4145
* This plug-in is loaded on startup to register with the update checker.
4246
*
4347
* @since 3.5
4448
*/
45-
public class AutomaticUpdateScheduler implements IStartup {
49+
@Component(service = EventHandler.class)
50+
@EventTopics(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE)
51+
public class AutomaticUpdateScheduler implements EventHandler {
4652
public static final String MIGRATION_DIALOG_SHOWN = "migrationDialogShown"; //$NON-NLS-1$
4753

4854
public static final String P_FUZZY_RECURRENCE = "fuzzy_recurrence"; //$NON-NLS-1$
@@ -57,7 +63,7 @@ public class AutomaticUpdateScheduler implements IStartup {
5763
private IUpdateChecker checker;
5864

5965
@Override
60-
public void earlyStartup() {
66+
public void handleEvent(Event event) {
6167
AutomaticUpdatePlugin.getDefault().setScheduler(this);
6268

6369
Job updateJob = new Job("Update Job") { //$NON-NLS-1$

0 commit comments

Comments
 (0)